Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Русский
  3. ioBroker
  4. ioBroker основное
  5. Arduino+Mqtt FAQ для начинающих.

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    658

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    18
    1
    5.7k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.5k

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

Scheduled Pinned Locked Moved ioBroker основное
39 Posts 4 Posters 21.9k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S Offline
    S Offline
    Securbond
    wrote on last edited by
    #21

    @instalator:

    @Securbond:

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

    Спасибо, сейчас попробую голый скетч залить. На всякий случай [http://forum.iobroker.net/viewtopic.php?f=33&t=1609](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
    1 Reply Last reply
    0
    • I Offline
      I Offline
      instalator
      wrote on last edited by
      #22

      @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/#");
              }
          }  
      

      Высокий уровень Децибел вреден для здоровья!

      http://blog.instalator.ru/

      1 Reply Last reply
      0
      • S Offline
        S Offline
        Securbond
        wrote on last edited by
        #23

        @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
        0
        • I Offline
          I Offline
          instalator
          wrote on last edited by
          #24

          @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); а самой функции нету

          Высокий уровень Децибел вреден для здоровья!

          http://blog.instalator.ru/

          1 Reply Last reply
          0
          • S Offline
            S Offline
            Securbond
            wrote on last edited by
            #25

            @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
            0
            • I Offline
              I Offline
              instalator
              wrote on last edited by
              #26

              @Securbond:

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

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

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

              Высокий уровень Децибел вреден для здоровья!

              http://blog.instalator.ru/

              1 Reply Last reply
              0
              • I Offline
                I Offline
                instalator
                wrote on last edited by
                #27

                @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");
                    }
                  }
                
                

                Высокий уровень Децибел вреден для здоровья!

                http://blog.instalator.ru/

                1 Reply Last reply
                0
                • S Offline
                  S Offline
                  Securbond
                  wrote on last edited by
                  #28

                  @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
                  0
                  • I Offline
                    I Offline
                    instalator
                    wrote on last edited by
                    #29

                    @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);

                    Высокий уровень Децибел вреден для здоровья!

                    http://blog.instalator.ru/

                    1 Reply Last reply
                    0
                    • S Offline
                      S Offline
                      Securbond
                      wrote on last edited by
                      #30

                      @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
                      0
                      • I Offline
                        I Offline
                        instalator
                        wrote on last edited by
                        #31

                        @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/#");
                                }
                            }  
                        
                        

                        Высокий уровень Децибел вреден для здоровья!

                        http://blog.instalator.ru/

                        1 Reply Last reply
                        0
                        • S Offline
                          S Offline
                          Securbond
                          wrote on last edited by
                          #32

                          @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
                          0
                          • I Offline
                            I Offline
                            instalator
                            wrote on last edited by
                            #33

                            @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/"

                            Высокий уровень Децибел вреден для здоровья!

                            http://blog.instalator.ru/

                            1 Reply Last reply
                            0
                            • S Offline
                              S Offline
                              Securbond
                              wrote on last edited by
                              #34

                              @instalator:

                              @Securbond:

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

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

                              Проверил резисторную сборку стоят резы на 250 Om

                              И еще, подключил и комп и сеть, раскомментировал отладочные строки

                              тут Serial.print(topic);

                              и

                              тутvoid callback_iobroker(String strTopic, String strPayload){

                              if (strTopic == "UNO/Detskaya/Temp") {

                              Serial.println(strPayload);

                              Так вот в СОМ порт кроме температуры больше ничего не сыпится, по соединению вообще ноль информации.

                              P.S. Вообще странно, потому что при заливке стандартного скетча вэб сервера, все работает прекрасно :roll: :?:

                              1 Reply Last reply
                              0
                              • P Offline
                                P Offline
                                pmaster
                                wrote on last edited by
                                #35

                                подскажите, что могу делать не так?

                                данные на брокер приходят исправно. но я не могу ничего отправить обратно.

                                беру к примеру выключатель, лампочку, прописываю их на топик их состояния, нажимаю выключатель, на экране лампочки зажигаются, гаснут. а данные от брокера на mqtt сервер не уходят.

                                1 Reply Last reply
                                0
                                • I Offline
                                  I Offline
                                  instalator
                                  wrote on last edited by
                                  #36

                                  @pmaster:

                                  подскажите, что могу делать не так?

                                  данные на брокер приходят исправно. но я не могу ничего отправить обратно.

                                  беру к примеру выключатель, лампочку, прописываю их на топик их состояния, нажимаю выключатель, на экране лампочки зажигаются, гаснут. а данные от брокера на mqtt сервер не уходят. ` вы что то путаете наверное. Иоб выступает в качестве сервера mqtt. Он отправит значение всем подписавшимся на топик клиентам.

                                  Высокий уровень Децибел вреден для здоровья!

                                  http://blog.instalator.ru/

                                  1 Reply Last reply
                                  0
                                  • P Offline
                                    P Offline
                                    pmaster
                                    wrote on last edited by
                                    #37

                                    вы что то путаете наверное. Иоб выступает в качестве сервера mqtt. Он отправит значение всем подписавшимся на топик клиентам.

                                    я ничего не путаю. в качестве сервера у меня стоит mosquitto. Иоб выступает в качестве клиента. С проблемой разобрался :). По умолчанию в клиенте mqtt не стоит галочка "publish" (на топике).

                                    сейчас возник вопрос. можно ли отключить получение своих же сообщений? т.е. я публикую сообщение, и оно тут же приходит мне обратно.

                                    1 Reply Last reply
                                    0
                                    • S Offline
                                      S Offline
                                      smoker_vvo
                                      wrote on last edited by
                                      #38

                                      instalator - Доброго времени! Есть вопрос по скетчу - скомпилировался, загрузился… работает. НО! температуру кажет -127, типа датчика не видит, а это не правда, запускаем типовой ТЕстер от Ардуино 1.0.6 - датчик есть температуру кажет.

                                      Dallas Temperature IC Control Library Demo

                                      Locating devices...Found 1 devices.

                                      Parasite power is: ON

                                      Found device 0 with address: 2880E93A04000010

                                      Setting resolution to 9

                                      Resolution actually set to: 9

                                      Requesting temperatures...DONE

                                      Temperature for device: 0

                                      Temp C: 25.00 Temp F: 77.00

                                      Requesting temperatures...DONE

                                      Temperature for device: 0

                                      Temp C: 25.00 Temp F: 77.00

                                      Requesting temperatures...DONE

                                      Temperature for device: 0

                                      Temp C: 25.00 Temp F: 77.00

                                      Как видно - адрес найден...

                                      Вбиваем его сюда:

                                      #define ONE_WIRE_BUS 8

                                      #define TEMPERATURE_PRECISION 9 - сам добавил, без нее то же -127

                                      OneWire oneWire(ONE_WIRE_BUS);

                                      DallasTemperature DS_sensors(&oneWire);

                                      // 28 80 E9 3A 04 00 00 10

                                      DeviceAddress addr_T1 = { 0x28, 0x80, 0xE9, 0x3A, 0x04, 0x00, 0x00, 0x10 };

                                      float T1 = 0;

                                      Ну вот результат -
                                      1308_arduino_mqtt.jpg

                                      1 Reply Last reply
                                      0
                                      • I Offline
                                        I Offline
                                        instalator
                                        wrote on last edited by
                                        #39

                                        @smoker_vvo:

                                        температуру кажет -127, типа датчика не видит, а это не правда, запускаем типовой ТЕстер от Ардуино 1.0.6 - датчик есть температуру кажет. `
                                        версия библиотек какая? попробуй откатить на предыдущую

                                        Высокий уровень Децибел вреден для здоровья!

                                        http://blog.instalator.ru/

                                        1 Reply Last reply
                                        0

                                        Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                                        Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                                        With your input, this post could be even better 💗

                                        Register Login
                                        Reply
                                        • Reply as topic
                                        Log in to reply
                                        • Oldest to Newest
                                        • Newest to Oldest
                                        • Most Votes


                                        Support us

                                        ioBroker
                                        Community Adapters
                                        Donate

                                        561

                                        Online

                                        32.7k

                                        Users

                                        82.6k

                                        Topics

                                        1.3m

                                        Posts
                                        Community
                                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                        ioBroker Community 2014-2025
                                        logo
                                        • Login

                                        • Don't have an account? Register

                                        • Login or register to search.
                                        • First post
                                          Last post
                                        0
                                        • Home
                                        • Recent
                                        • Tags
                                        • Unread 0
                                        • Categories
                                        • Unreplied
                                        • Popular
                                        • GitHub
                                        • Docu
                                        • Hilfe