FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Thomas41587 am 03 April 2018, 11:07:59

Titel: Temporärer Status bis Rückmeldung kommt
Beitrag von: Thomas41587 am 03 April 2018, 11:07:59
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?
Titel: Antw:Temporärer Status bis Rückmeldung kommt
Beitrag von: frank am 03 April 2018, 11:25:00
ist wohl stark abhängig von hardware und fhem modul, denke ich. bei homematic gibt es jeweils einen zwischenstatus "set_xxx".
Titel: Antw:Temporärer Status bis Rückmeldung kommt
Beitrag von: Thomas41587 am 03 April 2018, 12:05:04
Also gibt es keine generelle Lösung die mit readingsProxy funktioniert?
Wo müsste man denn ansetzen, um den Zwischenstatus einzubauen?
Titel: Antw:Temporärer Status bis Rückmeldung kommt
Beitrag 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.
Titel: Antw:Temporärer Status bis Rückmeldung kommt
Beitrag von: Thomas41587 am 03 April 2018, 14:56:05
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 :
Titel: Antw:Temporärer Status bis Rückmeldung kommt
Beitrag von: justme1968 am 03 April 2018, 20:08:38
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.
Titel: Antw:Temporärer Status bis Rückmeldung kommt
Beitrag von: Thomas41587 am 04 April 2018, 08:47:12
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...
Titel: Antw:Temporärer Status bis Rückmeldung kommt
Beitrag von: justme1968 am 05 April 2018, 10:38:50
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.