Hallo
Ich möchte via push-widget meine Lampe dimme . Und zwar soll bei jedem push der dimwert um 10 erhöht werden, egal wie der aktuelle dimwert ist..
Wie lautet da der Befehl? Set Lampe dim +10 geht leider nicht..
Danke für die Hilfe
Lg c
Mit dem Spinner Widget?
https://wiki.fhem.de/wiki/FTUI_Widget_Spinner
Kommt ja drauf an wie der Befehl in FHEM aussieht und was der Dimmer kann.
Bei HM Dimmern geht z.B.:
set Lampe up 10%
oder ganz allgemein als push auf einen dummy, der dann innerhalb von notify via Perl den aktuellen Stand des gewünschten Dimmers abfrägt, um 10% erhöht und den neuen Stand via set schreibt.
Kostet zwei zusätzliche defines und ein kleines Perl-Script in der 99_myUtils.pm. Sollte aber immer funktionieren, egal was für einen Dimmer man dahinter hat.
Wenn der Dimmer den Wert liefert könnte man auch ein Userreading anlegen was immer den Wert+10 enthält und dann mit dem Push Widget auf den Wert des Userreadings setzen.
Nette Idee um einen Dummy+ Notify zu sparen. :)
Zitat von: sinus61 am 22 Februar 2017, 16:54:08
Wenn der Dimmer den Wert liefert könnte man auch ein Userreading anlegen was immer den Wert+10 enthält und dann mit dem Push Widget auf den Wert des Userreadings setzen.
Super Idee! Danke.
Wie war das noch gleich mit dem Wald und den Bäumen?
guten Abend, herzlichen Dank... Sehr gut!
Userreadings heisst das Zauberwort..;) Wenn man sich jedoch als Laie den Wiki-Eintrag und die Beispiele im Forum anschaut, braucht man ganz offensichtlich etwas Perl-Kenntnisse, was mir völlig ab geht...leider ..
Ich möchte ja das Userreading wie folgt gestalten:
Userreading DIM_PLUS_10= DIM_WERT + 10
Ist das eine komplizierte Geschichte?
danke für die Hilfe
Mal so ins Blaue geschossen, falls dein Reading wirklich "dim" heißt. Sonst eben durch "pct" oder was auch immer ersetzen.
attr myDeviceName userReadings dimUpVal:dim.* {ReadingsVal($name,"dim",0)+10}, dimDownVal:dim.* {ReadingsVal($name,"dim",0)-10}
dimUpVal wird nur aktualisiert, wenn ein Event des Readings hinter dem Doppelpunkt auftritt. Im Perl-Code wird dann eben mit ReadingsVal der aktuelle Wert geholt und 10 dazu addiert.
Die Variable "$name" verweist auf das aktuelle Device. Du könntest hier auch wieder "myDeviceName" schreiben, aber dann müsstest du das UserReading anpassen, falls du das Device mal umbenennst.
Sollte man die 100% und 0% nicht abfangen? Sonst werden beim "push" 110% oder -10% gesetzt.
Stimmt,
aber würde erstmal testen ob es auch so geht (-10 setzt dennoch 0, 110 setzt dennoch 100).
Der Check ist evtl. auch schon im jeweiligen Modul vorhanden das die Hardware ansteuert, womit man sich eine weitere vorgelagerte Überprüfung sparen könnte.