Letzte Uhrzeit aus LOG-Datei anzeigen!

Begonnen von Tom111, 30 Oktober 2021, 18:13:24

Vorheriges Thema - Nächstes Thema

Tom111

Hallo,
Ich würde gerne aus einer FHEM-LOG-Datei mir die letzte Uhrzeit anzeigen lassen.
Hat irgendjemand eine Idee wie ich das machen kann?

Die LOG-Datei sieht folgendermaßen aus:
2021-10-28_16:57:10 myIP1 IP: 2.244.140.92
2021-10-29_16:57:16 myIP1 IP: 93.131.149.201
2021-10-30_16:57:15 myIP1 IP: 93.49.181.126


Optimal wäre es wenn ich also die 16:57 auslesen und zur Anzeige bringen kann (Stunde und Minute reicht).

Vielen Dank für eure Hilfe!

Gruß
Tom
FHEM 5.9 auf Raspberry Pi - 3B+ - Stretch-5.10.88+ | CUL868 CC1101 - USB - Lite module - V3 FW 1.67
Fritz!Box 7490 OS 07.29 / Fritz!Dect200 / Fritz!Powerline 546E
FS20ST-4/ FS20 DI-5/ FS20LS/ FS20 PIRI-2-KU/ FS20 TFK/ FS20S4A/FS20 SU-3/FS20 S20-3
HMS100TF/FHT80TF-2/ASH2200/S300TH/MiLight-Bridge V

MadMax-FHEM

Z.B. per tail:


{my $Line=qx(tail -1 ./log/fhem-2021-10.log);; return (split(/ /, $Line))[1];;}


Ist jetzt allerdings für das fhem-log.

Bei dir müsste (wenn der Ausschnitt stimmt) split so aussehen:


{my $Line=qx(tail -1 ./log/fhem-2021-10.log);; return (split(/_/, $Line))[1];;}


Für Sekunden weg bzw. nur Stunden und Minuten halt weiter splitten /:/ und dann eben davon nur
  • -> Stunden und [1] -> Minuten verwenden...

    Aber: der Aufruf mittels qx ist blockend! Sollte zwar kein Problem sein, wollte es nur erwähnen...

    Frage: wozu das? Weil vielleicht geht es ja auch anders ohne qx/tail/blocking...

    Und du musst nat. statt dem fhem-Log eben deine Logdatei angeben...

    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)

betateilchen

Wenn es einen Logeintrag gibt, gibt es auch ein event. Also ein notify anlegen, das nix tut, dann ist die letzte Auslösung des notify die letzte Uhrzeit im Log.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

MadMax-FHEM

Zitat von: betateilchen am 30 Oktober 2021, 19:11:29
Wenn es einen Logeintrag gibt, gibt es auch ein event. Also ein notify anlegen, das nix tut, dann ist die letzte Auslösung des notify die letzte Uhrzeit im Log.

Drum hab ich ja nach dem WARUM gefragt ;)

Weil ich ebenso denke, dass man das/die Reading(s) "überwachen" kann das/die die Einträge machen...

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)

betateilchen

In letzter Zeit frage ich mich immer häufiger, warum die Anwender nicht die einfachsten Lösungen verwenden, sondern sich immer die am meisten komplizierten Wege aussuchen.

Die "basics" von FHEM geraten immer mehr in Vergessenheit. Sehr schade.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Tom111

So, hab das mal folgendermaßen eingegeben:
define IP_Time notify {my $Line=qx(tail -1 ./log/myIP1-2021.log);; return (split(/_/, $Line))[1];;}
Die Datei heißt übrigens "myIP1-2021.log" hatte ich vergessen, zudem ändert sich auch jedes Jahr das "Jahr" also aus 2021 wird dann 2022
dann würde es ja nicht mehr funktionieren.

Mit dem Ergebnis kann ich aber nichts anfangen, als STATE habe ich nur ein "active", siehe Bild!

Gruß
Tom
FHEM 5.9 auf Raspberry Pi - 3B+ - Stretch-5.10.88+ | CUL868 CC1101 - USB - Lite module - V3 FW 1.67
Fritz!Box 7490 OS 07.29 / Fritz!Dect200 / Fritz!Powerline 546E
FS20ST-4/ FS20 DI-5/ FS20LS/ FS20 PIRI-2-KU/ FS20 TFK/ FS20S4A/FS20 SU-3/FS20 S20-3
HMS100TF/FHT80TF-2/ASH2200/S300TH/MiLight-Bridge V

MadMax-FHEM

#6
Dein notify ist ja (gelinde gesagt) Quatsch!

eigentlich:

define NotifyName notify NotifyRegex Ausführung


Du:

define NotifyName notify Ausführung


Wie/wodurch soll das notify denn ausgelöst werden?

Und noch mal: was willst du eigentlich?
Weil (wie auch schon mehrfach geschrieben): es lässt sich bestimmt besser/anders lösen, wenn man das "Grundproblem" kennen würde...

