log-File mit mehreren Einträgen

Begonnen von gestein, 08 Februar 2016, 14:27:53

Vorheriges Thema - Nächstes Thema

gestein

Hallo,

ich habe ein Objekt mit mehreren UserReadings, die ich schlußendlich gerne in einem Plot darstellen möchte.
Soweit ich das verstanden habe, muss ich zuerst mal die UserReadings in ein Log-File schreiben lassen.

Für ein UserReading habe ich das verstanden.
Aber wie kann ich mehrere in eine Datei schreiben lassen.

Das sind meine UserReadings:
Readings (Auszug aus der fhem Übersicht)
Fensterzustand   Offen      2016-02-08 14:22:35
KiZi.Fenster        Zu          2016-02-08 14:22:35
KiZi.RaumSollTemp 19.5    2016-02-08 14:22:35
KiZi.Raumtemperatur 21.3 2016-02-08 14:22:35
KiZi.Ventilpos  0                2016-02-08 14:22:35
Luftdruck 1007 2016-02-08 14:22:35
Aussentemperatur  10.2 2016-02-08 14:22:35

Und davon würde ich gerne die KiZi.* in ein log-File schreiben, wobei nur geschrieben wrden soll, wenn sich ein Wert ändert.

Könnte mir da bitte jemand helfen?
Ich verstehe es einfach nicht.

Danke im Voraus
liebe Grüße
Gerhard

Jamo

Hi,
hier mal ein Beispiel aus meiner fhem.cfg.
Fenster_Kueche und Heizung_Kueche sind 2 verschiedene FHT Devices, einmal FHT80-TF und einmal FHT80b.
Von Heizung_Kueche lasse ich die beiden Readings "measured-temp" und "actuator", und von Fenster_Kueche das reading"Window" (also auf/zu) in das gleiche File  ./log/FileLog_Heizung_Kueche.log schreiben.

Die defines sehen dann so aus:

define FileLog_Fenster_Kueche FileLog ./log/FileLog_Heizung_Kueche.log Fenster_Kueche:.*(Window).*
define FileLog_Heizung_Kueche FileLog ./log/FileLog_Heizung_Kueche.log Heizung_Kueche:(measured-temp|actuator):.*

Fenster_Kueche habe ich noch mit einem "attr Fenster_Kueche event-on-change-reading Window" versehen, Heizung_Kueche adequat.

Da sollte so auch bei Dir funktionieren.

Gruss, Ingolf
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/Conbee III, FB7690, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack, Sonos, ESPresence

gestein

Hallo,

Danke.
Ich habe also mein Definie so angepasst:
define FileLog_Kinderzimmer FileLog ./log/Kinderzimmer-%Y-%m-%d.log ozw772_test:(KiZi.Raumtemperatur|KiZi.RaumSollTemp|KiZi.Ventilpos|KiZi.Fenster):.*

Das log-File bleibt aber leider auch leer.
Das hat mich aber auf die Idee gebracht, es mit dem Assistenten in der Web-Oberfläche von fhem zu versuchen.

Der generiert folgendes:
define FileLog_Kinderzimmer FileLog ./log/Kinderzimmer-%Y-%m-%d.log ozw772_test:KiZi.Fenster:.*|ozw772_test:KiZi.RaumSollTemp:.*|ozw772_test:KiZi.Raumtemperatur:.*|ozw772_test:KiZi.Ventilpos:.*

Ich verstehe es nicht ganz, aber das dürfte das gleiche sein, wie Du mir empfohlen hast - nur ausgeschrieben.

Allerdings bleibt auch hier das log-File leer.

Ich verstehe es einfach nicht.

lg, Gerhard

Jamo

OK, aber Du hast gesehen, dass sich die Readings auch ändern/ge-updated werden?
Der FileLog wird ja nur bei Änderung oder update der Readings geschrieben.
Auch bedenken, das FHT80 devices z.B nur alle 4 Minuten senden.

Alternativ erstmal "define FileLog_Kinderzimmer FileLog ./log/Kinderzimmer-%Y-%m-%d.log ozw772_test" probieren, dann sollten alle Readings des devices geschrieben werden.
Danach würde ich "define FileLog_Kinderzimmer FileLog ./log/Kinderzimmer-%Y-%m-%d.log ozw772_test:.*KiZi.RaumSollTemp:.*" probieren.

