***gelöst*** Zeiten addieren aber ohne Sekunden

Begonnen von Skusi, 07 Juni 2020, 10:47:13

Vorheriges Thema - Nächstes Thema

Skusi

Ich habs nun endlich hingepuzzelt bekommen.
Dank an alle, von jedem hat etwas geholfen.

Die eine Stunde Versatz habe ich einfach bei der Sekunden zusammenrechnung wieder abgezogen. So passt das Ergebnis jetzt.

Falls es jemanden Interessiert, ist das End Produkt  DOIF nun so geworden:

defmod Edward_Maehverzoegerung DOIF ([([Maeplan_Edward:Startzeit_heute]-[00:10])|] and [Rasen_noch_feucht:Trockenzeit] > 0) \
\
(setreading Maeplan_Edward Startzeit_heute_verzoegert {(strftime("%H:%M",localtime(\
((split(":",ReadingsVal("Maeplan_Edward","Startzeit_heute","0")))[0] * 3600) + (split("":"",ReadingsVal("Maeplan_Edward","Startzeit_heute","0")))[0] * 60) + \
ReadingsVal("Rasen_noch_feucht","Trockenzeit",0)))},\
\
set Edward changeCfgCalendar [Wochentag],[Maeplan_Edward:Startzeit_heute_verzoegert],120,0)
attr Edward_Maehverzoegerung disable 0
attr Edward_Maehverzoegerung do always
attr Edward_Maehverzoegerung group Rasen
attr Edward_Maehverzoegerung room 7.1_Garten


Damit wird 10 Minuten vor Ausfahrt des Mähers die Startzeit verschoben falls der Rasen vom letzten Regenguss noch nass sein könnte.

Die Trockenzeit wird in einem anderen DOIF anhand eines Regensensors und dem letzten Impuls ermittelt.

defmod Rasen_noch_feucht DOIF ([Niederschlag:rain_now_diff] > 0) \
\
(setreading $SELF Trockenzeit 7200)\
\
DOELSEIF ([Niederschlag:rain_now_diff] == 0 and [?$SELF:Trockenzeit] > 0) \
(setreading $SELF Trockenzeit {([$SELF:Trockenzeit] -900)})
attr Rasen_noch_feucht do always
attr Rasen_noch_feucht group Rasen
attr Rasen_noch_feucht room 7.1_Garten
attr Rasen_noch_feucht stateFormat Maehverzoegerung
attr Rasen_noch_feucht userReadings Maehverzoegerung:Trockenzeit.* { strftime('%H:%M', gmtime(ReadingsNum($NAME, "Trockenzeit", 0))) }
attr Rasen_noch_feucht wait 0:900


Derzeit Zählt dieses DOIF alle 15 Minuten die Trockenzeit in sekunden runter, wenn kwin weiterer Regen fällt.

Vielen Dank besonders an Otto, die Split Geschichte war ein guter Tipp. Den Befehl kannte ich noch nicht.

HP ThinClient 630, SIGNALduino, NanoCul868 (a-culfw), JeeLink Clone (LaCrosse), Firmata  für FB Heizung,Wasser+Gas+Klingel+Lux, Somfy Rolladen, Pollin Steckd.,TX29DTH,Tasmota+IR Lesekopf an Stromz., MAX Fensterkontakte, IButton, Fingerprint, SonOff Tasmota, ESP LED Controler, WLed,zigbee2mqtt...

fiedel

Zitat von: Skusi am 13 Juni 2020, 09:57:17
Erstmal sehr vielen Dank für die reichhaltigen Lösungsansätze an Alle Beteiligten.
Da fällt die Wahl schon fast schwer. ;)

Ich doktor gerade mit der Split Lösung herum.

Stolpere aber gerade etwas:
Warum ergibt {(strftime("%H:%M",localtime(0)))}
01:00 ?
Das Ergebnis aus sekunden ist immer + 01:00
Warum ?

Das Problem hatte ich vor Kurzem auch bei einer Umrechnung von Sekunden in das Zeitformat für "at"- Befehle:
Die Lösung kam von @Otto123: nimm "gmtime" statt "localtime".  :)

Gruß Frank
FeatureLevel: 6.1 auf Wyse N03D ; Deb. 11 ; Perl: v5.14.2 ; IO: HM-MOD-RPI-PCB + VCCU|CUL 868 V 1.66|LinkUSBi |TEK603
HM: SEC-SCO|SCI-3-FM|LC-SW4-PCB|ES-PMSW1-PL|RC-4-2|SEN-MDIR-O|SEC-WDS-2
CUL: HMS100TF|FS20 S4A-2 ; OWDevice: DS18S20|DS2401|DS2406|DS2423

Otto123

Zitat von: fiedel am 14 Juni 2020, 09:36:38
Die Lösung kam von @Otto123: nimm "gmtime" statt "localtime".  :)
Peinlich das man solche Dinge wieder nach einer Weile wieder vergisst - ich hoffe es liegt noch nicht am Alter😵
Mal schauen, dass ich davon noch was ins Wiki packe ;)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

fiedel

Das ist völlig normal. Ich staune beim lesen alter Posts auch manchmal, was ich alles schon mal gewusst hatte...  :o
FeatureLevel: 6.1 auf Wyse N03D ; Deb. 11 ; Perl: v5.14.2 ; IO: HM-MOD-RPI-PCB + VCCU|CUL 868 V 1.66|LinkUSBi |TEK603
HM: SEC-SCO|SCI-3-FM|LC-SW4-PCB|ES-PMSW1-PL|RC-4-2|SEN-MDIR-O|SEC-WDS-2
CUL: HMS100TF|FS20 S4A-2 ; OWDevice: DS18S20|DS2401|DS2406|DS2423