Doif: Zeitsteuerung unter Angabe eines Werts in Sekunden

Begonnen von Reinschki, 26 Oktober 2020, 18:34:15

Vorheriges Thema - Nächstes Thema

Reinschki

Hallo,

ein MQTT_DEVICE liefert mir in einem Reading einen Zeit-Wert in Sekunden den ich in einem Doif verwerten will.
In meinem Beispiel liefert das Reading "upcoming_entries_01_stop_real" den Wert 1603736520.

Laß ich mir den Sekundenwert umrechnen, liefert die Funktion localtime das zu erwartenden Ergebnis
{localtime(1603736520)} -> Oct 26 19:22:00 2020

Im Doif wird der Timer so gesetzt
{[([mqtt_tvheadend:upcoming_entries_01_stop_real])]; fhem_set("deCONZ_zigbee_Osr_3 off");} -> timer_01_c02    21.08.2071 18:22:00

Kann mir jemand sagen wie man das richtig macht.

Gruß
Reiner

Damian

Zitat von: Reinschki am 26 Oktober 2020, 18:34:15
Hallo,

ein MQTT_DEVICE liefert mir in einem Reading einen Zeit-Wert in Sekunden den ich in einem Doif verwerten will.
In meinem Beispiel liefert das Reading "upcoming_entries_01_stop_real" den Wert 1603736520.

Laß ich mir den Sekundenwert umrechnen, liefert die Funktion localtime das zu erwartenden Ergebnis
{localtime(1603736520)} -> Oct 26 19:22:00 2020

Im Doif wird der Timer so gesetzt
{[([mqtt_tvheadend:upcoming_entries_01_stop_real])]; fhem_set("deCONZ_zigbee_Osr_3 off");} -> timer_01_c02    21.08.2071 18:22:00

Kann mir jemand sagen wie man das richtig macht.

Gruß
Reiner

z. B.

defmod di_time_localtime DOIF ([[$SELF:Time]])
attr di_time_localtime DOIF_Readings Time:substr(localtime([mymqtt:upcoming_entries_01_stop_real]),11,8)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Reinschki

OK, jetzt triggert es jeden Tag um diese Zeit.

Mit Datum habe ich es so versucht:
attr di_KODI_NUC_exip DOIF_Readings Time: {return strftime "%d.%m.%Y %H:%M:%S", localtime([mqtt_tvheadend:upcoming_entries_01_stop_real]); }

Das Reading Time sieht dann so aus:
di_KODI_NUC_exip Time 26.10.2020 19:22:00

Liefert:
di_KODI_NUC_exip timer_01_c02 error: Wrong timespec 26.10.2020 19:22:00: either HH:MM:SS or {perlcode}

Wie stelle ich es an wenn ich auch das Datum berücksichtigen muss?


Damian

Timer im DOIF arbeiten ohne Datum - sie triggern jeden Tag.

Das Datum muss man separat abfragen z. B. über die $md oder $ymd Variable.

z. B.

[10:00] and $md eq "12-02"

oder ab dem 02.12

[10:00] and $md ge "12-02"
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF