UnixZeitstempel in lesbares Format bei dynamisch auftretenden Readings

Begonnen von Panik, 20 Januar 2020, 12:23:07

Vorheriges Thema - Nächstes Thema

Panik

Hallo,

ich habe mir mittels dem Modul HTTPMOD und dem Template DWD_weather_warnings einen Weterwarner in FHEM integriert.

Dort gibt es dynamische Readings, die auch später wieder gelöscht werden (wenn die Warnung nicht mehr existent ist).

Zwei Readings nennen sich so:
"warnings_109187000_01_end" Wert: 1579539600000
und so:
"warnings_109187000_01_start" Wert: 1579514400000

Die ...01 kann sich dyn. erhöhen, da mehrere Warnungen auftraten können

Frage: Wie kann ich den UnixZeitstempel in den dyn. Readings ersetzen ? Eine Vorstufe mittels localtime(Zeit in Sekunden) , aber wie weiter ?


Raspberry3+,  CUL USB V3 mit V 1.66 CUL868, TRXRFX433, HM-MOD-UART, Phoscon-GW

Gisbert

Hallo Panik,

don't panic ;D (sorry, der Kalauer musste raus).

Ich setze voraus, dass die Werte der entsprechenden Readings die Unixzeit haben.

Die Umrechnung kann in einem userreading stattfinden:
{FmtDateTime(time)}
wobei time die Unixzeit in Sekunden ist.
Wegen Sommer/Winterzeit und Zeitzone musst du ggf. probieren, ob es passt oder noch was dazu addiert bzw. abgezogen werden muss.

Wenn das alles am Thema vorbeigeht, dann bitte ein list deines Devices, was ohnehin besser gewesen wäre.

Viele​ Grüße​ Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

rudolfkoenig

#2
ZitatFrage: Wie kann ich den UnixZeitstempel in den dyn. Readings ersetzen ?
Wenn damit eine menschenlesbare Variante gemeint ist, dann z.Bsp. mit userReadings, fhem.pl bietet weiterhin die Funktion FmtDateTime an. Also in der Art:attr httpmod userReadings warning_start:warnings_109187000_01_start.* {FmtDateTime(ReadingsVal("httpmod","warnings_109187000_01_start", 0))}
(ungetestet).

@Gisbert: Zeitzone wird richtig berechnet.

Panik

Hallo,

danke für die Antworten.
Leider ist das nur die viertel Miete.
Ich habe gemerkt, dass dem Unix-Zeitstempel noch drei Stellen hinten weggenommen werden müssen, um ein richiges Ergebnis zu liefern.
Dann müsste da für die Erzeugung der Readings so eine Dynamik rein: es kann auch warnings_109187000_02_end, warnings_109187000_03_end,
warnings_109187000_04_end usw. geben.

Wenn es in der Definition + Attr nicht unterzubekommen ist, könnte ich es alternativ in der 99_myUtils.pm unterkriegen


defmod Wetterwarner HTTPMOD https://www.dwd.de/DWD/warnungen/warnapp/json/warnings.json
attr Wetterwarner userattr readingEncode readingMaxAge readingMaxAgeReplacementMode:text,reading,internal,expression,delete
attr Wetterwarner enableControlSet 1
attr Wetterwarner extractAllJSON 1
attr Wetterwarner extractAllJSONFilter 109187000
attr Wetterwarner model DWD_weather_warnings
attr Wetterwarner preProcessRegex s/warnWetter..............|\);;|\t|\n|\r//g
attr Wetterwarner readingEncode UTF-8
attr Wetterwarner readingMaxAge 10
attr Wetterwarner readingMaxAgeReplacementMode delete
attr Wetterwarner room Wetter
attr Wetterwarner verbose 3

setstate Wetterwarner 2020-01-20 18:33:08 warnings_109187000_01_description Es tritt mäßiger Frost zwischen -5 °C und -8 °C auf. Vor allem bei Aufklaren über Schnee sinken die Temperaturen auf Werte um -10 °C.
setstate Wetterwarner 2020-01-20 18:33:08 warnings_109187000_01_end 1579600800000
setstate Wetterwarner 2020-01-20 18:33:08 warnings_109187000_01_event FROST
setstate Wetterwarner 2020-01-20 18:33:08 warnings_109187000_01_headline Amtliche WARNUNG vor FROST
setstate Wetterwarner 2020-01-20 18:33:08 warnings_109187000_01_instruction
setstate Wetterwarner 2020-01-20 18:33:08 warnings_109187000_01_level 2
setstate Wetterwarner 2020-01-20 18:33:08 warnings_109187000_01_regionName Kreis und Stadt Rosenheim
setstate Wetterwarner 2020-01-20 18:33:08 warnings_109187000_01_start 1579539600000
setstate Wetterwarner 2020-01-20 18:33:08 warnings_109187000_01_state Bayern
setstate Wetterwarner 2020-01-20 18:33:08 warnings_109187000_01_stateShort BY
setstate Wetterwarner 2020-01-20 18:33:08 warnings_109187000_01_type 5

Raspberry3+,  CUL USB V3 mit V 1.66 CUL868, TRXRFX433, HM-MOD-UART, Phoscon-GW

Panik

Hallo,

ich hab das jetzt mit einer Readingsgroup gelöst:

defmod Wetterwarnungen_rg readingsGroup .*:.*[Ww]arnings.*
attr Wetterwarnungen_rg group Wetter
attr Wetterwarnungen_rg room Wetter
attr Wetterwarnungen_rg timestampStyle style="color: silver"
attr Wetterwarnungen_rg valueFormat {return FmtDateTime($VALUE/1000) if( $READING =~ "end" );;;;return FmtDateTime($VALUE/1000) if( $READING =~ "start" );;;;}
Raspberry3+,  CUL USB V3 mit V 1.66 CUL868, TRXRFX433, HM-MOD-UART, Phoscon-GW