FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: sash.sc am 13 Juli 2016, 23:08:11

Titel: Zeiten subtrahieren für dynamische Zeitberechnung !
Beitrag von: sash.sc am 13 Juli 2016, 23:08:11
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



Titel: Antw:Zeiten subtrahieren für dynamische Zeitberechnung !
Beitrag von: Per am 14 Juli 2016, 11:13:06
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)
Titel: Antw:Zeiten subtrahieren für dynamische Zeitberechnung !
Beitrag von: sash.sc am 14 Juli 2016, 12:11:33
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
Titel: Antw:Zeiten subtrahieren für dynamische Zeitberechnung !
Beitrag von: Damian am 14 Juli 2016, 13:33:39
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



Titel: Antw:Zeiten subtrahieren für dynamische Zeitberechnung !
Beitrag 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 ! :-(
Titel: Antw:Zeiten subtrahieren für dynamische Zeitberechnung !
Beitrag von: Damian am 14 Juli 2016, 22:07:49
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
Titel: Antw:Zeiten subtrahieren für dynamische Zeitberechnung !
Beitrag von: sash.sc am 15 Juli 2016, 14:59:43
Wie kann man denn sonst die Zeiten berechnen?

Von mobil gesendet daher kurze Antwort

Titel: Antw:Zeiten subtrahieren für dynamische Zeitberechnung !
Beitrag von: Damian am 15 Juli 2016, 23:23:16
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