• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

IoT Manager - сообщаем о багах

Mоnk

Member
Для очистки совести зарегистрился на m13.cloudmqtt.com. Не помогло.
Странное ощущение, что косяк в месте if (client.connected()) второго примера.
Ибо с этого места ничего не делается, судя по сериалмонитору.
 

Victor

Administrator
Команда форума
так и не могу разобраться в чем проблема у меня
Мне тоже пришлось немало повозиться, пока нашел причину, а их оказалось две:

1. Скетчи с примерами для Arduino были сделаны давно и не оптимально. Нужно "разгрузить" callback функцию приема сообщений: сохраняем сообщение и взводим флаг, что его нужно обработать и сразу возвращаемся, а в основном цикле смотрим флаг и если он взведен, то забираем сообщение и его обрабатываем. Такие тесты я уже провел успешно, чуть позднее приведу в порядок и выложу примеры. Удалось обойтись без delay - все летает даже на WebSockets и GPRS (хотя конечно с локальным брокером по WiFi и paho native еще быстрее)

2. В предыдущую бета версию 105030 закралась досадная ошибка в PahoNative - все сообщения отправлялись с RETAIN флагом, что приводило к приему на ESP8266 старых сообщений сразу после подписки на топики (они и приводили к зависанию скетча). Выпущена новая бета с багфиксом (билд 105031) - обновляйтесь.

У кого остались на брокере старые RETAIN сообщения - необходимо просто перезагрузить mosquitto.
 

Mоnk

Member
Опять в школу!
Victor, с нетерпением... Пример попробовать.
Где кстати "новая бета"? Что-то я к вечеру пятницы туплю.
 

Mоnk

Member
Тэкс, Гугль мне бету накатил.
Но без "правильных" примеров ну никак...
 

Victor

Administrator
Команда форума
Как и обещал выкладываю примеры: исправленный старый iot-manager-demo/ArduinoIDE/ESP8266/official-demo/IoTmanager2 at master · 4refr0nt/iot-manager-demo · GitHub

И новый: iot-manager-demo/ArduinoIDE/ESP8266/official-demo/AnydataToggle at master · 4refr0nt/iot-manager-demo · GitHub

новый пример интересен тем, что сейчас можно не использовать библиотеку ArduinoJSON и при этом не мучаться с экранированием кавычек и сборкой длинных строк в большой массив конфигов!

Делаете свои конфиги в обычных текстовых файлах, внутри которых JSON конфигурация виджета (в каждом файле свой виджет)
Потом запускаете специальный скрипт, который придумал @AlexSuslov, а я адаптировал его для Win и у вас генерятся .h файлы, которые вы подключаете к скетчу и отправляете на брокер. Все делают linux утилиты, win аналоги которых я положил в папку [inline]bin[/inline] (нужно только их разархивировать).
@AlexSuslov еще и минифицирует JSON, чтобы передавать меньше байт. Я уж не стал лепить сюда [inline]json-minify[/inline] чтобы вам не пришлось еще и [inline]NodeJS[/inline] ставить.
 

Alex403

New member
Не могу добавить подписку. Не приходят уведомления, в других клиентах приходят.
 

Alex403

New member
Когда я добавляю подписку в "MQTT Subscrible", она не добавляется, сначала добавляется в конец списка, а потом если например выйти на главную страницу и вернутся, то подписка пропадает. На главном экране сообщение что соединение с брокером установлено, но данные от устройств отсутствуют. Хотя они видны в других приложениях.
 

Victor

Administrator
Команда форума
Когда я добавляю подписку в "MQTT Subscrible", она не добавляется
Ручная подписка на топики возможна, но вот видеть вы данные от этих топиков сможете только в логах. Это больше для отладки какой-либо, чем для практических применений. Если вы хотите увидеть данные на главном экране, то они должны быть определенным образом оформлены, чтобы IoT Manager мог распарсить эти данные. Вам нужно ознакомится с протоколами обмена, поддерживаемыми в IoTm - Протокол обмена · IoT Manager
с примерами отправки данных GitHub - 4refr0nt/iot-manager-demo: Demo sketches for IoT Manager https://play.google.com/store/apps/details?id=ru.esp8266.iotmanager и отправлять данные в том виде, в котором их понимает IoT Manager.
 

