[gelöst] DOIF - Uhrzeit als Reading jetzt noch mit Datum erweitern, aber wie?

Begonnen von Ma_Bo, 11 April 2020, 02:32:31

Vorheriges Thema - Nächstes Thema

Ma_Bo

Hallo Leute, ich habe ein DOIF, welches mir die Uhrzeit zu jeder vollen Minute als Reading schreibt...
Ich weiß leider nicht ehr, woher ich diesen Schnipsel habe um evtl. nachzuschauen, wie ich das Datum dazu bekomme

defmod Uhrzeit_DOIF DOIF (setreading $SELF time {(localtime (time + 5) =~ /(\d\d:\d\d)/;;$1)})

attr Uhrzeit_DOIF do always



Soweit so gut, wie kann ich es jetzt erreichen, dass es wie folgt aussieht:

Samstag, 11. April 2020 - 02:27


Grüße Marcel
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

Otto123

Hallo Marcel,

vielleicht bekommst Du mit strftime das Ganze passend hin? Als Einstieg zum heranarbeiten https://perldoc.perl.org/functions/localtime.html

Gruß Otto
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

Ma_Bo

Danke für den richtigen Wink...

Jetzt habe ich folgendes im Ausführungsteil vom DOIF:
({fhem 'setreading Uhrzeit_DOIF Test '.strftime('%a, %e. %b %Y - %H:%M', localtime)})

Nun steht aber APRIL abgekürzt und wahrscheinlich auch nicht in deutsch, genau wie der Tag:
Sat, 11. Apr 2020 - 10:44

Ziel wäre ja:
Samstag, 11. April 2020 - 02:27

Hast du da auch eine Idee...?
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

Otto123

Die großen Buchstaben liefern den ganzen Namen die kleinen die Abkürzung:
http://man7.org/linux/man-pages/man3/strftime.3.html

Das andere sollte die locale im system regeln.

Was gibt Dir in der FHEM Kommandozeile
{qx(locale)}Sollte so aussehen:
ZitatLANG=de_DE.UTF-8
LANGUAGE=de_DE
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=

In meinem Script steht es so:
# config the language to german
localedef -f UTF-8 -i de_DE de_DE.UTF-8
# alternativ
#sed -i -e 's/# de_DE.UTF-8 UTF-8/de_DE.UTF-8 UTF-8/' /etc/locale.gen
#locale-gen
localectl set-locale LANG=de_DE.UTF-8 LANGUAGE=de_DE
localectl set-keymap de
# setupcon liefert derzeit eine (einmalige?) Fehlermeldung https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=903393
# das scheint aber ohne Auswirkung?
setupcon

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

Ma_Bo

Zitat von: Otto123 am 11 April 2020, 11:15:43
Was gibt Dir in der FHEM Kommandozeile
{qx(locale)}Sollte so aussehen:

FHEM läuft in einem Proxmox LXC
{qx(locale)} ergibt:

LANG=C
LANGUAGE=
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

Otto123

Naja da ist quasi gar keine Locale definiert (C steht für minimal Environment). Hast Du mal die Befehle oben in der Linux Kommandozeile im sudo su Kontext probiert? Ich glaube danach musst Du neu starten.
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

Ma_Bo

Danke...
Nein die Befehle habe ich noch nicht probiert, mache ich später, muss jetzt leider los...
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

Ma_Bo

NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

Otto123

Sei so nett und poste noch Deinen finalen Code als Raw Def - das hilft den Anderen in Zukunft.

Schöne Ostern
Otto
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

Ma_Bo

Gerne,
hab es noch etwas geändert, aber das sollte für jeden ersichtlich sein:

RAW Def.:

defmod Uhrzeit_DOIF DOIF ([+:01]) ({fhem 'setreading Uhrzeit_DOIF Date_Time '.strftime('%a %d.%m.%Y - %H:%M', localtime)})
attr Uhrzeit_DOIF do always
attr Uhrzeit_DOIF stateFormat Date_Time


Damit erhalte ich dann das Reading Date_Time in diesem DOIF mit dem Inhalt der so aus sieht:

So 12.04.2020 - 02:02

