Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. [geloest] MQTT an den Sonoff-Adapter senden

    NEWS

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    [geloest] MQTT an den Sonoff-Adapter senden

    This topic has been deleted. Only users with topic management privileges can see it.
    • oberfragger
      oberfragger last edited by 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?

      mickym 1 Reply Last reply Reply Quote 0
      • mickym
        mickym Most Active @oberfragger last edited by 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?

        oberfragger 1 Reply Last reply Reply Quote 0
        • oberfragger
          oberfragger @mickym last edited by 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.

          mickym 1 Reply Last reply Reply Quote 0
          • mickym
            mickym Most Active @oberfragger last edited by 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

            oberfragger 1 Reply Last reply Reply Quote 0
            • oberfragger
              oberfragger @mickym last edited by

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

              mickym 1 Reply Last reply Reply Quote 0
              • mickym
                mickym Most Active @oberfragger last edited by

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

                oberfragger 2 Replies Last reply Reply Quote 0
                • oberfragger
                  oberfragger @mickym last edited by oberfragger

                  @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 Reply Last reply Reply Quote 0
                  • oberfragger
                    oberfragger @mickym last edited by 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()
                    
                    mickym 1 Reply Last reply Reply Quote 0
                    • mickym
                      mickym Most Active @oberfragger last edited by

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

                      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.

                      oberfragger 1 Reply Last reply Reply Quote 0
                      • oberfragger
                        oberfragger @mickym last edited by

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

                        mickym 1 Reply Last reply Reply Quote 0
                        • mickym
                          mickym Most Active @oberfragger last edited by

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

                          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

                          892
                          Online

                          31.6k
                          Users

                          79.4k
                          Topics

                          1.3m
                          Posts

                          2
                          11
                          3496
                          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