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. ioBroker Allgemein
  4. [gelöst] MQTT Senden aus ioBroker

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

[gelöst] MQTT Senden aus ioBroker

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
7 Beiträge 3 Kommentatoren 10.1k 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.
  • ThisoftT Offline
    ThisoftT Offline
    Thisoft
    schrieb am zuletzt editiert von
    #1

    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

    22 HM-Geräte; PivCCU2 auf RasPi

    ioBroker-Multihost; Ubuntu-Master auf Intel-Atom und 3 RasPi-Clients

    1 Antwort Letzte Antwort
    0
    • BluefoxB Offline
      BluefoxB Offline
      Bluefox
      schrieb am zuletzt editiert von
      #2

      @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 Antwort Letzte Antwort
      0
      • A Offline
        A Offline
        AndyUM61
        schrieb am zuletzt editiert von
        #3

        @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.

        Internette Grüße
        Andy

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

        1 Antwort Letzte Antwort
        0
        • ThisoftT Offline
          ThisoftT Offline
          Thisoft
          schrieb am zuletzt editiert von
          #4

          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]
          

          22 HM-Geräte; PivCCU2 auf RasPi

          ioBroker-Multihost; Ubuntu-Master auf Intel-Atom und 3 RasPi-Clients

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

            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

            Internette Grüße
            Andy

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

            1 Antwort Letzte Antwort
            0
            • BluefoxB Offline
              BluefoxB Offline
              Bluefox
              schrieb am zuletzt editiert von
              #6

              @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 Antwort Letzte Antwort
              0
              • ThisoftT Offline
                ThisoftT Offline
                Thisoft
                schrieb am zuletzt editiert von
                #7

                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 :cry: 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 :D 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

                22 HM-Geräte; PivCCU2 auf RasPi

                ioBroker-Multihost; Ubuntu-Master auf Intel-Atom und 3 RasPi-Clients

                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
                FAQ Cloud / IOT
                HowTo: Node.js-Update
                HowTo: Backup/Restore
                Downloads
                BLOG

                610

                Online

                32.7k

                Benutzer

                82.4k

                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