Auf der, von Otto schon geposteteten Seite, ist das sehr schön erklärt:
http://man7.org/linux/man-pages/man3/strftime.3.html

Grüße Marcel
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

Ma_Bo

Bzw. hier auch, wie ich es zuerst haben wollte:

RAW Def.:

defmod Uhrzeit_DOIF DOIF ([+:01]) ({fhem 'setreading Uhrzeit_DOIF Date_Time '.strftime('%A, %d. %B %Y - %H:%M', localtime)})
attr Uhrzeit_DOIF do always
attr Uhrzeit_DOIF stateFormat Date_Time


Damit erhalte ich dann das Reading Date_Time in diesem DOIF mit dem Inhalt der so aus sieht:

Sonntag, 12. April 2020 - 02:13

Grüße Marcel
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

moonsorrox

ich finde dieses sehr interessant und dachte mir das kann ich kurzer Hand mal eben in mein Überwachungsdummy (du_Ueberwachung) schreiben mit diesem Code, dass klappt aber gar nicht. Er schreibt mir immer den gesamten Perl Code rein.

Mein Uhrzeit DOIF heißt in dem Fall di_Uhrzeit
(set du_Ueberwachung {fhem 'setreading di_Uhrzeit Date_Time '.strftime('%A, %d. %B %Y - %H:%M', localtime)})

So funktioniert das dann allerdings:
(set du_Ueberwachung [di_Uhrzeit:Date_Time])

Evtl. kann man das mit der Uhrzeit auch in dem gleichen Überwachungs DOIF erstellen, auch das habe ich bisher nicht hinbekommen. Hat da jemand einen Lösungsansatz.?
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Ma_Bo

Versuche mal so:

defmod Uhrzeit_DOIF DOIF ([+:01]) ({fhem 'setreading du_Ueberwachung state '.strftime('%A, %d. %B %Y - %H:%M', localtime)})
attr Uhrzeit_DOIF do always
attr Uhrzeit_DOIF stateFormat Date_Time
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

moonsorrox

Ja super vielen Dank, manchmal sieht man den Wald vor bäumen nicht... <duck und weg>  :-[

EDIT://
aber nun bekomme ich jede Menge Fehler anzeigen... das habe ich gerade erst gesehen..

2020.04.17 23:32:00 1: stacktrace:
2020.04.17 23:32:00 1: ERROR: empty name in readingsBeginUpdate
2020.04.17 23:31:01 1: Error: >Uhrzeit_DOIF< has no TYPE, but following keys: >READINGS<
2020.04.17 23:31:00 1:     main::HandleTimeout                 called by fhem.pl (676)
2020.04.17 23:31:00 1:     main::DOIF_TimerTrigger             called by fhem.pl (3307)
2020.04.17 23:31:00 1:     main::DOIF_Trigger                  called by ./FHEM/98_DOIF.pm (2739)
2020.04.17 23:31:00 1:     main::DOIF_cmd                      called by ./FHEM/98_DOIF.pm (2415)
2020.04.17 23:31:00 1:     main::ParseCommandsDoIf             called by ./FHEM/98_DOIF.pm (2161)
2020.04.17 23:31:00 1:     main::AnalyzePerlCommand            called by ./FHEM/98_DOIF.pm (1725)
2020.04.17 23:31:00 1:     (eval)                              called by fhem.pl (1142)
2020.04.17 23:31:00 1:     main::fhem                          called by (eval 10562222) (1)
2020.04.17 23:31:00 1:     main::AnalyzeCommandChain           called by fhem.pl (3811)
2020.04.17 23:31:00 1:     main::AnalyzeCommand                called by fhem.pl (1096)
2020.04.17 23:31:00 1:     main::CommandSetReading             called by fhem.pl (1243)
2020.04.17 23:31:00 1:     main::readingsSingleUpdate          called by fhem.pl (2419)
2020.04.17 23:31:00 1:     main::readingsBulkUpdate            called by fhem.pl (4936)
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

moonsorrox

Ich habe das DOIF heute nochmal gelöscht und neu erstellt nun gibt es keine Fehlermeldungen mehr... :-\
Danke nochmals
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM