Hallo zusammen.
Ich brauche mal eure Unterstützung.
Ich habe im Moment eine Lichtsteuerung am laufen, die über einen Lichtsensor gesteuert wird. Wird ein bestimmter Wert vom Sensor unterschritten, werden die Rollos runtergefahren und die Lichtsteuerung im Garten geschaltet. Verzögert wird alles über das WAIT Attribut.
DOIF ([lichtsens:Indikator:d] < 47 and [16:00-22:00]) (set test {(localtime)}) (set test_1 [test:state:"(\d\d):(\d\d):(\d\d)":"$1:$2:$3"]) (set EG_wz_EckeLicht on, set Jallo3 20) (set LS scene 01) (set LS scene 02) (set LS scene 01) (set LS scene 02) (set LS scene Off)
wait 360,0,0,0,3000,3600,3600,3600
Es wird auch nocht die Zeit in der der Ichtgernzwert unterschritten wird in einen Dummy geschrieben.
Da sich ja bekanntlicher Welch die Sonnenuntergangszeiten ändern, bzw. wo es dunkel wird, verschiebt sich die ganze Lichsteuerung nach vorne bzw. nach hinten.
Ich möchte die Steuerung immer bis 1 Uhr morgens laufen lassen. Aufgrund der täglichen Zeitverschiebung des Sonnenunterganges, möchte ich die Zeiten im WAIT dynamisch anpassen.
Die Berechnung sollte so laufen:
01:00 - test_1 = 4 Stunden (z.B. für den Sommer). Für den Winter kommt natürlich eine Zeit von 6 oder 8 Stunden raus.
Diese Differenz sollt jetzt durch die Anzahl der Lichtwechsel geteilt werden. Es kommt dann ein Wert x raus. Dieser Wert soll dann als Wert für das WAIT Attribut eingesetzt werden.
Habe schon versucht Zeiten in perl direkt zu berechnen. Hat aber leider nicht funktioniert.
jetzt brauche ich eure Hilfe !!
Vielen Dank
Gruß
Sascha
Da du einen Tageswechsel dabei hast, wirst du das Datum mit einrechnen müssen.
Mathematisch kannst du aber auch anders rangehen: 17:00 + (8:00 - test_1)
Danke für den Hinweis. Das habe ich mir schon fast gedacht.
Es geht eigentlich um das zusammen setzten der Formel, und zwar so, dass es keine Fehlermeldung gibt
Habe es versucht in einen Dummy zu schreiben, zu Testzwecken.
{([17:00] + ([08:00]-[test_1:state]))}
Jemand noch eine Idee.
Danke
Gruß
Sascha
Wenn du immer um 1:00 Uhr die Lampen ausschalten willst, dann würde ich das einfach per Timer machen, ohne irgendwelche Zeitberechnungen.
DOIF ([lichtsens:Indikator:d] < 47 and [16:00-22:00]) (set lampe on) DOIF ([01:00]) (set lamp off)
Gruß
Damian
Hallo Damian.
Prinzipiell hört sich das nicht schlecht an. Aber in der Zeit soll "taktweise" zwischen 2 Lichtszene hin und her geschaltet werden.
Deswegen die "dynamische" Zeitberechnung, wie oben beschrieben.
Gruß
Sascha
Hier mal mein DOIF
([Revolt_49e7:power] > 10) (set test_3 ([([08:00:00] - [test_1:state])]))
Klappt aber mit der Berechnung nicht ! :-(
Zitat von: sash.sc am 14 Juli 2016, 14:02:33
Hallo Damian.
Prinzipiell hört sich das nicht schlecht an. Aber in der Zeit soll "taktweise" zwischen 2 Lichtszene hin und her geschaltet werden.
Deswegen die "dynamische" Zeitberechnung, wie oben beschrieben.
Gruß
Sascha
Hier mal mein DOIF
([Revolt_49e7:power] > 10) (set test_3 ([([08:00:00] - [test_1:state])]))
Klappt aber mit der Berechnung nicht ! :-(
Rechnen mit Zeiten funktioniert nur in der Bedingung.
Gruß
Damian
Wie kann man denn sonst die Zeiten berechnen?
Von mobil gesendet daher kurze Antwort
Zitat von: sash.sc am 15 Juli 2016, 14:59:43
Wie kann man denn sonst die Zeiten berechnen?
Von mobil gesendet daher kurze Antwort
Indem man es in Perl programmiert. Ich setze es mal für den Ausführungsteil auf die Todo-Liste.
Gruß
Damian