get Filelog durch ein Notify ausführen

Begonnen von bajogger, 07 November 2022, 23:05:28

Vorheriges Thema - Nächstes Thema

bajogger

Ich habe meinen Heizungsbrenner mit dem Modul "HourCounter" überwacht. Von den vielen Readings die dieses Modul bietet schreibe ich 4 Readings mit dem Modul FileLog, meines heißt BrennerDoku, in ein Logfile Brenner.log
Es werden die Readings countsOverall, countsPerDay, pulseTimeOverall, pulseTimePerDay geloggt.

Um nun bestimmte Werte herauszulesen habe ich den Befehl getFilelog gefunden

Mit

get BrennerDoku - - 2022-11-06_03:00:00 2022-11-06_21:00:00 4:pulseTimePerDay

lese ich die Brennerlaufzeit in der relevanten Zeit von 5:30 - 21 Uhr . Funktioniert auch toll.

Ich füge täglich diesen Befehl manuell in die FHEM Befehlszeile und passe das Datum an. Würde das gerne auf Knopfdruck automatisieren. Z.b eine Dummy "ReadPulsePerDay" anschalten und dann wird get Filelog für den aktuellen Tag ausgeführt. Dachte an ein notify. Ich wüßte nicht wie ich das Datum automatisiere.
Bei diesem notify

ReadPulsePerDay:on get BrennerDoku - - 2022-11-06_03:00:00 2022-11-06_21:00:00 4:pulseTimePerDay

passiert nichts
FHEM auf Raspberry Pi, CUL 433 und CUL 866,
Diverse IT Empfänger für Rolladen und Licht, IPCam Instar 2905

Otto123

#1
Hi,

ich habe es nicht ganz verstanden, aber mit
{fhem("get BrennerDoku - - ".$today."_03:00:00 ".$today."_21:00:00 4:pulseTimePerDay")}
Sollte der aktuelle Tag treffen.
https://fhem.de/commandref_modular_DE.html#perl

Zu deinem notify fehlen mir jetzt Infos (z.B. komplettes list) für Ideen. Aber ich empfehle Dir den Text https://wiki.fhem.de/wiki/Notify

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

MadMax-FHEM

ZitatIch füge täglich diesen Befehl manuell in die FHEM Befehlszeile und passe das Datum an.

Oder gleich ein at, dann brauchst du nicht mal mehr jeden Tag den Knopf drücken...
Und wenn du doch eine manuelle Ausführung (außer der Zeit) willst, dann: set atName execNow :)

https://wiki.fhem.de/wiki/At

Der Ausführungsteil von Otto für's notify sollte auch für das at passen...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

bajogger

Danke,

das Einsetzen von $today hat die Sache einfacher gemacht

{fhem("get BrennerDoku - - ".$today."_03:00:00 ".$today."_21:00:00 4:pulseTimePerDay")}

funktioniert. Nochmal Danke

AT und NOTIFY arbeiten nicht. Glaube es ist was Grundsätzliches. Der Befehl get Filelog bringt eine Textausgabe im Popup Fenster.
Vermutlich tut das nicht. Habe so getestet
*08:32:00 {fhem("get BrennerDoku - - ".$today."_05:30:00 ".$today."_21:00:00 4:pulseTimePerDay")}
Werde mich mal mit der Ausgabe in eineOutFile befassen

FHEM auf Raspberry Pi, CUL 433 und CUL 866,
Diverse IT Empfänger für Rolladen und Licht, IPCam Instar 2905

Otto123

#4
Moin,

was soll denn mit der Ausgabe von get FileLog passieren? Was geschieht mit dem Wert den Du dort ausliest? In der Kommandozeile kannst Du ihn lesen, dann ist er weg. ;)

Wenn Du den Wert weiter verarbeiten willst:
{my $pulse=fhem("get BrennerDoku - - ".$today."_05:30:00 ".$today."_21:00:00 4:pulseTimePerDay")}
So landet er zumindest (wahrscheinlich sinnlos) im Log :)