Alex403

New member
Ручная подписка у меня не сохраняется. Но когда поставил подписку, в логах она есть. Использовал пример который этой статье: http://esp8266.ru/iot-manager-for-diy/ Может поменялся протокол с момента написания этой статьи? Я сначала хотел запустить какой-то пример. А потом уже делать интерфейс который мне нужен.
 

Alex403

New member
Спасибо, попробовал. Все равно не заработало. В логах есть, а в главном экране нет. Попробовал на айфоне. Вообще не соединяется с брокером, раз 7 вводил пароли/логины, точно не ошибся. А другое приложение соединилось сразу. И видны сообщения.
 

Victor

Administrator
Команда форума

Alex403

New member
Есть желание продолжать :)
Вот что происходит в терменале:
WiFi connect: Success
IP address: 192.168.1.114
Connecting to MQTT server ...
Connect to MQTT server: Success
Publish config: Success ({"id":"0","page":"Bedroom1","pageId":"1","descr":"Bedroom light-0","widget":"toggle","topic":"/IoTmanager/dev02-bedroom/light0","color":"red"})
Publish new status for /IoTmanager/dev02-bedroom/light0, value: {"status":"0"}
Publish config: Success ({"id":"1","page":"Bedroom1","pageId":"1","descr":"Bedroom light-1","widget":"toggle","topic":"/IoTmanager/dev02-bedroom/light1","color":"yellow"})
Publish new status for /IoTmanager/dev02-bedroom/light1, value: {"status":"0"}
Publish config: Success ({"id":"2","page":"Bedroom1","pageId":"1","descr":"Bedroom light-2","widget":"toggle","topic":"/IoTmanager/dev02-bedroom/light2","color":"green"})
Publish new status for /IoTmanager/dev02-bedroom/light2, value: {"status":"1"}
Publish config: Success ({"id":"3","page":"Bedroom2","pageId":"2","descr":"ADC","widget":"small-badge","topic":"/IoTmanager/dev02-bedroom/ADC","badge":"badge-calm","style":"font-size:150%;"})
Publish new status for /IoTmanager/dev02-bedroom/ADC, value: {"status":"0"}
Publish config: Success ({"id":"4","page":"Bedroom2","pageId":"2","descr":"Bedroom light-4","widget":"toggle","topic":"/IoTmanager/dev02-bedroom/light4","color":"orange"})
Publish new status for /IoTmanager/dev02-bedroom/light4, value: {"status":"0"}
Publish config: Success ({"id":"5","page":"Bedroom3","pageId":"3","descr":"Bedroom RED","widget":"range","topic":"/IoTmanager/dev02-bedroom/red","style":"range-assertive","badge":"badge-assertive"})
Publish new status for /IoTmanager/dev02-bedroom/red, value: {"status":"0"}
Publish config: Success ({"id":"6","page":"Bedroom3","pageId":"3","descr":"Bedroom GREEN","widget":"range","topic":"/IoTmanager/dev02-bedroom/green","style":"range-balanced","badge":"badge-balanced"})
Publish new status for /IoTmanager/dev02-bedroom/green, value: {"status":"0"}
Publish config: Success ({"id":"7","page":"Bedroom3","pageId":"3","descr":"Bedroom BLUE","widget":"range","topic":"/IoTmanager/dev02-bedroom/blue","style":"range-calm","badge":"badge-calm"})
Publish new status for /IoTmanager/dev02-bedroom/blue, value: {"status":"0"}
Subscribe: Success
Publish config: Success ({"id":"0","page":"Bedroom1","pageId":"1","descr":"Bedroom light-0","widget":"toggle","topic":"/IoTmanager/dev02-bedroom/light0","color":"red"})
Publish new status for /IoTmanager/dev02-bedroom/light0, value: {"status":"0"}
Publish config: Success ({"id":"1","page":"Bedroom1","pageId":"1","descr":"Bedroom light-1","widget":"toggle","topic":"/IoTmanager/dev02-bedroom/light1","color":"yellow"})
Publish new status for /IoTmanager/dev02-bedroom/light1, value: {"status":"0"}
Publish config: Success ({"id":"2","page":"Bedroom1","pageId":"1","descr":"Bedroom light-2","widget":"toggle","topic":"/IoTmanager/dev02-bedroom/light2","color":"green"})
Publish new status for /IoTmanager/dev02-bedroom/light2, value: {"status":"1"}
Publish config: Success ({"id":"3","page":"Bedroom2","pageId":"2","descr":"ADC","widget":"small-badge","topic":"/IoTmanager/dev02-bedroom/ADC","badge":"badge-calm","style":"font-size:150%;"})
Publish new status for /IoTmanager/dev02-bedroom/ADC, value: {"status":"0"}
Publish config: Success ({"id":"4","page":"Bedroom2","pageId":"2","descr":"Bedroom light-4","widget":"toggle","topic":"/IoTmanager/dev02-bedroom/light4","color":"orange"})
Publish new status for /IoTmanager/dev02-bedroom/light4, value: {"status":"0"}
Publish config: Success ({"id":"5","page":"Bedroom3","pageId":"3","descr":"Bedroom RED","widget":"range","topic":"/IoTmanager/dev02-bedroom/red","style":"range-assertive","badge":"badge-assertive"})
Publish new status for /IoTmanager/dev02-bedroom/red, value: {"status":"0"}
Publish config: Success ({"id":"6","page":"Bedroom3","pageId":"3","descr":"Bedroom GREEN","widget":"range","topic":"/IoTmanager/dev02-bedroom/green","style":"range-balanced","badge":"badge-balanced"})
Publish new status for /IoTmanager/dev02-bedroom/green, value: {"status":"0"}
Publish config: Success ({"id":"7","page":"Bedroom3","pageId":"3","descr":"Bedroom BLUE","widget":"range","topic":"/IoTmanager/dev02-bedroom/blue","style":"range-calm","badge":"badge-calm"})
Publish new status for /IoTmanager/dev02-bedroom/blue, value: {"status":"0"}
.....
Publish: /IoTmanager/dev02-bedroom/ADC/status => {"status":"0"}
..........
Publish: /IoTmanager/dev02-bedroom/ADC/status => {"status":"0"}
..........
Publish: /IoTmanager/dev02-bedroom/ADC/status => {"status":"0"}
..........
 

