define storeLastOff notify .*:off { $data{lastOffTime} = time() }
define sunSetOn notify doorContact:on { \
if($data{lastOffTime}+20*60 < time() &&\
sunset_abs(1800) lt sprintf("%02d:%02d",$hour,$min)) {\
fhem "set light on";;\
}\
}
Ungetestet. Wenn es tut, bitte ins Wiki....
Hmmm. Bei mir geht es:
fhem> {sunset_abs()}
20:31:19
fhem> {sprintf("%02d:%02d", "20", "31")}
20:31
fhem> { sunset_abs() lt sprintf("%02d:%02d", "20", "31") }
fhem> { sunset_abs() lt sprintf("%02d:%02d", "20", "32") }
1
fhem>
Something different: Auf dem FritzBox 7270 kriege ich:
fhem> {sunset_abs()}
Illegal division by zero at ./FHEM/99_SUNRISE_EL.pm line 148.
Dem Perl @ FB7270 fehlt wohl nicht nur log, sondern auch auch sin und cos:
fhem@fb7270> { sin(1) }
1
fhem@PC> { sin(1) }
0.841470984807897
Ich glaube ich muss mein altes Perl fuer den FB7270 aktivieren. Der hatte auch
Device:SerialPort :/
ich habe ein ähliches Problem, hänge aber noch an einem Detail:
Ist Zustand:
Ich habe ein Watchdog, der mir, sobald ein Fenster mehr als 10min offen ist, eine mail schickt. Das funktioniert nach langem Probieren endlich... (siehe anderer Thread). Der springende Punkt waren die regexp, denn ich hatte immer ins fhttklog geschaut, aber im fhem.log sehen die Meldungen leicht anders formatiert aus... sobald ich sie daraufhin angepaßt hatte, ging auch der watschdog.
Das würde ich gerne noch um folgende zusätzliche Bedingung verfeinern:
- die Aussentemperatur (CUL_WS) ist < 18°
Ich habe versucht, analog zur lastoff-time eine variable zu befüllen mit dem Wert der CUL_WS-Temperatur, aber ich weiss nicht, wie ich im Perl-Teil des notify-Befehl auf die Temepratur zugreifen kann. Ist ja kein Perl-eigener Befehl wie z.B: "time()".
Kann mir hierzu einer einen kurzen Tipp geben?
Grüße,
Ferdinand
> --
> To unsubscribe from this group, send email to
> fhem-users+...@googlegroups.com
Im telnet info timer einschalten, und warten bis ein entsprechendes Event kommt.
Dann weiss man genau, wie man das regexp bauen muss. Z.Bsp. man sieht sowas wie:
2011-09-18 20:21:51.407 CUL_WS s300th temperature: 18.8
Dann speichert man den Wert:
define lastTemp notify s300th:temperature.* { $data{lastTemp} = %EVTPART1 }
Das geht aber einfacher auch ohne notify/Zwischenspeichern: statt
$data{lastTemp} greift man auf dem Readings zu mit
ReadingsVal("s300th", "temperature", "15.0")
Was so alles in den Readings gespeichert wird, sieht man mit "list s300th"
Siehe auch http://fhem.de/commandref.html#perl
Dem Perl @ FB7270 fehlt wohl nicht nur log, sondern auch auch sin und cos:
fhem@fb7270> { sin(1) }
1
fhem@PC> { sin(1) }
0.841470984807897
Hat jemand schon eine Lösung?
Oder kann man die trigonometrischen Funktionen für diesen Fall nicht umschreiben, um sie mit der Taylorformel anzunähern?
cos(x) = (x*x/12-1)*x*x/2+1
Das gibt für Abs-Werte kleiner Pi/4 sehr gute Näherungen (siehe Wikipedia).
Den tan könnte man gleich behandeln, nur mit acos und atan weiss ich nicht so recht...
Ansonsten find ich die Lösung, fhem einfach von aussen auf die Box zu "stecken" nämlich sehr elegant, aber ohne sunrise/set-Funktion...
Danke für Eure Hilfe!