Abfragen vom aktuellen Schalterstatus (ein/aus) mittels Mosquitto ?

  • Hallo,

    Ich habe alle meine smarten Schalter (Sonoff und andere) mit Tasmota geflasht und in OpenHab eingebunden, das funktioniert.
    MQTT ist in den Schaltern entsprechend konfiguriert.

    Jetzt würde ich gerne einen Schalter ohne OH direkt über einen Raspberry und mqtt schalten bzw. abfragen.

    Das schalten (hier: EIN) bekomme ich vom Raspberry hin, so:
    # mosquitto_pub -d -u USER -P <Passwort> -t cmnd/sonoff/smart-switch-12/POWER -m "ON"

    Aber wie kann den aktuellen ist-Status der Dose (ON oder OFF) abfragen ?
    Hab die Topics stat, cmnd und tele versucht, ohne Erfolg ...

    Habe hier einiges gefunden, aber es nicht so zum laufen bekommen:
    https://tasmota.github.io/docs/MQTT/
    =>
    > Show all status information with: cmnd/tasmota/Status 0


    Vermutlich ganz einfach, aber :(

    Danke für Tipps!

    Einmal editiert, zuletzt von topsurfer (3. Dezember 2020 um 13:09)

  • HI.

    hier gibts Infos:

    MQTT - Eine Einführung

    Terminal öffnen und folgendes eingeben:

    mosquitto_sub -i <client> -h <host> -p <port> -u <user> -P <Passwort> -v -t '#'

    praktisches Beispiel:

    mosquitto_sub -i MosqSUB -h 127.0.0.1 -p 1883 -u sonoff -P joker -v -t '#'

    Diese Terminal läßt du dann offen, '#' bedeutet übrigens das ALLE Telegramme angezeigt werden.

    Wenn du nun ein weiters Terminalfenster öffnest kannst du den Status Deines Gerätes wie folgt abfragen:

    mosquitto_pub -i <client> -h <host> -p <port> -u <user> -P <Passwort> -t cmnd/sonoff/smart-switch-12/POWER -n

    praktisches Beispiel:

    mosquitto_pub -i MosqPUB -h 127.0.0.1 -p 1883 -u sonoff -P joker -t cmnd/sonoff/smart-switch-12/POWER -n

    Der Status wird dann im ersten Terminalfenster angezeigt auf dem mit mosquitto_sub die Telegramme abonniert wurden.

    benzino77 Tasmocompiler

    Gitpod Master Release

    Gitpod Development Release

    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / Sonoff S20 / PowStro Basic / MagicHome / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer / Gosund SP111 / ESP12E / WEMOS D1 Mini / ESP32Cam

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712/INA219/MHZ19B/DS3231

    Alexa Sprachsteuerung

    mosquitto/bash/html/cgi auf Wyse5070

  • Hi,

    das monitoren in einem Fenster um zu sehen, was "ab geht" kenne ich, auch das alle (#) oder nur ein bestimmtes Gerät mir ausgeben lassen kann (hier: -t "stat/sonoff/smart-switch-12/#).
    Aber was ich im Shell-Fenster sehe kann ich in dem Sinne ja nicht nutzen.
    Ich muss ja den Wert abfragen (ist die Lampe an oder aus).
    Im Script kann ich das melden des aktuellen Status zwar antriggern (danke für die Option -n !) und sehe im Fenster den Status.
    Aber wie bekomme ich den Status (Z.B. "ON") in eine Variable (OldState) geschrieben, die ich dann benutzen/zwischenspeichern kann?

    Das "Problem" ist ja, dass das # mosquitto_sub ...
    ja nicht einen Output macht und sich beendet, sondern endlos weiterläuft

    Ein einfaches:

    mosquitto_pub -d -u USER -P PASSWORD -t cmnd/sonoff/smart-switch-12/POWER -n
    OldState=`mosquitto_sub -u USER -P PASSWORD -h localhost -v -t "stat/sonoff/smart-switch-12/#" `
    mosquitto_pub -d -u USER -P PASSWORD -t cmnd/sonoff/smart-switch-12/POWER -n


    funktioniert ja nicht :(

    Da nee Idee?

  • Also, dein Gerät spuckt nur Daten aus, wenn es angetriggert wird bzw. im Rhythmus der eingestellten teleperiod. Herausfiltern kannst du deinen Wert mit dem Tool jq. Das sieht dann z. B. auf einer Linux-Konsole so aus:

    Code
    mosquitto_sub  -u USER -P PASSWORD -h localhost -v -t "stat/sonoff/smart-switch-12/STATUS | jq .Status.Power

    Das liefert dir dann den Wert 0 oder 1. Du musst aber vorher z. B. das Gerät ansprechen mit :

    Code
    mosquitto_pub  -u USER -P PASSWORD -h localhost -v -t "cmnd/sonoff/smart-switch-12/status -m '0' 

    Es geht auch über Status 11, aber dann musst du den Filter bei jq anders definieren:

    Code
    mosquitto_sub  -u USER -P PASSWORD -h localhost -v -t "tele/sonoff/smart-switch-12/STATE | jq .Power

    Die Antwort lautet dann ON oder OFF.

    Schau dir mal im Wiki die Beiträge zu MQTT an.

  • EDIT:  topsurfer

    hier gibts Infos:

    MQTT - Eine Einführung

    Schau dir mal im Wiki die Beiträge zu MQTT an.

    Wenn du da mal ganz nach unten gescrollt hättest, hättest du auch das Beispiel-Bashscript gesehen, WIE man dann mit mosquitto_sub die Daten auswerten kann.

    benzino77 Tasmocompiler

    Gitpod Master Release

    Gitpod Development Release

    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / Sonoff S20 / PowStro Basic / MagicHome / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer / Gosund SP111 / ESP12E / WEMOS D1 Mini / ESP32Cam

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712/INA219/MHZ19B/DS3231

    Alexa Sprachsteuerung

    mosquitto/bash/html/cgi auf Wyse5070

    Einmal editiert, zuletzt von HoerMirAuf (7. Dezember 2020 um 07:53)

  • JoergZ ... ääähmmm damit war ja auch topsurfer gemeint ....

    Ich schätz JoergZ, du weißt wie du das auswerten kannst ^^

    benzino77 Tasmocompiler

    Gitpod Master Release

    Gitpod Development Release

    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / Sonoff S20 / PowStro Basic / MagicHome / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer / Gosund SP111 / ESP12E / WEMOS D1 Mini / ESP32Cam

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712/INA219/MHZ19B/DS3231

    Alexa Sprachsteuerung

    mosquitto/bash/html/cgi auf Wyse5070