NEWS
Драйвер Mqtt + Arduino
-
..Я бы сделал скриптом который следит за клиентом и как только он подписывается то записывать нужное значение
Вот с этого момента поподробнее, пожалуйста…
Ну что то подобное! ````
var flag = false;
on({id: "mqtt.0.info.connection", change: "any"}, function (obj) {
log('obj.newState.val = '+ obj.newState.val);
if (~obj.newState.val.indexOf('LG_TV') && !flag){
flag = true;
log('Пишем предыдущее значение');
setState('mqtt.0.ARDUINO.COUNTER', '100500');
} else {
flag = false;
}
}); -
Всем доброго дня!
Подскажите новичку, установил 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
С чем это связано? ` на сервере иоб ошибка? Все в одной сети?
-
на сервере иоб ошибка? Все в одной сети? `
Да, на сервере в логах: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>
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden