NEWS
Драйвер Mqtt + Arduino
-
http://www.iobroker.net/docu/?page_id=4643&lang=ru
Это я смотрел, там хорошо описана процедура по клиенту. А я хочу понять каким образом в сервере прописываются форматы топиков, реагирование на поступающую от клиентов информацию. ` никак не прописываются. Клиент публикует топики. -
При попытке отправить с помощью mosquitto_pub сообщения, получаю следующую ошибку на сервере:
Error: not implemented
С чем это связано?
-
При попытке отправить с помощью mosquitto_pub сообщения, получаю следующую ошибку на сервере:
Error: not implemented
С чем это связано? ` на сервере иоб ошибка? Все в одной сети?
-
на сервере иоб ошибка? Все в одной сети? `
Да, на сервере в логах:mqtt.0 2017-07-10 11:07:49.871 info Client [mosqpub/8739-iot.securi] closed
mqtt.0 2017-07-10 11:07:49.870 warn Client error [mosqpub/8739-iot]: Error: not implemented
mqtt.0 2017-07-10 11:07:49.869 info Client [mosqpub/8739-iot] connected
Я отправляю сообщение с севера, где установлени iobroker.
Еще почему то в Настройках драйвера, драйвер mqtt помечен желтым цветом. В статусе написано "Соединение с mqtt: нет", хотя в логах пишется что сервер вроде как поднят:
mqtt.0 2017-07-10 10:06:02.615 info Starting MQTT server on port 1883
-
на сервере иоб ошибка? Все в одной сети? `
Да, на сервере в логах:mqtt.0 2017-07-10 11:07:49.871 info Client [mosqpub/8739-iot.securi] closed
mqtt.0 2017-07-10 11:07:49.870 warn Client error [mosqpub/8739-iot]: Error: not implemented
mqtt.0 2017-07-10 11:07:49.869 info Client [mosqpub/8739-iot] connected
Я отправляю сообщение с севера, где установлени iobroker.
Еще почему то в Настройках драйвера, драйвер mqtt помечен желтым цветом. В статусе написано "Соединение с mqtt: нет", хотя в логах пишется что сервер вроде как поднят:
mqtt.0 2017-07-10 10:06:02.615 info Starting MQTT server on port 1883 `
Подозреваю не тот ты драйвер поставил. Настройки драйвера покажи -
Подозреваю не тот ты драйвер поставил. Настройки драйвера покажи `
3048_image.jpg
3048_image.jpg -
Подозреваю не тот ты драйвер поставил. Настройки драйвера покажи
Вроде все норм. Сними ещё три галки в настройках. -
Вроде все норм. Сними ещё три галки в настройках. `
Снял, ничего не изменилось. Может необходимо какие библиотеки на сервер поставить или какой нибудь mosquitto?? -
Вроде все норм. Сними ещё три галки в настройках.
Снял, ничего не изменилось. Может необходимо какие библиотеки на сервер поставить или какой нибудь mosquitto??
Ненужны никакие маскиты, драйвер скмодостаточен. И запускает сервер. Проблема с твоим клиентом, он не подписывается наверное? Или отключается от сервера. На вкладке объекты в mqtt.0 топик не появился? -
Ненужны никакие маскиты, драйвер скмодостаточен. И запускает сервер. Проблема с твоим клиентом, он не подписывается наверное? Или отключается от сервера. На вкладке объекты в mqtt.0 топик не появился? `
В объектах у меня следующее:
3048_image.jpg -
Проблема с твоим клиентом, он не подписывается наверное? Или отключается от сервера. На вкладке объекты в mqtt.0 топик не появился? `
Для проверки работы я использую стандартную команду отправки данных:mosquitto_pub -h localhost -p 1883 -t '/test' -m '0'
В ответ получаю следующее сообщение, которое я писал выше.
-
Переустановил iobroker с нуля, на чистую систему.
Делал все по этой инструкии: http://www.iobroker.net/docu/?page_id=3489&lang=ru, не настраивал только IP, так как он зарезервирован на роутере.
В итоге ничего не изменилось.
Подскажите, можно ли как-то включить "режим отладки", для поиска причин?
Не понятно, почему в статусе пишет: Соединение с mqtt: нет?
3048_image.jpg
3048_image.jpg -
Переустановил iobroker с нуля, на чистую систему.
Делал все по этой инструкии: http://www.iobroker.net/docu/?page_id=3489&lang=ru, не настраивал только IP, так как он зарезервирован на роутере.
В итоге ничего не изменилось.
Подскажите, можно ли как-то включить "режим отладки", для поиска причин?
Не понятно, почему в статусе пишет: Соединение с mqtt: нет? `
Я же тебе писал что проблема в клиенте а не в иоб и драйвере.Чтобы было соединение клиент должен быть подписан на топики.
-
Я же тебе писал что проблема в клиенте а не в иоб и драйвере.
Чтобы было соединение клиент должен быть подписан на топики. `
Ниже код, который пытается подключиться, ошибка та же: Client error [test1/1]: Error: not implemented
#include <esp8266wifi.h> #include <wificlientsecure.h> #include <pubsubclient.h> const char* ssid = ""; const char*password = ""; const char *mqtt_server = "10.1.1.1"; const int mqtt_port = 1883; unsigned int send_interval = 10; unsigned long last_time = 0; char buff[20]; int pin13 = 13; WiFiClient ethClient; void callback(char* topic, byte* payload, unsigned int length); PubSubClient client(mqtt_server, mqtt_port, callback, ethClient); void callback(char* topic, byte* payload, unsigned int length) { Serial.println (""); Serial.println ("-------"); Serial.println ("New callback of MQTT-broker"); //преобразуем тему(topic) и значение (payload) в строку payload[length] = '\0'; String strTopic = String(topic); String strPayload = String((char*)payload); //Исследуем что "прилетело" от сервера по подписке: //Управление светодиодом if (strTopic == "test1/setdat") { if (strPayload == "off" || strPayload == "0" || strPayload == "false") digitalWrite(pin13, LOW); if (strPayload == "on" || strPayload == "1" || strPayload == "true") digitalWrite(pin13, HIGH); } Serial.print (strTopic); Serial.print (" "); Serial.println (strPayload); Serial.println ("-------"); Serial.println (""); } void wifiConnect() { WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(300); Serial.print("."); digitalWrite(pin13, 0); delay(300); digitalWrite(pin13, 1); delay(300); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); digitalWrite(pin13, 0); } void setup() { Serial.begin(115200); Serial.begin(115200); pinMode(pin13, OUTPUT); delay(10); wifiConnect(); } void loop() { //Если соединение MQTT неактивно, то пытаемся установить его и опубликовать/подписаться if (!client.connected()) { Serial.print("Connect to MQTT-boker... "); //Подключаемся и публикуемся/подписываемся if (client.connect("test1/1")) { Serial.println("success"); //Значение с датчиков client.publish("test1/1", "1"); //Подписываемся на переменную управления светодиодом client.subscribe("test1/setdata"); } else { //Если не подключились, ждем 10 секунд и пытаемся снова Serial.print("Failed, rc="); Serial.print(client.state()); Serial.println(" try again in 10 seconds"); delay (10000); } //Если соединение активно, то отправляем данные на сервер с заданным интервалом времени } else { if (millis() > (last_time + send_interval * 1000)) { last_time = millis(); client.publish("test1/1", "1"); } } //Проверка входящих соединений по подписке client.loop(); }</pubsubclient.h></wificlientsecure.h></esp8266wifi.h>
-
Я же тебе писал что проблема в клиенте а не в иоб и драйвере.
Чтобы было соединение клиент должен быть подписан на топики. `
Ниже код, который пытается подключиться, ошибка та же: Client error [test1/1]: Error: not implemented
#include <esp8266wifi.h> #include <wificlientsecure.h> #include <pubsubclient.h> const char* ssid = ""; const char*password = ""; const char *mqtt_server = "10.1.1.1"; const int mqtt_port = 1883; unsigned int send_interval = 10; unsigned long last_time = 0; char buff[20]; int pin13 = 13; WiFiClient ethClient; void callback(char* topic, byte* payload, unsigned int length); PubSubClient client(mqtt_server, mqtt_port, callback, ethClient); void callback(char* topic, byte* payload, unsigned int length) { Serial.println (""); Serial.println ("-------"); Serial.println ("New callback of MQTT-broker"); //преобразуем тему(topic) и значение (payload) в строку payload[length] = '\0'; String strTopic = String(topic); String strPayload = String((char*)payload); //Исследуем что "прилетело" от сервера по подписке: //Управление светодиодом if (strTopic == "test1/setdat") { if (strPayload == "off" || strPayload == "0" || strPayload == "false") digitalWrite(pin13, LOW); if (strPayload == "on" || strPayload == "1" || strPayload == "true") digitalWrite(pin13, HIGH); } Serial.print (strTopic); Serial.print (" "); Serial.println (strPayload); Serial.println ("-------"); Serial.println (""); } void wifiConnect() { WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(300); Serial.print("."); digitalWrite(pin13, 0); delay(300); digitalWrite(pin13, 1); delay(300); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); digitalWrite(pin13, 0); } void setup() { Serial.begin(115200); Serial.begin(115200); pinMode(pin13, OUTPUT); delay(10); wifiConnect(); } void loop() { //Если соединение MQTT неактивно, то пытаемся установить его и опубликовать/подписаться if (!client.connected()) { Serial.print("Connect to MQTT-boker... "); //Подключаемся и публикуемся/подписываемся if (client.connect("test1/1")) { Serial.println("success"); //Значение с датчиков client.publish("test1/1", "1"); //Подписываемся на переменную управления светодиодом client.subscribe("test1/setdata"); } else { //Если не подключились, ждем 10 секунд и пытаемся снова Serial.print("Failed, rc="); Serial.print(client.state()); Serial.println(" try again in 10 seconds"); delay (10000); } //Если соединение активно, то отправляем данные на сервер с заданным интервалом времени } else { if (millis() > (last_time + send_interval * 1000)) { last_time = millis(); client.publish("test1/1", "1"); } } //Проверка входящих соединений по подписке client.loop(); }</pubsubclient.h></wificlientsecure.h></esp8266wifi.h> ```` ` переведи драйвер в режим дебаг и скинь лог
-
Лог во вложении
3048_log.txt -
Лог во вложении `
Даже не знаю что может быть.Попробуй код изменить на :
if (client.connect("test")) { Serial.println("success"); //Значение с датчиков client.publish("test1/1", "1"); //Подписываемся на переменную управления светодиодом client.subscribe("test1/#"); }
-
Лог во вложении `
Даже не знаю что может быть.Попробуй код изменить на :
if (client.connect("test")) { Serial.println("success"); //Значение с датчиков client.publish("test1/1", "1"); //Подписываемся на переменную управления светодиодом client.subscribe("test1/#"); } ```` `
Все тоже самое
Меня больше всего смущает статус драйвера "Соединение с mqtt: нет", такое ощущение что mqtt не стартует.
-
Лог во вложении `
Даже не знаю что может быть.Попробуй код изменить на :
if (client.connect("test")) { Serial.println("success"); //Значение с датчиков client.publish("test1/1", "1"); //Подписываемся на переменную управления светодиодом client.subscribe("test1/#"); } ```` `
Все тоже самое
Меня больше всего смущает статус драйвера "Соединение с mqtt: нет", такое ощущение что mqtt не стартует. `
Это статус соединения с клиентами, т.е. если какой либо клиент будет подписан то будет зеленый -
А у тебя файрволов нет никаких? Порт больше никто не держит?