Gruss, Ingolf
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/Conbee III, FB7690, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack, Sonos, ESPresence

gestein

Danke.
Die erste Zeile funktioniert.
Im log-File steht dann:
2016-02-08_22:33:02 ozw772_test Aussentemperatur: 10.4
2016-02-08_22:33:02 ozw772_test Fensterzustand: Offen
2016-02-08_22:33:02 ozw772_test KiZi.Fenster: Zu
2016-02-08_22:33:02 ozw772_test KiZi.RaumSollTemp: 19.5
2016-02-08_22:33:02 ozw772_test KiZi.Raumtemperatur: 21.1
2016-02-08_22:33:02 ozw772_test KiZi.Ventilpos: 0
2016-02-08_22:33:02 ozw772_test Luftdruck: 1006
2016-02-08_22:33:02 ozw772_test OK

Und dieser Block steht alle 30sek im log-File und die Werte ändern sich auch.

Wenn ich das nun in folgendes ändere:
define FileLog_Schlafzimmer FileLog ./log/Schlafzimmer-%Y-%m-%d.log ozw772_test:.*(KiZi.Raumtemperatur|KiZi.RaumSollTemp|KiZi.Ventilpos|KiZi.Fenster).*
dann schreibt er die richtigen Werte.
2016-02-08_21:11:30 ozw772_test  KiZi.Raumtemperatur: 21.1
2016-02-08_21:11:30 ozw772_test  KiZi.RaumSollTemp: 19.5
2016-02-08_21:11:30 ozw772_test  KiZi.Ventilpos: 0
2016-02-08_21:11:30 ozw772_test  KiZi.Fenster: Zu

Das funktioniert schon mal.
Danke!
Ich verstehe es zwar nicht, aber es geht.

Irgendwo ist da aber der Wurm drinnen, weil ein Plot mit diesem log-File auch nicht geht.
Die Werte werden nicht gezeichnet.
Müsste im log-File nicht so was stehen wie:
2016-02-08_21:11:30 ozw772_test.KiZi.Raumtemperatur: 21.1
2016-02-08_21:11:30 ozw772_test.KiZi.RaumSollTemp: 19.5
2016-02-08_21:11:30 ozw772_test.KiZi.Ventilpos: 0
2016-02-08_21:11:30 ozw772_test.KiZi.Fenster: Zu

Warum ist in meinem log-Files ozw772_test durch 2 Leerzeichen getrennt?

Danke im Voraus
liebe Grüße
Gerhard

Jamo

Warum in deinen log-Files ozw772_test durch 2 Leerzeichen getrennt ist, weiss ich nicht, aber das kommt schon mal vor, ist also normal.
Deswegen brauchst Du auch das .* davor [in deinem Fall .*(KiZi.Raumtemperatur ......], also der . steht für "irgendein Zeichen" , der * für "beliebig oft", das sind bei Dir die beiden Leerzeichen.
Ein .. würde wahrscheinlich auch tun.

Device und Readings sind aber immer durch ein Leerzeichen getrennt, das habe ich bei mir bei allen Devices immer gesehen, egal ob HM, oder FS20 oder sonstwas.

Wegen den Plots musst Du mal einen anderen Experten fragen, bei mir geht das auch immer nur mit viel probiererei.
Aber wenn schon mal was im log steht, das ist schonmal die halbe Miete, dann kann man es auch plotten. :-)


Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/Conbee III, FB7690, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack, Sonos, ESPresence

gestein

Danke, dann wird's wohl so stimmen.

Dank Deiner Hilfe kann ich nun die Daten richtig loggen.
Der "Assistant" im fhem kommt allerdings mit den log-File nicht zurande.
Dort wird in der Web-Oberfläche nämlich z.B. das Datenfeld "ozw772_test.KiZi.RaumSollTemp" angezeigt.
Wenn ich das auswähle, dann wird nichts gezeichnet.

Wenn ich allerdings in der Datei "SVG_FileLog_Schlafzimmer_1.gplot" den folgenden Einträg ändere, dann funktionierts:
#FileLog_Schlafzimmer 4:ozw773_test.KiZi.RaumSollTemp\x3a::
auf
#FileLog_Schlafzimmer 4:KiZi.RaumSollTemp\x3a::

Eigenartig.

Danke jedenfalls für Deine Hilfe!
lg, Gerhard