MQTT Tasmota Sonoff POW

  • ja, dachte schon.

    Aber blicke hier auch nicht ganz durch um ehrlich zu sein.

    Wie genau muss ich bei mosquitto überhaupt diese Befehle einschreiben.

    Ich habe sie in die config von Mosquitto so reingebracht: "sudo nano /etc/mosquitto/mosquitto.conf" ?


    Hier ist dazugehörige Konfiguration vom Sonoff:


    Vielen Dank

    idna

  • In der Config musst du gar nix machen.

    Mosquitto ist der Server bzw. Dienst.

    Lade dir mal das Plugin mqtthings.

    Da sind auch Beschreibungen, was in der Config.json einzustellen ist.

    Mit diesem Plugin steuerst du auch die Geräte und nicht mit mosquitto

    Gruß

    Maddin

  • Ja, ich habe aber doch bereits das plugin in Homebridge eingebunden und die configure hatte ich doch oben schon, diese funktioniert allerdings nicht.


    Eigentlich muss der Link mit den topics doch nur übereinstimmen mit dem aus der config und dem auf dem Sonoff, oder?

    🤔


    Grüße

    idna

  • also deine templates müssten normalerweise

    /stat/sonoff und /cmnd/sonoff sein. So ist da die struktur. Probier das mal. In der console in deinem gerät werden die commands auch gesendet hast du gesagt? Da müssten die richtigen pfade dann ja auch stehen.


    So sieht es bei mir aus, wenn ich das gerät einschalte. Das bedeutet, dass das template /stat/tasmota/POWER2 ist.


    Code
    20:57:51 MQT: stat/tasmota/POWER2 = ON

    Gruß

    Maddin

  • Ja, aber habe diese Befehle eigentlich ja auch so drin.

    Hier ist ein Auszug vom Ein- und Ausschalten aus der Konsole, das funktioniert.

    Auch wenn ich einen Befehl an raspi mosquito mit mqttfx sende, funktioniert es.


    Nur nicht wenn ich es über Homebridge versuche, geht es nicht.

    Code
    19:35:13 MQT: sonoff/STATE = {"Time":"2020-07-20T19:35:13","Uptime":"6T08:50:21","UptimeSec":550221,"Heap":28,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"POWER":"OFF","Wifi":{"AP":1,"SSId":"R4U","BSSId":"FC:GT:DA:22:95:2A","Channel":11,"RSSI":74,"LinkCount":1,"Downtime":"0T00:00:06"}}
    19:38:21 MQT: sonoff/RESULT = {"POWER":"ON"}
    19:38:21 MQT: sonoff/POWER = ON
    19:38:22 MQT: sonoff/RESULT = {"POWER":"OFF"}
    19:38:22 MQT: sonoff/POWER = OFF

    Vielen Dank für die Tipps

    idna

  • Sorry, dann bin ich mit meinem Latein auch am Ende...

    Gruß

    Maddin

  • Vom Heimrechner, habe eben nochmal geschaut und kann nur mitlesen keine Befehle versenden, wobei ich natürlich auch nicht sehr vertraut mit dem Progemm bin.

    Hier noch ein Screenshot aus mqttfx:


    Danke für die Hilfe

    idna

  • Okay, dann scheint das Problem ja schon mal nicht bei Sonoff zu liegen sondern an deinem Mosquitto, wenn du Nachrichten lesen kannst aber nicht publishen.


    Versuch mal in ein komplett anderes Topic zu publishen und zu lesen.

    Dann ggf. die Logs von Mosquitto überprüfen

  • Gib auf dem Raspi ein:


    mosquitto_pub -m "ON" -t wohnzimmer/licht/deckenlampe


    und sie dabei zu, was in deinem mqtt.fx passiert. Falls du mosquitto_pub nicht auf deinem Raspi installiert hast, was sich in einem einfachen -bash: mosquitto_pub: command not found widerspiegelt, musst du es auf dem Raspi noch installieren mit


    apt-get install mosquitto-clients


    Wenn man mit MQTT was machen will, muss man sich ein bisschen in das Konzept davon einlesen. Kurz gesagt: ein Client schickt einen Wert unter einem Topic an den MQTT-Broker (hier: mosquitto) und andere Clients, die dieses Topic abonniert (subscribed) haben, reagieren dann darauf. Oben ist der Wert ON und das Topic wohnzimmer/licht/deckenlampe.


    Beispiel (so wie ich MQTT verstanden habe):

    • Dein MQTT-Client homebridge-mqttthing sendet das Topic wohnzimmer/licht/deckenlampe und übergibt damit den Wert ON.
    • Der MQTT-Broker mosquitto empfängt das und sendet es an alle Lampen, die dieses Topic subscribed haben. In diesem Beispiel ist es nur eine einzige, und zwar die Deckenlampe. Die bekommt nun den Wert ON vom MQTT-Broker zugesendet.

    Andere Geräte in deinem Wohnzimmer haben sich mit anderen Topics beim MQTT-Server registriert. Die Stehlampe hört auf wohnzimmer/licht/stehlampe, die indirekte Beleuchtung unterm Sofa hört auf wohnzimmer/licht/sofa. Die Stereoanlage ist wohnzimmer/sound/yamaha.


    Ich benutze jetzt hier in diesem Geschreibsel nicht das Plugin, sondern den Kommandozeilenbefehl mosquitto_pub. Letztendlich macht das das gleiche. Ist natürlich nicht HomeKit-kompatibel, aber prima zum Spielen und Lernen geeignet.

    • Ein mosquitto_pub -m "OFF" -t wohnzimmer/licht/deckenlampe schaltet die Deckenlampe aus.
    • Ein mosquitto_pub -m "OFF" -t wohnzimmer/licht/stehlampe schaltet die Stehlampe aus.
    • Ein mosquitto_pub -m "OFF" -t wohnzimmer/licht/# schaltet alle Lampen aus.
    • Ein mosquitto_pub -m "OFF" -t wohnzimmer/# schaltet alle Geräte im Wohnzimmer aus.
    • Ein mosquitto_pub -m "OFF" -t milchstraße/# schaltet nicht alle Sterne aus.

    Lies auch mal das hier:

    https://de.wikipedia.org/wiki/MQTT


    Die Konfigurationsdatei /etc/mosquitto/mosqitto.conf lässt du komplett in Ruhe und machst damit gar nichts.

  • Genau, stell dir ein Topic etwas wie ein Briefkasten vor.

    Du kannst Nachrichten an jeden beliebigen Briefkasten senden.

    Anstatt wohnzimmer/licht/deckenlampe könntest du auch an abc/xyz senden.


    Es können sich beliebige subscriber an diese Briefkasten hängen.

    mqtt.fx kann halt in diese Briefkästen schauen und auch Briefe versenden.


    Mit dem Befehl mosquitto_pub -m "ON" -t wohnzimmer/licht/deckenlampe sendest du die Nachricht "ON" an den Briefkasten wohnzimmer/licht/deckenlampe.


    Es geht jetzt darum herauszufinden ob du überhaupt Nachrichten versenden kannst bzw. diese Nachrichten bei MQTT ankommen.

  • okay, vielen Dank für die beiden sehr ausführlichen Antworten!
    Jetzt fange ich an, das Prinzip zu verstehen

    Jetzt muss ich es nur alles so installieren, dass es auch funktioniert....


    Offensichtlich kann ich keine Befehle vom raspi publishen, denn ich bekomme eine Fehlermeldung bei dem Versuch etwas einzuschalten:


    Code
    pi@raspberrypi:~ $ mosquitto_pub -m "ON" -t wohnzimmer/licht/deckenlampe
    Error: Connection refused

    Habe die Fehlermeldung mal gegoggelt und habe etwas in verschiedenen Foren gelesen und jetzt nach diesem Befehl:

    Code
    sudo systemctl enable mosquitto.service

    bekommm ich zwar keine Fehlermeldung mehr, jedoch kann ich auch nichts in mqttfx beobachten.

    Es kommt in putty aber gleich eine neue Kommandozeile.


    Gibts noch etwas was ich versuchen könnte?


    Dankeschön

    idna

  • Error: Connection refused

    Ganz klare Sache und völlig unzweifelhaft: der MQTT-Server läuft nicht auf der Maschine, auf der der Befehl mosquitto_pub gestartet wurde.

    sudo systemctl enable mosquitto.service

    Dieser Befehl sorgt dafür, dass der mosquitto beim Booten des Raspi automatisch gestartet wird.

    bekommm ich zwar keine Fehlermeldung mehr, jedoch kann ich auch nichts in mqttfx beobachten.

    Es kommt in putty aber gleich eine neue Kommandozeile.

    Da soll auch eine neue Zeile kommen. Das Programm hat getan, was es sollte und sich dann beendet. Zumindest das funktioniert schon mal ^^.


    Ansonsten: eigentlich muss man nix Besonderes können - der mosquitto ist ganz pflegeleicht. ich hab damals das hier gelesen und nachgemacht: http://www.steves-internet-gui…osquitto_pub-sub-clients/

  • aber liegt mein Problem nicht in der Homebridge config?

    Denn ab da funktioniert es ja nicht.


    Leider werden auch diese Befehle von Mqqttfx nicht umgesetzt, wenn ich sie los schicke bekomme ich zwar eine Rückmeldung bei Subscribe aber der Befehl wird beim Sonoff einfach nicht ausgeführt.

    Wie wäre den die korrekte Befehlsatz, denn ich im Mqttfx lossschicken müsste?

    Code
    cmnd/sonoff/power = off
    seton/sonoff/power = on
    sonoff/power = on

    Wäre schonmal froh, wenn das funktioniert.


    Vielen Dank für feedback.

    idna


  • Nur mal so nebenbei: ich verwende keine Sonoff-Geräte. Ich mach mit meinem MQTT-Server andere Dinge. MQTT.fx kannte ich auch nicht, bevor du es erwähnt hast. Ich mach hat alles so:


    mosquitto_pub -h 192.168.1.22 -m "off" -t cmnd/sonoff/power

  • Du sollst das ja auch dahinschreiben.

    1. Schreibe oben hin: cmnd/sonoff/power
    2. Schreibe unten hin: off
    3. Klicke auf Publish
  • achso, funktioniert jedoch auch nicht..

    Es taucht im Subscribe Reiter mit dieser Meldung auf:


    Code
    *** PAYLOAD IS NOT VALID JSON DATA ***
    
    
    Unexpected character ('o' (code 111)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')
    at [Source: java.io.StringReader@1b175e1; line: 1, column: 2]

    Mein Sonoff bleibt aus.


    Danke

    idna

  • Dann stell unten rechts mal um auf Plain Text Decoder. Dadurch geht die Lampe auch nicht an.