Ansonsten: fhem lernen, commandref lesen...

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)

Tom111

Also nochmal...

"Ich würde mir gerne aus einer FHEM-LOG-Datei die letzte Uhrzeit anzeigen lassen."
und zwar in dem Format 16:57 ...
...nicht mehr und nicht weniger!

Ich bin Anwender von FHEM und habe von Linux bzw. Perl nicht die geringste Ahnung.

Gruß
Tom
FHEM 5.9 auf Raspberry Pi - 3B+ - Stretch-5.10.88+ | CUL868 CC1101 - USB - Lite module - V3 FW 1.67
Fritz!Box 7490 OS 07.29 / Fritz!Dect200 / Fritz!Powerline 546E
FS20ST-4/ FS20 DI-5/ FS20LS/ FS20 PIRI-2-KU/ FS20 TFK/ FS20S4A/FS20 SU-3/FS20 S20-3
HMS100TF/FHT80TF-2/ASH2200/S300TH/MiLight-Bridge V

MadMax-FHEM

#8
Zitat von: Tom111 am 31 Oktober 2021, 18:17:19
Also nochmal...

"Ich würde mir gerne aus einer FHEM-LOG-Datei die letzte Uhrzeit anzeigen lassen."
und zwar in dem Format 16:57 ...
...nicht mehr und nicht weniger!

Dann auch noch mal: WANN/WARUM/WELCHER AUSLÖSER soll denn dazu führen, dass du die Uhrzeit des letzten Eintrages haben willst?
Weil "irgendwas" muss ja den tail...-Aufruf auslösen. Der passiert ja nicht einfach so, nur weil du ihn "irgendwohin" schreibst...
Und: WO soll die Uhrzeit landen? Weil aktuell wird die ja nur am Ende des Aufrufs an den "Aufrufer" (den es ja noch nicht gibt) zurückgegeben, fertig...

Uhrzeit auslesen habe ich dir gezeigt, das mit "Sekunden weglassen" erläutert...

Aber dann halt, das sollte aus der in $Line stehenden kompletten Uhrzeit das gewünschte Format machen:

my $Time=(spilt(/:/,(split(/_/, $Line))[1]))[0] . ":" . (spilt(/:/,(split(/_/, $Line))[1]))[1];

EDIT: statt $Line muss nat. nur der Teil mit Uhrzeit hin ;) -> korrigiert... Ist aber jetzt ungetestet (kann also noch etwas fehlen oder "verrutscht" sein)...

Zitat von: Tom111 am 31 Oktober 2021, 18:17:19
Ich bin Anwender von FHEM und habe von Linux bzw. Perl nicht die geringste Ahnung.

Ich bin auch nur Anwender von fhem.

Linux habe ich halt mit fhem gelernt, ja das geht, wenn man will...

Ebenso Perl, auch das geht, wenn man will...

Und: der Fehler hatte nichts mit Perl oder Linux zu tun, sondern war rein fhem! Nämlich: wie definiere ich ein notify...

EDIT: dann trotzdem noch mal: WAS willst du eigentlich tun? Also warum willst du die Uhrzeit des letzten Eintrages haben? Weil (noch mal): es muss ja einen Event geben, der zu dem Eintrag führt (das sind fhem-Basics) und man kann ja auch ganz einfach diesen Event "abgreifen" und dann weiß man wann das war, nämlich immer dann, wenn der Event kommt...

EDIT: ansonsten ist wohl alles gesagt...

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)

Tom111

Na ok, schade auch, ich lass es einfach, das wird nichts!  :-\
FHEM 5.9 auf Raspberry Pi - 3B+ - Stretch-5.10.88+ | CUL868 CC1101 - USB - Lite module - V3 FW 1.67
Fritz!Box 7490 OS 07.29 / Fritz!Dect200 / Fritz!Powerline 546E
FS20ST-4/ FS20 DI-5/ FS20LS/ FS20 PIRI-2-KU/ FS20 TFK/ FS20S4A/FS20 SU-3/FS20 S20-3
HMS100TF/FHT80TF-2/ASH2200/S300TH/MiLight-Bridge V

MadMax-FHEM

Zitat von: Tom111 am 01 November 2021, 01:07:38
Na ok, schade auch, ich lass es einfach, das wird nichts!  :-\

Wenn du nicht mit machst/machen willst...
...und/oder z.B. nicht erläuterst was du EIGENTLICH erreichen willst (und jetzt nicht wieder: ich will nur von dem letzten Eintrag die Uhrzeit, weil du so ja nicht mal weißt von welchem Tag der Eintrag ist ;)  )...

Dann wird das wohl so sein (müssen)...

Viel Spaß noch, 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)

Wolle02

Zitat von: Tom111 am 31 Oktober 2021, 18:17:19
Also nochmal...