Victor

Administrator
Команда форума
Вот что происходит в терменале:
там все ок, данные улетают.
Брокер, как я понял, у вас локальный.
1. Зайдите в IoT Manager в настройки, там Внешний вид - Показывать вкладки страниц - выключить - посмотреть на главной не появились ли виджеты

2. WebSockets есть? Если да, то попробуйте в настройках IoT Manager выбрать движок [inline]paho over websockets[/inline], SSL отключить, если у вас на брокере SSL не сделан.
Если WebSockets нет, тогда только paho native. Порт стандартный.
Попробуйте оба движка. Если соединиятся нормально - идите в логи, там есть кнопочка - можно отправить их себе на почту
 

Alex403

New member
1) Выключил.
2) Я не совсем понимаю что такое WebSockets, SSL у меня отключен. Стандартный порт это какой? У меня в профиле порт 19867. С ним подключался.

Сейчас попробовал разные настройки соединения. Теперь совсем не соединяется с брокером. Что не пробую, ни как(
 

Victor

Administrator
Команда форума
Теперь совсем не соединяется с брокером.
У вас в профиле на cloudmqtt 3 разных порта как на этой картинке Посмотреть вложение 2215

Верхний - "обычный" порт. К нему подключаются ESP8266 (вы этот порт в скетч вставили) и в IoT Manager движок [inline]paho native[/inline].

Нижний порт - WebSockets SSL - к нему можно подключиться только из IoT Manager, движок [inline]paho over WebSockets[/inline] или [inline]mqtt.js over WebSockets[/inline] (должен быть включен SSL).

Подключайтесь, запускайте скетч на ESP8266, и отправляйте сюда логи с телефона
 

Alex403

New member
Переставил приложение. Подключился через обычный порт. Если я добавляю топики в подписке, они не сохраняются.
Вот лог:
0 23:23:28 GMT+0300 (EEST) Paho native: disconnected!
1 23:23:40 GMT+0300 (EEST) Broker: wakeup event.
2 23:23:40 GMT+0300 (EEST) Broker: Trying connect to mqtt://m20.cloudmqtt.com:19867, user:bcwsqumg, pass:<HIDDEN>, engine: "paho native", attempt 1...
3 23:23:40 GMT+0300 (EEST) Paho Native: connecting...
4 23:23:40 GMT+0300 (EEST) Paho native: connect: Success.
5 23:23:40 GMT+0300 (EEST) Broker: onConnect event.
6 23:23:40 GMT+0300 (EEST) Broker: Try subscribe to: "/IoTmanager/+/config"
7 23:23:40 GMT+0300 (EEST) Paho native: Try subscribe "/IoTmanager/+/config"
8 23:23:40 GMT+0300 (EEST) Broker: Try subscribe to: "/IoTmanager/+/+/status"
9 23:23:40 GMT+0300 (EEST) Paho native: Try subscribe "/IoTmanager/+/+/status"
10 23:23:40 GMT+0300 (EEST) Broker: Try subscribe to: "/IoTmanager/+/response"
11 23:23:40 GMT+0300 (EEST) Paho native: Try subscribe "/IoTmanager/+/response"
12 23:23:40 GMT+0300 (EEST) Broker: Try subscribe to: "/IoTmanager/exchange/input"
13 23:23:40 GMT+0300 (EEST) Paho native: Try subscribe "/IoTmanager/exchange/input"
14 23:23:40 GMT+0300 (EEST) Broker: Try subscribe to: "domoticz/in"
15 23:23:40 GMT+0300 (EEST) Paho native: Try subscribe "domoticz/in"
16 23:23:40 GMT+0300 (EEST) Broker: Publish: /IoTmanager payload: HELLO
17 23:23:40 GMT+0300 (EEST) Broker: Publish: /IoTmanager/ids payload: 6e519949-c797-4b0c-90e1-2df0e311875f
18 23:23:40 GMT+0300 (EEST) Broker: Publish: /IoTmanager/device payload: {"connection":"WiFi","width":360,"height":378,"platform":"android","platformVersion":6,"uuid":"efbf3a059b8d52a8"}
19 23:23:40 GMT+0300 (EEST) Broker: Publish: /IoTmanager/efbf3a059b8d52a8/request payload: {"command":"getPages","param":""}
20 23:23:40 GMT+0300 (EEST) Profiler: send "pages list" data: {"pages":[]}
21 23:23:40 GMT+0300 (EEST) Response parser: pages added: 0
22 23:23:40 GMT+0300 (EEST) Broker: Publish: /IoTmanager/efbf3a059b8d52a8/request payload: {"command":"getPageById","param":0}
23 23:23:40 GMT+0300 (EEST) Profiler: send "page by id" data, sent 0 widgets config.
24 23:23:40 GMT+0300 (EEST) Parsing config data from device "dev02-bedroom", widget id=0
25 23:23:40 GMT+0300 (EEST) Parsing config data from device "dev02-bedroom", widget id=1
26 23:23:40 GMT+0300 (EEST) Parsing config data from device "dev02-bedroom", widget id=2
27 23:23:41 GMT+0300 (EEST) Parsing config data from device "dev02-bedroom", widget id=3
28 23:23:41 GMT+0300 (EEST) Parsing config data from device "dev02-bedroom", widget id=4
29 23:23:41 GMT+0300 (EEST) Parsing config data from device "dev02-bedroom", widget id=5
30 23:23:42 GMT+0300 (EEST) Parsing config data from device "dev02-bedroom", widget id=6
31 23:23:43 GMT+0300 (EEST) Parsing config data from device "dev02-bedroom", widget id=7
32 23:23:45 GMT+0300 (EEST) Broker: doSleep event.
33 23:23:45 GMT+0300 (EEST) Broker: disconnected.
34 23:23:45 GMT+0300 (EEST) Paho native: disconnected!
35 23:23:46 GMT+0300 (EEST) Broker: wakeup event.
36 23:23:46 GMT+0300 (EEST) Broker: Trying connect to mqtt://m20.cloudmqtt.com:19867, user:bcwsqumg, pass:<HIDDEN>, engine: "paho native", attempt 1...
37 23:23:46 GMT+0300 (EEST) Paho Native: connecting...
38 23:23:46 GMT+0300 (EEST) Paho native: connect: Success.
39 23:23:46 GMT+0300 (EEST) Broker: onConnect event.
40 23:23:46 GMT+0300 (EEST) Broker: Try subscribe to: "/IoTmanager/+/config"
41 23:23:46 GMT+0300 (EEST) Paho native: Try subscribe "/IoTmanager/+/config"
42 23:23:46 GMT+0300 (EEST) Broker: Try subscribe to: "/IoTmanager/+/+/status"
43 23:23:46 GMT+0300 (EEST) Paho native: Try subscribe "/IoTmanager/+/+/status"
44 23:23:46 GMT+0300 (EEST) Broker: Try subscribe to: "/IoTmanager/+/response"
45 23:23:46 GMT+0300 (EEST) Paho native: Try subscribe "/IoTmanager/+/response"
46 23:23:46 GMT+0300 (EEST) Broker: Try subscribe to: "/IoTmanager/exchange/input"
47 23:23:46 GMT+0300 (EEST) Paho native: Try subscribe "/IoTmanager/exchange/input"
48 23:23:46 GMT+0300 (EEST) Broker: Try subscribe to: "domoticz/in"
49 23:23:46 GMT+0300 (EEST) Paho native: Try subscribe "domoticz/in"
50 23:23:46 GMT+0300 (EEST) Broker: Publish: /IoTmanager payload: HELLO
51 23:23:46 GMT+0300 (EEST) Broker: Publish: /IoTmanager/ids payload: 6e519949-c797-4b0c-90e1-2df0e311875f
52 23:23:46 GMT+0300 (EEST) Broker: Publish: /IoTmanager/device payload: {"connection":"WiFi","width":360,"height":615,"platform":"android","platformVersion":6,"uuid":"efbf3a059b8d52a8"}
53 23:23:46 GMT+0300 (EEST) Broker: Publish: /IoTmanager/efbf3a059b8d52a8/request payload: {"command":"getPages","param":""}
54 23:23:46 GMT+0300 (EEST) Profiler: send "pages list" data: {"pages":[]}
55 23:23:46 GMT+0300 (EEST) Response parser: pages added: 0
56 23:23:46 GMT+0300 (EEST) Broker: Publish: /IoTmanager/efbf3a059b8d52a8/request payload: {"command":"getPageById","param":0}
57 23:23:46 GMT+0300 (EEST) Profiler: send "page by id" data, sent 0 widgets config.
58 23:23:47 GMT+0300 (EEST) Parsing config data from device "dev02-bedroom", widget id=0
59 23:23:47 GMT+0300 (EEST) Parsing config data from device "dev02-bedroom", widget id=1
60 23:23:47 GMT+0300 (EEST) Parsing config data from device "dev02-bedroom", widget id=2
61 23:23:47 GMT+0300 (EEST) Parsing config data from device "dev02-bedroom", widget id=3
62 23:23:47 GMT+0300 (EEST) Parsing config data from device "dev02-bedroom", widget id=4
63 23:23:48 GMT+0300 (EEST) Parsing config data from device "dev02-bedroom", widget id=5
64 23:23:48 GMT+0300 (EEST) Parsing config data from device "dev02-bedroom", widget id=6
65 23:23:48 GMT+0300 (EEST) Parsing config data from device "dev02-bedroom", widget id=7
66 23:23:51 GMT+0300 (EEST) Broker: doSleep event.
67 23:23:51 GMT+0300 (EEST) Broker: disconnected.
68 23:23:51 GMT+0300 (EEST) Paho native: disconnected!
69 23:23:53 GMT+0300 (EEST) Broker: wakeup event.
70 23:23:53 GMT+0300 (EEST) Broker: Trying connect to mqtt://m20.cloudmqtt.com:19867, user:bcwsqumg, pass:<HIDDEN>, engine: "paho native", attempt 1...
71 23:23:53 GMT+0300 (EEST) Paho Native: connecting...
72 23:23:54 GMT+0300 (EEST) Paho native: connect: Success.
73 23:23:54 GMT+0300 (EEST) Broker: onConnect event.
74 23:23:54 GMT+0300 (EEST) Broker: Try subscribe to: "/IoTmanager/+/config"
75 23:23:54 GMT+0300 (EEST) Paho native: Try subscribe "/IoTmanager/+/config"
76 23:23:54 GMT+0300 (EEST) Broker: Try subscribe to: "/IoTmanager/+/+/status"
77 23:23:54 GMT+0300 (EEST) Paho native: Try subscribe "/IoTmanager/+/+/status"
78 23:23:54 GMT+0300 (EEST) Broker: Try subscribe to: "/IoTmanager/+/response"
79 23:23:54 GMT+0300 (EEST) Paho native: Try subscribe "/IoTmanager/+/response"
80 23:23:54 GMT+0300 (EEST) Broker: Try subscribe to: "/IoTmanager/exchange/input"
81 23:23:54 GMT+0300 (EEST) Paho native: Try subscribe "/IoTmanager/exchange/input"
82 23:23:54 GMT+0300 (EEST) Broker: Try subscribe to: "domoticz/in"
83 23:23:54 GMT+0300 (EEST) Paho native: Try subscribe "domoticz/in"
84 23:23:54 GMT+0300 (EEST) Broker: Publish: /IoTmanager payload: HELLO
85 23:23:54 GMT+0300 (EEST) Broker: Publish: /IoTmanager/ids payload: 6e519949-c797-4b0c-90e1-2df0e311875f
86 23:23:54 GMT+0300 (EEST) Broker: Publish: /IoTmanager/device payload: {"connection":"WiFi","width":360,"height":615,"platform":"android","platformVersion":6,"uuid":"efbf3a059b8d52a8"}
87 23:23:54 GMT+0300 (EEST) Broker: Publish: /IoTmanager/efbf3a059b8d52a8/request payload: {"command":"getPages","param":""}
88 23:23:54 GMT+0300 (EEST) Profiler: send "pages list" data: {"pages":[]}
89 23:23:54 GMT+0300 (EEST) Response parser: pages added: 0
90 23:23:54 GMT+0300 (EEST) Broker: Publish: /IoTmanager/efbf3a059b8d52a8/request payload: {"command":"getPageById","param":0}
91 23:23:54 GMT+0300 (EEST) Profiler: send "page by id" data, sent 0 widgets config.
92 23:23:54 GMT+0300 (EEST) Parsing config data from device "dev02-bedroom", widget id=0
93 23:23:54 GMT+0300 (EEST) Parsing config data from device "dev02-bedroom", widget id=1
94 23:23:55 GMT+0300 (EEST) Parsing config data from device "dev02-bedroom", widget id=2
95 23:23:55 GMT+0300 (EEST) Parsing config data from device "dev02-bedroom", widget id=3
96 23:23:55 GMT+0300 (EEST) Parsing config data from device "dev02-bedroom", widget id=4
97 23:23:55 GMT+0300 (EEST) Parsing config data from device "dev02-bedroom", widget id=5
98 23:23:55 GMT+0300 (EEST) Parsing config data from device "dev02-bedroom", widget id=6
99 23:23:55 GMT+0300 (EEST) Parsing config data from device "dev02-bedroom", widget id=7
 

Victor

Administrator
Команда форума
Вы не даете ему прокачать данные - переключаетесь в другое приложение и он рвет соединение с брокером
[inline]Broker: doSleep event.[/inline]
Зайдите в Настройки - Системные - Отключаться от брокера при переходе в фоновый режим - ВЫКЛ
(потом поставите все обратно, когда разберетесь)
 
Сверху Снизу