нужно ее экранировать [inline]\[/inline] как и кавычкипарсер реагирует на фигурную скобку
нужно ее экранировать [inline]\[/inline] как и кавычкипарсер реагирует на фигурную скобку
{"id":11,"page":"LivingRoom","pageId":10,"topic":"/IoTmanager/DVES_06FD8A/sensor6","widget":"anydata","class1":"item no-border","style2":"font-size:18px;float:left","descr":"Влажность,%","class3":"balanced","style3":"font-size:18px;font-weight:bold;float:right;:before \{content:\"xxx\";\}"}
жаль, видимо, такой вариант не пройдетВ логах по прежнему ошибка парсинга JSON
в принципе возможно, но сейчас это обычному пользователю слишком сложно (нужно вручную создать JSON файл со стилями оформления и загрузить в телефон специально программой - данный функционал есть, но не дорабатывается по причине невостребованности, а сделать сервис, который будет генерить нужные JSON файлы в визуальном редакторе слишком трудоемко для бесплатного проекта, а делать платный мне не хочется). Есть подробное описание процесса для ESPEasy (на англ)Возможна ли работа с IoT Manager c "AT" прошивками?
JSON файлы ныне может выдавать (и по SSL запросам/ответам) и хранить нормальная "AT" прошивка (к примеру уже указанный модуль).в принципе возможно, но сейчас это обычному пользователю слишком сложно (нужно вручную создать JSON файл со стилями оформления и загрузить в телефон специально программой - данный функционал есть, но не дорабатывается по причине невостребованности, а сделать сервис, который будет генерить нужные JSON файлы в визуальном редакторе слишком трудоемко для бесплатного проекта, а делать платный мне не хочется). Есть подробное описание процесса для ESPEasy (на англ)
Все описания я сделал на двух языках здесь Главная · IoT Manager (именно здесь все с учетом последних изменений)нет популярного описания
Как видно, описание принципов работы уложилось в 3 абзаца, деталей конечно больше, но все документировано.у меня желания выкинуть неделю, ради пары кнопок на телефоне
Там, в RAK это всё делается просто. Есть даже софтина конфигурации, где наглядно можно отсылать/принимать данные MQTT(S) и т.д. Всё в MQTT передается и принимается, и остлеживается сторонними логерами, но вот полностью протокол что-то не идет. В том-же cloudmqtt есть Send message, но нет тупого примера как через них пустить IoTmanager, хотя-бы для теста...Если использовать протокол v1, то от устройства потребуется отправка данных 2 раза: первый раз нужно отправить JSON строку с HTML классами и стилями (config) каждый раз, когда телефон подключается к брокеру и шлет [inline]HELLO[/inline] и далее периодически отправляем только данные. Данные с устройства отправляем в топик, указанный ранее в config, JSON строкой [inline]{"status":xxx}[/inline]. Не уверен, что такое получится реализовать на AT прошивке для RAK473, но этот вопрос я не изучал. Хотя, даже на bash c mosquitto_pub все работает.
Welcome to RAK473 <--- Включение модуля --->
at+ascii=1
OK
at+auto_connect
OK
mac=34:C3:D2:69:86:6E
addr=192.168.1.151
mask=255.255.255.0
gw=192.168.1.1
dns1=192.168.1.1
dns2=0.0.0.0
at+mqtt_init=12345,100
OK
at+mqtt_auth=testrak473,testrak473
OK
at+mqtt_con=54.228.205.206,19912,0
OK20
at+mqtt_sub=/IoTmanager
OK
at+recv_data=20,19912,54.228.205.206,265,{"id": "1","page": "boiler","pageId":"1","widget":"anydata","class1":"item no-border","style2":"font-size:16px;float:left","descr":"Hello IoTmanager","topic":"/IoTmanager/dev-01/anydata1","class3":"assertive", "style3":"font-size:40px;font-weight:bold;float:right"}
<--- Ожидание HELLO --->
at+recv_data=20,19912,54.228.205.206,5,HELLO
at+mqtt_pub=/IoTmanager/dev-01/config,0
OK
at+send_data=20,0,0,265,{"id": "1","page": "boiler","pageId":"1","widget":"anydata","class1":"item no-border","style2":"font-size:16px;float:left","descr":"Hello IoTmanager","topic":"/IoTmanager/dev-01/anydata1","class3":"assertive", "style3":"font-size:40px;font-weight:bold;float:right"}
OK
at+mqtt_pub=/IoTmanager/dev-01/anydata1/status,0
OK
at+send_data=20,0,0,16,{"status":"100"}
OK
at+send_data=20,0,0,16,{"status":"101"}
OK
at+send_data=20,0,0,16,{"status":"102"}
OK
at+send_data=20,0,0,16,{"status":"103"}
OK
at+send_data=20,0,0,16,{"status":"104"}
OK
at+send_data=20,0,0,16,{"status":"105"}
OK
at+send_data=20,0,0,16,{"status":"106"}
OK
at+send_data=20,0,0,16,{"status":"107"}
OK
at+send_data=20,0,0,16,{"status":"108"}
OK
at+send_data=20,0,0,16,{"status":"109"}
OK
at+send_data=20,0,0,16,{"status":"110"}
OK
at+mqtt_discon=20
OK
timeout = 0
testdata = 100
wait 'RAK473'
beep 0
:new_start
sendln 'at+ascii=1'
timeout = 0
wait 'OK' 'ERROR' 'RAK473'
If result=3 goto new_start
If result=2 goto error_end
mpause 500
:connet_ap
timeout = 10
sendln 'at+auto_connect'
wait 'OK' 'ERROR' 'RAK473'
If result=3 goto new_start
If result=1 goto start_mqtt
if result=0 goto connet_ap
pause 1
If result=2 goto connet_ap
:start_mqtt
timeout = 0
sendln 'at+mqtt_init=12345,100'
wait 'OK' 'ERROR' 'RAK473'
If result=3 goto new_start
If result=2 goto start_mqtt
sendln 'at+mqtt_auth=testrak473,testrak473'
wait 'OK' 'ERROR' 'RAK473'
If result=3 goto new_start
If result=2 goto start_mqtt
sendln 'at+mqtt_con=54.228.205.206,19912,0'
wait 'OK' 'ERROR' 'RAK473'
If result=3 goto new_start
If result=2 goto error_mqtt
sendln 'at+mqtt_sub=/IoTmanager'
wait 'OK' 'ERROR' 'RAK473'
If result=3 goto new_start
If result=2 goto error_mqtt
wait 'HELLO' 'RAK473'
If result=2 goto new_start
:send_hello
timeout = 0
beep 0
sendln 'at+mqtt_pub=/IoTmanager/dev-01/config,0'
wait 'OK' 'ERROR' 'RAK473'
If result=3 goto new_start
If result=2 goto error_mqtt
sendln 'at+send_data=20,0,0,265,{"id": "1","page": "boiler","pageId":"1","widget":"anydata","class1":"item no-border","style2":"font-size:16px;float:left","descr":"Hello IoTmanager","topic":"/IoTmanager/dev-01/anydata1","class3":"assertive", "style3":"font-size:40px;font-weight:bold;float:right"}'
wait 'OK' 'ERROR' 'RAK473'
If result=3 goto new_start
If result=1 goto send_data
:error_mqtt
timeout = 0
sendln 'at+mqtt_discon=20'
wait 'OK' 'ERROR' 'RAK473'
If result=3 goto new_start
If result=2 goto error_end
goto start_mqtt
:send_data
timeout = 0
sendln 'at+mqtt_pub=/IoTmanager/dev-01/anydata1/status,0'
wait 'OK' 'ERROR' 'RAK473'
If result=3 goto new_start
If result=2 goto error_end
:send_data1
timeout = 0
sprintf 'at+send_data=20,0,0,16,{"status":"%d"}' testdata
testdata = testdata + 1
sendln inputstr
wait 'OK' 'ERROR' 'RAK473'
if testdata > 110 goto test_end
If result=3 goto new_start
If result=2 goto error_end
timeout = 3
wait 'HELLO' 'RAK473'
If result=1 goto send_hello
If result=2 goto new_start
goto send_data1
:error_end
beep 0
:test_end
sendln 'at+mqtt_discon=20'
Мы отправляем стандартную JSON пару [inline]key[/inline]-[inline]value[/inline] и, в классическом JSON, двойные кавычки вокруг [inline]key[/inline] обязательны. Однако, если потом мы эту строку обрабатываем в JS с помощью [inline]JSON.stringify[/inline], то кавычки не обязательны - [inline]stringify[/inline] добавит их автоматом (именно так и сделано во всех NodeJS примерах, а в примерах для Arduino, например, наоборот - везде двойные кавычки). Для [inline]value[/inline] кавычки используются только для передачи строковых данных: [inline]{"status":1}[/inline] передаст [inline]int 1[/inline], а [inline]{"status":"1"}[/inline] передаст строку [inline]1[/inline], независимо от того, в JS это или нет.Теперь вообще не ясно, где они нужны, а где нет
Тогда где надо [inline]"[/inline] а где нет для чисел?Для [inline]value[/inline] кавычки используются только для передачи строковых данных: [inline]{"status":1}[/inline] передаст [inline]int 1[/inline], а [inline]{"status":"1"}[/inline] передаст строку [inline]1[/inline], независимо от того, в JS это или нет.
В документации IoT Manager примеры без кавычек, хотя не должно быть привязки к конкретному языку программирования (а по факту дан JS). Но, подразумевается, что пользователь знаком с основными принципами построения JSON и добавит кавычки сам, если его язык программирования не делает это автоматом.
Должно быть без разницы, т.к. IoT Manager сам, там где требуется, пытается сделать [inline]parseInt[/inline] для строковых данных.Тогда где надо " а где нет для чисел?
Да уж, но есть и еще проблема. IoT Manager исполняется в Android WebView (у Apple тоже есть аналогичная штука), которых тысячи реализаций в зависимости от версии Android и модели смартфона, поэтому могут даже не все функции JS поддерживаться (т.е. ситуация намного хуже, чем с браузерами). Частично эти проблемы я решаю подключением полифиллов, но и это закрывает не все проблемы.Кароче понаписали кривых языков с неявным синтаксисом.
В настройках приложения отключите отображение страницы "Все" и раскидайте виджеты на 2 страницы - первая для параметров, которые нужны постоянно, а вторая, как вы и предлагали, "настройки"но я не хочу видеть эти виджеты постоянно
Пробуйте в новой бета-версии Анонсы новых версий IoT Managerхотелось бы получить форматный вывод значения для виджета anydata
{"id":2,"page":"LivingRoom","pageId":10,"topic":"/IoTmanager/DVES_06FD8A/sensor1","widget":"anydata","status":"0.00","after":"C","class1":"item no-border","style2":"font-size:18px;float:left","descr":"Sensor A","class3":"balanced","style3":"font-size:18px;font-weight:bold;float:right"}