Temporärer Status bis Rückmeldung kommt

Begonnen von Thomas41587, 03 April 2018, 11:07:59

Vorheriges Thema - Nächstes Thema

Thomas41587

Hallo zusammen,

bei einigen Schaltbefehlen (in FHEM über readingsProxy integriert) dauert es teilweise eine Weile, bis eine Rückmeldung kommt. Somit sieht man als Nutzer erst mal nicht, ob man die Schaltfläche in FHEM gedrückt hat (und es einfach dauert bis die Rückmeldung kommt) oder ob man daneben getippt hat. Daher suche ich nach einer Möglichkeit, einen "Zwischenstatus" anzuzeigen.
Beispiel:
Gerät ist aus (Symbol zeigt ausgeschaltete Lampe)
Benutzer drückt auf Symbol, Rückmeldung kommt nicht direkt -> Status wechselt auf "warte" o.ä. und man sieht eine Sanduhr o.ä. als Symbol
Rückmeldung kommt (Symbol zeigt eingeschaltete Lampe)

Wie kann man das realisieren? Oder gibt es dafür schon vorgefertgte Funktionen?

frank

ist wohl stark abhängig von hardware und fhem modul, denke ich. bei homematic gibt es jeweils einen zwischenstatus "set_xxx".
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Thomas41587

Also gibt es keine generelle Lösung die mit readingsProxy funktioniert?
Wo müsste man denn ansetzen, um den Zwischenstatus einzubauen?

justme1968

du kannst die perl variante der setFn verwenden. dort rufst du direkt ein fhem("set ...") auf das orginal device auf, setzt den status des readingsProxy und gibst undef zurück.

das sollte mache was du willst.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Thomas41587

Zitat von: justme1968 am 03 April 2018, 13:45:52
du kannst die perl variante der setFn verwenden. dort rufst du direkt ein fhem("set ...") auf das orginal device auf, setzt den status des readingsProxy und gibst undef zurück.

das sollte mache was du willst.
Das klingt nach einer guten und einfachen Lösung. Vielen Dank für den Tipp! Den Anfang dafür hatte ich sowieso schon. Mein bisheriges setFn ist wie folgt:
{fhem("set kg_logo_master_ni3_wz_deckenlicht trigger")}
Wenn ich es jetzt allerdings versuche zu erweitern, bringt es entweder nichts:
{fhem("set kg_logo_master_ni3_wz_deckenlicht trigger") && set kg_logo_master_q1_wz_deckenlicht undef}
-> State bleibt auf on/off, bis die Rückmeldung kommt

Oder es gibt einen Fehler:
{fhem("set kg_logo_master_ni3_wz_deckenlicht trigger") && set kg_logo_master_q1_wz_deckenlicht undefined}
-> Bareword "undefined" not allowed while "strict subs" in use at (eval 618887) line 1.

Hier auch mal die gesamte Definition:
defmod Licht_Wohnzimmer readingsProxy kg_logo_master_q1_wz_deckenlicht
attr Licht_Wohnzimmer alias Wohnzimmer Licht
attr Licht_Wohnzimmer devStateIcon on:FS20.on:off off:FS20.off:on
attr Licht_Wohnzimmer event-on-change-reading lastCmd,state
attr Licht_Wohnzimmer group Beleuchtung
attr Licht_Wohnzimmer room 10 Wohnzimmer,99 Wohnzimmer Backend
attr Licht_Wohnzimmer setFn {fhem("set kg_logo_master_ni3_wz_deckenlicht trigger") && set kg_logo_master_q1_wz_deckenlicht undef}
attr Licht_Wohnzimmer setList on off
attr Licht_Wohnzimmer webCmd :

justme1968

etwa so:{fhem("set $DEVICE $CMD; set $name set_$CMD"); return undef}

ob $DEVICE, $name und $CMD bei dir passen musst du schauen. zur not kannst du natürlich auch wieder direkt die namen verwenden.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Thomas41587

Danke für deine Hilfe! Leider klappt es damit nicht so ganz bei mir.
Ich möchte das device kg_logo_master_q1_wz_deckenlicht ein-/ausschalten. Dies geschieht wenn ich kg_logo_master_ni3_wz_deckenlicht triggere.
Versuche ich jetzt deinen Befehl zu adaptieren:
{fhem("set kg_logo_master_ni3_wz_deckenlicht trigger"); return undef}
ändert sich an dem Verhalten nichts. Das Gerät wird zwar weiterhin geschalten, aber "state" ist nie "undef"

Diesen Teil:
set $name set_$CMD
Verstehe ich leider gar nicht, eventuell ist das aber der Schlüssel zum Erfolg. Es scheint die Varaiable $name bei mir nicht zu geben. Wenn ich hier "set kg_logo_master_ni3_wz_deckenlicht set_trigger" einsetze, passiert allerdings nichts...

justme1968

lass erst mal die variablen weg und trag die jeweiligen namen und kommandos direkt ein. geht es dann?

wenn nicht schau mit verbose 5 ins log.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968