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. [geloest] MQTT an den Sonoff-Adapter senden

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    18
    1
    557

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.3k

[geloest] MQTT an den Sonoff-Adapter senden

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
11 Beiträge 2 Kommentatoren 3.9k Aufrufe 2 Watching
  • Ä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.
  • oberfraggerO oberfragger

    Hi,
    ich habe bisher immer auf Tasmota gesetzt...so schön einfach. Nun will ich an den tasmota-Adapter Temperaturwerte aus dem RaspberryPi4 senden. Das ganze würde ich via Cron auslösen und dann alle 10 Minuten an den ioBroker senden. Aktuell ist noch nicht geplant irgendwas via MQTT zuschalten. Aber nicht ausgeschlossen.

    Ich kann via python the Luftfeuchtigkeit und Temperatur auf der cosole anzeigen lassen. Passt soweit. Nun will ich das mit MQTT in den ioBroker übertragen. Ich bin mir sicher das kann nict so schwer sein, eine Verbindung klappt... ein Objekt wurde auch erstellt... das wars.

    Hier mein Python Script auf dem Raspberry:

    import paho.mqtt.client as mqtt #import the client1
    broker_address="192.168.178.55"
    print("creating new instance")
    client = mqtt.Client("P1") #create new instance
    client.username_pw_set("User", "Passwort")
    print("connecting to ioBroker")
    client.connect(broker_address) #connect to broker
    print("Subscribing to topic","sonoff")
    client.subscribe("sonoff/AM2320_Humidity")
    print("Publishing message to topic","sonoff/AM2320_Humidity")
    client.publish("sonoff/AM2320_Humidity",5)
    

    So siehts im ioBroker aus:
    72a2a978-65c4-4537-bece-370099798fd8-image.png

    Und so im Log:
    b2414522-9266-4ea5-8e1b-eaff175ea611-image.png

    Warum wird der Wert nicht im ioBroker geschrieben?

    mickymM Offline
    mickymM Offline
    mickym
    Most Active
    schrieb am zuletzt editiert von mickym
    #2

    @oberfragger Um es gleich vorwegzunehmen - ich nutze nicht den sonoff Adapter, sondern normales MQTT. Allerdings möchte ich einfach ein paar Fragen stellen , weil ich durchaus auch Tasmota nutze und mir das "spanisch" vorkommt, dass Du hier selbst via cron irgendwas auslösen möchtest. Normalerweise hat tasmota eine MQTT Schnittstelle. Sollte sich eine Änderung in den Daten ergeben, dann sendet tasmota das automatisch. Zudem sendet tasmota automatisch einen Hearbeat an den MQTT-Broker. Also warum konfiguriert Du nicht einfach tasmota ordentlich mit den MQTT-Einstellungen?

    Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

    oberfraggerO 1 Antwort Letzte Antwort
    0
    • mickymM mickym

      @oberfragger Um es gleich vorwegzunehmen - ich nutze nicht den sonoff Adapter, sondern normales MQTT. Allerdings möchte ich einfach ein paar Fragen stellen , weil ich durchaus auch Tasmota nutze und mir das "spanisch" vorkommt, dass Du hier selbst via cron irgendwas auslösen möchtest. Normalerweise hat tasmota eine MQTT Schnittstelle. Sollte sich eine Änderung in den Daten ergeben, dann sendet tasmota das automatisch. Zudem sendet tasmota automatisch einen Hearbeat an den MQTT-Broker. Also warum konfiguriert Du nicht einfach tasmota ordentlich mit den MQTT-Einstellungen?

      oberfraggerO Offline
      oberfraggerO Offline
      oberfragger
      schrieb am zuletzt editiert von oberfragger
      #3

      @mickym Lass dich bitte nicht von "Tasmota" ablenken. Ich nutze auf diversen Sonoffs und ESPs etc. MQTT problemlos.

      Nun möchte ich selbstständig Werte an den Sonoff-Adapter, meinetwegen auch an den MQTT-Adapter im ioBroker senden. Also keine vorgefertigte Lösung, wie sie Tasmota bietet.

      Ich lese mit dem Raspberry (der noch andere Aufgaben übernimmt) einen Sensor aus. Die Sensorwerte möchte ich gern an den ioBroker-Adapter senden.

      mickymM 1 Antwort Letzte Antwort
      0
      • oberfraggerO oberfragger

        @mickym Lass dich bitte nicht von "Tasmota" ablenken. Ich nutze auf diversen Sonoffs und ESPs etc. MQTT problemlos.

        Nun möchte ich selbstständig Werte an den Sonoff-Adapter, meinetwegen auch an den MQTT-Adapter im ioBroker senden. Also keine vorgefertigte Lösung, wie sie Tasmota bietet.

        Ich lese mit dem Raspberry (der noch andere Aufgaben übernimmt) einen Sensor aus. Die Sensorwerte möchte ich gern an den ioBroker-Adapter senden.

        mickymM Offline
        mickymM Offline
        mickym
        Most Active
        schrieb am zuletzt editiert von mickym
        #4

        @oberfragger OK dann hat das aber mit Tasmota gar nichts zu tun. Vielmehr musst Du mit Deiner Software "MQTT" sprechen bzw. dessen Protokoll sprechen. Der Sonoff agiert ja was die Kommunikation betrifft - als MQTT Broker.

        Hier ist meines Erachtens der Aufbau des Protokolls: http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/mqtt-v3.1.1.html

        bzw. dieses wiki: https://github.com/mqtt/mqtt.org/wiki

        Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

        oberfraggerO 1 Antwort Letzte Antwort
        0
        • mickymM mickym

          @oberfragger OK dann hat das aber mit Tasmota gar nichts zu tun. Vielmehr musst Du mit Deiner Software "MQTT" sprechen bzw. dessen Protokoll sprechen. Der Sonoff agiert ja was die Kommunikation betrifft - als MQTT Broker.

          Hier ist meines Erachtens der Aufbau des Protokolls: http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/mqtt-v3.1.1.html

          bzw. dieses wiki: https://github.com/mqtt/mqtt.org/wiki

          oberfraggerO Offline
          oberfraggerO Offline
          oberfragger
          schrieb am zuletzt editiert von
          #5

          @mickym Bin schon den ganzen Abend am wühlen. Ich bräucht nur von -irgendjemanden- mal ein Beispiel was funktioniert. Also "reiner MQQT-Code".
          So falsch kann ich doch nicht liegen bzw. ich verstehe nciht warum der Wert (der ja im ioBroker ankommt) einfach nicht reingeschrieben wird.

          mickymM 1 Antwort Letzte Antwort
          0
          • oberfraggerO oberfragger

            @mickym Bin schon den ganzen Abend am wühlen. Ich bräucht nur von -irgendjemanden- mal ein Beispiel was funktioniert. Also "reiner MQQT-Code".
            So falsch kann ich doch nicht liegen bzw. ich verstehe nciht warum der Wert (der ja im ioBroker ankommt) einfach nicht reingeschrieben wird.

            mickymM Offline
            mickymM Offline
            mickym
            Most Active
            schrieb am zuletzt editiert von
            #6

            @oberfragger Hier gibts eine MQTT client implementierung für Python - vielleicht hast Du das aber schon implementiert.

            https://pypi.org/project/gmqtt/0.6.9/

            Ich würde trotzdem lieber den reinen MQTT Broker zum Testen nehmen und keinen Sonoff Adapter, weil Du ja nicht weißt ob der nicht irgendwas macht, um "nicht tasmota" Geräte am Verbinden hindert.

            Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

            oberfraggerO 2 Antworten Letzte Antwort
            0
            • mickymM mickym

              @oberfragger Hier gibts eine MQTT client implementierung für Python - vielleicht hast Du das aber schon implementiert.

              https://pypi.org/project/gmqtt/0.6.9/

              Ich würde trotzdem lieber den reinen MQTT Broker zum Testen nehmen und keinen Sonoff Adapter, weil Du ja nicht weißt ob der nicht irgendwas macht, um "nicht tasmota" Geräte am Verbinden hindert.

              oberfraggerO Offline
              oberfraggerO Offline
              oberfragger
              schrieb am zuletzt editiert von oberfragger
              #7

              @mickym Vermutlich haste recht dass ich vielleicht den richtigen Mqqt-Adapter nehmen sollte.

              Habe hier ein Beispiel gefunden was mein Problem gut darstellt.
              https://thingsboard.io/docs/samples/raspberry/temperature/

              Ich will aber ohne das thingsboard auskommen. Sieht aber so aus, als ob da sauch nur MQTT ist.

              Ich glaube mittlerweile dass das Zauberwort wohl "payload" heisst. Ma weiter wühlen.

              1 Antwort Letzte Antwort
              0
              • mickymM mickym

                @oberfragger Hier gibts eine MQTT client implementierung für Python - vielleicht hast Du das aber schon implementiert.

                https://pypi.org/project/gmqtt/0.6.9/

                Ich würde trotzdem lieber den reinen MQTT Broker zum Testen nehmen und keinen Sonoff Adapter, weil Du ja nicht weißt ob der nicht irgendwas macht, um "nicht tasmota" Geräte am Verbinden hindert.

                oberfraggerO Offline
                oberfraggerO Offline
                oberfragger
                schrieb am zuletzt editiert von oberfragger
                #8

                @mickym Boah. Leck...
                Ja, mit dem MQTT-Adapter klappt es! Mal wieder paar Stunden vergeudet.

                Ich habe mal den Thingsboard-Code genommen und angepasst.
                Jetzt habe ich ein Objekt da drin stehen. Denke mal ich kann problemlos die Werte einzeln übertragen. Zumindest sind die schon mal an der richten Stelle.

                b8ae5d8f-c681-47a7-b606-44e9aadcff21-image.png

                import os
                import time
                import sys
                #import Adafruit_DHT as dht
                import paho.mqtt.client as mqtt
                import json
                
                THINGSBOARD_HOST = '192.168.178.55'
                ACCESS_TOKEN = 'DHT22_DEMO_TOKEN'
                
                # Data capture and upload interval in seconds. Less interval will eventually hang the DHT22.
                INTERVAL=2
                
                sensor_data = {'temperature': 0, 'humidity': 0}
                
                next_reading = time.time() 
                
                client = mqtt.Client("P2")
                
                # Set access token
                client.username_pw_set("user", "passwort")
                
                # Connect to ThingsBoard using default MQTT port and 60 seconds keepalive interval
                client.connect(THINGSBOARD_HOST, 1888, 60)
                
                client.loop_start()
                
                try:
                    while True:
                #        humidity,temperature = dht.read_retry(dht.DHT22, 4)
                #        humidity = round(humidity, 2)
                #        temperature = round(temperature, 2)
                        humidity = 30
                        temperature = 20
                #        print(u"Temperature: {:g}\u00b0C, Humidity: {:g}%".format(temperature, humidity))
                        sensor_data['temperature'] = temperature
                        sensor_data['humidity'] = humidity
                
                        # Sending humidity and temperature data to ThingsBoard
                        client.publish('AM2320', json.dumps(sensor_data), 1)
                
                        next_reading += INTERVAL
                        sleep_time = next_reading-time.time()
                        if sleep_time > 0:
                            time.sleep(sleep_time)
                except KeyboardInterrupt:
                    pass
                
                client.loop_stop()
                client.disconnect()
                
                mickymM 1 Antwort Letzte Antwort
                0
                • oberfraggerO oberfragger

                  @mickym Boah. Leck...
                  Ja, mit dem MQTT-Adapter klappt es! Mal wieder paar Stunden vergeudet.

                  Ich habe mal den Thingsboard-Code genommen und angepasst.
                  Jetzt habe ich ein Objekt da drin stehen. Denke mal ich kann problemlos die Werte einzeln übertragen. Zumindest sind die schon mal an der richten Stelle.

                  b8ae5d8f-c681-47a7-b606-44e9aadcff21-image.png

                  import os
                  import time
                  import sys
                  #import Adafruit_DHT as dht
                  import paho.mqtt.client as mqtt
                  import json
                  
                  THINGSBOARD_HOST = '192.168.178.55'
                  ACCESS_TOKEN = 'DHT22_DEMO_TOKEN'
                  
                  # Data capture and upload interval in seconds. Less interval will eventually hang the DHT22.
                  INTERVAL=2
                  
                  sensor_data = {'temperature': 0, 'humidity': 0}
                  
                  next_reading = time.time() 
                  
                  client = mqtt.Client("P2")
                  
                  # Set access token
                  client.username_pw_set("user", "passwort")
                  
                  # Connect to ThingsBoard using default MQTT port and 60 seconds keepalive interval
                  client.connect(THINGSBOARD_HOST, 1888, 60)
                  
                  client.loop_start()
                  
                  try:
                      while True:
                  #        humidity,temperature = dht.read_retry(dht.DHT22, 4)
                  #        humidity = round(humidity, 2)
                  #        temperature = round(temperature, 2)
                          humidity = 30
                          temperature = 20
                  #        print(u"Temperature: {:g}\u00b0C, Humidity: {:g}%".format(temperature, humidity))
                          sensor_data['temperature'] = temperature
                          sensor_data['humidity'] = humidity
                  
                          # Sending humidity and temperature data to ThingsBoard
                          client.publish('AM2320', json.dumps(sensor_data), 1)
                  
                          next_reading += INTERVAL
                          sleep_time = next_reading-time.time()
                          if sleep_time > 0:
                              time.sleep(sleep_time)
                  except KeyboardInterrupt:
                      pass
                  
                  client.loop_stop()
                  client.disconnect()
                  
                  mickymM Offline
                  mickymM Offline
                  mickym
                  Most Active
                  schrieb am zuletzt editiert von
                  #9

                  @oberfragger Na das schaut doch gut aus. Glückwunsch!!!:relaxed:

                  Warum ich den Sonoff Adapter als problematisch empfunden habe, weil der sich ja bewusst mehr als nur als reiner MQTT Broker verhält bzw. nicht als Standardbroker verhält.

                  Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                  oberfraggerO 1 Antwort Letzte Antwort
                  0
                  • mickymM mickym

                    @oberfragger Na das schaut doch gut aus. Glückwunsch!!!:relaxed:

                    Warum ich den Sonoff Adapter als problematisch empfunden habe, weil der sich ja bewusst mehr als nur als reiner MQTT Broker verhält bzw. nicht als Standardbroker verhält.

                    oberfraggerO Offline
                    oberfraggerO Offline
                    oberfragger
                    schrieb am zuletzt editiert von
                    #10

                    @mickym Jupp. Ich bin nun auch am überlegen ob ich alles Devices von Sonoff zu MQTT umziehen soll. Vermutlich werde ich aber alle neuen Devices direkt mit MQTT nutzen.

                    mickymM 1 Antwort Letzte Antwort
                    0
                    • oberfraggerO oberfragger

                      @mickym Jupp. Ich bin nun auch am überlegen ob ich alles Devices von Sonoff zu MQTT umziehen soll. Vermutlich werde ich aber alle neuen Devices direkt mit MQTT nutzen.

                      mickymM Offline
                      mickymM Offline
                      mickym
                      Most Active
                      schrieb am zuletzt editiert von
                      #11

                      @oberfragger Ich nutze grundsätzlich keine Adapter, wenn Geräte standardmäßig mqtt sprechen. Das ist für mich nur eine zusätzliche Fehlerquelle - Du musst jedem dieser mqtt-Adapter einen eigenen Port gönnen - und bist ggf. darauf angewiesen, dass im Falle der Adapter halt spezifische Dinge kann, diese auch unterstützt werden. Hier ist halt auch der Nachteil, das Du selbst Hand anlegen musst - aber bei Dir seh ich da keine Probleme.

                      Ich nutze meinen MQTT-Broker für Sonoff, Shelly und owntracks und brauche dafür keine Adapter mehr. Ich hatte allerdings auch ein Problem den MQTT-Adapter als Broker zu verwenden. Deshalb läuft auf meiner Maschine noch ein mosquitto als Server und der MQTT- Adapter als Client und das nun seit längerer Zeit sehr stabil.

                      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                      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

                      930

                      Online

                      32.5k

                      Benutzer

                      81.6k

                      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