NEWS
[gelöst] Gosund-Taster erkennen zur Fernbedienung
-
Hallo zusammen,
gibt es eine Möglichkeit, an einem Gosund-SP111-Zwischenstecker (hier "ST8") mit Tasmota, der über den MQTT-Adapter eingebunden ist, zu erkennen, ob der kleine Taster an der Steckdose gedrückt wurde - im Gegensatz zu einer Aktivierung aus Blockly/Visualisierung heraus?
Ich möchte damit eine Zeitschaltung erreichen, die ich an der Schaltsteckdose durch den Taster aktivieren kann.
Also: Taster gedrückt -> Steckdose geht an und ein Blockly-Script schaltet die Steckdose nach einer Zeit wieder aus.
Es geht mir hier nur darum, zu erkennen, woher das Einschalten der Steckdose kommt, damit dies nicht mit einem eventuellen Schalten durch Blockly oder Visualisierung kollidiert. Der Wert "Ursprung" zieht hier leider nicht wie gedacht.Vielen Dank für Hinweise!
-
@iobroker2001 ich prüfe das bei mir umgekehrt. Bei Ursprung kannst du ja erkennen ob es von der VIS oder der JavaScript-Instanz kommt.
Zudem erhälts du dann ja eine Meldung per MQTT unter /stat/
Wie ist der Stecker denn in ioBroker eingebunden, per MQTT oder per Sonoff-Adapter? Je nachdem könntest du dort zwischen unbestätigter und bestätigter Meldung unterscheiden. Die Screenshots könnten aus dem Sonoff-Adapter sein? -
@bananajoe Danke für die Überlegung!
Hat leider noch nichts gebracht, da im MQTT-Adapter (im Gegensatz zum Sonoff-Adapter) die Tasmota-JSON-Daten ja separat aufgeführt werden - eben so, wie sie von Tasmota geliefert werden:Für das Ein-/Ausschalten dient
/SmartHome/Steckdose/ST8/cmnd/POWER
Für die Rückmeldung ist
/SmartHome/Steckdose/ST8/stat/POWER
zuständig.
Wenn man ../cmnd/POWER per Adminoberfläche ändert, kommt als Ursprung
system.adapter.admin.0
heraus.
Bei manuellem Tastendrücken wird ../cmnd/POWER gar nicht verändert, also keine Triggerung, kein Ursprung.Ähnlich sieht aus bei ../stat/POWER:
Hier sieht Ursprung bei manueller Bedienung so aus:system.adapter.mqtt.0
Wenn man ../cmnd/POWER per Adminoberfläche ändert, ist der Ursprung identisch, auch system.adapter.mqtt.0!
-
@iobroker2001 wenn über
/SmartHome/Steckdose/ST8/stat/POWER
die Meldung kommt und du als Ursprung den
system.adapter.mqtt.0
hast ist doch toll.Fall 1: Meldung / Änderung kommt vom Gerät!
Für die anderen Fälle nutze ich ein Skript welches mir aus den beiden Zweigen
/SmartHome/Steckdose/ST8/cmnd/POWER /SmartHome/Steckdose/ST8/stat/POWER
einen dritten Datenpunkt baut der auf True/False (Wahr/Falsch) reagiert. Den Datenpunkt nutze ich für die VIS. Der Datenpunkt zeigt also den aktuellen Status, dient gleichzeitig aber auch als Schaltpunkt. Ich weise darauf hin dass das wohl auch per Alias ginge (ich kann das aber nicht bzw. hatte keine Lust dazu)
Damit ich weis ob ich den Datenpunkt per Skript gesetzt habe oder ob das von der VIS kommt, unterscheide ich wieder den Ursprung (
web.0
oderjavascript.0
). Alternativ kann man im Skript selbst den Status "bestätigt" setzten. Ist der Unbestätigt war es eben nicht das Script)Fall 2: die VIS kann ich so unterscheiden von Fall 3: Per Skript.
In der Praxis kann man auch am Skript vorbei arbeiten indem man den
/SmartHome/Steckdose/ST8/cmnd/POWER
setzt,
die Rückmeldung würde das Skript wieder verarbeiten, weis dann aber ja nicht ob es am Gerät war oder von woanders - Falls das wichtig ist. -
@bananajoe Das kann ich mir gut so vorstellen, ich komme erst am Wochenende dazu, zunächst vielen Dank!
-
Bei meiner Zwischensteckdose taugen die "Ursprung"-Daten leider nicht zur Unterscheidung. In stat steht immer mqtt.
Zeitlich ist der Ablauf:
Bei Steuerung durch Javascript oder Adminoberfläche ("Objekte"), also "nicht manuell":
In /cmnd/POWER wird der neue Wert eingetragen (0 oder 1), ein paar Millisekunden später in /stat/POWER als on/offBei manueller Steuerung durch Taster am Gerät:
KEIN Eintrag in /cmnd/POWER (!!), nur Eintrag in /stat/POWER als on/offDeshalb triggere ich auf /cmnd/POWER und merke mir für 1 s, dass eine JS-/Adminsteuerung vorliegen muss.
Wenn /cmnd/POWER nicht getriggert wurde, handelt es sich um eine manuelle Bedienung.Das hier funktioniert:
-
@iobroker2001 man kann die Schalter bei Tasmota auch vom Relais entkoppeln. Dann würdest du Switch-Meldungen per MQTT bekommen, müsstest dann aber über ioBroker schalten.
-
@iobroker2001
Steckdose nach Zeit x wieder aus kannst du alternativ auch via Pulsetime in Tasmota direkt hinterlegen, habe ich bei einer meiner Anforderungen so gelöst. Siehe auch https://nerdiy.de/de_de/tasmota-nachlaufen-eines-relais-einstellen/AxLED
-
@bananajoe sagte in Gosund-Taster erkennen zur Fernbedienung:
@iobroker2001 man kann die Schalter bei Tasmota auch vom Relais entkoppeln. Dann würdest du Switch-Meldungen per MQTT bekommen, müsstest dann aber über ioBroker schalten.
Auch eine gute Idee! Dankeschön!
-
@axled sagte in Gosund-Taster erkennen zur Fernbedienung:
@iobroker2001
Steckdose nach Zeit x wieder aus kannst du alternativ auch via Pulsetime in Tasmota direkt hinterlegen, habe ich bei einer meiner Anforderungen so gelöst. Siehe auch https://nerdiy.de/de_de/tasmota-nachlaufen-eines-relais-einstellen/AxLED
Danke, sehr interessant.
Bei mir ist es - wie immer etwas komplizierter: hier darf das Relais nach dem Einschalten nicht die ganze Zeit lang komplett an sein, sondern muss noch unterschiedliche Intervalle zum Abkühlen eines Magnetventils durchmachen.
Also ein eigener Blockly-Teil...
Danke für Deinen Link!