Wert aus Userreading am Ende des Monat um 23:59 Uhr in logfile schreiben

Begonnen von Peterson, 16 Februar 2016, 22:42:29

Vorheriges Thema - Nächstes Thema

Peterson

Hallo,

ich habe schon viel im Forum und im Internet gesucht und auch die commandref durchstöbert, aber ich habe keinen vernünftigen Ansatz gefunden. Aber ich hoffe mir kann jemand helfen.

Eigentlich, so dachte ich, eine simple Sache, aber so etwas wie event-on-date habe ich nicht gefunden.

Mein Anliegen ist eigentlich einfach zu beschreiben:
Ein userReading soll an jedem Monatsende um 23:59:59 Uhr in ein Logfile wie gewohnt mit Datum-Uhrzeitformat abgespeichert werden.

Hat jemand sowas schon mal gemacht? Hat jemand einen Tip/Ansatz?
FHEM 5.5 auf RPI + HM-CFG-LAN

Hans Franz

In einem at prüfen, ob morgen der Erste ist:
define month_end_at at *23:59:00 {if (strftime "%d",localtime time+86400 eq "1") {Log 1,ReadingsVal("myDevice","myUserReading,"")}
(ungetestet)

Gruß
Hans
Raspi
CUL, Nano-CUL
FHT8V, FHT80B, S300TH
WM1000WZ, ELRO
LW12, LD382,DS18B20

crusader

Zitat von: Hans Franz am 17 Februar 2016, 00:12:01
In einem at prüfen, ob morgen der Erste ist:
define month_end_at at *23:59:00 {if (strftime "%d",localtime time+86400 eq "1") {Log 1,ReadingsVal("myDevice","myUserReading,"")}
(ungetestet)

Gruß
Hans
Genial  :o

Peterson

Hallo Hans,

der Ansatz ist super. Auf die Idee muss man mal kommen. vielen dank dafür.
Ich habe es bei mir eingebaut.

Gruß,

Peterson
FHEM 5.5 auf RPI + HM-CFG-LAN

Peterson

Hallo,

ich habe noch eine Klammer in der Bedingung hinzugefügt, damit diese richtig fasst.


define month_end_at at *23:59:00 {if ((strftime "%d",localtime time+86400) eq "1") {Log 1,ReadingsVal("myDevice","myUserReading,"")}


Leider habe ich das mit dem log 1 nicht so ganz verstanden. Ich habe dazu auch nichts an Erklärung gefunden, so dass ich dieses als Platzhalter interpretiert habe. Ein Austausch mit dem Log Device brachte nichts und auch die Angabe der logdatei brachte nichts. Auch im standard log sehe ich nur die Ausführung aber nicht den Wert.
Eigentlich will ich nur das UserReading in ein spezielles Logfile schreiben. Kann da noch jemand helfen?

Gruß,
Peterson
FHEM 5.5 auf RPI + HM-CFG-LAN

Hans Franz

Tja, war ungetestet.Ändere in
define month_end_at at *23:59:00 {if ((strftime "%d",localtime time+86400) eq "01") {Log 1,ReadingsVal("myDevice","myUserReading,"")}}
Also '01' statt '1' und geschweifte Klammer am Ende.
Log 1 ist kein Platzhalter sondern schreibt in das Standard-Logfile. Wenn du in ein anderes Filelog schreiben willst, kannst du z.B. ein entspechendes Event generieren, auf das das Regex des Filelogs matched.

Gruß
Hans

Raspi
CUL, Nano-CUL
FHT8V, FHT80B, S300TH
WM1000WZ, ELRO
LW12, LD382,DS18B20

Peterson

Hallo Hans,

danke noch für die Info.

Ich  werde mir dies noch weiter ansehen.

Gruß,

Peterson
FHEM 5.5 auf RPI + HM-CFG-LAN

Dracolein

Hallo zusammen,

ich bin über die Suchfunktion hierher gelangt, da ich gleiches Vorhaben wie der Threadstarter habe. 1x am Monatsende soll ein Reading in ein FileLog geschrieben werden. Hierfür habe ich ein eigenes Reading erstellt, was zu diesem letzten Moment des laufenden Monats mit aktuellen Daten gefüttert werden soll. Das somit erzeugte Event löst das FileLog Device aus.
Nun bin ich unsicher, ob meine Codezeile richtig angepasst wurde. Könnt Ihr das bestätigen oder mir meine(n) Fehler aufzeigen?

define at_EnergyCostMonth2359 at *23:59:00 {if ((strftime "%d",localtime time+86400) eq "01") {setreading Gaszaehler EnergyCostMonth2359 [Gaszaehler:ESPEasy_ESP_Easy1_reedkontakt_Total_EnergyCostMonth]}}

Ich bin unsicher, was den zweiten Teil der if-Anweisung betrifft, ob die geschweiften Klammern korrekt sind, denn FHEM antwortet mit einem Syntax Error.
Raspberry Pi 4 mit FHEM; FTUI Dashboard auf Asus 15,6" VT168H Touchscreen; ZigBee mit ConBee2 USB-Stick; div. Shelly 2.5; integr. Gaszähler mit ESP8266 & ESPEasy;

Pfriemler

Stört sich das Perl  nicht an der Wertabfrage mit [ ]?
ReadingsVal stattdessen?
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

Dracolein

Ja wahrscheinlich, aber ich weiß nicht, wie die korrekte Syntax aussehen muss.
ReadingsVal("Gaszaehler","ESPEasy_ESP_Easy1_reedkontakt_Total_EnergyCostMonth","") müsste den Wert wiedergeben, welcher auf das neue Reading geschrieben werden soll.
Aber dieser Coeschnipsel in obige Codezeile eingesetzt, ist scheinbar auch noch nicht korrekt.

define at_EnergyCostMonth2359 at *23:59:00 {if ((strftime "%d",localtime time+86400) eq "01") {setreading Gaszaehler EnergyCostMonth2359 ReadingsVal("Gaszaehler","ESPEasy_ESP_Easy1_reedkontakt_Total_EnergyCostMonth","")}}
Raspberry Pi 4 mit FHEM; FTUI Dashboard auf Asus 15,6" VT168H Touchscreen; ZigBee mit ConBee2 USB-Stick; div. Shelly 2.5; integr. Gaszähler mit ESP8266 & ESPEasy;

DeeSPe

define at_EnergyCostMonth2359 at *23:59:00 {fhem "setreading Gaszaehler EnergyCostMonth2359 [Gaszaehler:ESPEasy_ESP_Easy1_reedkontakt_Total_EnergyCostMonth]" if ((strftime "%d",localtime time+86400) eq "01")}


Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Dracolein

Cool, herzlichen Dank  :-*

Aus Neugier für meinen Lerneffekt: was bewirkt fhem in der Codezeile?
Raspberry Pi 4 mit FHEM; FTUI Dashboard auf Asus 15,6" VT168H Touchscreen; ZigBee mit ConBee2 USB-Stick; div. Shelly 2.5; integr. Gaszähler mit ESP8266 & ESPEasy;

DeeSPe

Zitat von: Dracolein am 10 März 2020, 12:51:19
Cool, herzlichen Dank  :-*

Aus Neugier für meinen Lerneffekt: was bewirkt fhem in der Codezeile?

Dass das was in Anführungszeichen folgt in Perl Code ausgeführt wird als wenn Du es oben in die FHEM Eingabezeile eingibst.
Vereinfacht: damit Perl die FHEM Befehle ausführen kann.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Pfriemler

Den Wald vor Bäumen nicht gesehen. Ist ja noch FHEM, da funktionieren die [ ] als Platzhalter ja. Letztlich muss es aber ein fertiger Perl-Befehl werden, also fhem und "". Ich kenne da übrigens nur Beispiele mit Klammern ...
Und auch was gelernt. Bis zum nächsten Mal ...  ;D
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

AyshaHM

Hallo zusammen,
ich hoffe hier kommt noch jemand vorbei!
Also meine Fragen?

Wenn ich einen Dummy mit dieser Funktion schalten möchte habe ich mir das zusammen gebaut.
define Test100 at *23:59:00 {fhem "set Test99 on" if ((strftime "%d",localtime time+86400) eq "01")} Ist das richtig?
und vielleicht noch eine dumme Frage: Wie testet ihr das?

für hilfe bin ich immer sehr dankbar!!!
Gruß AyshaHM
Hardware: Raspberry  4