Hallo zusammen,
auch nach langem Testen schaffe ich es nicht ein "at" mit einem variablen Offset zu versehen, der aus einem Dummy gelesen wird:
define 00_Jalousien_Automatik dummy
attr 00_Jalousien_Automatik alias 00 Jalousieautomatik
attr 00_Jalousien_Automatik eventMap on:on off:off
attr 00_Jalousien_Automatik room Jalousien
define 01_Jalousien_Offset_runter dummy
attr 01_Jalousien_Offset_runter alias 01 Jalousien herunterfahren x Minuten nach Sonnenuntergang
attr 01_Jalousien_Offset_runter setList state:slider,15,5,120
attr 01_Jalousien_Offset_runter webCmd state
attr 01_Jalousien_Offset_runter room Jalousien
define Jalousien_at at *{sunset_abs("REAL",Value("01_Jalousien_Offset_runter")*60,"17:00","23:00")} {\
if (Value("00_Jalousien_Automatik") eq "on") {fhem("set Jalousie_Buero_gr_Fenster on");;}\
}
attr Jalousien_at room Jalousien
define Jalousien_Verzoegerung notify 01_Jalousien_Offset_runter {\
my $zeitpunkt_runter = sunset_abs("REAL",Value("01_Jalousien_Offset_runter")*60,"17:00","23:00");;\
fhem("modify Jalousien_at *".$zeitpunkt_runter);;\
}
attr Jalousien_Verzoegerung room Jalousien
Im Logfile heißt es "Argument "???" isn't numeric in multiplication (*) at (eval 1599) line 1, <$fh> line 709." und die Fehlermeldung kommt von der Verwendung des Value() in der at-Definition. Mit festem Zahlenwert funktioniert es ebenso wie auch im notify. Wie bringe ich das zum Laufen?
Danke
1. Du solltest nicht mit sunset_abs arbeiten, sondern mit sunset.
2. Du solltest mit ReadingsVal() anstatt mit Value(), denn bei ReadingsVal kannst Du den default-Wert 0 zuweisen.
3. Du solltest Deinem Dummy einen numerischen Wert zuweisen, BEVOR Du versuchst, das at zu definieren.
1. Was ist daran besser und nicht nur anders?
2. Das umschifft natürlich das Problem, da nach dem Neustart der Konfiguration als Offset 0 addiert wird und erst bei nachfolgenden at Abarbeitungen dann der korrekte Offset benutzt wird. Der Wert für den Offset in dem Dummy sollte doch aber eigentlich beim wiederholten Start der Konfiguration existieren, da er doch im statefile fhem.save gespeichert wird. Zumindest sehe ich auf der Oberfläche nach jedem Neustart den zuletzt eingestellten Wert des Offsets. Ab welchem Zeitpunkt sind denn die Werte aus dem statefile verfügbar?
3. Ich kann hier natürlich bei jedem Neustart einen festen Wert zuweisen, aber das ist dann nicht derjenige, den ich zuletzt in der Oberfläche gesetzt habe. Da ich häufig an meiner Konfiguration arbeite, müsste ich nach jedem Neustart den aktuell gewünschten Wert erneut setzen oder den aktuellen Wunschwert immer im Code nachführen. Das ist nicht ganz das Gewünschte.