Log-Daten auf einem zweiten FHEM darstellen und auswerten

Begonnen von Schlauer Det, 24 September 2019, 18:54:44

Vorheriges Thema - Nächstes Thema

Prof. Dr. Peter Henning

Zitatja sorry, ich habe es in Code Tags gepackt, damit es sich vom normalen Text absetzt. Wenn es gegen die Etikette verstößt lasse ich es sein.

Nicht auch noch pampig werden. Der Text innerhalb der Code Tags ist kein SVG, sondern einfach nackte und unverarbeitete Log-Daten.

LG

pah



ThomasFh

#31
Zitat von: Otto123 am 02 Dezember 2019, 18:14:56
ok und was gibt uns ein list TYPE=WS300den versteh ich wieder nicht. Auf welchem Raspi?

Idee vorab:
define F2FRaspi2 FHEM2FHEM  Raspi2:7072 LOG:A1|A2|A3kann man bez. der Ax entsprechend anpassen.
Damit nur diese Zeilen loggen -> 2019-12-02 18:02:49   state           T: 22  H: 51  Bat: Ok  LR: 1
define FileLog_WS300_F2F FileLog ./log/FileLog_WS300_F2F-%Y.log A1:T:.*|A2:T:.*|A3:T:.*

Das kann man intelligenter machen mit den regEx. Aber erstmal so zum Test!


Erstmal danke für Eure Geduld ..

Auf dem Raspi genau gesagt dem Raspi2 (hostname) ist ein WS300PC per usb (via udev) angeschlossen. Weiter nichts. Der Raspi ist noch von der ersten Generation und noch mit SD-Karte und erzeugt beim Diagrammerstellen 98% CPU Last, was man sich mit top recht gut ansehen kann. Ich werde auch nicht auf dblog umstellen.

Das Filelog für das Plotfile wird momentan so erstellt:

define        FileLog_WS300 FileLog             ./log/FileLog_WS300-%Y.log  .*

Wobei alles mitgeloggt wird, aber zu 95% sind es nur die Daten der Sensoren.
Da ich die Sensornamen momentan auch noch ändere, habe ich zunächst auf einen Filter der Art: A1:.*|A2:.*|A3:.* verzichtet.

Dort (Raspi2) lasse ich mir momentan auch Plots generieren, was aber mit Antwortzeiten von ca. 20 Sek. erkauft wird.

Von daher wollte ich das FileLog_WS300-%Y.log auf eine stärkere Maschine mit dem Hostnamen: "DebianFhemVM1" verlagern um dort das Plotfile zu generieren.

Hier käme dann die vorgeschlagene Lösung FHEM2FHEM zum Zuge.

Und diese Lösung funktioniert auch, wenn ich die Regex so schreibe:

hier nur die DEFs:
Raspi2:7072 LOG:.*
./log/FileLog_WS300_F2F-%Y.log .*


Im nächsten Post beantworte ich dann die Frage, wo ich die Dumps her habe.


EM1010PC, EM1000WZ, WS300PC, S300TH, Fritz Dect 200, Victron MPII, Cerbo GX, US3000C

ThomasFh