"Ich würde mir gerne aus einer FHEM-LOG-Datei die letzte Uhrzeit anzeigen lassen."
und zwar in dem Format 16:57 ...
...nicht mehr und nicht weniger!

Ich bin Anwender von FHEM und habe von Linux bzw. Perl nicht die geringste Ahnung.




betateilchen hat dir doch den einfachsten Weg schon gewiesen. Du musst ja in deinem System irgendeinen Eventhandler (notify/doif/mswitch) haben, der für den Eintrag "myIP1 IP: 93.49.181.126" in dein Logfile verantwortlich ist. Nimm doch einfach den Timestamp wann dieser Eventhandler das letzte Mal ausgelöst hat; das sollte die gleiche Zeit sein wie die, die in deinem Logfile steht. Diese Zeit kannst du dann ja mit ReadingsVal, Value oder was auch immer auslesen und damit mache was du willst.

Such doch mal diesen Eventhandler in deinem System und poste hier ein List, dann kann man dir vielleicht auch weiterhelfen.

MadMax-FHEM

Naja, dann fehlt immer noch: wo soll denn die Uhrzeit landen? ;)
Bzw. was weiter damit geschehen?

Weil auch der von mir gepostete Code ja schon macht was gefragt wurde... :)

Nur an der Nutzung ist es ja gescheitert...

Mal sehen, vielleicht kommen ja noch Infos...

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)

Tom111

So, ich habe wieder ein kleines bisschen Zeit.

Ich hoffe DIESMAL dass jemand eine Lösung findet!

Folgenden Code habe ich nun erstellt (aufsplitten kann ich später):
define myIP1_time notify myIP1 {ReadingsTimestamp("myIP1","state","")}


Das Problem:
Das Notify wird nicht automatisch aktualisiert, dh. ich muss (wenn sich die IP-Adresse ändert) FHEM erst aktualisieren bevor mir die Zeit angezeigt wird!
Was muss ich machen damit sich auch die Zeit automatisch in der Anzeige ändert?

Gruß
Tom
FHEM 5.9 auf Raspberry Pi - 3B+ - Stretch-5.10.88+ | CUL868 CC1101 - USB - Lite module - V3 FW 1.67
Fritz!Box 7490 OS 07.29 / Fritz!Dect200 / Fritz!Powerline 546E
FS20ST-4/ FS20 DI-5/ FS20LS/ FS20 PIRI-2-KU/ FS20 TFK/ FS20S4A/FS20 SU-3/FS20 S20-3
HMS100TF/FHT80TF-2/ASH2200/S300TH/MiLight-Bridge V

MadMax-FHEM

Zitat von: Tom111 am 27 Dezember 2021, 10:23:01
So, ich habe wieder ein kleines bisschen Zeit.

Ich hoffe DIESMAL dass jemand eine Lösung findet!

Folgenden Code habe ich nun erstellt (aufsplitten kann ich später):
define myIP1_time notify myIP1 {ReadingsTimestamp("myIP1","state","")}


Das Problem:
Das Notify wird nicht automatisch aktualisiert, dh. ich muss (wenn sich die IP-Adresse ändert) FHEM erst aktualisieren bevor mir die Zeit angezeigt wird!
Was muss ich machen damit sich auch die Zeit automatisch in der Anzeige ändert?

Gruß
Tom

FHEM LERNEN! ENDLICH MAL!!!

Was du tust: ein notify anlegen, welches auf ALLES was sich im DEVICE myIP tut reagiert (bei dir [wenn ich das noch im Kopf habe] nur die IP ist, also: "ausnahmsweise" egal)...
...und dann NUR Änderungs-Datum/-Uhrzeit der state-Änderung ABFRÄGT aber NICHTS damit tut!!

Was soll denn passieren?
Wo sollen denn Datum/Uhrzeit die du (aktuell) nur ABFRÄGST (aber nichts damit machst) hin bzw. was soll denn mit dem Wert passieren?

Was dein notify tut:

ups es hat sich was bei myIP getan, juhu ich schau mal nach wann sich state geändert hat, ok aha gerade jetzt, toll. Ok, dann warte ich halt wieder bis sich noch mal was tut...

EDIT: wenn du damit meinst, dass (dann) "im" notify Datum/Uhrzeit der Änderung steht: ja, das ist "Zufall" bzw. halt weil eben das notify reagiert hat und zwar (du wirst es nicht glauben) zur selben Zeit wie sich auch die IP geändert hat, weil ja das notify genau auf alle Änderungen von myIP reagiert. D.h. evtl. denkst du das kommt von deinem Code, nein, das ist die Ausführungszeit des notify, die nat. zur selben Zeit war wie die IP-Änderung, that's it... Dass du ein "Refresh" brauchst liegt (verm.) daran, dass bei dieser "Aktion" kein Event erfolgt, somit also auch FhemWeb keine Aktualisierung macht/machen kann...

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)