NEWS
Драйвер MQTT
-
P.S. - нашёл - проблема растёт от последнего обновления - https://github.com/ioBroker/ioBroker.mq … 6da0fdf4fe - за комментил строки со 102 по 108, 101 строку привёл к предыдущему состоянию````
client = mqtt.connect(_url);По крайней мере, клиент стал подключаться… ;) `Исправил.
-
Есть очередной девайс на ESP8266: вот часть кода на Arduino IDE для взаимодействия c MQTT сервером:
! ````
void loop() {! if (WiFi.status() == WL_CONNECTED) {
if (!client.connected()) {
Serial.println("Connecting to MQTT server ...");
bool success;
if (mqttuser.length() > 0) {
success = client.connect( MQTT::Connect( deviceID ).set_auth(mqttuser, mqttpass) );
} else {
success = client.connect( deviceID );
client.publish("ControlTopic","I Work!");
}
if (success) {
client.set_callback(callback);
Serial.println("Connect to MQTT server: Success");
client.subscribe(prefix); // for receiving HELLO messages and handshaking
client.subscribe(prefix + "/" + deviceID + "/+/control"); // subscribe to all "control" messages for all widgets of this device
pubConfig();
} else {
Serial.println("Connect to MQTT server: FAIL");
////delay(1000);
}
}
! ````
Если подключаюсь на одном и том же компе с работающем сервером HiveMQ - девайс отлично коннектится с сервером, публикут данные и подписывается на изменения топиков..работает сутками.Отключаю HiveMQ, запускаю копию драйвера MQTT в режиме сервера на том же порту (1883), тот же клиент уже нормально не работает, вот лог:
WiFi connected IP address: 192.168.0.121 Starting UDP Local port: 2390 sending NTP packet... packet received, length=48 The UTC time is 19:18:22 Connecting to MQTT server ... Connect to MQTT server: Success pm open,type:2 0 Publish config FAIL! ({"id":0,"page":"котёл","widget":"anydata","topic":"/IoTmanager/143162-1458400/anydata0","class1":"item no-border text-center","descr":"КОТЕЛЬНАЯ","class2":"balanced","style2":"font-size:21px;font-weight:bold;"}) Restarting after 5 sec...Вот лог сервака на IO Broker:
! ````
mqtt-1 2016-04-29 19:18:20 info publishOnSubscribe send all known states
mqtt-1 2016-04-29 19:18:20 info Client [143162-1458400] subscribes on "IoTmanager.143162-1458400.+.control" with regex /mqtt.1.IoTmanager.143162-1458400.[^.].control/
mqtt-1 2016-04-29 19:18:20 info Client [143162-1458400] subscribes on "IoTmanager.143162-1458400.+.control" with regex /IoTmanager.143162-1458400.[^.].control/
mqtt-1 2016-04-29 19:18:20 info Client [143162-1458400] subscribes on topic "/IoTmanager"То есть, подключаться у него получается, но дальше, где-то на стадии подписки на изменения, происходит затык, он видит ошибку и перезапускается, и так по кругу…На любых других серверах данный клиент работает сутками без нареканий... Суть скетчка для клиента описана подробна описана тут - [http://esp8266.ru/forum/threads/iot-man ... denij.651/](http://esp8266.ru/forum/threads/iot-manager-arxiv-obsuzhdenij.651/) Может, подскажите, где затык в клиенте или всё-таки в исходниках драйвера...Клиент работает стабильно на всех серверах и в сети и в локалке... `А у тебя галочка стоит, что публиковать всё при соединении?
Может esp не выдерживает количество переменных?
-
растет потребление RAM (уже 290). параметр Max RAM установлен в 50. клиент на arduino. `
MaxRam работает только для 0.х.х. -
mqtt 1.0.4 когда выставляю значение Max RAM - показатель RAM сначала устанавливается ниже а потом растет. `
MaxRam работает только для версий node.js ниже 1.0.0 -
Поправил в 1.1.2 `
Заработало!Но в логе стало сыпаться:
javascript.0 2016-09-14 09:08:32.080 warn javascript.0 Wrong type of mqtt.0.beeiot.Bee-RGB.lcd.line1: "string". Please fix, while deprecated and will not work in next versions. javascript.0 2016-09-14 09:08:32.080 warn javascript.0 Wrong type of mqtt.0.beeiot.Bee-RGB.lcd.line0: "string". Please fix, while deprecated and will not work in next versions. javascript-0 2016-09-14 09:08:30.081 warn Wrong type of mqtt.0.beeiot.Bee-RGB.lcd.line1: "string". Please fix, while deprecated and will not work in next versions. javascript-0 2016-09-14 09:08:30.081 warn Wrong type of mqtt.0.beeiot.Bee-RGB.lcd.line0: "string". Please fix, while deprecated and will not work in next versions.Скрипт такой:````
on({id: 'squeezebox.0.Children.elapsedTimeText', change: 'any'}, function (obj) {
setState("mqtt.0.beeiot.Bee-RGB.lcd.line0", "Прошло " + getState("squeezebox.0.Children.elapsedTimeText").val);
setState("mqtt.0.beeiot.Bee-RGB.lcd.line1", getState("squeezebox.0.Children.currentArtist").val);
setState("mqtt.0.beeiot.Bee-RGB.lcd.line2", "Громкость " + getState("squeezebox.0.Children.volume").val + " %");
});Понял что ему значение string не нравится а как его изменить или задать - не пойму. PS: Проблему исправил. В редактировании объекта mqtt.0.beeiot.Bee-RGB.lcd.lineХ - выбрал тип данных "Строка" -
Добрый день всем,
строку для отображения. Но проблема в том, что ESP не публикует этот топик (но подписан на все топики /nodename/* по willcard, следовательно получит информауию и обработает).Следовательно надо этот топик опубликовать средствами IOB. Вопрос - как?
-
Добрый день всем,
строку для отображения. Но проблема в том, что ESP не публикует этот топик (но подписан на все топики /nodename/* по willcard, следовательно получит информауию и обработает).Следовательно надо этот топик опубликовать средствами IOB. Вопрос - как? `
Создать в админ такой объект ручками -
Добрый день всем,
строку для отображения. Но проблема в том, что ESP не публикует этот топик (но подписан на все топики /nodename/* по willcard, следовательно получит информауию и обработает).Следовательно надо этот топик опубликовать средствами IOB. Вопрос - как?
Создать в админ такой объект ручками
Сначала создаем в нужном устройстве lcd (у меня OLED дисплей), а потом внутри него line1, line2 и так далее…! [img
] -
Добрый день всем,
строку для отображения. Но проблема в том, что ESP не публикует этот топик (но подписан на все топики /nodename/* по willcard, следовательно получит информауию и обработает).Следовательно надо этот топик опубликовать средствами IOB. Вопрос - как?
Создать в админ такой объект ручками
Сначала создаем в нужном устройстве lcd (у меня OLED дисплей), а потом внутри него line1, line2 и так далее…! [imgioBroker.admin.png] `
Спасибо, все получилось. Хотелось бы уточнить - надо для этой переменной ставить Role: variable, или text как у вас? У меня работает variable. Значит без разницы? Вообще на что влияет свойвство common.role? Сходу не нашел в ддокументации.
-
Создать в админ такой объект ручками `
Сначала создаем в нужном устройстве lcd (у меня OLED дисплей), а потом внутри него line1, line2 и так далее…! [imgioBroker.admin.png] `
Спасибо, все получилось. Хотелось бы уточнить - надо для этой переменной ставить Role: variable, или text как у вас? У меня работает variable. Значит без разницы? Вообще на что влияет свойвство common.role? Сходу не нашел в ддокументации. `
Role используется для отображения. Что бы знать, как это значение показывать в vis или mobile -
Добрый день всем,
строку для отображения. Но проблема в том, что ESP не публикует этот топик (но подписан на все топики /nodename/* по willcard, следовательно получит информауию и обработает).Следовательно надо этот топик опубликовать средствами IOB. Вопрос - как?
Создать в админ такой объект ручкамиВозникла странная проблема. Создаю объект руками, через админку назначаю значение, все отлично, по MQTT модуль принимает данные и отображает мгновенно.
А вот когда я изменяю состояние этого объекта из JavaScript, то в админке вижу что состояние меняется, но модуль по MQTT обновления не получает. Пробовал setState с ask = true, и false,
без разницы. При рестарте модуля ESP он читает данные из топика, но при обновлении из скрипта - нет.
Куда копать, где грабли ? :)
-
Добрый день всем,
строку для отображения. Но проблема в том, что ESP не публикует этот топик (но подписан на все топики /nodename/* по willcard, следовательно получит информауию и обработает).Следовательно надо этот топик опубликовать средствами IOB. Вопрос - как?
Создать в админ такой объект ручкамиВозникла странная проблема. Создаю объект руками, через админку назначаю значение, все отлично, по MQTT модуль принимает данные и отображает мгновенно.
А вот когда я изменяю состояние этого объекта из JavaScript, то в админке вижу что состояние меняется, но модуль по MQTT обновления не получает. Пробовал setState с ask = true, и false,
без разницы. При рестарте модуля ESP он читает данные из топика, но при обновлении из скрипта - нет.
Куда копать, где грабли ? :) `
Попробуй слать и отслеживать с помощью mqtt-spy. Мне часто помогает помогает понять ,что происходит с mqtt -
Создать в админ такой объект ручками `
Возникла странная проблема. Создаю объект руками, через админку назначаю значение, все отлично, по MQTT модуль принимает данные и отображает мгновенно.
А вот когда я изменяю состояние этого объекта из JavaScript, то в админке вижу что состояние меняется, но модуль по MQTT обновления не получает. Пробовал setState с ask = true, и false,
без разницы. При рестарте модуля ESP он читает данные из топика, но при обновлении из скрипта - нет.
Куда копать, где грабли ? :)
Попробуй слать и отслеживать с помощью mqtt-spy. Мне часто помогает помогает понять ,что происходит с mqttПоставил mqtt-spy и вижу что MQTT драйвер не шлет ничего, когда топик обновляется из javascript. Мистика.
Куда копать дальше?
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login