Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. [gelöst] MQTT Senden aus ioBroker

    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

    [gelöst] MQTT Senden aus ioBroker

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

      Hallo,

      ich hab nochmal eine Verständnisfrage zum MQTT-Broker.

      Ich habe einen Arduino mit diversen Sensoren aufgebaut und bekomme diese Werte auch alle schön per MQTT-Adapter an ioBroker gesendet. Soweit so gut. Jetzt möchte ich aber auch Topics von ioBroker an den Arduino senden um z.B. Relais zu schalten. Und da ist mir jetzt nicht klar wie ich das eigentlich machen muss :?: Kann ich da einfach in meinem MQTT-Adapter (als Server konfiguriert) Objekte anlegen und werden diese dann (bei Änderung oder wann auch immer ?) gesendet? Oder muss ich dafür noch einen zweiten MQTT-Adapter als Client installieren? Oder ganz anders?

      Sorry, für die Frage aber ich hab schon einige Varianten durchprobiert und weiß momentan nicht, ob der Fehler im Arduino-Sketch liegt ober ob ich falsch rangehe.

      Danke und Gruß Thilo

      1 Reply Last reply Reply Quote 0
      • Bluefox
        Bluefox last edited by

        @Thisoft:

        Hallo,

        ich hab nochmal eine Verständnisfrage zum MQTT-Broker.

        Ich habe einen Arduino mit diversen Sensoren aufgebaut und bekomme diese Werte auch alle schön per MQTT-Adapter an ioBroker gesendet. Soweit so gut. Jetzt möchte ich aber auch Topics von ioBroker an den Arduino senden um z.B. Relais zu schalten. Und da ist mir jetzt nicht klar wie ich das eigentlich machen muss :?: Kann ich da einfach in meinem MQTT-Adapter (als Server konfiguriert) Objekte anlegen und werden diese dann (bei Änderung oder wann auch immer ?) gesendet? Oder muss ich dafür noch einen zweiten MQTT-Adapter als Client installieren? Oder ganz anders?

        Sorry, für die Frage aber ich hab schon einige Varianten durchprobiert und weiß momentan nicht, ob der Fehler im Arduino-Sketch liegt ober ob ich falsch rangehe.

        Danke und Gruß Thilo `
        Du kannst auch über mqtt Broker senden. Du kannst aber nicht einfach so die Objekte anlegen, weil diese Objekte im Arduino bekannt sein müssen. Eigentlich sollte Arduino bei der Verbindung alle Topos einmal schicken? Falls es nicht passiert, dann natürlich kannst Objekte in mqtt.0 anlegen und die beschreiben.

        1 Reply Last reply Reply Quote 0
        • A
          AndyUM61 last edited by

          @Thisoft:

          Hallo,

          ich hab nochmal eine Verständnisfrage zum MQTT-Broker.

          Ich habe einen Arduino mit diversen Sensoren aufgebaut und bekomme diese Werte auch alle schön per MQTT-Adapter an ioBroker gesendet. Soweit so gut. Jetzt möchte ich aber auch Topics von ioBroker an den Arduino senden um z.B. Relais zu schalten. Und da ist mir jetzt nicht klar wie ich das eigentlich machen muss :?: Kann ich da einfach in meinem MQTT-Adapter (als Server konfiguriert) Objekte anlegen und werden diese dann (bei Änderung oder wann auch immer ?) gesendet? Oder muss ich dafür noch einen zweiten MQTT-Adapter als Client installieren? Oder ganz anders?

          Sorry, für die Frage aber ich hab schon einige Varianten durchprobiert und weiß momentan nicht, ob der Fehler im Arduino-Sketch liegt ober ob ich falsch rangehe.

          Danke und Gruß Thilo `

          Schau doch mal hier im Forum unter "ioBroker praktische Anwendungen / Projekte".

          Dort habe ich einiges geschrieben zum Thema MQTT und der Nutzung im ioBroker.

          1 Reply Last reply Reply Quote 0
          • Thisoft
            Thisoft last edited by

            Hallo Andy,

            ich bin ja eben nach Deinem Beispiel vorgegangen. Dort wird ja das Topic "RESET" erzeugt mit dem man den Arduino neustarten können sollte. Das Topic erscheint bei mir auch im MQTT-Adapter nachdem ich den Arduino das erste Mal gestartet habe. Wenn ich aber jetzt den Wert im ioBroker ändere müsste ja nach meinem bisherigen Verständnis der neue Wert an den Arduino gesendet werden und ggf. auch einen Neustart auslösen. Es passiert aber nix, der Arduino schreibt auch nichts in den Seriellen Monitor was er ja lt. dem Sketch tun müsste:

            `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);
                if (msgString == "1"){ // Wenn 1 dann Reset
                   mqttClient.publish(mqtt_topics_ip,"RESET");
                   Serial.println("Reset");
                  digitalWrite(RESETPIN, LOW);
                  delay(1000);   
              }
            }
            
            void setup() {
              Serial.begin(9600);
              Serial.println("GrillDuino " + ver);
              mqttClient.setServer(mqtt_server, 1883);
              mqttClient.setCallback(callback);</length;>`
            
            Deshalb meine Frage, habe ich generell was noch nicht verstanden? oder habe ich einen Fehler im Sketch? oder muss ich im MQTT-Adapter noch etwas anders einstellen?
             ![250_mqtt_adapter.png](/assets/uploads/files/250_mqtt_adapter.png) [/i][/i][/i]
            
            1 Reply Last reply Reply Quote 0
            • A
              AndyUM61 last edited by

              Aber es ist schon klar, das sich die Scripte auf einen ESP8266 beziehen?

              Für die Reset-Funktion muss auch Hardwareseitig eine Verbindung, siehe Script, hergestellt werden.

              Auf nem Arduino sollte das aber auch - entsprechend angepasst - funktionieren.

              Wie hast du den Arduino netzwerktechnisch angebunden?

              Die Konfiguration sieht bei mir auch so aus, bis auf das ich die Bekanntgabe eigener States beim Verbinden deaktiviert habe.

              Bei mir steht in der Maske für Bekantgeben eigener States mqtt.0.

              Das könnte schon der Fehler bei dir sein.

              Gesendet von meinem GT-N8000 mit Tapatalk

              1 Reply Last reply Reply Quote 0
              • Bluefox
                Bluefox last edited by

                @Thisoft:

                Hallo Andy,

                ich bin ja eben nach Deinem Beispiel vorgegangen. Dort wird ja das Topic "RESET" erzeugt mit dem man den Arduino neustarten können sollte. Das Topic erscheint bei mir auch im MQTT-Adapter nachdem ich den Arduino das erste Mal gestartet habe. Wenn ich aber jetzt den Wert im ioBroker ändere müsste ja nach meinem bisherigen Verständnis der neue Wert an den Arduino gesendet werden und ggf. auch einen Neustart auslösen. Es passiert aber nix, der Arduino schreibt auch nichts in den Seriellen Monitor was er ja lt. dem Sketch tun müsste:

                `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);
                    if (msgString == "1"){ // Wenn 1 dann Reset
                       mqttClient.publish(mqtt_topics_ip,"RESET");
                       Serial.println("Reset");
                      digitalWrite(RESETPIN, LOW);
                      delay(1000);   
                  }
                }
                
                void setup() {
                  Serial.begin(9600);
                  Serial.println("GrillDuino " + ver);
                  mqttClient.setServer(mqtt_server, 1883);
                  mqttClient.setCallback(callback);</length;>`
                
                Deshalb meine Frage, habe ich generell was noch nicht verstanden? oder habe ich einen Fehler im Sketch? oder muss ich im MQTT-Adapter noch etwas anders einstellen?
                 filename="MQTT_Adapter.PNG" index="0">~~
                Falls dein STATE 'mqtt.0.GrillRESET' heist, wird das nie über MQTT adapter gesendet, weil du ausdrücklich gesagt hast, dass du nur "Grill.." Objekte sendest.
                
                Muss vielleicht deine Maske 'mqtt.0.Grill*' sein?[/i][/i][/i]
                ``` ` 
                1 Reply Last reply Reply Quote 0
                • Thisoft
                  Thisoft last edited by

                  Jetzt dachte ich schon ihr hättet mich auf die Lösung gestoßen weil ich die Maske fürs Bekanntgeben eigener States anpassen müsste. Das hilft aber leider auch nicht 😢 Ich habe da jetzt alles Mögliche versucht, sogar testweise mal nur * ! Hilft aber auch nicht. Außerdem sieht die Debugausgabe im ioBroker-Log IMO gut aus:

                  mqtt-0	2016-04-08 00:19:57	debug	Send to client [GrillDuino01] "GrillDuino01/RESET": 1
                  mqtt-0	2016-04-08 00:19:57	debug	onStateChange mqtt.0.GrillDuino01.RESET: {"val":"1","ack":false,"ts":1460067597,"q":0,"from":"system.adapter.admin.0","lc":1460067597}
                  mqtt-0	2016-04-08 00:19:57	debug	stateChange mqtt.0.GrillDuino01.RESET: {"val":"1","ack":false,"ts":1460067597,"q":0,"from":"system.adapter.admin.0","lc":1460067597}
                  inMem	2016-04-08 00:19:57	debug	message mqtt* mqtt.0.GrillDuino01.RESET val=1, ack=false, ts=1460067597, q=0, from=system.adapter.admin.0, lc=1460067597
                  mqtt-0	2016-04-08 00:19:57	debug	stateChange mqtt.0.GrillDuino01.Licht: {"val":1023,"ack":true,"ts":1460067597,"q":0,"from":"system.adapter.mqtt.0","lc":1460067224}
                  inMem	2016-04-08 00:19:57	debug	message mqtt* mqtt.0.GrillDuino01.Licht val=1023, ack=true, ts=1460067597, q=0, from=system.adapter.mqtt.0, lc=1460067224
                  mqtt-0	2016-04-08 00:19:57	debug	Server received "GrillDuino01/Licht" (number): 1023
                  

                  Es könnte also schon sein, dass der FEhler im Arduino-Sketch liegt. DAbei ist mir ja erstmal völlig egal ob dann auch wirklich ein Hardreset ausgelöst würde. Aber es müsste ja im Seriellen Monitor ein Eintrag "Empfangen: topic" erscheinen. Da tut sich aber schon nix. Vielleicht wird die Callback-Funktion des MQTT-Clients gar nicht ausgeführt? Ich habe aber k.A. wie ich das sonst noch testen könnte…?

                  EDIT: Ich hab's dank hartnäckiger Googelei herausgefunden 😄 In der Loop-Routine des Arduino-Sketchs hatte die folgende Zeile gefehlt:

                    mqttClient.loop();
                  

                  Damit werden jetzt die "Subscribten" Topics abgefragt und ich kann meinen Arduino auch von ioBroker aus ansteuern. *juhuuu

                  Danke und Gruß

                  Thilo

                  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

                  730
                  Online

                  31.9k
                  Users

                  80.3k
                  Topics

                  1.3m
                  Posts

                  3
                  7
                  9871
                  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