Ich glaube jetzt verstehe ich, Du wolltest in deiner Oberfläche einen "Knopf" wo Du hingehst, draufdrückst und dann siehst Du den Wert?

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

bajogger

Ich weis es ist umständlich und geht besser. Aber ich mache was ich hinbekomme. Ich lese auch Werte wie Außentemperatur und Vorlauftemperatur aus.
Bekomme im PopUp-Fenster teilweise mehrere hundert Werte im abgefragten Zeitfenster angezeigt. Kopiere die Werte aus dem PopUp manuell in eine Textdatei und bilde dann Mittelwert etc. Ich weiß umständlich.

Habe in der Referenz gelesen man kann wohl im get FileLog Befehl auch ein Outfile definieren. Hat bisher noch nicht funktioniert. Syntax war für mich nicht eindeutig.

Ja, wollte einen Knopf drücken (dummy). Dann im notify festlegen:  wenn dummy:on dann get File....etc.

Wie gesagt, am liebsten Knopf drücken (manuell) oder per at auch jeden Abend (automatisch)  eine neue Logdatei mit den abgefragten Werten erzeugen.
FHEM auf Raspberry Pi, CUL 433 und CUL 866,
Diverse IT Empfänger für Rolladen und Licht, IPCam Instar 2905

bajogger

Das ist die Befehlssyntax die Dank der Hilfe funktioniert
{fhem("get BrennerDoku - - ".$today."_05:30:00 ".$today."_21:00:00 4:pulseTimePerDay")}

Das ist das Beispiel in der Referenz
get outlog out-2008.log - 2008-01-01 2008-01-08 4:IR:int: 9:IR::

Verstehe das so, get outlog liest Daten aus der Datei outlog, out- bewirkt eine Ausgabe in eine Datei. Die neue Datei heißt 2008.log

Mache daraus
{fhem("get BrennerDoku out-testout.log - ".$today."_05:30:00 ".$today."_21:00:00 4:pulseTimePerDay")}

Soll bewirken das die Daten nicht ins PopUp sondern in eine Datei testout.log geschrieben werden. Bleibt aber bei Soll

FHEM auf Raspberry Pi, CUL 433 und CUL 866,
Diverse IT Empfänger für Rolladen und Licht, IPCam Instar 2905

Otto123

mMn falsch verstanden
Befehlssyntax laut dommandref
Zitat<infile>
Name des Logfiles, auf das zugegriffen werden soll. Sonderfälle: "-" steht für das aktuelle Logfile, und "CURRENT" öffnet die zum "from" passende Datei.
<outfile>
Bei einem "-", bekommt man die Daten auf der aktuellen Verbindung zurück, anderenfall ist es das Name (eigentlich Prefix, s.u.) des Output-Files. Wenn mehr als ein File angesprochen wird, werden die einzelnen Dateinamen durch ein "-" getrennt, anderenfalls werden die Daten in einzelne Dateien geschrieben, die - beginnend mit 0 - durchnummeriert werden.
get <name> <infile> <outfile> <from> <to> <column_spec>
So sollte es klappen:
{fhem("get BrennerDoku - out-testout.log ".$today."_05:30:00 ".$today."_21:00:00 4:pulseTimePerDay")}
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

bajogger

Super, vielen Dank für deine Hilfe

Habe es geschafft noch den Ausgabe Pfad zu bestimmen und das Datum in den Dateinamen zu integrieren

{fhem("get BrennerDoku - /opt/fhem/userlog/Brennerout$today.log ".$today."_05:30:00 ".$today."_21:00:00 4:pulseTimePerDay")}

Das Notify funktioniert ebenfalls seit die Ausgabe nicht im PopUp Fenster sondern in eine Ausgabe Datei umgeleitet wird.

Nochmals Danke. War sehr angenehm konkreten Code als Hilfe und nicht nur Hinweise "Hast du nicht gelesen?" zu bekommen
FHEM auf Raspberry Pi, CUL 433 und CUL 866,
Diverse IT Empfänger für Rolladen und Licht, IPCam Instar 2905