Dimmer Schalten mit Statusanzeigen in Floorplan

Begonnen von tux75at, 08 September 2019, 09:25:41

Vorheriges Thema - Nächstes Thema

tux75at

Ich versuche einen Dimmer zu Schalten und im Floorplan den Status anzuzeigen, sowie auch schalten zu können.

Da ich im Floorplan nur ein on/off benötige, der Dimmer aber den Status mit dim anzeigt, habe ich versucht mit Notify und DOIF zu arbeiten.


define light_dummy dummy
attr light_dummy devStateIcon off:switch_off:on on:switch_on:off

Das sollte im Floorplan einen Button erzeugen der den Befehl off und on abhängig vom Zustand generiert.
Obiger Code funktioniert soweit, mit dim wüsste ich jetzt nicht wie ich das implementieren sollte und es gibt eben auch on und off (dim 0 = off; dim xx = on | xx > 0). Was wann als Kommando kommt ist dem Dimmer egal.


define light_notify light_dummy set light_dimmer $EVENT

Damit versuche ich den Dimme vom Floorplan zu schalten. Klappt auch sehr gut

Jedoch benötige ich auch das Feedback von den Dimmern, wenn per Taster geschalten wird.
Notify Variante:

devine light_notify_2 notify light_dimmer IF([light_dimer:reportedState] = off)(set light_dummy off) ELSE (set light_dummy on)

Das Notify habe ich deaktiviert, ist schon länger her und weiß nicht mehr welches Problem es gab, vermutlich wird ein "off" oder "dim 0" benötigt

DOIF Variante:

define light_di DOIF ([light_dimmer:reportedState:d] > 0)(set light_dummy on) DOELSE (set light_dummy off)


waum ich reportedState:d stehen habe weiss ich nicht, reportedState:dim sollte auch funktionieren.

Die DOIF Variante funktionert auch, leider gibt es aber auch Fälle in denen das Licht beim Schalten per Taster im Sekundentakt ein und aus geht. Vermutlich, weil der Dimmer die Meldung "reportedState" etwas zu spät absetzt. Derzeit habe ich nur sehr wenige Knoten im Einsatz. In wenigen Wochen werden es sehr viele sein. Wenn dadurch die Verzögerung größer wird, dann habe ich vermutlich ein Problem. Das Licht soll, wenn auch nur kurz eingeschalten, den Zustand richtig am Floorplan anzeigen.

Hat hier jemand eine Lösung zu dem Problem? Vielleicht habe ich etwas völlig falsch verstanden und bekomme es desswegen nicht hin.

tux75at

Schön langsam verstehe ich mehr ....
Leider habe ich es noch nicht ganz verstanden, sondern vermute nur, dass es so passen sollte.

Ich habe mir Aufgrund des anderen Formates für den Zustand einen Dummy gebastelt, den ich aber garnicht brauche.
Mit den Befehlen stateFormat und devStateIcon kann man sich so ziemlich alles konfigurieren was man braucht.

Also für meinen light dimmer benötige ich keinen dummy, ich habe jetzt folgendes gemacht...


attr Light_Dimmer devStateIcon off:switch_off:on d.*:switch_on:off
attr Light_Dimmer fp_FLOORPLAN 310,1410,0,


Light_Dimmer ist selbst ein Z-Wave Dimmer mit dem Reading "state" sowie "reportedstate", standardmäßig wird "state" für das devStateIcon verwendet.
Mit stateFormat könnte man das umbiegen (e.g. Multisensor Zustand aus einem anderen Reading auslesen, .... vermute ich mal, habe ich noch nicht probieret)

Ich verwende "state" von meinem Dimmer, hier wird "off" und "dim x" als Zustand ausgegeben, Befehl "set Light_Dimmer on" bzw "set Light_Dimmer off" wird unterstützt und vom obigen Code auch verwendet.
Wenn ich die obige Codezeile zerlege:

attr Light_Dimmer devStateIcon off:switch_off:on d.*:switch_on:off


attr Light_Dimmer devStateIcon --> Dem Light_Dimmer wird ein devStateIcon zugewiesen, die Zustände folgen mit Leerzeichen getrennt.
off:switch_off:on  --> Erster Zustand, state=off, es wird das svg mit dem Namen switch_off angezeigt (wird an anderer Stelle definiert), Das Icon erhällt hier den Befehl "on", bei klick --> "set Light_Dimmer on"
d.*:switch_on:off   --> Zweiter Zustand, state="dim x", "d.*" habe ich aus einem Sample Code, hier wird der Dezimalwert rausgeholt und nur bei vorhandenem Dezimalwert passt der Zustand? oder ist es nur Zufall dass es bei mir funktioniert? es wird das svg mit dem Namen switch_on angezeigt (wird an anderer Stelle definiert), Das Icon erhält hier den Befehl "off", bei klick --> "set Light_Dimmer off"

Ohne jeglichen Umweg (kein Dummy, kein DOIF, kein Notify) erhalte ich meine gewünschte Funktion, leider verstehe ich den Teil mit d.* nicht, da ich es in einem Beispiel gefunden habe. Dass es funktioniert heißt leider nicht dass es richtig ist und ich verstehe das lieber, dass ich es in Zukunft richtig mache.

Gruß
   Tux