at bei Sonnenuntergang mit variablem Offset

Begonnen von fh, 05 April 2014, 14:56:33

Vorheriges Thema - Nächstes Thema

fh

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

FHEM 5.5 auf RaspberryPi B
1 x Arduino mit Onewire Firmata, FRM, FRM_IN, OWX, OWTHERM, 6 x DS1822
243 x EIB, 1 x CUL mit CUL_EM und EMGZ, EMWZ, 3 x FS20, 2 x HMS, 2 x IT

betateilchen

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.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

fh

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.
FHEM 5.5 auf RaspberryPi B
1 x Arduino mit Onewire Firmata, FRM, FRM_IN, OWX, OWTHERM, 6 x DS1822
243 x EIB, 1 x CUL mit CUL_EM und EMGZ, EMWZ, 3 x FS20, 2 x HMS, 2 x IT