Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Русский
    3. ioBroker
    4. ioBroker драйвера
    5. Драйвер Mqtt + Arduino

    NEWS

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    Драйвер Mqtt + Arduino

    This topic has been deleted. Only users with topic management privileges can see it.
    • I
      instalator last edited by

      Как бы удалить левые данные из объектов mqtt? переменные удалил а папки немогу

      1 Reply Last reply Reply Quote 0
      • E
        electric69 last edited by

        @instalator:

        Как бы удалить левые данные из объектов mqtt? переменные удалил а папки немогу `
        Хмм, я удаляю все топики из папки и она сама исчезает)

        1 Reply Last reply Reply Quote 0
        • I
          instalator last edited by

          @electric69:

          @instalator:

          Как бы удалить левые данные из объектов mqtt? переменные удалил а папки немогу Хмм, я удаляю все топики из папки и она сама исчезает)
          Точно! Спасибо.

          1 Reply Last reply Reply Quote 0
          • E
            electric69 last edited by

            Погонял у себя систему пару ночей, вроде больше не сбоит.

            Датчики реальные не стал подключать, просто передавал данные АЦП по портам А0, А1, А2. Вставил в них проводочки (антеннки) чтобы показания "прыгали".

            Настройки адаптера прикрепил.

            Скетч прикрепил, данные в ioBroker появятся автоматически, надо только поменять настройки в тексте программы.

            BlueFox, немцам там тоже закинь удочку, пускай протестируют…

            Сейчас хочу попробовать поуправлять дискреткой.
            50_pic_121.jpg
            50_pic_120.jpg
            50_plc1_sendvaluesensors.7z
            50_plc1_sendvaluesensors_eng.7z

            1 Reply Last reply Reply Quote 0
            • Bluefox
              Bluefox last edited by

              @instalator:

              Меня вот больше беспокоит, при подключении клиента как данные актуальные передать, чтоб брокер не скидывал их в "0" `
              Можешь привести лог, когда переменные сбрасываются… Не могут они сбрасываться. Если переменная уже существует, то в неё запишется принятое от клиента значение (значит клиент сам сбрасывает на ноль). Если переменная не существует и значение клиент не передал, но подписаться на неё хочет, то создаться переменная со значением "null" как строка.

              Но это произойдёт только один раз и только если клиент никакого значения не предоставил.

              "null" можно элементарно отсечь на клиенте.

              1 Reply Last reply Reply Quote 0
              • E
                electric69 last edited by

                @Bluefox:

                @instalator:

                Меня вот больше беспокоит, при подключении клиента как данные актуальные передать, чтоб брокер не скидывал их в "0" `
                Можешь привести лог, когда переменные сбрасываются… Не могут они сбрасываться. Если переменная уже существует, то в неё запишется принятое от клиента значение (значит клиент сам сбрасывает на ноль). Если переменная не существует и значение клиент не передал, но подписаться на неё хочет, то создаться переменная со значением "null" как строка.

                Но это произойдёт только один раз и только если клиент никакого значения не предоставил.

                "null" можно элементарно отсечь на клиенте. `
                Ниже сообщение юзера instalator (15.05.2015, 19:09) что сбрасываются переменные при рестарте ардуины.

                Предположу что при инициализации переменных в скетче они устанавливаются в ноль и публикуются не первой итерации (цикле), затем цикл проходит место актуализации переменных и данные идут нормальные.

                1 Reply Last reply Reply Quote 0
                • Bluefox
                  Bluefox last edited by

                  @electric69:

                  Погонял у себя систему пару ночей, вроде больше не сбоит.

                  Датчики реальные не стал подключать, просто передавал данные АЦП по портам А0, А1, А2. Вставил в них проводочки (антеннки) чтобы показания "прыгали".

                  Настройки адаптера прикрепил.

                  Скетч прикрепил, данные в ioBroker появятся автоматически, надо только поменять настройки в тексте программы.

                  BlueFox, немцам там тоже закинь удочку, пускай протестируют…

                  Сейчас хочу попробовать поуправлять дискреткой. `
                  Супер. Только можно подправить две вещи:
                  ! ````
                  /*
                  Arduino controller, MQTT-client for ioBroker. Use MQTT Adapter as server in ioBroker (at least 0.2.4)
                  IP address: 192.168.69.71
                  Platform: Arduino UNO R3 + EthernetShield W5100
                  IDE: 1.0.5-r2
                  Date: 15.05.2015
                  Version: 0.1
                  License: MIT, Copyright 2015 electric69


                  It is test sketch. Following analog inputs will be polled: pinA0, pinA1, pinA2. Values have type int (Analog from 0...1023).
                  Client ID, and root name "arduinoPLC71".
                  Following topics will be created automatically in ioBorker by start:
                  1. "arduinoPLC71/status" - status of arduino controller (online, error)
                  2. "arduinoPLC71/pollTimer" - send/publish intervall (client is subscribed on this value)
                  3. "arduinoPLC71/sensorA0/value" - group sensorA0, measurement result
                  4. "arduinoPLC71/sensorA0/status" - group sensorA0, sensor state (ОК, error)
                  5. analogically for groups sensorA1 and sensorA2.

                  ! After the controller is started following happens:

                  • Set the MAC and static IP of own ethernet driver
                    При старте настраивается сетевое соединение (MAC-адрес и статический IP адрес),
                  • Init of serial port for output of debug information

                  ! During main loop:

                  • If not connected, try to connect to MQTT Broker
                  • If connected poll every X seconds the analog ports and publish them after that
                  • If the analog port data was read with errors, it (or error code) will be reported in the topic "arduinoPLC71/sensorA0/status" for group sensorA0. Accordingly for other groups.
                    **/
                    //------------------------------------------ Libraries ------------------------------------------//
                    //Use libraries
                    #include <spi.h>#include <ethernet.h>#include <pubsubclient.h>//https://github.com/knolleary/pubsubclient
                    //---------------------------------------- End libraries ----------------------------------------//

                  ! //------------------------------------------- Ethernet ------------------------------------------//
                  //Global constants for network connection: MAC, Own IP, MQTT Broker IP
                  byte mac[] = { 0xDE, 0xED, 0xBA, 0xFE, 0xFE, 0x71 };
                  byte mqttserver[] = { 192, 168, 69, 51 };
                  byte ip[] = { 192, 168, 69, 71 };
                  EthernetClient ethClient;
                  PubSubClient client(mqttserver, 1883, callback, ethClient);
                  //----------------------------------------- End ethernet ----------------------------------------//
                  ! //------------------------------------------- Sensors -------------------------------------------//
                  int analogPinA0 = 0;
                  int analogPinA1 = 1;
                  int analogPinA2 = 2;
                  int SensorA0 = 0;
                  int SensorA1 = 0;
                  int SensorA2 = 0;
                  char buff[20];
                  unsigned long lastTime = 0;
                  unsigned long poolTime = 5; // Values publish interval: by default 5 seconds
                  //----------------------------------------- End Sensors -----------------------------------------//
                  ! //###############################################################################################//
                  //########################################## Functions ##########################################//
                  //###############################################################################################//
                  ! //------------------------------------------- Callback -----------------------------------------//
                  // process publishes from MQTT broker
                  void callback(char* topic, byte* payload, unsigned int length) {
                  Serial.println ("");
                  Serial.println ("-------");
                  Serial.println ("New callback of MQTT-broker");
                  // Convert name(topic) and value (payload) to string
                  payload[length] = '\0';
                  String strTopic = String(topic);
                  String strPayload = String((char*)payload);
                  // Ignore "null" values from broker
                  if (strPayload == "null") return;
                  //Convert string to integer
                  poolTime = strPayload.toInt();
                  Serial.print (strTopic);
                  Serial.print (" ");
                  Serial.println (poolTime);
                  Serial.println ("-------");
                  Serial.println ("");
                  }
                  //----------------------------------------- End callback ---------------------------------------//
                  ! //------------------------------------------ Void setup ----------------------------------------//
                  void setup() {
                  Serial.begin(9600);
                  Serial.println("Start mqtt-client controller arduinoPLC7...");
                  //стартуем сетевое подключение
                  Ethernet.begin(mac, ip);
                  Serial.print("PLC's IP: ");
                  Serial.println(Ethernet.localIP());
                  }
                  //---------------------------------------- End void setup --------------------------------------//
                  ! //------------------------------------------ Void loop -----------------------------------------//
                  void loop() {
                  client.loop(); //check publishes from broker
                  // If no connection
                  if (!client.connected()) {
                  Serial.print("Connect to MQTT-boker... ");
                  //Try to connect
                  if (client.connect("arduinoPLC71")) {
                  Serial.println("success");
                  client.publish("arduinoPLC71/status","online");
                  client.subscribe("arduinoPLC71/pollTimer");
                  // ------------------------ CHANGED START -------------------------
                  // Force send of values to broker
                  lastTime = 0;
                  // ------------------------ CHANGED END ---------------------------
                  }
                  else {
                  Serial.println("failed!");
                  }
                  } else
                  //If connected
                  //Read every "poolTime" seconds the values and send to broker
                  if(!lastTime || millis() > (lastTime + poolTime*1000)) {
                  lastTime = millis();
                  Serial.println(" ");
                  //read the data and publish it
                  SensorA0 = analogRead(analogPinA0);
                  sprintf(buff,"%d",SensorA0); //if float dtostrf(SensorA0, 5, 2, buff);
                  Serial.print("Publish to MQTT-broker value sensor A0 is: ");
                  Serial.println(buff);
                  client.publish("arduinoPLC71/sensorA0/value",buff);
                  client.publish("arduinoPLC71/sensorA0/status","OK");
                  SensorA1 = analogRead(analogPinA1);
                  sprintf(buff,"%d",SensorA1); //if float dtostrf(SensorA0, 5, 2, buff);
                  Serial.print("Publish to MQTT-broker value sensor A1 is: ");
                  Serial.println(buff);
                  client.publish("arduinoPLC71/sensorA1/value",buff);
                  client.publish("arduinoPLC71/sensorA1/status","OK");
                  SensorA2 = analogRead(analogPinA2);
                  sprintf(buff,"%d",SensorA2); //if float dtostrf(SensorA0, 5, 2, buff);
                  Serial.print("Publish to MQTT-broker value sensor A2 is: ");
                  Serial.println(buff);
                  client.publish("arduinoPLC71/sensorA2/value",buff);
                  client.publish("arduinoPLC71/sensorA2/status","OK");
                  //--------
                  }
                  }
                  //---------------------------------------- End void loop ---------------------------------------//</pubsubclient.h></ethernet.h></spi.h>

                  1 Reply Last reply Reply Quote 0
                  • I
                    instalator last edited by

                    @electric69:

                    Погонял у себя систему пару ночей, вроде больше не сбоит.

                    Датчики реальные не стал подключать, просто передавал данные АЦП по портам А0, А1, А2. Вставил в них проводочки (антеннки) чтобы показания "прыгали".

                    Настройки адаптера прикрепил.

                    Скетч прикрепил, данные в ioBroker появятся автоматически, надо только поменять настройки в тексте программы.

                    BlueFox, немцам там тоже закинь удочку, пускай протестируют…

                    Сейчас хочу попробовать поуправлять дискреткой. `
                    У меня с аналоговых тоже отдаются нормальные показания, только вот с датчика DHT22 при первой отправке улетают "0"

                    Дискретка у меня вроде работает норм, управление сервоприводом наладил. Перепрошил свой контроллер света вроде работает даже постабильнее и с меньшими задержками.

                    Спасибо что подтолкнули в сторону этого протокола

                    Пожайлуй тоже выкладу свой г…код))
                    266_bedroom_mqtt.rar

                    1 Reply Last reply Reply Quote 0
                    • I
                      instalator last edited by

                      После обновлнеия ничего не работает. Верните прошлую версия все отлично работало

                      1 Reply Last reply Reply Quote 0
                      • Bluefox
                        Bluefox last edited by

                        @instalator:

                        После обновлнеия ничего не работает. Верните прошлую версия все отлично работало `
                        Не может ВСЁ не работать. Я поменял всего 2 строчки.

                        • Если маска не задана, то выдавать все состояния

                        • Поменял имена топиков

                        Можно посмотреть здесь: https://github.com/ioBroker/ioBroker.mq … 631839fa1a

                        1 Reply Last reply Reply Quote 0
                        • I
                          instalator last edited by

                          @Bluefox:

                          @instalator:

                          После обновлнеия ничего не работает. Верните прошлую версия все отлично работало `
                          Не может ВСЁ не работать. Я поменял всего 2 строчки.

                          • Если маска не задана, то выдавать все состояния

                          • Поменял имена топиков

                          Можно посмотреть здесь: https://github.com/ioBroker/ioBroker.mq … 631839fa1a `
                          Раньше такая строка отправлялась от брокера: myhome/Bedroom/Servo

                          Сейчас: mqtt/0/myhome/Bedroom/Servo

                          Предлагаю вернуть как было

                          Я так понял префикс добавили, може предусмтореть настройку без префикса)

                          1 Reply Last reply Reply Quote 0
                          • Bluefox
                            Bluefox last edited by

                            Попробуй снова

                            1 Reply Last reply Reply Quote 0
                            • I
                              instalator last edited by

                              @Bluefox:

                              Попробуй снова `
                              Работает.

                              Получается сейчас если префикс не указан то без него шлется?

                              1 Reply Last reply Reply Quote 0
                              • Bluefox
                                Bluefox last edited by

                                Да. Так и есть.

                                1 Reply Last reply Reply Quote 0
                                • I
                                  instalator last edited by

                                  Отключил клиентов, подключил не все подписываются, уже е службу перезапускал и ардуину - не подписывается.

                                  И вообще как то тяжковато подписка повторяется после рестарта драйвера в брокере

                                  ! mqtt-0 2015-05-16 17:07:55 warn [undefined] Error: read ECONNRESET
                                  ! mqtt-0 2015-05-16 17:07:55 warn [undefined] Error: read ECONNRESET
                                  ! mqtt-0 2015-05-16 17:07:55 warn [undefined] Error: read ECONNRESET
                                  ! mqtt-0 2015-05-16 17:07:55 warn [undefined] Error: read ECONNRESET
                                  ! mqtt-0 2015-05-16 17:07:55 warn [undefined] Error: read ECONNRESET
                                  ! mqtt-0 2015-05-16 17:07:55 warn [undefined] Error: read ECONNRESET
                                  ! mqtt-0 2015-05-16 17:07:55 warn [undefined] Error: read ECONNRESET
                                  ! mqtt-0 2015-05-16 17:07:55 warn [undefined] Error: read ECONNRESET
                                  ! mqtt-0 2015-05-16 17:07:55 warn [undefined] Error: read ECONNRESET
                                  ! mqtt-0 2015-05-16 17:07:55 warn [undefined] Error: read ECONNRESET
                                  ! mqtt-0 2015-05-16 17:07:55 warn [undefined] Error: read ECONNRESET
                                  ! mqtt-0 2015-05-16 17:07:55 warn [undefined] Error: read ECONNRESET
                                  ! mqtt-0 2015-05-16 17:07:55 warn [undefined] Error: read ECONNRESET
                                  ! mqtt-0 2015-05-16 17:07:55 warn [undefined] Error: read ECONNRESET
                                  ! mqtt-0 2015-05-16 17:07:55 warn [undefined] Error: read ECONNRESET
                                  ! mqtt-0 2015-05-16 17:07:55 warn [undefined] Error: read ECONNRESET
                                  ! mqtt-0 2015-05-16 17:07:55 warn [undefined] Error: read ECONNRESET
                                  ! mqtt-0 2015-05-16 17:07:55 warn [undefined] Error: read ECONNRESET
                                  ! mqtt-0 2015-05-16 17:07:55 warn [undefined] Error: read ECONNRESET
                                  ! mqtt-0 2015-05-16 17:07:55 warn [undefined] Error: read ECONNRESET
                                  ! mqtt-0 2015-05-16 17:07:55 warn [undefined] Error: read ECONNRESET
                                  ! mqtt-0 2015-05-16 17:07:55 warn [undefined] Error: read ECONNRESET
                                  ! mqtt-0 2015-05-16 17:07:55 warn [undefined] Error: read ECONNRESET
                                  ! mqtt-0 2015-05-16 17:07:55 warn [undefined] Error: read ECONNRESET
                                  ! mqtt-0 2015-05-16 17:07:55 warn [undefined] Error: read ECONNRESET
                                  ! mqtt-0 2015-05-16 17:07:55 warn [undefined] Error: read ECONNRESET
                                  ! mqtt-0 2015-05-16 17:07:55 warn [undefined] Error: read ECONNRESET
                                  ! mqtt-0 2015-05-16 17:07:55 warn [undefined] Error: read ECONNRESET
                                  ! mqtt-0 2015-05-16 17:07:55 warn [undefined] Error: read ECONNRESET
                                  ! mqtt-0 2015-05-16 17:07:55 warn [undefined] Error: read ECONNRESET
                                  ! mqtt-0 2015-05-16 17:07:55 warn [undefined] Error: read ECONNRESET
                                  ! mqtt-0 2015-05-16 17:07:55 warn [undefined] Error: read ECONNRESET
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  ! mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                  266_666666.png

                                  1 Reply Last reply Reply Quote 0
                                  • Bluefox
                                    Bluefox last edited by

                                    > mqtt-0 2015-05-16 17:07:55 info Client [undefined] closed
                                    Ну знаешь "undefined" как то подозрительно выглядит.

                                    1 Reply Last reply Reply Quote 0
                                    • I
                                      instalator last edited by

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

                                      Походу кеш браузера был(((

                                      1 Reply Last reply Reply Quote 0
                                      • I
                                        instalator last edited by

                                        Навалился непонятно откуда мусор:

                                        Как его теперь удалить?
                                        266_32432423423423.png

                                        1 Reply Last reply Reply Quote 0
                                        • E
                                          electric69 last edited by

                                          @instalator:

                                          Навалился непонятно откуда мусор:

                                          Как его теперь удалить? `
                                          Может как то криво клиент "публикует" данные?

                                          1 Reply Last reply Reply Quote 0
                                          • I
                                            instalator last edited by

                                            @electric69:

                                            @instalator:

                                            Навалился непонятно откуда мусор:

                                            Как его теперь удалить? Может как то криво клиент "публикует" данные?
                                            Может быть был глюк. но почему нету кнопки удаления переменной?

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            1.1k
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

                                            18
                                            244
                                            63450
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo