FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: Ma_Bo am 11 April 2020, 02:32:31

Titel: [gelöst] DOIF - Uhrzeit als Reading jetzt noch mit Datum erweitern, aber wie?
Beitrag von: Ma_Bo am 11 April 2020, 02:32:31
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
Titel: Antw:DOIF - Uhrzeit als Reading jetzt noch mit Datum erweitern, aber wie?
Beitrag von: Otto123 am 11 April 2020, 10:11:47
Hallo Marcel,

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

Gruß Otto
Titel: Antw:DOIF - Uhrzeit als Reading jetzt noch mit Datum erweitern, aber wie?
Beitrag von: Ma_Bo am 11 April 2020, 10:45:02
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...?
Titel: Antw:DOIF - Uhrzeit als Reading jetzt noch mit Datum erweitern, aber wie?
Beitrag von: Otto123 am 11 April 2020, 11:15:43
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 (https://github.com/heinz-otto/raspberry/blob/master/setupBasic.sh) 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

Titel: Antw:DOIF - Uhrzeit als Reading jetzt noch mit Datum erweitern, aber wie?
Beitrag von: Ma_Bo am 11 April 2020, 11:26:16
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=
Titel: Antw:DOIF - Uhrzeit als Reading jetzt noch mit Datum erweitern, aber wie?
Beitrag von: Otto123 am 11 April 2020, 11:40:04
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.
Titel: Antw:DOIF - Uhrzeit als Reading jetzt noch mit Datum erweitern, aber wie?
Beitrag von: Ma_Bo am 11 April 2020, 11:43:43
Danke...
Nein die Befehle habe ich noch nicht probiert, mache ich später, muss jetzt leider los...
Titel: Antw:DOIF - Uhrzeit als Reading jetzt noch mit Datum erweitern, aber wie?
Beitrag von: Ma_Bo am 11 April 2020, 23:18:32
Danke Otto, läuft jetzt...
Titel: Antw:[gelöst] DOIF - Uhrzeit als Reading jetzt noch mit Datum erweitern, aber wie?
Beitrag von: Otto123 am 11 April 2020, 23:22:42
Sei so nett und poste noch Deinen finalen Code als Raw Def - das hilft den Anderen in Zukunft.

Schöne Ostern
Otto
Titel: Antw:[gelöst] DOIF - Uhrzeit als Reading jetzt noch mit Datum erweitern, aber wie?
Beitrag von: Ma_Bo am 12 April 2020, 02:03:37
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 (http://man7.org/linux/man-pages/man3/strftime.3.html)

Grüße Marcel
Titel: Antw:[gelöst] DOIF - Uhrzeit als Reading jetzt noch mit Datum erweitern, aber wie?
Beitrag von: Ma_Bo am 12 April 2020, 02:14:09
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
Titel: Antw:[gelöst] DOIF - Uhrzeit als Reading jetzt noch mit Datum erweitern, aber wie?
Beitrag von: moonsorrox am 17 April 2020, 13:58:16
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.?
Titel: Antw:[gelöst] DOIF - Uhrzeit als Reading jetzt noch mit Datum erweitern, aber wie?
Beitrag von: Ma_Bo am 17 April 2020, 14:05:55
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
Titel: Antw:[gelöst] DOIF - Uhrzeit als Reading jetzt noch mit Datum erweitern, aber wie?
Beitrag von: moonsorrox am 17 April 2020, 14:11:08
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)
Titel: Antw:[gelöst] DOIF - Uhrzeit als Reading jetzt noch mit Datum erweitern, aber wie?
Beitrag von: moonsorrox am 18 April 2020, 15:06:43
Ich habe das DOIF heute nochmal gelöscht und neu erstellt nun gibt es keine Fehlermeldungen mehr... :-\
Danke nochmals