Zeiten subtrahieren für dynamische Zeitberechnung !

Begonnen von sash.sc, 13 Juli 2016, 23:08:11

Vorheriges Thema - Nächstes Thema

sash.sc

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



Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

Per

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)

sash.sc

#2
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
Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

Damian

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



Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

sash.sc

#4
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 ! :-(
Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

Damian

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
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

sash.sc

Wie kann man denn sonst die Zeiten berechnen?

Von mobil gesendet daher kurze Antwort

Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

Damian

#7
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

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF