Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Praktische Anwendungen (Showcase)
  4. ESP8266-MQTT-Sensoren

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.2k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.2k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.5k

ESP8266-MQTT-Sensoren

Geplant Angeheftet Gesperrt Verschoben Praktische Anwendungen (Showcase)
24 Beiträge 7 Kommentatoren 14.3k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • K Offline
    K Offline
    klassisch
    Most Active
    schrieb am zuletzt editiert von
    #9

    @AndyUM61:

    Also wie ich das sehe, lassen sich alle Aufgaben mit MQTT realisieren. `
    Prima, hört sich gut an.
    @AndyUM61:

    Schau die vielleicht einfach mal die Grundprinzipien von MQTT an. `
    Ja, habe ich versucht, finde allerdings die wirklich erhellende Quelle nicht. Schleiche seit geraumer Zeit wie die Katze um den heißen Brei. Denn eigentlich habe ich das ja alles via CCU am Laufen und könnte/sollte zufrieden sein. Aber die Weiterentwicklung CCU ist mir zu ruhig, wobei die CCU eigentlich und unangestrengt stabil läuft, wenn man sich diszipliniert verhält und das WebUi nicht offen hat. Aber MQTT verspricht etwas mehr Plattformunabhängigkeit. Habe aber noch keinen Plan für ein Zielsystem. Und das, zusammen mit der fehlenden Notwendigkeit hemmt meinen Eifer enorm.

    Habe mal https://www.youtube.com/watch?v=Rf1jVYewmx4 und https://www.youtube.com/watch?v=cuiuxCEANbw rekapituliert (war damals ja live dabei) und owagners Thread zu diesem Thema im HM-Forum gelesen. Darin betont er ausdrücklich, daß sein MQTT Addon HM-Systemvariablen explizit und gewünschterweise nicht unterstützt. Da sollte aber bei ioBroker gehen, vermute ich mal.
    @AndyUM61:

    Das Übertragen/ Anfordern eines Wertes zu/ von einem anderen Sensor/ Aktor wird allerdings nur "indirekt" über den Broker gehen.

    Man kann Werte in Topics im ioBroker schreiben und z.B. mit Scripten auf entsprechende Änderungen reagieren.

    Auch kann Topics im ioBroker abbonieren und im Sensor/Aktor mit entsprechenden Programmen darauf reagieren. `
    Mit den WeMos geht das auch direkt. Allerdings muß da die IP-Adressen des jewiligen Partners eintragen. Bei MQTT könnte das ja durch eine Abstraktionsebene gelöst werden, so daß man nur den Namen des Datenpunktes eintragen muß. Bei einem Wechsel des WeMos Sensors, der vielleicht eine andere IP aber denselben Namen für den Datenpunkt hat, wäre kein Änderungsbedarf.
    @AndyUM61:

    Die Punkte 1-4 werden auch in meinen Scripts verwendet.

    Einfach mal ein wenig analysieren. ` Habe schon mal reingeschaut, aber noch fehlen mir die MQTT-Basics.

    1 Antwort Letzte Antwort
    0
    • A Offline
      A Offline
      AndyUM61
      schrieb am zuletzt editiert von
      #10

      Bei Verwendung von MQTT und ioBroker könnte man ja auch DHCP verwenden (optional in meinen Scripts aktivierbar), dann braucht man sich um die IPs absolut nicht zu kümmern.

      Die Datenpunkte sind ja davon unabhängig.

      Internette Grüße
      Andy

      RaspberryMatic (Raspberry Pi3), CUxD, ioBroker (Synology/ Docker)

      1 Antwort Letzte Antwort
      0
      • K Offline
        K Offline
        klassisch
        Most Active
        schrieb am zuletzt editiert von
        #11

        Vielen Dank, so hatte ich mir das erhofft.

        1 Antwort Letzte Antwort
        0
        • S Offline
          S Offline
          starfish
          schrieb am zuletzt editiert von
          #12

          dank tatkräftiger Unterstützung von AndyUM61 konnte ich 2 Relais bzw. LED-Ausgaenge implementieren. Dazu muss der Original-Sketch leicht abgeändert werden. Die ursprüngliche Reset-Funktion habe ich entfernt, da ich sie so nicht benötige.

          ! ```
          `////////////////////////////////////////////////////////////////////////////////
          // MQTT - Tuersensor + Lichtsensor
          //
          // Sensor1 (Anschluss PIR)
          // Pin VCC -> +5V
          // Pin DAT -> SENSORPIN1
          // Pin GND -> GND
          //
          // Sensor 2 (LowAktiv)
          // Kontakt/ Schalter zwischen SENSORPIN2 und GND
          //
          // Anschluss Lichtsensor
          // +3,3V -> Fotowiederstand -> LIGHTPIN <- 470R-Resistor <- GND
          //
          // mod fuer 2 Relais oder Led-Ausgaenge 8_1_2017 by starfish
          //
          ////////////////////////////////////////////////////////////////////////////////
          ! // #define DEBUG // Debug-Modus einschalten fuer spezielle Ausgaben ueber Serial
          ! #define RESETPIN 12 // Pin fuer Relais 1 (ex SoftResetFunktion (verbunden mit RST))
          #define RELAISPIN 13 // Pin fuer Relais 2 /// <----- EINGEFÜGT ------------
          #define LEDPIN 2 // LED fest verdrahtet auf ESP8266-12E auf GPIO02 -> 2
          #define SENSORPIN1 4 // Pin entsprechend der GPIO z.B GPIO04 -> 4
          #define SENSORPIN2 5
          #define LIGHTPIN A0 // ESP8266 ADC-Pin
          ! #include <esp8266wifi.h>
          #include <pubsubclient.h>
          ! // Netzwerk-Settings <-------------------------!!ANPASSEN!!
          const char* ssid = "?????";
          const char* password = "???????????";
          const char* USE_DHCP = "off"; // "on" fuer DHCP
          IPAddress Myip(192, 168, 0, ???); //static IP address (Sensor)
          IPAddress gateway(192, 168, 0, ???); //gateway
          IPAddress subnet(255, 255, 255, 0);//subnet
          ! //// MQTT-Settings
          IPAddress mqtt_server(192,168,0,???); // IP-MQTT-Broker
          const char* mqtt_username = "user"; // MQTT-User
          const char* mqtt_key = "pass"; // MQTT-Pass
          ! #define BASE "TuerSensor01" // <---------------!!ClientID Anpassen!!
          #define mqtt_client_id BASE
          #define mqtt_topics_ip BASE "/IP"
          #define mqtt_topics_light BASE "/Light"
          #define mqtt_topics_sensor1 BASE "/Sensor1"
          #define mqtt_topics_sensor2 BASE "/Sensor2"
          #define mqtt_topics_reset BASE "/RESET"
          #define mqtt_topics_relais BASE "/Relais" /// <----- EINGEFÜGT ------------
          ! WiFiClient espClient;
          PubSubClient client(espClient);
          ! char message_sensor1[20];
          char message_sensor2[20];
          char message_light[20];
          const char* sensor1 = "-?-";
          const char* sensor2 = "-?-";
          const char* res = "0";
          const char* relais = "0"; /// <----- EINGEFÜGT ------------
          byte s1 = 1;
          byte s2 = 1;
          byte li = 1;
          ! void setup() {
          pinMode(RESETPIN, OUTPUT);
          digitalWrite(RESETPIN, HIGH);

          pinMode(SENSORPIN1, INPUT_PULLUP);
          pinMode(SENSORPIN2, INPUT_PULLUP);
          pinMode(LEDPIN, OUTPUT);
          pinMode(RELAISPIN, OUTPUT); /// <----- EINGEFÜGT ------------
          digitalWrite(RELAISPIN, LOW);

          !
          Serial.begin(115200);
          if(USE_DHCP == "off") {setup_wifi();}
          client.setServer(mqtt_server, 1883);
          client.setCallback(callback);
          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());
          }
          ! //// Callback Funktion von MQTT. (Hier nur für Topic RESET)
          void callback(char* topic, byte* payload, unsigned int length) {
          int i = 0;
          char message_buff[100];
          Serial.print("Empfangen: " + String(topic));
          for(i=0; i <length; i++)/{/message_buff[i]="payload[i];" }/;/string/msgstring="String(message_buff);" konvertierung/der/nachricht/in/ein/serial.println("/-="">" + msgString);

          /// <----- EINGEFÜGT ------------ alter RESET-Teil entfernt
          if (String(topic) == mqtt_topics_reset){
          if (msgString == "1"){
          Serial.println("Relais1 ein");
          digitalWrite(RESETPIN, HIGH);
          }
          }
          if (String(topic) == mqtt_topics_reset){
          if (msgString == "0"){
          Serial.println("Relais1 aus");
          digitalWrite(RESETPIN, LOW);
          }
          }

          ! if (String(topic) == mqtt_topics_relais){
          if (msgString == "1"){
          Serial.println("Relais2 ein");
          digitalWrite(RELAISPIN, HIGH);
          }
          }
          if (String(topic) == mqtt_topics_relais){
          if (msgString == "0"){
          Serial.println("Relais2 aus");
          digitalWrite(RELAISPIN, LOW);
          }
          }
          /// <----- EINGEFÜGT bis hier ------------
          }
          ! void reconnect() {
          // Loop until we're reconnected
          while (!client.connected()) {
          Serial.println(BASE);
          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);
          client.publish(mqtt_topics_reset,res);
          client.publish(mqtt_topics_relais,relais); /// <----- EINGEFÜGT ------------
          } else {
          Serial.print("failed, rc=");
          Serial.print(client.state());
          Serial.println(" try again in 5 seconds");
          // Wait 5 seconds before retrying
          delay(5000);
          }
          }
          }
          ! void mqtt_publish(){
          if (!client.connected()) {
          reconnect();
          }
          if (LEDPIN){ digitalWrite(LEDPIN,LOW);}
          ! String pub_lightString = String(analogRead(A0)); // Lichtsensor senden
          pub_lightString.toCharArray(message_light, pub_lightString.length()+1);
          client.publish(mqtt_topics_light, message_light);
          ! if (s1 == 1){ // nur Sensor1 Status senden
          String pub_sensor1String = String(sensor1); // Sensor1
          pub_sensor1String.toCharArray(message_sensor1, pub_sensor1String.length()+1);
          client.publish(mqtt_topics_sensor1, message_sensor1);
          Serial.println("Sensor1: "+pub_sensor1String+" gesendet");
          s1 = 0;
          }
          if (s2 == 1){ // nur Sensor 2 Status senden
          String pub_sensor2String = String(sensor2); // Sensor2
          pub_sensor2String.toCharArray(message_sensor2, pub_sensor2String.length()+1);
          client.publish(mqtt_topics_sensor2, message_sensor2);
          Serial.println("Sensor2: "+pub_sensor2String+" gesendet");
          s2 = 0;
          }
          !
          if (LEDPIN){ digitalWrite(LEDPIN,HIGH);}
          }
          ! byte io1 = digitalRead(SENSORPIN1);
          byte io2 = digitalRead(SENSORPIN2);
          ! void loop() {
          //client.subscribe(mqtt_topics_reset);
          if (s1 == 1){
          mqtt_publish();
          }
          if (digitalRead(SENSORPIN1) != io1){
          if (digitalRead(SENSORPIN1) == 0) {
          sensor1 = "true";
          io1 = digitalRead(SENSORPIN1);
          } else{
          sensor1 = "false";
          io1 = digitalRead(SENSORPIN1);
          }
          s1 = 1;
          mqtt_publish();
          }
          ! if (digitalRead(SENSORPIN2) != io2){
          if (digitalRead(SENSORPIN2) == 0) {
          sensor2 = "true";
          io2 = digitalRead(SENSORPIN2);
          } else{
          sensor2 = "false";
          io2 = digitalRead(SENSORPIN2);
          }
          s2 = 1;
          mqtt_publish();
          }
          client.loop();
          }</length;></pubsubclient.h></esp8266wifi.h>`[/i][/i][/i]

          1 Antwort Letzte Antwort
          0
          • S Offline
            S Offline
            starfish
            schrieb am zuletzt editiert von
            #13

            hab eben ein Problem entdeckt: bei einem WiFi - Unterbruch wird die Verbindung nicht wieder hergestellt. offenbar ist das Problem bekannt http://tech.scargill.net/esp8266-and-lo … nection-2/

            1 Antwort Letzte Antwort
            0
            • K Offline
              K Offline
              klassisch
              Most Active
              schrieb am zuletzt editiert von
              #14

              Ermöglicht eine ESP8266 - MQTT - Kopplung auch die burstartige Übertragung von Wertepaaren (ZEIT, Wert)?

              Ich möchte diese Wertepaare auf dem ESP errechnen und zwischenspeichern. Dann als Burst übertragen, um den Traffic zu konzentrieren.

              Mit HM/CUX geht das nicht, da jedem Wert die Eingangszeit zugeordnet wird.

              Jetzt möchte ich eben zu jedem Wert auch die Zeit abspeichern und dann an ioBroker per MQTT übertragen. Dann müßte MQTT/ioBroker die Daten entsprechend der mitgesendeten Zeiten einsortieren oder diese Datenpaare speichern und handeln.

              Geht das?

              1 Antwort Letzte Antwort
              0
              • N Offline
                N Offline
                NetFritz
                schrieb am zuletzt editiert von
                #15

                Hallo

                Habe das zweite Sketch MQTT - Tuersensor + Lichtsensor auf meinen ESP2266E12 gespielt.

                Vorher noch die Netzwerk-Settings und MQTT-Settings geändert.

                // Netzwerk-Settings <-------------------------!!ANPASSEN!!
                const char* ssid = "xxxx";                                                          WLAN SSID
                const char* password = "xxxxxx";                                                WLAN Password
                const char* USE_DHCP = "off"; // "on" fuer DHCP
                IPAddress Myip(192,168,2,99); //static IP address (Sensor)              IP des ESP2266E12
                IPAddress gateway(192,168,2,1); //gateway                                  ? IP der Fritzbox
                IPAddress subnet(255,255,255,0);//subnet
                
                //// MQTT-Settings
                IPAddress mqtt_server(192,168,2,74); // IP-MQTT-Broker                IP des iOBroker Rechners
                const char* mqtt_username = "xxxxxx"; // MQTT-User                     Username in Konfig MQTT
                const char* mqtt_key = "xxxxxxxx"; // MQTT-Pass                          Passwort in Konfig MQTT
                
                

                Der ESP2266E12 wird mir in der FritzBox angezeigt und ein Ping auf 192.168.2.99 kann ich auch absetzen.

                Wenn ich den Taster auf den ESP drücke zeigt er mir in der Arduino IDE Konsole auch den Text das der Taster geschaltet hat an.

                Ist die Gateway IP der FritzBox so richtig ?

                Braucht kein Port eingetragen werden ?

                Hier die Konfig des MQTT in iOBroker
                1563_screenshot-2017-10-13_iobroker_admin_1_.png 1563_screenshot-2017-10-13_iobroker_admin.png
                Ist das so richtig konfiguriert ?

                Wenn ich in IOBroker Instanzen auf das Symbol ganz links vom MQTT gehe wird mir folgendes angezeigt:

                Verbunden mit Host: falsch

                Lebenszeichen: falsch

                Verbunden mit mqtt: falsch

                Wenn ich MQTT einschalte bekomme ich in der Log folgendes:

                mqtt.0	2017-10-13 13:46:21.249	error	exception by stop: server.destroy is not a function
                mqtt.0	2017-10-13 13:46:21.249	error	Error: listen EADDRINUSE 0.0.0.0:1883 at Object.exports._errnoException (util.js:907:11) at exports._exceptionWithHostPort (util.js:930:20) at Server._listen2 (net.js:1253:14) at liste
                mqtt.0	2017-10-13 13:46:21.238	error	uncaught exception: listen EADDRINUSE 0.0.0.0:1883
                mqtt.0	2017-10-13 13:46:20.226	info	starting. Version 1.3.2 in /opt/iobroker/node_modules/iobroker.mqtt, node: v4.8.4
                host.netfritz-FUTRO-S900	2017-10-13 13:46:18.051	info	instance system.adapter.mqtt.0 started with pid 17527
                host.netfritz-FUTRO-S900	2017-10-13 13:46:18.018	info	object change system.adapter.mqtt.0
                
                

                Was muss ich mache das es läuft ?

                Gruß NetFritz

                1 Antwort Letzte Antwort
                0
                • N Offline
                  N Offline
                  NetFritz
                  schrieb am zuletzt editiert von
                  #16

                  Hallo

                  Habe mal gesucht nach der Bedeutung von EADDRINUSE

                  EADDRINUSE = Die angegebene Adresse wird schon verwendet.

                  Ist damit die IP 0.0.0.0 oder der Port 1883 gemeint ?

                  Gruß NetFritz

                  1 Antwort Letzte Antwort
                  0
                  • N Offline
                    N Offline
                    NetFritz
                    schrieb am zuletzt editiert von
                    #17

                    Hallo

                    Habe mit mit lsof -i die Portbelegung angeschaut und festgestellt

                    das mosquitto die Ports belegt.

                    Danach den Port auf 1882 in mqtt und Sketch eingestellt und siehe da

                    jetzt läuft es.

                    Gruß NetFritz

                    1 Antwort Letzte Antwort
                    0
                    • K Offline
                      K Offline
                      klassisch
                      Most Active
                      schrieb am zuletzt editiert von
                      #18

                      Super, vielen Dank für die Info!

                      Gesendet von meinem ZTE A2016 mit Tapatalk

                      1 Antwort Letzte Antwort
                      0
                      • N Offline
                        N Offline
                        NetFritz
                        schrieb am zuletzt editiert von
                        #19

                        Hallo

                        Zum Port

                        Die Internet Assigned Numbers Authority (IANA) reserviert für MQTT die Ports 1883 und 8883

                        Ist es ratsam den Port auf 1883 oder 8883 einzustellen ?

                        Gruß NetFritz

                        1 Antwort Letzte Antwort
                        0
                        • K Offline
                          K Offline
                          klassisch
                          Most Active
                          schrieb am zuletzt editiert von
                          #20

                          Auch mit MQTT kenne ich mich leider nicht aus. Aber der ioBroker hat einen MQTT Adapter. Und der gibt den Port 1883 an. Das wäre dann der für mich naheliegende Port.

                          Gesendet von meinem ZTE A2016 mit Tapatalk

                          1 Antwort Letzte Antwort
                          0
                          • N Offline
                            N Offline
                            NetFritz
                            schrieb am zuletzt editiert von
                            #21

                            Hallo

                            mosquitto ist ja auch ein mqtt-Broker der belegt auch den Port 1883.

                            Ich habe jetzt mosquitto deinstalliert.

                            mqtt iOBroher und den ESP wieder auf 1883 gestellt und es läuft.

                            Gruß NetFritz

                            1 Antwort Letzte Antwort
                            0
                            • E Offline
                              E Offline
                              e-p-s
                              schrieb am zuletzt editiert von
                              #22

                              << Fehler gefunden >>

                              Poste mein Projekt wenn fertig.

                              1 Antwort Letzte Antwort
                              0
                              • S Offline
                                S Offline
                                Surfer2010
                                schrieb am zuletzt editiert von
                                #23

                                Wie kannich denn per MQTT Nachrichten zurück an den ESP8266 schicken?

                                Meine Idee wäre per MQTT Befehl üver die vis Oberfläche den Messzyklus zu erhöhen/verändern.

                                Zum Beispiel von 4 Messungen pro Stunde auf 30 pro Stunde. Wie geht das?

                                1 Antwort Letzte Antwort
                                0
                                • E Offline
                                  E Offline
                                  e-p-s
                                  schrieb am zuletzt editiert von
                                  #24

                                  dummystr=client.subscribe("Sonic1/delay_timer");

                                  Publish ist schreiben.

                                  Subscribe ist lesen.

                                  1 Antwort Letzte Antwort
                                  0
                                  Antworten
                                  • In einem neuen Thema antworten
                                  Anmelden zum Antworten
                                  • Älteste zuerst
                                  • Neuste zuerst
                                  • Meiste Stimmen


                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate

                                  772

                                  Online

                                  32.5k

                                  Benutzer

                                  81.7k

                                  Themen

                                  1.3m

                                  Beiträge
                                  Community
                                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                  ioBroker Community 2014-2025
                                  logo
                                  • Anmelden

                                  • Du hast noch kein Konto? Registrieren

                                  • Anmelden oder registrieren, um zu suchen
                                  • Erster Beitrag
                                    Letzter Beitrag
                                  0
                                  • Home
                                  • Aktuell
                                  • Tags
                                  • Ungelesen 0
                                  • Kategorien
                                  • Unreplied
                                  • Beliebt
                                  • GitHub
                                  • Docu
                                  • Hilfe