#32
Zitat von: Otto123 am 02 Dezember 2019, 18:18:20
Nein Pah meint nicht die Codetags, das was Du als SVG Output bezeichnest ist irgendein Teil des Logfiles. Ich komme auch nicht klar woher Du das eigentlich nimmst :(

Die Daten habe ich hier her:

FHEM-Web-GUI:
http://....:8083/fhem

Menü:
Unsorted->FileLog->

hier stehen dann alle Logs und man sucht sich das Log heraus, aus dem man den SVG-Plot generieren will und klickt den Eintrag (link) an.
Nun kann man auf den link: "Create SVG Plot" klicken (das geht nun auf der DebianFhemVM1 in 0 Komma nichts und hat auf dem Raspi2 schon mal 10 Sek gedauert).
Man befindet sich nun im Plot-Editor und kann sich hier sein Diagramm zusammenklicken oder ein bestehendes Diagramm ändern.
Im unteren Bereich des Ploteditors sieht man: "Example lines for input:"
was ich mit SVG Output bezeichnet habe.

Die Ausgabe entspricht aber (bei mir) im Prinzip dem, was ich im Event-Monitor sehe, nur dass ich dann ein paar Stunden warten müsste und nicht die alten Werte sehe.

Ich hoffe dass das ganze nun klarer ist.

Mein einziges zu lösendes Problem, wären dann die beiden Regex zu verfeinern, wenn ich später zu 100% die Sensoren haben will, die ich brauche.

Ich kapiere leider nicht, warum ich ein WS300 in der Regex eingeben soll, obwohl der String "WS300" in den FileLogs nie auftaucht.

Ich hatte das bisher immer so verstanden, dass man mittels Regex nur das filtern kann, was im Log steht.

Aber dann müsste bei mir doch so etwas wie

019-12-02_18:57:49 WS300:A5 T: 21.9 H: 52 Bat: Ok LR: 0

im FileLog stehen, da steht aber nur

019-12-02_18:57:49 A5 T: 21.9 H: 52 Bat: Ok LR: 0







EM1010PC, EM1000WZ, WS300PC, S300TH, Fritz Dect 200, Victron MPII, Cerbo GX, US3000C

Prof. Dr. Peter Henning

Es wird immer wirrer.

Zitat"Example lines for input:"
was ich mit SVG Output bezeichnet habe.
Input ist nicht dasselbe wie Output.

Zitat
Die Ausgabe entspricht aber (bei mir) im Prinzip dem, was ich im Event-Monitor sehe, nur dass ich dann ein paar Stunden warten müsste und nicht die alten Werte sehe.
Das ist mit Sicherheit nicht so. Die "Ausgabe" des Moduls 98_SVG.pm ist SVG, und nicht eine Liste von Events.

Es ist vollkommener Unsinn, jeden Event eines FHEM-Systems in eine einzige Log-Datei zu schreiben und diese hinterher für eine Anzeige zu filtern. Die Filterung kostet bei großen Dateien enorm viel Zeit und ist auf einem Raspberry Pi kaum handhabbar. Genau aus diesem Grund kennt das FileLog-Modul die Angabe eines Regulären Ausdrucks - die Log-Datei sollte von vorneherein nur diejeigen Events enthalten, die man hinterher für die Anzeige benötigt. Wenn man mit Regulären Ausdrücken auf Kriegsfuß steht (siehe auch https://regex101.com/), sollte man wenigstens die Schaltfläche "Create/Modify Device" im Event-Monitor benutzen, um seine Log-Dateien zu erstellen.

LG

pah

Otto123

Zitat von: ThomasFh am 02 Dezember 2019, 19:11:27
Ich kapiere leider nicht, warum ich ein WS300 in der Regex eingeben soll, obwohl der String "WS300" in den FileLogs nie auftaucht.
Hab ich doch kapiert und mein Beispiel schon vor einigen Posts geändert!?

Warum führst Du nicht meine Bitte aus?
list TYPE=WS300

Warum probierst Du nicht mein Beispiel?

Denk an die Linsen von Aschenputtel: Wenn Du alles loggst und dann aus diesem Wust die Plots filtern musst hättest Du mit Zettel und Stift auch ganz schön zu tun. FHEM und dem raspi geht es nicht anders. Deswegen wollen mir nicht ungefiltert alles übertragen (.*) und nicht ungefiltert alles doppelt und dreifach loggen (.*)

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

ThomasFh

EM1010PC, EM1000WZ, WS300PC, S300TH, Fritz Dect 200, Victron MPII, Cerbo GX, US3000C

Otto123

Ok also wie schon vermutet: Deine Geräte heissen A1 usw.
Was ergibt denn nun mein Code aus Post #28 ? Der sollte doch exakt 3 Geräte jeweils eine Zeile auf dem Zielrechner loggen?
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

ThomasFh

Zitat von: Otto123 am 02 Dezember 2019, 20:46:44
Ok also wie schon vermutet: Deine Geräte heissen A1 usw.
Was ergibt denn nun mein Code aus Post #28 ? Der sollte doch exakt 3 Geräte jeweils eine Zeile auf dem Zielrechner loggen?

ja, ich bin nicht so schnell beim Schreiben ..

Zitat von: Otto123 am 02 Dezember 2019, 20:37:06
Warum probierst Du nicht mein Beispiel?

Gruß Otto


define FileLog_WS300_F2F FileLog ./log/FileLog_WS300_F2F-%Y.log A1:.*|A2:.*|A3:.*|A4:.*|A5:.*|A6:.*|A7:.*|A8:.*|A9:.*


Dein Beispiel klappt, dass ist klar, ich habe aber statt A1:T:.*  ein  A1:.*
weil ich Temperatur, Luftfeuchte und LR logge.

was nicht geht, ist

define F2FRaspi2 FHEM2FHEM  Raspi2:7072 LOG:A1|A2|A3
#bei mir habe ich
define F2FRaspi2 FHEM2FHEM  Raspi2:7072 LOG:A1|A2|A3|A4|A5|A6|A7|A8|A9


Dann ist im Event Monitor auf dem DebianFhemVM1 komplette Funkstille.
D.h., es kommen gar keine Events mehr an, auch nicht die Events der Sensoren alle 5 Min,
so dass ich erstmal wieder auf
LOG:.*
gehen muss.
EM1010PC, EM1000WZ, WS300PC, S300TH, Fritz Dect 200, Victron MPII, Cerbo GX, US3000C

Otto123

#38
Du wärst schneller wenn Du nicht immer 10 mal den gleichen Test in eine Zeile hackst sondern an einem Beispiel probierst :)
Es geht Dir doch darum, die Performance zu verbessern? Du verstehst mein Gleichnis mit  Aschenputtel nicht?

Dann versuch doch mal so:
define F2FRaspi2 FHEM2FHEM  Raspi2:7072 LOG:A1.*|A2.*

Ich hätte Dir am 2. Advent verraten, dass Du auch A[1 9].* schreiben kannst. Und das Du regex hier testen kannst https://regex101.com/  ;D Ach hat ja pah schon gemacht ;)

Willst Du später im SVG alle Geräte A1 bis A9 in einem Plot zeigen?
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

ThomasFh

Zitat von: Otto123 am 02 Dezember 2019, 21:14:25
Du wärst schneller wenn Du nicht immer 10 mal den gleichen Test in eine Zeile hackst sondern an einem Beispiel probierst :)
Es geht Dir doch darum, die Performance zu verbessern? Du verstehst mein Gleichnis mit  Aschenputtel nicht?

