Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Русский
    3. ioBroker
    4. ioBroker основное
    5. Arduino+Mqtt FAQ для начинающих.

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Arduino+Mqtt FAQ для начинающих.

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

      @Securbond:

      @instalator:

      @Securbond:

      Когда начинаю выкидывать еще больше ошибок, то одно не находит то другое…

      Ну да ладно пойду рыть по форуму. Что бы выкидывать что то нужно понять что нужно а что не очень..

      Спасиб.. `
      Какие там могут быть ошибки? вот код оставил только mqtt

      ! ````
      #include <spi.h> // Ethernet shield
      #include <ethernet.h> // Ethernet shield
      #include <pubsubclient.h> // MQTT
      ! byte mac[] = { 0xC1, 0x7C, 0x38, 0x41, 0x89, 0x12 };
      byte server[] = { 192, 168, 1, 190 }; //IP Брокера
      byte ip[] = { 192, 168, 1, 167 }; //IP Клиента (Arduino)
      ! EthernetClient ethClient;
      PubSubClient client(server, 1883, callback, ethClient);
      #define id_connect "myhome-kitchen"
      #define Prefix_subscribe "myhome/Kitchen/"
      ! ///////////////Объявляем порты ввода-вывода
      ! ////////////////////////////////////////////////////////////////////////////
      void callback(char* topic, byte* payload, unsigned int length) {
      payload[length] = '\0';
      // Serial.print(topic);
      // Serial.print("=");
      String strTopic = String(topic);
      String strPayload = String((char*)payload);
      // Serial.println(strPayload);
      callback_iobroker(strTopic, strPayload);
      }
      ////////////////////////////////////////////////////////////////////////////
      void setup() {
      ! Ethernet.begin(mac, ip);
      if (client.connect(id_connect)) {
      client.publish("myhome/Kitchen/Change_Counter", "0");
      client.subscribe("myhome/Kitchen/#");
      }
      }
      /////////////////////////////////////////////////////////////////////////
      void loop() {
      client.loop();
      if (!client.connected()) {
      if (client.connect(id_connect)) {
      client.subscribe("myhome/Kitchen/#");
      }
      }
      }
      ! /////////////////////////////////От Брокера//////////////////////////////////////////////
      void callback_iobroker(String strTopic, String strPayload){
      if (strTopic == "0"){

      }
      }</pubsubclient.h></ethernet.h></spi.h>
      ```` `

      Я так понимаю если все работает то Ваш скрипт должен был создать какие то топики в MQTT,

      но в логах инфу видно

      ! filename="88.JPG" index="1">~~
      а вот в MQTT ничего нового

      ! filename="99.JPG" index="0">~~ `
      не там смотришь, смотри не в system а просто в mqtt.0

      1 Reply Last reply Reply Quote 0
      • S
        Securbond last edited by

        @instalator:

        @Securbond:

        @instalator:

        Какие там могут быть ошибки? вот код оставил только mqtt

        ! ````
        #include <spi.h> // Ethernet shield
        #include <ethernet.h> // Ethernet shield
        #include <pubsubclient.h> // MQTT
        ! byte mac[] = { 0xC1, 0x7C, 0x38, 0x41, 0x89, 0x12 };
        byte server[] = { 192, 168, 1, 190 }; //IP Брокера
        byte ip[] = { 192, 168, 1, 167 }; //IP Клиента (Arduino)
        ! EthernetClient ethClient;
        PubSubClient client(server, 1883, callback, ethClient);
        #define id_connect "myhome-kitchen"
        #define Prefix_subscribe "myhome/Kitchen/"
        ! ///////////////Объявляем порты ввода-вывода
        ! ////////////////////////////////////////////////////////////////////////////
        void callback(char* topic, byte* payload, unsigned int length) {
        payload[length] = '\0';
        // Serial.print(topic);
        // Serial.print("=");
        String strTopic = String(topic);
        String strPayload = String((char*)payload);
        // Serial.println(strPayload);
        callback_iobroker(strTopic, strPayload);
        }
        ////////////////////////////////////////////////////////////////////////////
        void setup() {
        ! Ethernet.begin(mac, ip);
        if (client.connect(id_connect)) {
        client.publish("myhome/Kitchen/Change_Counter", "0");
        client.subscribe("myhome/Kitchen/#");
        }
        }
        /////////////////////////////////////////////////////////////////////////
        void loop() {
        client.loop();
        if (!client.connected()) {
        if (client.connect(id_connect)) {
        client.subscribe("myhome/Kitchen/#");
        }
        }
        }
        ! /////////////////////////////////От Брокера//////////////////////////////////////////////
        void callback_iobroker(String strTopic, String strPayload){
        if (strTopic == "0"){

        }
        }</pubsubclient.h></ethernet.h></spi.h>
        ```` `

        Я так понимаю если все работает то Ваш скрипт должен был создать какие то топики в MQTT,

        но в логах инфу видно

        ! filename="88.JPG" index="2">~~
        а вот в MQTT ничего нового

        ! filename="99.JPG" index="1">~~ не там смотришь, смотри не в system а просто в mqtt.0

        а нету у меня просто mqtt.0

        ! 939_100.jpg

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

          @Securbond:

          @instalator:

          @Securbond:

          Я так понимаю если все работает то Ваш скрипт должен был создать какие то топики в MQTT,

          но в логах инфу видно

          ! filename="88.JPG" index="2">~~
          а вот в MQTT ничего нового

          ! filename="99.JPG" index="1">~~ не там смотришь, смотри не в system а просто в mqtt.0

          а нету у меня просто mqtt.0

          ! filename="100.JPG" index="0">~~ `
          Надеюсь обновлял? лучше рестартани вообще iobroker

          1 Reply Last reply Reply Quote 0
          • S
            Securbond last edited by

            @instalator:

            @Securbond:

            @instalator:

            не там смотришь, смотри не в system а просто в mqtt.0 `

            а нету у меня просто mqtt.0

            ! filename="100.JPG" index="0">~~ Надеюсь обновлял? лучше рестартани вообще iobroker

            Рестартанул, не появилось,

            удалил MQQT драйвер, поставил заново все равно только system((

            :oops: 😞

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

              @Securbond:

              @instalator:

              @Securbond:

              а нету у меня просто mqtt.0

              ! filename="100.JPG" index="0">~~ Надеюсь обновлял? лучше рестартани вообще iobroker

              Рестартанул, не появилось,

              удалил MQQT драйвер, поставил заново все равно только system((

              :oops: 😞 `
              По фильтру Detskay тоже ничего? у тебя ардуина публикует данные при старте?

              client.publish("myhome/Kitchen/Change_Counter", "0"); //публикует на iobroker если его нет создает объект.

              1 Reply Last reply Reply Quote 0
              • S
                Securbond last edited by

                @instalator:

                @Securbond:

                @instalator:

                Надеюсь обновлял? лучше рестартани вообще iobroker `

                Рестартанул, не появилось,

                удалил MQQT драйвер, поставил заново все равно только system((

                :oops: 😞 `
                По фильтру Detskay тоже ничего? у тебя ардуина публикует данные при старте?

                client.publish("myhome/Kitchen/Change_Counter", "0"); //публикует на iobroker если его нет создает объект. `

                Вот где собака порылась….

                Выключил, включил ардуину и все появилось.

                Спасибо за терпение..

                1 Reply Last reply Reply Quote 0
                • S
                  Securbond last edited by

                  Теперь осталось разобраться в твоём коде и понять как публикуются данные.

                  1 Reply Last reply Reply Quote 0
                  • S
                    Securbond last edited by

                    @instalator:

                    @Securbond:

                    Похоже проблема в подключении к локалке, пока что не вижу шилда в сети …

                    Спасибо, сейчас попробую голый скетч залить. На всякий случай [http://forum.iobroker.net/viewtopic.php?f=33&amp;t=1609](http://forum.iobroker.net/viewtopic.php?f=33&amp;t=1609), мало ли)

                    не посмотришь где я косячу ?

                    ! ````
                    #include <spi.h> // Ethernet shield
                    #include <ethernet.h> // Ethernet shield
                    #include <pubsubclient.h> // MQTT
                    #include <virtualwire.h>
                    #include <easytransfervirtualwire.h>
                    #include <wire.h>
                    #include <liquidcrystal_i2c.h>
                    LiquidCrystal_I2C lcd(0x27,16,2);
                    ///
                    byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
                    byte server[] = {192, 168, 0, 102}; //IP Брокера
                    IPAddress ip(192, 168, 0, 112);
                    ! EthernetClient ethClient;
                    PubSubClient client(server, 1883, callback, ethClient);
                    #define id_connect "UNO_1"
                    #define Prefix_subscribe "UNO/Detskaya/"
                    ! ////////////////////////////////////////////////////////////////////////////
                    void callback(char* topic, byte* payload, unsigned int length) {
                    payload[length] = '\0';
                    // Serial.print(topic);
                    // Serial.print("=");
                    String strTopic = String(topic);
                    String strPayload = String((char*)payload);
                    // Serial.println(strPayload);
                    callback_iobroker(strTopic, strPayload);
                    }
                    ! ////////////////////////////////////////////////////////////////////////////
                    //create object
                    EasyTransferVirtualWire ET;
                    ! struct SEND_DATA_STRUCTURE
                    {
                    //put your variable definitions here for the data you want to send
                    //THIS MUST BE EXACTLY THE SAME ON THE OTHER ARDUINO
                    //Struct can'e be bigger then 26 bytes for VirtualWire version
                    byte ID;
                    long TemperatureBMP = 0;
                    long TemperatureDS = 0;
                    long Pressure = 0;
                    ! };
                    ! //give a name to the group of data
                    SEND_DATA_STRUCTURE mydata;
                    byte ID;
                    long TemperatureBMP = 0;
                    long TemperatureDS = 0;
                    long Pressure = 0;
                    ! void setup(){
                    //start the library, pass in the data details
                    ET.begin(details(mydata));
                    Serial.begin(9600);
                    // Initialise the IO and ISR
                    vw_set_ptt_inverted(true); // Required for DR3100
                    vw_setup(2000); // Bits per sec Скорость порта
                    vw_set_rx_pin(8); //порт к которому подключен приемник 433 мГц
                    vw_rx_start(); // Start the receiver PLL running

                    lcd.init(); // Инициализируем экран
                    lcd.backlight(); //Включаем подсветку

                    ! Ethernet.begin(mac, ip);
                    if (client.connect(id_connect)) {
                    client.publish("UNO/Detskaya/Temp", "0");
                    client.publish("UNO/Detskaya/Pressure", "0");
                    client.subscribe("UNO/Detskaya/#");
                    }

                    }

                    ! void loop(){

                    //check and see if a data packet has come in.
                    if(ET.receiveData()){
                    //this is how you access the variables. [name of the group].[variable name]
                    //since we have data, we will blink it out.
                    if (mydata.ID == 1)
                    {
                    int TempBMP= (mydata.TemperatureBMP);
                    TempBMP = ((TempBMP)/100);
                    float TempDS= (mydata.TemperatureDS);
                    TempDS = ((TempDS)/100);
                    float Pressure2= (mydata.Pressure);
                    Pressure2 = ((Pressure2)/100);

                     client.loop();
                      if (!client.connected()) {
                        if (client.connect(id_connect)) {
                    client.publish("UNO/Detskaya/Temp", TempDS);
                     client.publish("UNO/Detskaya/Pressure", Pressure2);      
                      client.subscribe("UNO/Detskaya/#");
                        }
                    }  
                    

                    // Serial.print(TempBMP); //Вывод информации в COM порт
                    // Serial.println(", TempBMP:");
                    // Температуру в градусах Цельсия
                    Serial.print(TempDS);
                    Serial.print(" C°,");
                    // Температуру в градусах Цельсия
                    Serial.print(Pressure2);
                    Serial.print(" mm/");
                    //Выводим давление в мм.рт ст
                    Serial.println();
                    Serial.println();
                    delay(1000);

                                                      //Вывод информации на  LCD Экран
                    

                    lcd.clear();//очищаем экран от старых данных
                    lcd.setCursor(0,0);//Устанавливаем курсор в начало первой строки
                    lcd.print("T1:");//Выводим первую температуру
                    lcd.print(TempDS);
                    lcd.setCursor(8,0);// устанавливаем курсор на 8 позицию в первой строке
                    lcd.print(" T2:");//Выводим вторую температуру
                    lcd.print(TempBMP);
                    //аналогично выводим вторую строку
                    lcd.setCursor(0,1);//Устанавливаем курсор в начало второй строки
                    lcd.print("Davlenie:");//Выводим давление
                    lcd.print(Pressure2);
                    }

                    }

                    ! }</liquidcrystal_i2c.h></wire.h></easytransfervirtualwire.h></virtualwire.h></pubsubclient.h></ethernet.h></spi.h>

                    
                    Ругается -
                    
                    >! priemnik433_E2.ino: In function 'void callback(char*, byte*, unsigned int)':
                    >! priemnik433_E2:28: error: 'callback_iobroker' was not declared in this scope
                    >! priemnik433_E2.ino: In function 'void loop()':
                    >! priemnik433_E2:96: error: no matching function for call to 'PubSubClient::publish(const char [18], float&)'
                    >! priemnik433_E2.ino:96:47: note: candidates are:
                    >! In file included from priemnik433_E2.ino:3:0:
                    >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:117:12: note: boolean PubSubClient::publish(const char*, const char*)
                    >! boolean publish(const char* topic, const char* payload);
                    >! ^
                    >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:117:12: note: no known conversion for argument 2 from 'float' to 'const char*'
                    >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:118:12: note: boolean PubSubClient::publish(const char*, const char*, boolean)
                    >! boolean publish(const char* topic, const char* payload, boolean retained);
                    >! ^
                    >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:118:12: note: candidate expects 3 arguments, 2 provided
                    >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:119:12: note: boolean PubSubClient::publish(const char*, const uint8_t*, unsigned int)
                    >! boolean publish(const char* topic, const uint8_t * payload, unsigned int plength);
                    >! ^
                    >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:119:12: note: candidate expects 3 arguments, 2 provided
                    >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:120:12: note: boolean PubSubClient::publish(const char*, const uint8_t*, unsigned int, boolean)
                    >! boolean publish(const char* topic, const uint8_t * payload, unsigned int plength, boolean retained);
                    >! ^
                    >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:120:12: note: candidate expects 4 arguments, 2 provided
                    >! priemnik433_E2:97: error: no matching function for call to 'PubSubClient::publish(const char [22], float&)'
                    >! priemnik433_E2.ino:97:55: note: candidates are:
                    >! In file included from priemnik433_E2.ino:3:0:
                    >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:117:12: note: boolean PubSubClient::publish(const char*, const char*)
                    >! boolean publish(const char* topic, const char* payload);
                    >! ^
                    >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:117:12: note: no known conversion for argument 2 from 'float' to 'const char*'
                    >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:118:12: note: boolean PubSubClient::publish(const char*, const char*, boolean)
                    >! boolean publish(const char* topic, const char* payload, boolean retained);
                    >! ^
                    >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:118:12: note: candidate expects 3 arguments, 2 provided
                    >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:119:12: note: boolean PubSubClient::publish(const char*, const uint8_t*, unsigned int)
                    >! boolean publish(const char* topic, const uint8_t * payload, unsigned int plength);
                    >! ^
                    >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:119:12: note: candidate expects 3 arguments, 2 provided
                    >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:120:12: note: boolean PubSubClient::publish(const char*, const uint8_t*, unsigned int, boolean)
                    >! boolean publish(const char* topic, const uint8_t * payload, unsigned int plength, boolean retained);
                    >! ^
                    >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:120:12: note: candidate expects 4 arguments, 2 provided
                    >! 'callback_iobroker' was not declared in this scope
                    1 Reply Last reply Reply Quote 0
                    • I
                      instalator last edited by

                      @Securbond:

                      @instalator:

                      @Securbond:

                      Похоже проблема в подключении к локалке, пока что не вижу шилда в сети …

                      Спасибо, сейчас попробую голый скетч залить. На всякий случай [http://forum.iobroker.net/viewtopic.php?f=33&amp;t=1609](http://forum.iobroker.net/viewtopic.php?f=33&amp;t=1609), мало ли)

                      не посмотришь где я косячу ?

                      ! ````
                      #include <spi.h> // Ethernet shield
                      #include <ethernet.h> // Ethernet shield
                      #include <pubsubclient.h> // MQTT
                      #include <virtualwire.h>
                      #include <easytransfervirtualwire.h>
                      #include <wire.h>
                      #include <liquidcrystal_i2c.h>
                      LiquidCrystal_I2C lcd(0x27,16,2);
                      ///
                      byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
                      byte server[] = {192, 168, 0, 102}; //IP Брокера
                      IPAddress ip(192, 168, 0, 112);
                      ! EthernetClient ethClient;
                      PubSubClient client(server, 1883, callback, ethClient);
                      #define id_connect "UNO_1"
                      #define Prefix_subscribe "UNO/Detskaya/"
                      ! ////////////////////////////////////////////////////////////////////////////
                      void callback(char* topic, byte* payload, unsigned int length) {
                      payload[length] = '\0';
                      // Serial.print(topic);
                      // Serial.print("=");
                      String strTopic = String(topic);
                      String strPayload = String((char*)payload);
                      // Serial.println(strPayload);
                      callback_iobroker(strTopic, strPayload);
                      }
                      ! ////////////////////////////////////////////////////////////////////////////
                      //create object
                      EasyTransferVirtualWire ET;
                      ! struct SEND_DATA_STRUCTURE
                      {
                      //put your variable definitions here for the data you want to send
                      //THIS MUST BE EXACTLY THE SAME ON THE OTHER ARDUINO
                      //Struct can'e be bigger then 26 bytes for VirtualWire version
                      byte ID;
                      long TemperatureBMP = 0;
                      long TemperatureDS = 0;
                      long Pressure = 0;
                      ! };
                      ! //give a name to the group of data
                      SEND_DATA_STRUCTURE mydata;
                      byte ID;
                      long TemperatureBMP = 0;
                      long TemperatureDS = 0;
                      long Pressure = 0;
                      ! void setup(){
                      //start the library, pass in the data details
                      ET.begin(details(mydata));
                      Serial.begin(9600);
                      // Initialise the IO and ISR
                      vw_set_ptt_inverted(true); // Required for DR3100
                      vw_setup(2000); // Bits per sec Скорость порта
                      vw_set_rx_pin(8); //порт к которому подключен приемник 433 мГц
                      vw_rx_start(); // Start the receiver PLL running

                      lcd.init(); // Инициализируем экран
                      lcd.backlight(); //Включаем подсветку

                      ! Ethernet.begin(mac, ip);
                      if (client.connect(id_connect)) {
                      client.publish("UNO/Detskaya/Temp", "0");
                      client.publish("UNO/Detskaya/Pressure", "0");
                      client.subscribe("UNO/Detskaya/#");
                      }

                      }

                      ! void loop(){

                      //check and see if a data packet has come in.
                      if(ET.receiveData()){
                      //this is how you access the variables. [name of the group].[variable name]
                      //since we have data, we will blink it out.
                      if (mydata.ID == 1)
                      {
                      int TempBMP= (mydata.TemperatureBMP);
                      TempBMP = ((TempBMP)/100);
                      float TempDS= (mydata.TemperatureDS);
                      TempDS = ((TempDS)/100);
                      float Pressure2= (mydata.Pressure);
                      Pressure2 = ((Pressure2)/100);

                       client.loop();
                        if (!client.connected()) {
                          if (client.connect(id_connect)) {
                      client.publish("UNO/Detskaya/Temp", TempDS);
                       client.publish("UNO/Detskaya/Pressure", Pressure2);      
                        client.subscribe("UNO/Detskaya/#");
                          }
                      }  
                      

                      // Serial.print(TempBMP); //Вывод информации в COM порт
                      // Serial.println(", TempBMP:");
                      // Температуру в градусах Цельсия
                      Serial.print(TempDS);
                      Serial.print(" C°,");
                      // Температуру в градусах Цельсия
                      Serial.print(Pressure2);
                      Serial.print(" mm/");
                      //Выводим давление в мм.рт ст
                      Serial.println();
                      Serial.println();
                      delay(1000);

                                                        //Вывод информации на  LCD Экран
                      

                      lcd.clear();//очищаем экран от старых данных
                      lcd.setCursor(0,0);//Устанавливаем курсор в начало первой строки
                      lcd.print("T1:");//Выводим первую температуру
                      lcd.print(TempDS);
                      lcd.setCursor(8,0);// устанавливаем курсор на 8 позицию в первой строке
                      lcd.print(" T2:");//Выводим вторую температуру
                      lcd.print(TempBMP);
                      //аналогично выводим вторую строку
                      lcd.setCursor(0,1);//Устанавливаем курсор в начало второй строки
                      lcd.print("Davlenie:");//Выводим давление
                      lcd.print(Pressure2);
                      }

                      }

                      ! }</liquidcrystal_i2c.h></wire.h></easytransfervirtualwire.h></virtualwire.h></pubsubclient.h></ethernet.h></spi.h>

                      
                      Ругается -
                      
                      >! priemnik433_E2.ino: In function 'void callback(char*, byte*, unsigned int)':
                      >! priemnik433_E2:28: error: 'callback_iobroker' was not declared in this scope
                      >! priemnik433_E2.ino: In function 'void loop()':
                      >! priemnik433_E2:96: error: no matching function for call to 'PubSubClient::publish(const char [18], float&)'
                      >! priemnik433_E2.ino:96:47: note: candidates are:
                      >! In file included from priemnik433_E2.ino:3:0:
                      >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:117:12: note: boolean PubSubClient::publish(const char*, const char*)
                      >! boolean publish(const char* topic, const char* payload);
                      >! ^
                      >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:117:12: note: no known conversion for argument 2 from 'float' to 'const char*'
                      >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:118:12: note: boolean PubSubClient::publish(const char*, const char*, boolean)
                      >! boolean publish(const char* topic, const char* payload, boolean retained);
                      >! ^
                      >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:118:12: note: candidate expects 3 arguments, 2 provided
                      >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:119:12: note: boolean PubSubClient::publish(const char*, const uint8_t*, unsigned int)
                      >! boolean publish(const char* topic, const uint8_t * payload, unsigned int plength);
                      >! ^
                      >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:119:12: note: candidate expects 3 arguments, 2 provided
                      >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:120:12: note: boolean PubSubClient::publish(const char*, const uint8_t*, unsigned int, boolean)
                      >! boolean publish(const char* topic, const uint8_t * payload, unsigned int plength, boolean retained);
                      >! ^
                      >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:120:12: note: candidate expects 4 arguments, 2 provided
                      >! priemnik433_E2:97: error: no matching function for call to 'PubSubClient::publish(const char [22], float&)'
                      >! priemnik433_E2.ino:97:55: note: candidates are:
                      >! In file included from priemnik433_E2.ino:3:0:
                      >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:117:12: note: boolean PubSubClient::publish(const char*, const char*)
                      >! boolean publish(const char* topic, const char* payload);
                      >! ^
                      >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:117:12: note: no known conversion for argument 2 from 'float' to 'const char*'
                      >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:118:12: note: boolean PubSubClient::publish(const char*, const char*, boolean)
                      >! boolean publish(const char* topic, const char* payload, boolean retained);
                      >! ^
                      >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:118:12: note: candidate expects 3 arguments, 2 provided
                      >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:119:12: note: boolean PubSubClient::publish(const char*, const uint8_t*, unsigned int)
                      >! boolean publish(const char* topic, const uint8_t * payload, unsigned int plength);
                      >! ^
                      >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:119:12: note: candidate expects 3 arguments, 2 provided
                      >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:120:12: note: boolean PubSubClient::publish(const char*, const uint8_t*, unsigned int, boolean)
                      >! boolean publish(const char* topic, const uint8_t * payload, unsigned int plength, boolean retained);
                      >! ^
                      >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:120:12: note: candidate expects 4 arguments, 2 provided
                      >! 'callback_iobroker' was not declared in this scope `  
                      

                      Типы переменных передаваемые в функцию не совпадают.

                      Пробуй так

                            if (!client.connected()) {
                              if (client.connect(id_connect)) {
                              char b[5]; 
                      
                          String char_TempDS = String(TempDS);
                          char_TempDS.toCharArray(b,5);
                          client.publish("UNO/Detskaya/Temp", b);
                      
                              String char_Pressure2 = String(Pressure2);
                          char_Pressure2.toCharArray(b,5);
                          client.publish("UNO/Detskaya/Temp", b);
                      
                            client.subscribe("UNO/Detskaya/#");
                              }
                          }  
                      
                      1 Reply Last reply Reply Quote 0
                      • S
                        Securbond last edited by

                        @instalator:

                        @Securbond:

                        @instalator:

                        На всякий случай http://forum.iobroker.net/viewtopic.php?f=33&t=1609, мало ли) `

                        не посмотришь где я косячу ?

                        ! ````
                        #include <spi.h> // Ethernet shield
                        #include <ethernet.h> // Ethernet shield
                        #include <pubsubclient.h> // MQTT
                        #include <virtualwire.h>
                        #include <easytransfervirtualwire.h>
                        #include <wire.h>
                        #include <liquidcrystal_i2c.h>
                        LiquidCrystal_I2C lcd(0x27,16,2);
                        ///
                        byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
                        byte server[] = {192, 168, 0, 102}; //IP Брокера
                        IPAddress ip(192, 168, 0, 112);
                        ! EthernetClient ethClient;
                        PubSubClient client(server, 1883, callback, ethClient);
                        #define id_connect "UNO_1"
                        #define Prefix_subscribe "UNO/Detskaya/"
                        ! ////////////////////////////////////////////////////////////////////////////
                        void callback(char* topic, byte* payload, unsigned int length) {
                        payload[length] = '\0';
                        // Serial.print(topic);
                        // Serial.print("=");
                        String strTopic = String(topic);
                        String strPayload = String((char*)payload);
                        // Serial.println(strPayload);
                        callback_iobroker(strTopic, strPayload);
                        }
                        ! ////////////////////////////////////////////////////////////////////////////
                        //create object
                        EasyTransferVirtualWire ET;
                        ! struct SEND_DATA_STRUCTURE
                        {
                        //put your variable definitions here for the data you want to send
                        //THIS MUST BE EXACTLY THE SAME ON THE OTHER ARDUINO
                        //Struct can'e be bigger then 26 bytes for VirtualWire version
                        byte ID;
                        long TemperatureBMP = 0;
                        long TemperatureDS = 0;
                        long Pressure = 0;
                        ! };
                        ! //give a name to the group of data
                        SEND_DATA_STRUCTURE mydata;
                        byte ID;
                        long TemperatureBMP = 0;
                        long TemperatureDS = 0;
                        long Pressure = 0;
                        ! void setup(){
                        //start the library, pass in the data details
                        ET.begin(details(mydata));
                        Serial.begin(9600);
                        // Initialise the IO and ISR
                        vw_set_ptt_inverted(true); // Required for DR3100
                        vw_setup(2000); // Bits per sec Скорость порта
                        vw_set_rx_pin(8); //порт к которому подключен приемник 433 мГц
                        vw_rx_start(); // Start the receiver PLL running

                        lcd.init(); // Инициализируем экран
                        lcd.backlight(); //Включаем подсветку

                        ! Ethernet.begin(mac, ip);
                        if (client.connect(id_connect)) {
                        client.publish("UNO/Detskaya/Temp", "0");
                        client.publish("UNO/Detskaya/Pressure", "0");
                        client.subscribe("UNO/Detskaya/#");
                        }

                        }

                        ! void loop(){

                        //check and see if a data packet has come in.
                        if(ET.receiveData()){
                        //this is how you access the variables. [name of the group].[variable name]
                        //since we have data, we will blink it out.
                        if (mydata.ID == 1)
                        {
                        int TempBMP= (mydata.TemperatureBMP);
                        TempBMP = ((TempBMP)/100);
                        float TempDS= (mydata.TemperatureDS);
                        TempDS = ((TempDS)/100);
                        float Pressure2= (mydata.Pressure);
                        Pressure2 = ((Pressure2)/100);

                         client.loop();
                          if (!client.connected()) {
                            if (client.connect(id_connect)) {
                        client.publish("UNO/Detskaya/Temp", TempDS);
                         client.publish("UNO/Detskaya/Pressure", Pressure2);      
                          client.subscribe("UNO/Detskaya/#");
                            }
                        }  
                        

                        // Serial.print(TempBMP); //Вывод информации в COM порт
                        // Serial.println(", TempBMP:");
                        // Температуру в градусах Цельсия
                        Serial.print(TempDS);
                        Serial.print(" C°,");
                        // Температуру в градусах Цельсия
                        Serial.print(Pressure2);
                        Serial.print(" mm/");
                        //Выводим давление в мм.рт ст
                        Serial.println();
                        Serial.println();
                        delay(1000);

                                                          //Вывод информации на  LCD Экран
                        

                        lcd.clear();//очищаем экран от старых данных
                        lcd.setCursor(0,0);//Устанавливаем курсор в начало первой строки
                        lcd.print("T1:");//Выводим первую температуру
                        lcd.print(TempDS);
                        lcd.setCursor(8,0);// устанавливаем курсор на 8 позицию в первой строке
                        lcd.print(" T2:");//Выводим вторую температуру
                        lcd.print(TempBMP);
                        //аналогично выводим вторую строку
                        lcd.setCursor(0,1);//Устанавливаем курсор в начало второй строки
                        lcd.print("Davlenie:");//Выводим давление
                        lcd.print(Pressure2);
                        }

                        }

                        ! }</liquidcrystal_i2c.h></wire.h></easytransfervirtualwire.h></virtualwire.h></pubsubclient.h></ethernet.h></spi.h>

                        
                        Ругается -
                        
                        >! priemnik433_E2.ino: In function 'void callback(char*, byte*, unsigned int)':
                        >! priemnik433_E2:28: error: 'callback_iobroker' was not declared in this scope
                        >! priemnik433_E2.ino: In function 'void loop()':
                        >! priemnik433_E2:96: error: no matching function for call to 'PubSubClient::publish(const char [18], float&)'
                        >! priemnik433_E2.ino:96:47: note: candidates are:
                        >! In file included from priemnik433_E2.ino:3:0:
                        >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:117:12: note: boolean PubSubClient::publish(const char*, const char*)
                        >! boolean publish(const char* topic, const char* payload);
                        >! ^
                        >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:117:12: note: no known conversion for argument 2 from 'float' to 'const char*'
                        >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:118:12: note: boolean PubSubClient::publish(const char*, const char*, boolean)
                        >! boolean publish(const char* topic, const char* payload, boolean retained);
                        >! ^
                        >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:118:12: note: candidate expects 3 arguments, 2 provided
                        >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:119:12: note: boolean PubSubClient::publish(const char*, const uint8_t*, unsigned int)
                        >! boolean publish(const char* topic, const uint8_t * payload, unsigned int plength);
                        >! ^
                        >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:119:12: note: candidate expects 3 arguments, 2 provided
                        >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:120:12: note: boolean PubSubClient::publish(const char*, const uint8_t*, unsigned int, boolean)
                        >! boolean publish(const char* topic, const uint8_t * payload, unsigned int plength, boolean retained);
                        >! ^
                        >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:120:12: note: candidate expects 4 arguments, 2 provided
                        >! priemnik433_E2:97: error: no matching function for call to 'PubSubClient::publish(const char [22], float&)'
                        >! priemnik433_E2.ino:97:55: note: candidates are:
                        >! In file included from priemnik433_E2.ino:3:0:
                        >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:117:12: note: boolean PubSubClient::publish(const char*, const char*)
                        >! boolean publish(const char* topic, const char* payload);
                        >! ^
                        >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:117:12: note: no known conversion for argument 2 from 'float' to 'const char*'
                        >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:118:12: note: boolean PubSubClient::publish(const char*, const char*, boolean)
                        >! boolean publish(const char* topic, const char* payload, boolean retained);
                        >! ^
                        >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:118:12: note: candidate expects 3 arguments, 2 provided
                        >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:119:12: note: boolean PubSubClient::publish(const char*, const uint8_t*, unsigned int)
                        >! boolean publish(const char* topic, const uint8_t * payload, unsigned int plength);
                        >! ^
                        >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:119:12: note: candidate expects 3 arguments, 2 provided
                        >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:120:12: note: boolean PubSubClient::publish(const char*, const uint8_t*, unsigned int, boolean)
                        >! boolean publish(const char* topic, const uint8_t * payload, unsigned int plength, boolean retained);
                        >! ^
                        >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:120:12: note: candidate expects 4 arguments, 2 provided
                        >! 'callback_iobroker' was not declared in this scope `  
                        

                        Типы переменных передаваемые в функцию не совпадают.

                        Пробуй так

                              if (!client.connected()) {
                                if (client.connect(id_connect)) {
                                char b[5]; 
                             
                            String char_TempDS = String(TempDS);
                            char_TempDS.toCharArray(b,5);
                            client.publish("UNO/Detskaya/Temp", b);
                            
                                String char_Pressure2 = String(Pressure2);
                            char_Pressure2.toCharArray(b,5);
                            client.publish("UNO/Detskaya/Temp", b);
                               
                              client.subscribe("UNO/Detskaya/#");
                                }
                            }  
                        ```` `  
                        

                        Остались только эти ошибки

                        priemnik433_E2.ino: In function 'void callback(char*, byte*, unsigned int)':

                        priemnik433_E2:28: error: 'callback_iobroker' was not declared in this scope

                        'callback_iobroker' was not declared in this scope

                        но судя по всему дело все в тех же переменных

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

                          @Securbond:

                          @instalator:

                          @Securbond:

                          не посмотришь где я косячу ?

                          ! ````
                          #include <spi.h> // Ethernet shield
                          #include <ethernet.h> // Ethernet shield
                          #include <pubsubclient.h> // MQTT
                          #include <virtualwire.h>
                          #include <easytransfervirtualwire.h>
                          #include <wire.h>
                          #include <liquidcrystal_i2c.h>
                          LiquidCrystal_I2C lcd(0x27,16,2);
                          ///
                          byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
                          byte server[] = {192, 168, 0, 102}; //IP Брокера
                          IPAddress ip(192, 168, 0, 112);
                          ! EthernetClient ethClient;
                          PubSubClient client(server, 1883, callback, ethClient);
                          #define id_connect "UNO_1"
                          #define Prefix_subscribe "UNO/Detskaya/"
                          ! ////////////////////////////////////////////////////////////////////////////
                          void callback(char* topic, byte* payload, unsigned int length) {
                          payload[length] = '\0';
                          // Serial.print(topic);
                          // Serial.print("=");
                          String strTopic = String(topic);
                          String strPayload = String((char*)payload);
                          // Serial.println(strPayload);
                          callback_iobroker(strTopic, strPayload);
                          }
                          ! ////////////////////////////////////////////////////////////////////////////
                          //create object
                          EasyTransferVirtualWire ET;
                          ! struct SEND_DATA_STRUCTURE
                          {
                          //put your variable definitions here for the data you want to send
                          //THIS MUST BE EXACTLY THE SAME ON THE OTHER ARDUINO
                          //Struct can'e be bigger then 26 bytes for VirtualWire version
                          byte ID;
                          long TemperatureBMP = 0;
                          long TemperatureDS = 0;
                          long Pressure = 0;
                          ! };
                          ! //give a name to the group of data
                          SEND_DATA_STRUCTURE mydata;
                          byte ID;
                          long TemperatureBMP = 0;
                          long TemperatureDS = 0;
                          long Pressure = 0;
                          ! void setup(){
                          //start the library, pass in the data details
                          ET.begin(details(mydata));
                          Serial.begin(9600);
                          // Initialise the IO and ISR
                          vw_set_ptt_inverted(true); // Required for DR3100
                          vw_setup(2000); // Bits per sec Скорость порта
                          vw_set_rx_pin(8); //порт к которому подключен приемник 433 мГц
                          vw_rx_start(); // Start the receiver PLL running

                          lcd.init(); // Инициализируем экран
                          lcd.backlight(); //Включаем подсветку

                          ! Ethernet.begin(mac, ip);
                          if (client.connect(id_connect)) {
                          client.publish("UNO/Detskaya/Temp", "0");
                          client.publish("UNO/Detskaya/Pressure", "0");
                          client.subscribe("UNO/Detskaya/#");
                          }

                          }

                          ! void loop(){

                          //check and see if a data packet has come in.
                          if(ET.receiveData()){
                          //this is how you access the variables. [name of the group].[variable name]
                          //since we have data, we will blink it out.
                          if (mydata.ID == 1)
                          {
                          int TempBMP= (mydata.TemperatureBMP);
                          TempBMP = ((TempBMP)/100);
                          float TempDS= (mydata.TemperatureDS);
                          TempDS = ((TempDS)/100);
                          float Pressure2= (mydata.Pressure);
                          Pressure2 = ((Pressure2)/100);

                           client.loop();
                            if (!client.connected()) {
                              if (client.connect(id_connect)) {
                          client.publish("UNO/Detskaya/Temp", TempDS);
                           client.publish("UNO/Detskaya/Pressure", Pressure2);      
                            client.subscribe("UNO/Detskaya/#");
                              }
                          }  
                          

                          // Serial.print(TempBMP); //Вывод информации в COM порт
                          // Serial.println(", TempBMP:");
                          // Температуру в градусах Цельсия
                          Serial.print(TempDS);
                          Serial.print(" C°,");
                          // Температуру в градусах Цельсия
                          Serial.print(Pressure2);
                          Serial.print(" mm/");
                          //Выводим давление в мм.рт ст
                          Serial.println();
                          Serial.println();
                          delay(1000);

                                                            //Вывод информации на  LCD Экран
                          

                          lcd.clear();//очищаем экран от старых данных
                          lcd.setCursor(0,0);//Устанавливаем курсор в начало первой строки
                          lcd.print("T1:");//Выводим первую температуру
                          lcd.print(TempDS);
                          lcd.setCursor(8,0);// устанавливаем курсор на 8 позицию в первой строке
                          lcd.print(" T2:");//Выводим вторую температуру
                          lcd.print(TempBMP);
                          //аналогично выводим вторую строку
                          lcd.setCursor(0,1);//Устанавливаем курсор в начало второй строки
                          lcd.print("Davlenie:");//Выводим давление
                          lcd.print(Pressure2);
                          }

                          }

                          ! }</liquidcrystal_i2c.h></wire.h></easytransfervirtualwire.h></virtualwire.h></pubsubclient.h></ethernet.h></spi.h>

                          
                          Ругается -
                          
                          >! priemnik433_E2.ino: In function 'void callback(char*, byte*, unsigned int)':
                          >! priemnik433_E2:28: error: 'callback_iobroker' was not declared in this scope
                          >! priemnik433_E2.ino: In function 'void loop()':
                          >! priemnik433_E2:96: error: no matching function for call to 'PubSubClient::publish(const char [18], float&)'
                          >! priemnik433_E2.ino:96:47: note: candidates are:
                          >! In file included from priemnik433_E2.ino:3:0:
                          >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:117:12: note: boolean PubSubClient::publish(const char*, const char*)
                          >! boolean publish(const char* topic, const char* payload);
                          >! ^
                          >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:117:12: note: no known conversion for argument 2 from 'float' to 'const char*'
                          >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:118:12: note: boolean PubSubClient::publish(const char*, const char*, boolean)
                          >! boolean publish(const char* topic, const char* payload, boolean retained);
                          >! ^
                          >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:118:12: note: candidate expects 3 arguments, 2 provided
                          >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:119:12: note: boolean PubSubClient::publish(const char*, const uint8_t*, unsigned int)
                          >! boolean publish(const char* topic, const uint8_t * payload, unsigned int plength);
                          >! ^
                          >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:119:12: note: candidate expects 3 arguments, 2 provided
                          >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:120:12: note: boolean PubSubClient::publish(const char*, const uint8_t*, unsigned int, boolean)
                          >! boolean publish(const char* topic, const uint8_t * payload, unsigned int plength, boolean retained);
                          >! ^
                          >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:120:12: note: candidate expects 4 arguments, 2 provided
                          >! priemnik433_E2:97: error: no matching function for call to 'PubSubClient::publish(const char [22], float&)'
                          >! priemnik433_E2.ino:97:55: note: candidates are:
                          >! In file included from priemnik433_E2.ino:3:0:
                          >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:117:12: note: boolean PubSubClient::publish(const char*, const char*)
                          >! boolean publish(const char* topic, const char* payload);
                          >! ^
                          >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:117:12: note: no known conversion for argument 2 from 'float' to 'const char*'
                          >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:118:12: note: boolean PubSubClient::publish(const char*, const char*, boolean)
                          >! boolean publish(const char* topic, const char* payload, boolean retained);
                          >! ^
                          >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:118:12: note: candidate expects 3 arguments, 2 provided
                          >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:119:12: note: boolean PubSubClient::publish(const char*, const uint8_t*, unsigned int)
                          >! boolean publish(const char* topic, const uint8_t * payload, unsigned int plength);
                          >! ^
                          >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:119:12: note: candidate expects 3 arguments, 2 provided
                          >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:120:12: note: boolean PubSubClient::publish(const char*, const uint8_t*, unsigned int, boolean)
                          >! boolean publish(const char* topic, const uint8_t * payload, unsigned int plength, boolean retained);
                          >! ^
                          >! C:\Users\Bond-PC\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:120:12: note: candidate expects 4 arguments, 2 provided
                          >! 'callback_iobroker' was not declared in this scope `  
                          

                          Типы переменных передаваемые в функцию не совпадают.

                          Пробуй так

                                if (!client.connected()) {
                                  if (client.connect(id_connect)) {
                                  char b[5]; 
                               
                              String char_TempDS = String(TempDS);
                              char_TempDS.toCharArray(b,5);
                              client.publish("UNO/Detskaya/Temp", b);
                              
                                  String char_Pressure2 = String(Pressure2);
                              char_Pressure2.toCharArray(b,5);
                              client.publish("UNO/Detskaya/Temp", b);
                                 
                                client.subscribe("UNO/Detskaya/#");
                                  }
                              }  
                          ```` `  
                          

                          Остались только эти ошибки

                          priemnik433_E2.ino: In function 'void callback(char*, byte*, unsigned int)':

                          priemnik433_E2:28: error: 'callback_iobroker' was not declared in this scope

                          'callback_iobroker' was not declared in this scope

                          но судя по всему дело все в тех же переменных `
                          Ну ругается же на 28 строку - callback_iobroker(strTopic, strPayload);

                          Где в коде сама функция, вызываешь функуию callback_iobroker(strTopic, strPayload); а самой функции нету

                          1 Reply Last reply Reply Quote 0
                          • S
                            Securbond last edited by

                            @instalator:

                            @Securbond:

                            @instalator:

                            Типы переменных передаваемые в функцию не совпадают.

                            Пробуй так

                                  if (!client.connected()) {
                                    if (client.connect(id_connect)) {
                                    char b[5]; 
                                 
                                String char_TempDS = String(TempDS);
                                char_TempDS.toCharArray(b,5);
                                client.publish("UNO/Detskaya/Temp", b);
                                
                                    String char_Pressure2 = String(Pressure2);
                                char_Pressure2.toCharArray(b,5);
                                client.publish("UNO/Detskaya/Temp", b);
                                   
                                  client.subscribe("UNO/Detskaya/#");
                                    }
                                }  
                            ```` `  
                            

                            Остались только эти ошибки

                            priemnik433_E2.ino: In function 'void callback(char*, byte*, unsigned int)':

                            priemnik433_E2:28: error: 'callback_iobroker' was not declared in this scope

                            'callback_iobroker' was not declared in this scope

                            но судя по всему дело все в тех же переменных `
                            Ну ругается же на 28 строку - callback_iobroker(strTopic, strPayload);

                            Где в коде сама функция, вызываешь функуию callback_iobroker(strTopic, strPayload); а самой функции нету `

                            как раз хотел спросить что делает эта функция

                            /////////////////////////////////От Брокера//////////////////////////////////////////////
                            void callback_iobroker(String strTopic, String strPayload){
                              if (strTopic == "0"){
                            
                              }
                            }
                            
                            

                            добавил, ошибок больше стало аааааааа….........
                            6907_bildschirmfoto_2018-11-13_um_11.24.02.png
                            6907_bildschirmfoto_2018-11-13_um_11.23.52.png
                            6907_bildschirmfoto_2018-11-13_um_11.22.48.png
                            6907_bildschirmfoto_2018-11-13_um_11.22.24.png
                            6907_bildschirmfoto_2018-11-13_um_11.22.08.png
                            6907_bildschirmfoto_2018-11-13_um_11.25.35.png

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

                              @Securbond:

                              как раз хотел спросить что делает эта функция

                              /////////////////////////////////От Брокера//////////////////////////////////////////////
                              void callback_iobroker(String strTopic, String strPayload){
                                if (strTopic == "0"){
                                  
                                }
                              }
                              
                              

                              добавил, ошибок больше стало аааааааа…......... `
                              Эта функция принимает strTopic от iobroker.

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

                                @instalator:

                                @Securbond:

                                как раз хотел спросить что делает эта функция

                                /////////////////////////////////От Брокера//////////////////////////////////////////////
                                void callback_iobroker(String strTopic, String strPayload){
                                  if (strTopic == "0"){
                                    
                                  }
                                }
                                
                                

                                добавил, ошибок больше стало аааааааа….........
                                Эта функция принимает strTopic от iobroker.

                                Для примера:

                                /////////////////////////////////От Брокера//////////////////////////////////////////////
                                void callback_iobroker(String strTopic, String strPayload){
                                  if (strTopic == "myhome/Lighting/BedRoom_Main") {
                                    if (strPayload == "0") {
                                      digitalWrite(23, 0);
                                      delay(pause);
                                      client.publish("myhome/Lighting/BedRoom_Main", "0");
                                    }
                                    else if (strPayload == "1") {
                                      digitalWrite(23, 1);
                                      delay(pause);
                                      client.publish("myhome/Lighting/BedRoom_Main", "1");
                                    }
                                  }
                                
                                
                                1 Reply Last reply Reply Quote 0
                                • S
                                  Securbond last edited by

                                  @instalator:

                                  @instalator:

                                  @Securbond:

                                  как раз хотел спросить что делает эта функция

                                  /////////////////////////////////От Брокера//////////////////////////////////////////////
                                  void callback_iobroker(String strTopic, String strPayload){
                                    if (strTopic == "0"){
                                      
                                    }
                                  }
                                  
                                  

                                  добавил, ошибок больше стало аааааааа….........
                                  Эта функция принимает strTopic от iobroker.

                                  Для примера:

                                  /////////////////////////////////От Брокера//////////////////////////////////////////////
                                  void callback_iobroker(String strTopic, String strPayload){
                                    if (strTopic == "myhome/Lighting/BedRoom_Main") {
                                      if (strPayload == "0") {
                                        digitalWrite(23, 0);
                                        delay(pause);
                                        client.publish("myhome/Lighting/BedRoom_Main", "0");
                                      }
                                      else if (strPayload == "1") {
                                        digitalWrite(23, 1);
                                        delay(pause);
                                        client.publish("myhome/Lighting/BedRoom_Main", "1");
                                      }
                                    }
                                  
                                  ```` `  
                                  

                                  как понял это обратная связь, если на брокере значение поменять она передает его ардуине так ??

                                  я эту функцию временно закоментил и залил скетч.

                                  объекты создались но данные не приходят везде стоит - 0

                                  ! 939_77.jpg

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

                                    @Securbond:

                                    как понял это обратная связь, если на брокере значение поменять она передает его ардуине так ??

                                    я эту функцию временно закоментил и залил скетч.

                                    объекты создались но данные не приходят везде стоит - 0

                                    ! filename="77.JPG" index="0">~~ `
                                    Правильно понял, это callback.

                                    а данные у тебя и не будут передаватся брокеру (в коду у тебя так написано), только если ты кабель из ардуины выдернишь и заново вставишь, тогда передадутся данные в iobroker.

                                    добавь строки в общий луп

                                    char b[5];

                                    String char_TempDS = String(TempDS);

                                    char_TempDS.toCharArray(b,5);

                                    client.publish("UNO/Detskaya/Temp", b);

                                    String char_Pressure2 = String(Pressure2);

                                    char_Pressure2.toCharArray(b,5);

                                    client.publish("UNO/Detskaya/Temp", b);

                                    1 Reply Last reply Reply Quote 0
                                    • S
                                      Securbond last edited by

                                      @instalator:

                                      @Securbond:

                                      как понял это обратная связь, если на брокере значение поменять она передает его ардуине так ??

                                      я эту функцию временно закоментил и залил скетч.

                                      объекты создались но данные не приходят везде стоит - 0

                                      ! filename="77.JPG" index="0">~~ `
                                      Правильно понял, это callback.

                                      а данные у тебя и не будут передаватся брокеру (в коду у тебя так написано), только если ты кабель из ардуины выдернишь и заново вставишь, тогда передадутся данные в iobroker.

                                      добавь строки в общий луп

                                      char b[5];

                                      String char_TempDS = String(TempDS);

                                      char_TempDS.toCharArray(b,5);

                                      client.publish("UNO/Detskaya/Temp", b);

                                      String char_Pressure2 = String(Pressure2);

                                      char_Pressure2.toCharArray(b,5);

                                      client.publish("UNO/Detskaya/Temp", b); `

                                      А разве сейчас не так ?

                                      void loop(){
                                      
                                        //check and see if a data packet has come in. 
                                        if(ET.receiveData()){
                                          //this is how you access the variables. [name of the group].[variable name]
                                          //since we have data, we will blink it out. 
                                          if (mydata.ID == 1)
                                          {
                                             int TempBMP= (mydata.TemperatureBMP);
                                             TempBMP = ((TempBMP)/100);
                                             float TempDS= (mydata.TemperatureDS);
                                             TempDS = ((TempDS)/100);
                                             float Pressure2= (mydata.Pressure);
                                             Pressure2 = ((Pressure2)/100);
                                      
                                           client.loop();
                                            if (!client.connected()) {
                                              if (client.connect(id_connect)) {
                                              char b[5]; 
                                      
                                          String char_TempDS = String(TempDS);
                                          char_TempDS.toCharArray(b,5);
                                          client.publish("UNO/Detskaya/Temp", b);
                                      
                                              String char_Pressure2 = String(Pressure2);
                                          char_Pressure2.toCharArray(b,5);
                                          client.publish("UNO/Detskaya/Temp", b);
                                      
                                            client.subscribe("UNO/Detskaya/#");
                                              }
                                          }  
                                      
                                      
                                      1 Reply Last reply Reply Quote 0
                                      • I
                                        instalator last edited by

                                        @Securbond:

                                        @instalator:

                                        @Securbond:

                                        как понял это обратная связь, если на брокере значение поменять она передает его ардуине так ??

                                        я эту функцию временно закоментил и залил скетч.

                                        объекты создались но данные не приходят везде стоит - 0

                                        ! filename="77.JPG" index="0">~~ `
                                        Правильно понял, это callback.

                                        а данные у тебя и не будут передаватся брокеру (в коду у тебя так написано), только если ты кабель из ардуины выдернишь и заново вставишь, тогда передадутся данные в iobroker.

                                        добавь строки в общий луп

                                        char b[5];

                                        String char_TempDS = String(TempDS);

                                        char_TempDS.toCharArray(b,5);

                                        client.publish("UNO/Detskaya/Temp", b);

                                        String char_Pressure2 = String(Pressure2);

                                        char_Pressure2.toCharArray(b,5);

                                        client.publish("UNO/Detskaya/Temp", b); `

                                        А разве сейчас не так ?

                                        void loop(){
                                         
                                          //check and see if a data packet has come in. 
                                          if(ET.receiveData()){
                                            //this is how you access the variables. [name of the group].[variable name]
                                            //since we have data, we will blink it out. 
                                            if (mydata.ID == 1)
                                            {
                                               int TempBMP= (mydata.TemperatureBMP);
                                               TempBMP = ((TempBMP)/100);
                                               float TempDS= (mydata.TemperatureDS);
                                               TempDS = ((TempDS)/100);
                                               float Pressure2= (mydata.Pressure);
                                               Pressure2 = ((Pressure2)/100);
                                             
                                             client.loop();
                                              if (!client.connected()) {
                                                if (client.connect(id_connect)) {
                                                char b[5]; 
                                             
                                            String char_TempDS = String(TempDS);
                                            char_TempDS.toCharArray(b,5);
                                            client.publish("UNO/Detskaya/Temp", b);
                                            
                                                String char_Pressure2 = String(Pressure2);
                                            char_Pressure2.toCharArray(b,5);
                                            client.publish("UNO/Detskaya/Temp", b);
                                               
                                              client.subscribe("UNO/Detskaya/#");
                                                }
                                            }  
                                            
                                        ```` `  
                                        

                                        нет, не ужели нельзя чуток подумать и вникнуть в код?

                                        void loop(){
                                         char b[5];
                                        
                                        String char_TempDS = String(TempDS);
                                            char_TempDS.toCharArray(b,5);
                                            client.publish("UNO/Detskaya/Temp", b);
                                        
                                                String char_Pressure2 = String(Pressure2);
                                            char_Pressure2.toCharArray(b,5);
                                            client.publish("UNO/Detskaya/Temp", b);
                                        
                                          //check and see if a data packet has come in. 
                                          if(ET.receiveData()){
                                            //this is how you access the variables. [name of the group].[variable name]
                                            //since we have data, we will blink it out. 
                                            if (mydata.ID == 1)
                                            {
                                               int TempBMP= (mydata.TemperatureBMP);
                                               TempBMP = ((TempBMP)/100);
                                               float TempDS= (mydata.TemperatureDS);
                                               TempDS = ((TempDS)/100);
                                               float Pressure2= (mydata.Pressure);
                                               Pressure2 = ((Pressure2)/100);
                                        
                                             client.loop();
                                              if (!client.connected()) {
                                                if (client.connect(id_connect)) {
                                        
                                            String char_TempDS = String(TempDS);
                                            char_TempDS.toCharArray(b,5);
                                            client.publish("UNO/Detskaya/Temp", b);
                                        
                                                String char_Pressure2 = String(Pressure2);
                                            char_Pressure2.toCharArray(b,5);
                                            client.publish("UNO/Detskaya/Temp", b);
                                        
                                              client.subscribe("UNO/Detskaya/#");
                                                }
                                            }  
                                        
                                        
                                        1 Reply Last reply Reply Quote 0
                                        • S
                                          Securbond last edited by

                                          @instalator:

                                          @Securbond:

                                          @instalator:

                                          Правильно понял, это callback.

                                          а данные у тебя и не будут передаватся брокеру (в коду у тебя так написано), только если ты кабель из ардуины выдернишь и заново вставишь, тогда передадутся данные в iobroker.

                                          добавь строки в общий луп

                                          char b[5];

                                          String char_TempDS = String(TempDS);

                                          char_TempDS.toCharArray(b,5);

                                          client.publish("UNO/Detskaya/Temp", b);

                                          String char_Pressure2 = String(Pressure2);

                                          char_Pressure2.toCharArray(b,5);

                                          client.publish("UNO/Detskaya/Temp", b); `

                                          А разве сейчас не так ?

                                          void loop(){
                                           
                                            //check and see if a data packet has come in. 
                                            if(ET.receiveData()){
                                              //this is how you access the variables. [name of the group].[variable name]
                                              //since we have data, we will blink it out. 
                                              if (mydata.ID == 1)
                                              {
                                                 int TempBMP= (mydata.TemperatureBMP);
                                                 TempBMP = ((TempBMP)/100);
                                                 float TempDS= (mydata.TemperatureDS);
                                                 TempDS = ((TempDS)/100);
                                                 float Pressure2= (mydata.Pressure);
                                                 Pressure2 = ((Pressure2)/100);
                                               
                                               client.loop();
                                                if (!client.connected()) {
                                                  if (client.connect(id_connect)) {
                                                  char b[5]; 
                                               
                                              String char_TempDS = String(TempDS);
                                              char_TempDS.toCharArray(b,5);
                                              client.publish("UNO/Detskaya/Temp", b);
                                              
                                                  String char_Pressure2 = String(Pressure2);
                                              char_Pressure2.toCharArray(b,5);
                                              client.publish("UNO/Detskaya/Temp", b);
                                                 
                                                client.subscribe("UNO/Detskaya/#");
                                                  }
                                              }  
                                              
                                          ```` `  
                                          

                                          нет, не ужели нельзя чуток подумать и вникнуть в код?

                                          void loop(){
                                           char b[5];
                                          
                                          String char_TempDS = String(TempDS);
                                              char_TempDS.toCharArray(b,5);
                                              client.publish("UNO/Detskaya/Temp", b);
                                              
                                                  String char_Pressure2 = String(Pressure2);
                                              char_Pressure2.toCharArray(b,5);
                                              client.publish("UNO/Detskaya/Temp", b);
                                           
                                            //check and see if a data packet has come in. 
                                            if(ET.receiveData()){
                                              //this is how you access the variables. [name of the group].[variable name]
                                              //since we have data, we will blink it out. 
                                              if (mydata.ID == 1)
                                              {
                                                 int TempBMP= (mydata.TemperatureBMP);
                                                 TempBMP = ((TempBMP)/100);
                                                 float TempDS= (mydata.TemperatureDS);
                                                 TempDS = ((TempDS)/100);
                                                 float Pressure2= (mydata.Pressure);
                                                 Pressure2 = ((Pressure2)/100);
                                               
                                               client.loop();
                                                if (!client.connected()) {
                                                  if (client.connect(id_connect)) {
                                               
                                              String char_TempDS = String(TempDS);
                                              char_TempDS.toCharArray(b,5);
                                              client.publish("UNO/Detskaya/Temp", b);
                                              
                                                  String char_Pressure2 = String(Pressure2);
                                              char_Pressure2.toCharArray(b,5);
                                              client.publish("UNO/Detskaya/Temp", b);
                                                 
                                                client.subscribe("UNO/Detskaya/#");
                                                  }
                                              }  
                                              
                                          ```` `  
                                          

                                          Пришлось еще объявить в начале программы (глобально)

                                          float TempDS и float Pressure2,

                                          иначе выдавал ошибку

                                          но легче не стало на брокер ничего не передает.

                                          на LCD всё отображает. :roll: :?

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

                                            @Securbond:

                                            Пришлось еще объявить в начале программы (глобально)

                                            float TempDS и float Pressure2,

                                            иначе выдавал ошибку

                                            но легче не стало на брокер ничего не передает.

                                            на LCD всё отображает. :roll: :? `
                                            замени строки :

                                            #define id_connect "UNO_1"

                                            #define Prefix_subscribe "UNO/Detskaya/"

                                            на

                                            #define id_connect "UNO-Detskaya"

                                            #define Prefix_subscribe "UNO/Detskaya/"

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            733
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            4
                                            39
                                            20232
                                            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