Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Daten abonnieren über den mqtt_adapter

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Daten abonnieren über den mqtt_adapter

    This topic has been deleted. Only users with topic management privileges can see it.
    • G
      gillian45 @TT-Tom last edited by

      @tt-tom haha danke habe es total vergessen

      1 Reply Last reply Reply Quote 0
      • Marc Berg
        Marc Berg Most Active last edited by

        @gillian45 sagte in Daten abonnieren über den mqtt_adapter:

        aber irgendwie geht es bisher nicht.

        Was geht denn konkret nicht? Wird keine Wifi Verbindung aufgebaut? Keine MQTT Verbindung? Funktioniert die Subscription nicht?

        G 1 Reply Last reply Reply Quote 0
        • G
          gillian45 @Marc Berg last edited by

          @marc-berg
          Die Wifi_Verbindung und MQTT_Verbindung functionieren einwandfrei aber subscribe eher nicht. Ich empfänge leider keine Daten auf mein Serial.monitor. Und ich weiß nicht, ob ich falsh abonniert habe.

          Marc Berg 1 Reply Last reply Reply Quote 0
          • Marc Berg
            Marc Berg Most Active @gillian45 last edited by Marc Berg

            @gillian45
            Hm, ich überblicke gerade nicht das ganzen Code, aber bist du sicher, dass das Topic, dass du suscribst korrekt ist? Funktioniert der Gegentest mit einem MQTT Client?

            Ob das Topic richtig ist, kann man ja nicht aus diesem Code ablesen.

            G 1 Reply Last reply Reply Quote 0
            • G
              gillian45 @Marc Berg last edited by

              @marc-berg Also publish funktionniert irgendwie sehr gut und zwar mit den gleichen Topic Namen.
              Hier kannst du es nochmal sehen

              # include <Arduino.h>
              #include <Adafruit_Sensor.h>
              # include <WiFi.h>
              # include <PubSubClient.h>
              
              // wifi Daten
              const char* ssid = "bubub" ; 
              const char* password = "bueer" ; 
              WiFiClient WifiClient ; 
              
              // MQTT Broker_Daten
              const char* mqttServer = "192.168.0.220" ;  // Broker-passwort  
              PubSubClient mqttClient( WifiClient) ; 
              
              
              //Topic 
              char FlameSate[] ="flameState"; 
              char Bewegung[]= "Bewegung" ; 
              int pirSensor= 27 ; 
              int ledPin = 32 ; // für meinen Bewegungsmelder
              int flamePin = 34; 
              
              
              //Verbindung mit dem Broker herstellen
              void mqttConnect()
              {
                Serial.print("Verbindung zum MQTT_Server"); 
                Serial.print( mqttServer); 
                while(!mqttClient.connected())
                {
                  Serial.print("."); 
                  if (mqttClient.connect("ES"))
                  {
                    Serial.print("MQTT-VErbunden"); 
                  }
                  else
                  {
                    Serial.print("Fehlgeschlagen "); 
                    Serial.print(mqttClient.state()); 
                    Serial.println("erneuter Versuch in 5 Sec"); 
                  delay(5000); 
                  }
              
                }
               mqttClient.subscribe("test/esp32"); 
              } 
              
              
              
              
              
              
              
              
              
              
              void setup() {
              
                pinMode(flamePin, INPUT); // Setze Flammensensor als Eingang
                pinMode(ledPin, OUTPUT);  // Setze LED als Ausgang
              
                Serial.begin(115200); 
                Serial.println(); 
                Serial.print("Verbingsaufbaun zu") ; 
                Serial.print(ssid); 
                WiFi.begin(ssid,password); 
                while(WiFi.status() != WL_CONNECTED)
                {
                  delay(500);
                  Serial.print("."); 
                }
                Serial.print(""); 
                Serial.println("Wifi connected"); 
                Serial.print("IP Add:");
                Serial.print(WiFi.localIP());
              
                // Verbindung mit MQTT-Server
                mqttClient.setServer(mqttServer, 1883); 
                //mqttClient.setCallback(callback); 
                mqttConnect(); 
              }
              
              void loop() {
               
                // Wenn der Flammensensor eine Flamme erkennt, schalte die LED ein
                /* if (flameValue > 100) { // Der Schwellenwert von 100 muss möglicherweise angepasst werden
                  digitalWrite(ledPin, HIGH); // Schalte LED ein
                } else {
                  digitalWrite(ledPin, LOW); // Schalte LED aus
                }  */
              
              if(!mqttClient.connected())
                {
                  mqttConnect();
                }
                mqttClient.loop();
              
                 int flameValue = analogRead(flamePin); // Lese analoge Spannung vom Flammensensor
                
                 if(flameValue > 100)
                 {
                  Serial.print("Achtung Fire, Feuerwehr Anrufen !!!"); 
                   mqttClient.publish(FlameSate, "OK"); 
                 }
                 else 
                 {
                   Serial.print("Sicher, Kein Feuer !"); 
                   mqttClient.publish(FlameSate, "Nein");
                 }
                 
                
                 int pirSensorValue = digitalRead(pirSensor);
                 if(pirSensorValue== HIGH)
                 {
                   digitalWrite(ledPin, HIGH) ; 
                  Serial.print("Bewegung erkannt"); 
                  mqttClient.publish(Bewegung, "OK"); 
                  delay(1000) ; 
                 }
                 else 
                 {
                  digitalWrite(ledPin, LOW); 
                  Serial.print("Keine Bewegung");
                  mqttClient.publish(Bewegung, "Nein"); 
                  delay(1000) ; 
              
                 }
                 
                 
                 delay(200); 
              }
                 
                
              
              
                
              
              
              Marc Berg 1 Reply Last reply Reply Quote 0
              • Marc Berg
                Marc Berg Most Active @gillian45 last edited by Marc Berg

                @gillian45

                Das sieht in meinem Code recht ähnlich aus, nur dass ich nach dem Subscribe noch folgende beide Zeilen eingefügt habe.

                client.subscribe(waitfor_topic);
                delay(200);
                client.loop();
                

                Kann sein, dass ich das deshalb gemacht habe, weil es sonst Timing-Probleme gab. Ist schon ein paar Jahre her.

                G 1 Reply Last reply Reply Quote 0
                • G
                  gillian45 @Marc Berg last edited by

                  @marc-berg Ich versuche es mal, meinst du ich sollte in function

                  void mqttConnect() 
                  

                  direct nach dem Subscribe direkt die Beide Zeilen einfügen ?

                  Marc Berg 1 Reply Last reply Reply Quote 0
                  • Marc Berg
                    Marc Berg Most Active @gillian45 last edited by

                    @gillian45 sagte in Daten abonnieren über den mqtt_adapter:

                    @marc-berg Ich versuche es mal, meinst du ich sollte in function

                    void mqttConnect() 
                    

                    direct nach dem Subscribe direkt die Beide Zeilen einfügen ?

                    ja, das "client.loop()" wird ja sowieso empfohlen, um die Nachrichten zu verarbeiten. Es kann nichts schaden.

                    G 1 Reply Last reply Reply Quote 0
                    • G
                      gillian45 @Marc Berg last edited by

                      @marc-berg es hat leider nichts getan , hast du damals dein MQTT_Broker in IoBroker installiert ?? Ich habe vielleicht etwas nicht richtig konfiguriert oder soll ich mir einfach ein anderes Software suchen😞

                      Marc Berg T 2 Replies Last reply Reply Quote 0
                      • Marc Berg
                        Marc Berg Most Active @gillian45 last edited by

                        @gillian45 sagte in Daten abonnieren über den mqtt_adapter:

                        @marc-berg es hat leider nichts getan , hast du damals dein MQTT_Broker in IoBroker installiert ?? Ich habe vielleicht etwas nicht richtig konfiguriert oder soll ich mir einfach ein anderes Software suchen😞

                        Darum würde ich das Ganze mit "MQTT Explorer" oder einem anderen Client nachstellen und prüfen, ob die Subscription grundsätzlich funktioniert.
                        Nur um sicherzugehen: die Callback-Funktion wird nur ausgeführt, wenn sich am Broker ein Wert ändert bzw. neu published wird. Das ist hoffentlich klar?

                        1 Reply Last reply Reply Quote 0
                        • T
                          TT-Tom @gillian45 last edited by TT-Tom

                          @gillian45

                          hi Ich habe mal den alten Code raus gesucht. Das ganze stammt aus diesem Thread.

                          Vielleicht hilft dir das weiter. Den kompletten Code findest du im Thread.

                          // MQTT Funktion
                          // *************
                          void reconnectToMQTT() {
                          
                            if (mqttClient.connect(mqtt_client_id , mqtt_user, mqtt_password)) {
                              Serial.println("Per MQTT mit ioBroker verbunden");
                          
                              mqttClient.publish("Huehnertuer/Innen/Tuer_oeffnet", "0");
                              mqttClient.publish("Huehnertuer/Innen/Tuer_auf", "0");
                              mqttClient.publish("Huehnertuer/Innen/Tuer_schliesst", "0");
                              mqttClient.publish("Huehnertuer/Innen/Tuer_zu", "0");
                          
                              mqttClient.subscribe("Huehnertuer/Innen/Tuer");
                            } else {
                              Serial.print("failed with state ");
                              Serial.print(mqttClient.state());
                              Serial.println(" try again in 5 seconds");
                              // Wait 5 seconds before retrying
                              delay(5000);
                            }
                          }
                          
                          
                          // MQTT Callback
                          void callback(char* topic, byte* payload, unsigned int length)
                          {
                          
                            payload[length] = '\0';
                            String strTopic = String(topic);
                            String strPayload = String((char * ) payload);
                          
                            Serial.print("Message arrived [");
                            Serial.print(strTopic);
                            Serial.print("----");
                            Serial.print(strPayload);
                            Serial.print("] ");
                            Serial.println();
                          
                          
                            if (strTopic == "Huehnertuer/Innen/Tuer")
                            {
                              // Tuer schliessen
                              if (strPayload == "false") {
                                Serial.println("Tuer schliesst über IoBroker");
                                TuerSteuerung(SCHLIESSEN);
                              }
                          
                              // Tuer öffnen
                              if (strPayload == "true") {
                                Serial.println("Tuer oeffnet über IoBroker");
                                TuerSteuerung(OEFFNEN);
                              }
                            }
                          }
                          

                          der teil aus dem loop

                           // MQTT Broker
                            mqttClient.loop();
                            if (!mqttClient.connected()) {
                              reconnectToMQTT();
                            }
                          

                          der aus dem setup

                           // MQTT Brocker
                            // Mit ioBroker Mqtt verbinden
                            mqttClient.setServer(mqtt_server, mqtt_port);//MQTT Server, - Port
                            mqttClient.setCallback(callback);
                          
                          

                          zusätzlich empfehle ich dir eine eigne Instanz auf zu machen vom MQTT-Brocker.

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

                          Support us

                          ioBroker
                          Community Adapters
                          Donate
                          FAQ Cloud / IOT
                          HowTo: Node.js-Update
                          HowTo: Backup/Restore
                          Downloads
                          BLOG

                          728
                          Online

                          31.9k
                          Users

                          80.2k
                          Topics

                          1.3m
                          Posts

                          arduino esp32 mqtt connect problem mqtt-adapter platformio
                          3
                          13
                          339
                          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