Dann versuch doch mal so:
define F2FRaspi2 FHEM2FHEM  Raspi2:7072 LOG:A1.*|A2.*

Ich hätte Dir am 2. Advent verraten, dass Du auch A[1 9].* schreiben kannst. Und das Du regex hier testen kannst https://regex101.com/  ;D Ach hat ja pah schon gemacht ;)

Willst Du später im SVG alle Geräte A1 bis A9 in einem Plot zeigen?

Ja,
wie ich aber schon zwei Mal geschrieben, dass ich die Geräte alle später umbenennen werde.
Die heißen dann alle so wie die Räume. Daher schrieb ich schon, dass ich auf die Regex erstmal verzichtet habe.
Daher nutzt mir auch keine Regex, da die Teile dann: WIGA, LAGERRAUM, GWH, GARAGE usw heissen.

Das mit dem A1 .. habe ich nur gemacht, damit ich mich an Dein Beispiel halte.

EM1010PC, EM1000WZ, WS300PC, S300TH, Fritz Dect 200, Victron MPII, Cerbo GX, US3000C

ThomasFh

EM1010PC, EM1000WZ, WS300PC, S300TH, Fritz Dect 200, Victron MPII, Cerbo GX, US3000C

Otto123

Mein Beispiel war willi :)
Wenn Du Namen wählen kannst, kannst Du auch in regExp "denken"
Meine Rollladen heissen alle RolloXYZ meine Licht Schalter LichtXYZ ...

