NEWS
Драйвер Mqtt + Arduino
-
Всем доброго дня!
Подскажите новичку, установил iobroker и драйвер mqtt, но не могу понять принцип работы. Каким образом необходимо прописывать логику работы. Мне необходимо, что бы клиент отправлял к примеру, сообщение 1 на topic id1, а сервер давал ответ 0 на topic id1. Где и каким образом прописывать эту логику.
Заранее спасибо.
-
Всем доброго дня!
Подскажите новичку, установил iobroker и драйвер mqtt, но не могу понять принцип работы. Каким образом необходимо прописывать логику работы. Мне необходимо, что бы клиент отправлял к примеру, сообщение 1 на topic id1, а сервер давал ответ 0 на topic id1. Где и каким образом прописывать эту логику.
Заранее спасибо. `
В качестве клиента ардуина?
-
В качестве клиента ардуина? `
Да, ардуина, но в планах еще и ESP. Но с клиентом мне вроде все понятно. А вот как iobroker настроить, я не понимаю. -
В качестве клиента ардуина?
Да, ардуина, но в планах еще и ESP. Но с клиентом мне вроде все понятно. А вот как iobroker настроить, я не понимаю.
http://www.iobroker.net/docu/?page_id=4643&lang=ru -
http://www.iobroker.net/docu/?page_id=4643&lang=ru
Это я смотрел, там хорошо описана процедура по клиенту. А я хочу понять каким образом в сервере прописываются форматы топиков, реагирование на поступающую от клиентов информацию. -
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> ```` ` переведи драйвер в режим дебаг и скинь лог