Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Praktische Anwendungen (Showcase)
    4. Arduino Programm mqtt

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Arduino Programm mqtt

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

      Hallo zusammen,

      ich habe aus dem Netz folgendes Programm auf mein NodeMcu aufgespielt zum testen, eigentlich dachte ich das nun Objekte im Iobroker erzeugt werden

       #define BASE "8266 TmpSensor"  // <---------------!!Entsprechend für jeden Sensor anpassen!!
      #define mqtt_client_id BASE 
      #define mqtt_topics_ip BASE "/IP"
      #define mqtt_topics_light BASE "/Licht"
      #define mqtt_topics_humidity BASE "/Luftfeuchte"
      #define mqtt_topics_temperature1 BASE "/Temperatur1"
      
      

      und diese dann mit den Variablen Inhalt aktualisiert wird, tut so aber nicht es wird nur die Base erzeugt mit register Alive.

      Kann sich das jemand mal anschauen, was mache ich da falsch.

      Gruß

      Toni

      [spoiler]//#define DEBUG // Debug-Modus einschalten fuer spezielle Ausgaben ueber Serial
      
      #include <esp8266wifi.h>
      extern "C" {  // nur fuer ESP8266 systen_deep_sleep()
        #include "user_interface.h" 
        } // nur fuer ESP8266 systen_deep_sleep()
      
      #include <pubsubclient.h>
      //#include <onewire.h> 
      #include "DHT.h"
      
      // DS18x20-Settings
      //  float celsius, fahrenheit;
      //#define DSPIN 5     // DS18x20-Pin entsprechend der GPIO z.B GPIO05 -> 5
      //OneWire  ds(DSPIN);
      
      // Netzwerk-Settings <-------------------------!!ANPASSEN!!
      const char* ssid = "";
      const char* password = "";
      const char* USE_DHCP = "on"; // "on" fuer DHCP
      IPAddress Myip(192, 168, 2, 61); //static IP-Adresse (Sensor)
      IPAddress gateway(192, 168, 2, 1); //IP-Gateway
      IPAddress subnet(255, 255, 255, 0);//Subnet
      
      //// MQTT-Settings
      IPAddress mqtt_server(192,168,2,68); // IP-MQTT-Broker
      const char* mqtt_username = "user"; // MQTT-User
      const char* mqtt_key = "pass"; // MQTT-Password
      
      #define BASE "8266 TmpSensor"  // <---------------!!Entsprechend für jeden Sensor anpassen!!
      #define mqtt_client_id BASE 
      #define mqtt_topics_ip BASE "/IP"
      #define mqtt_topics_light BASE "/Licht"
      #define mqtt_topics_humidity BASE "/Luftfeuchte"
      #define mqtt_topics_temperature1 BASE "/Temperatur1"
      
      WiFiClient espClient;
      PubSubClient client(espClient);
      
      #define interval       600 //  DeepSleep oder delay Zeit in Sekunden
      #define DHTPIN 4     // DHT-Pin entsprechend der GPIO z.B GPIO04 -> 4
      
      // DHT-Typ
      //#define DHTTYPE DHT11   // DHT 11
      #define DHTTYPE DHT22   // DHT 22 (AM2302), AM2321
      //#define DHTTYPE DHT21   // DHT 21 (AM2301)
      
      DHT dht(DHTPIN, DHTTYPE); //  DHT initialisieren
      
      char message_humidity[20];
      char message_temperature1[20];
      //char message_temperature2[20];
      //char message_heatindex[20];
      char message_light[20];
      
      void setup() {
        Serial.begin(115200);
        if(USE_DHCP == "off") {setup_wifi();}
        Serial.println("DHTxx test!");
        dht.begin();
      
        client.setServer(mqtt_server, 1883);
        client.setClient(espClient);
      
      }
      
      void setup_wifi() {
        Serial.println("");
        delay(10);
        Serial.print("Connecting to ");
        Serial.println(ssid);
        if(USE_DHCP == "off") {WiFi.config(Myip, gateway, subnet); }
        WiFi.begin(ssid, password);  
      
        while (WiFi.status() != WL_CONNECTED) {
          delay(500);
          Serial.print(".");
        }
      
        Serial.println("");
        Serial.println("WiFi connected");
        Serial.println("IP address: ");
        Serial.println(WiFi.localIP());
        }
      
      void reconnect() {
        // Loop until we're reconnected
        while (!client.connected()) {
          Serial.print("Attempting MQTT connection...");
          // Attempt to connect
          if (client.connect(mqtt_client_id,mqtt_username,mqtt_key)) {
            Serial.println("connected");
            // IP-Adresse umwandeln und publish
            IPAddress localAddr = WiFi.localIP();
            char s[16];  
            sprintf(s, "%d.%d.%d.%d", localAddr[0], localAddr[1], localAddr[2], localAddr[3]);    
            client.publish(mqtt_topics_ip,s, true);   
           // client.publish("Antonio Tedesco")
            Serial.println(WiFi.localIP());     
          } else {
            Serial.print("failed, rc=");
            Serial.print(client.state());
            Serial.println(" try again in 5 seconds");
            // Wait 5 seconds before retrying
            delay(5000);
          }
        }
      }
      
      void loop() {
        delay(2000); // Pause fuer DHT-Initialisierung
      
        if (!client.connected()) {
          reconnect();
        }
        // DS18x20 lesen
       // readDS18x29();
      
        // Sensor lesen
        float h = dht.readHumidity(); // Luftfeuchtigkeit 
        float t = dht.readTemperature(); // Temperatur in Celsius 
        float f = dht.readTemperature(true); // Temperatur in Fahrenheit (isFahrenheit = true)
      
        if (isnan(h) || isnan(t) || isnan(f)) { // Auf Lesefehler pruefen -> evtl wiederholen
          Serial.println("Lesefehler DHT-Sensor!");
          return;
        }
      
        float hif = dht.computeHeatIndex(f, h); // Compute heat index in Fahrenheit (the default)  
        float hic = dht.computeHeatIndex(t, h, false); // Compute heat index in Celsius (isFahreheit = false)
      
      #if defined DEBUG
        Serial.print("Luftfeuchte: ");
        Serial.print(h);
        Serial.print(" %\t");
        Serial.print("Temperatur: ");
        Serial.print(t);
        Serial.print(" *C ");
        Serial.print(f);
        Serial.print(" *F\t");
        Serial.print("Heat index: ");
        Serial.print(hic);
        Serial.print(" *C ");
        Serial.print(hif);
        Serial.println(" *F");
      #endif
      
        String pub_humidityString = String(h);
              pub_humidityString.toCharArray(message_humidity, pub_humidityString.length()+1);
              client.publish(mqtt_topics_humidity, message_humidity);
                Serial.println("Humidity: "+pub_humidityString+" gesendet");         
      
        String pub_temperature1String = String(t);
              pub_temperature1String.toCharArray(message_temperature1, pub_temperature1String.length()+1);
              client.publish(mqtt_topics_temperature1, message_temperature1, true);
                Serial.println("Temperatur1: "+pub_temperature1String+" C gesendet"); 
      
        String pub_lightString = String(analogRead(A0));  // Lichtsensor
              pub_lightString.toCharArray(message_light, pub_lightString.length()+1); // Lichtsensor       
              client.publish(mqtt_topics_light, message_light, true);  // Lichtsensor
                Serial.println("Licht: "+pub_lightString+" gesendet");  // Lichtsensor
      
              // nur bei system_deep_sleep() ////////
              delay(3000);
              void disconnect ();        
              Serial.println("...DeepSleep enabled!");
              system_deep_sleep(interval*1000000); //sleep time in usecs. 10000000 = 10 secs.
              ///////////////////////////////////////
             // delay(interval*1000); // Interval für Publish - wenn nicht system_deep_sleep()
      }[/spoiler]</onewire.h></pubsubclient.h></esp8266wifi.h>
      

      geändert: Code in Code-Tags und Spoiler gesetzt; Homoran (Admin)

      1 Reply Last reply Reply Quote 0
      • T
        tedesco last edited by

        Hallo,

        keiner der mir ein kleine tipp geben kann?

        Gruß

        Toni

        1 Reply Last reply Reply Quote 0
        • Homoran
          Homoran Global Moderator Administrators last edited by

          @tedesco:

          eigentlich dachte ich das nun Objekte im Iobroker erzeugt werden `

          Über welchen Adapter willst du diese Objekte erzeugen?

          Gruß

          Rainer

          1 Reply Last reply Reply Quote 0
          • D
            dondaik last edited by

            na, genau das was ich suche … die MQtt - Anmeldung mit Username und Passwort 🙂

            objekte ? bei den richtigen zugangsdaten für den MQtt zugang sind dort die daten zu finden.

            aber warum der DHT xx ? ... die machen nur ärger !!

            entweder:

            BME280 - Temperatur, Feuchte, Luftdruck

            SI7021 - Temperatur, Feuchte

            BH1750 - Helligkeit

            1 Reply Last reply Reply Quote 0
            • T
              tedesco last edited by

              @Homoran:

              @tedesco:

              eigentlich dachte ich das nun Objekte im Iobroker erzeugt werden `

              Über welchen Adapter willst du diese Objekte erzeugen?

              Gruß

              Rainer `

              Hallo Reiner,

              also die Objekte erscheinen im Sonoff Adapter, oder nutzt man da einen anderen Adapter für ESP´s und Arduino Soft?

              Es wird auch was erzeugt allerdings nur der Titel mit Alive siehe Bild

              ![](</s><URL url=)https://abload.de/img/objekti2kue.png" />

              1 Reply Last reply Reply Quote 0
              • T
                tedesco last edited by

                @dondaik:

                na, genau das was ich suche … die MQtt - Anmeldung mit Username und Passwort 🙂

                objekte ? bei den richtigen zugangsdaten für den MQtt zugang sind dort die daten zu finden.

                aber warum der DHT xx ? ... die machen nur ärger !!

                entweder:

                BME280 - Temperatur, Feuchte, Luftdruck

                SI7021 - Temperatur, Feuchte

                BH1750 - Helligkeit `

                Hallo,

                ich benutze keine Anmeldedaten user und Passwort für mqtt, deswegen gehen meine Sonoff Geräte mit Tasmota trotzdem alle.

                Würde das später mit einem Esp1 als temp Feuchte Sensoren mit Batterie Betreiben. Habe schon ein paar Wemos D1 mit der Tasmota allerdings mit nem Netzteil am laufen.

                Gruß

                Toni

                1 Reply Last reply Reply Quote 0
                • D
                  dondaik last edited by

                  in MQTT funzt das programm ganz sauber ( ich habe nur den DHT ausgetauscht ) und den port angepasst - user + pwd nutze ich im moment auch nicht.

                  einzig was im umfeld dieser zeite " // client.publish("Antonio Tedesco") " scheint zu fehlen .

                  port: 1886 MQTT / 1883 Sonoff

                  2605_io.jpg

                  1 Reply Last reply Reply Quote 0
                  • D
                    dondaik last edited by

                    ach: der esp8266 taugt nicht wirklich für DS und batterie … da ist der esp32 besser ( siehe youtube andreas spiess - muss man aber etwas suchen )

                    1 Reply Last reply Reply Quote 0
                    • T
                      tedesco last edited by

                      Hallo zusammen,

                      Danke nochmal an alle, war mein Fehler ich hatte nur den Sonoff Adapter als Mqtt.

                      ich habe den Mqtt Iobroker Adaper installiert und dem einen anderen Port gegeben 1886 wie den Sonoff Adapter mit 1883.

                      Und siehe Bild alles geht

                      ~~![](</s><URL url=)https://abload.de/img/objekt_2n3kbk.png" />

                      Gruß

                      Toni~~

                      1 Reply Last reply Reply Quote 0
                      • D
                        dondaik last edited by

                        🙂

                        was ist den da für ein lichtsensor angeschlossen ein LDRxx oder so 😉

                        1 Reply Last reply Reply Quote 0
                        • T
                          tedesco last edited by

                          @dondaik:

                          🙂

                          was ist den da für ein lichtsensor angeschlossen ein LDRxx oder so 😉 `

                          ja genau ein LDR mit nem Widerstand

                          1 Reply Last reply Reply Quote 0
                          • Homoran
                            Homoran Global Moderator Administrators last edited by

                            @tedesco:

                            ich hatte nur den Sonoff Adapter als Mqtt. `
                            So was hatte ich ganz am Anfang vermutet.

                            Bitte auf die Ports von mqtt und Sonoff achten

                            Na dann viel Spaß

                            Gruß

                            Rainer

                            1 Reply Last reply Reply Quote 0
                            • T
                              tedesco last edited by

                              @Homoran:

                              @tedesco:

                              ich hatte nur den Sonoff Adapter als Mqtt. `
                              So was hatte ich ganz am Anfang vermutet.

                              Bitte auf die Ports von mqtt und Sonoff achten

                              Na dann viel Spaß

                              Gruß

                              Rainer `

                              Danke dir

                              Gruß

                              Toni

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

                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              870
                              Online

                              31.7k
                              Users

                              79.8k
                              Topics

                              1.3m
                              Posts

                              3
                              13
                              1295
                              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