Deine Sensoren produzieren jeweils 5 Zeilen, 4 einzeln und alle Werte in einer 5.
Ich würde den Log Umfang reduzieren, geht am Besten wenn Du nur die state Zeile loggst, da steht alles drin. Aber dann musst Du beim Plot aus der Zeile wieder alles rausdröseln, das braucht Zeit.
Es geht schneller die einzelnen Werte einer pro Zeile auszulesen.

Wie pah schon sagt ist es auch ungünstig alle Werte in einen Datei zu werfen um sie dann wieder auseinander zu lesen. Ich habe das nicht getestet. Es ist aber für mich vorstellbar, pro Gerät A1 usw. eine Datei zu machen. Dann hast Du im Plot mehrere Dateien parallel offen und die Werte werden jeweils einfach seriell ausgelesen. Das könnte schneller gehen. Wie gesagt: hab ich nie probiert.
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

ThomasFh

Zitat von: ThomasFh am 02 Dezember 2019, 21:48:03
A1.*|A2.*

probiere ich gleich mal.

Das klappt:
define F2FRaspi2 FHEM2FHEM Raspi2:7072 LOG:A1.*|A2.*|A3.*|A4.*|A5.*|A6.*|A7.*|A8.*|A9.*
EM1010PC, EM1000WZ, WS300PC, S300TH, Fritz Dect 200, Victron MPII, Cerbo GX, US3000C

ThomasFh

Vorab, Vielen Dank, für alle Tipps, nun läuft es für den Anfang ..

Zitat von: Otto123 am 02 Dezember 2019, 22:03:18
Mein Beispiel war willi :)
Wenn Du Namen wählen kannst, kannst Du auch in regExp "denken"
Meine Rollladen heissen alle RolloXYZ meine Licht Schalter LichtXYZ ...

Deine Sensoren produzieren jeweils 5 Zeilen, 4 einzeln und alle Werte in einer 5.
Ich würde den Log Umfang reduzieren, geht am Besten wenn Du nur die state Zeile loggst, da steht alles drin. Aber dann musst Du beim Plot aus der Zeile wieder alles rausdröseln, das braucht Zeit.
Es geht schneller die einzelnen Werte einer pro Zeile auszulesen.

Wie pah schon sagt ist es auch ungünstig alle Werte in einen Datei zu werfen um sie dann wieder auseinander zu lesen. Ich habe das nicht getestet. Es ist aber für mich vorstellbar, pro Gerät A1 usw. eine Datei zu machen. Dann hast Du im Plot mehrere Dateien parallel offen und die Werte werden jeweils einfach seriell ausgelesen. Das könnte schneller gehen. Wie gesagt: hab ich nie probiert.

Dateimäßig werde ich die Logs ggf. noch auseinander nehmen.

Nochmals danke, ich mache jetzt Schluss, wollte eigentlich nur 1h ..

Falls Du es noch erklären kannst:

warum funktionierte dein erster Ansatz nicht:


define F2FRaspi2 FHEM2FHEM  Raspi2:7072 LOG:A1|A2|A3|A4|A5|A6|A7|A8|A9


und warum funktionert es dann damit


define F2FRaspi2 FHEM2FHEM Raspi2:7072 LOG:A1.*|A2.*|A3.*|A4.*|A5.*|A6.*|A7.*|A8.*|A9.*


Das hier ein .* zusätzlich steht, habe ich gesehen.


Danke ..
EM1010PC, EM1000WZ, WS300PC, S300TH, Fritz Dect 200, Victron MPII, Cerbo GX, US3000C

Otto123

ehrlich gesagt weiß ich es nicht. Ich habe FHEM2FHEM Geräte, da geht genau die Definition mit nur dem Gerätenamen ohne .*
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