[GELÖST] Mehrere Werte in ein FileLog schreiben

Begonnen von Cruiser79, 23 Dezember 2013, 22:17:29

Vorheriges Thema - Nächstes Thema

Cruiser79

Ich habe aus einem Blog folgenden Skript Teil erfolgreich einbauen können.
define wz_temperature dummy
define wz_temperature_dummy at +*00:00:05 { my $d= ReadingsVal("wz_Wandthermostat","temperature",0);; fhem("set wz_temperature $d");;}
define FileLog_wz_temperature FileLog ./log/wz_temperature-%Y-%m-%d.log wz_temperature
attr FileLog_wz_temperature logtype text

Es wird mir hierbei eine Datei mit dem heutigem Namen wz_temperature_2013_12_23.log angelegt, die immer einen aktuellen Eintrag der Art
2013-12-23_22:01:29 wz_temperature 22.7
enthält.
Wäre es jetzt möglich, den Wert wz_temperature zu ändern, ohne das define zu ändern?
Wie kann ich einen weiteren Wert, z.b. das Reading desiredTemperature aus wz_Wandthermostat in die gleiche Datei schreiben?
FHEM auf Raspberry Pi
HM-CFG-LAN mit HM-TC-IT-WM-W-EU, HM-CC-RT-DN, HM-WDS10-TH-O, HM-LC-SW1-FM, HM-LC-Bl1-FM
Signalduino mit Elro AB440, LOGILINK WS0002, IT CMR-1000

Joachim

FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

Cruiser79

Zitat von: Joachim am 23 Dezember 2013, 23:10:10
Die commandref ist dein Freund
Da habe ich schon gelesen und keine Lösung finden können, sonst hätte ich ja nicht gefragt. Geht es vielleicht auch etwas genauer?
FHEM auf Raspberry Pi
HM-CFG-LAN mit HM-TC-IT-WM-W-EU, HM-CC-RT-DN, HM-WDS10-TH-O, HM-LC-SW1-FM, HM-LC-Bl1-FM
Signalduino mit Elro AB440, LOGILINK WS0002, IT CMR-1000

UliM

Hi,
Werte verändern, nachdem sie ins logfile geschrieben wurden, ist nicht im Sinne des Erfinders. Du müsstest also erst den zu loggenden Wert berechnen und ihn dann wegschreiben, Stichwort userreading.

Bei mir werden diverse Werte ins FileLog geschrieben, die regexp (also in Deiner FileLog-Definition das "wz_temperature" ganz am Schluss) dazu sieht folgerndermassen aus:
(ez_FHT:(measured-temp|temperature|desired-temp|actuator).*|ez_Aussensensor:.*T:.*)
Vom device ez_FHT werden also die readings measured-temp, temperature, desired-temp und actuator ins log geschrieben, außerdem vom Gerät ez_Aussensensor jede Meldung die den Text "T:" enthält.
Jedes ".*" steht für beliebiege Zeichen - je nach Position davor, mittendrin oder hintendran.

Reicht Dir das als Vorlage?

Gruß, Uli
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

Cruiser79

Zitat von: UliM am 24 Dezember 2013, 12:05:42
Reicht Dir das als Vorlage?

Gruß, Uli
Hi Uli,

vielen Dank für den Beitrag, es müsste mir sicher reichen. Tut es leider nicht, da ich die Zusammenhänge wohl noch nicht korrekt verstehe.  ;D Könntest du mir vielleicht mein gewünschtes Beispiel einmal mit deiner Vorlage umsetzen? Vielleicht verstehe ich dann die Vorgehensweise.
Ich nehme auch noch gerne Blogeinträge, oder Foreneinträge entgegen, wo das Vorgehen genauer erklärt wird, mit der commandref komme ich nur leider sehr schwer zurande. Beispiele habe ich leider auch noch keine gefunden, an denen ich mich entlang hangeln kann.
FHEM auf Raspberry Pi
HM-CFG-LAN mit HM-TC-IT-WM-W-EU, HM-CC-RT-DN, HM-WDS10-TH-O, HM-LC-SW1-FM, HM-LC-Bl1-FM
Signalduino mit Elro AB440, LOGILINK WS0002, IT CMR-1000

Joachim

FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

Cruiser79

Zitat von: Joachim am 27 Dezember 2013, 18:36:26
Versuchs damit:
http://forum.fhem.de/index.php/topic,12557.msg75436.html#msg75436

Gruß Joachim

Super, danke. Jetzt ist mir der Tip von UliM auch klar geworden. Mein FileLog sieht jetzt so aus

define FileLog_wz_test FileLog ./log/wz_test-%Y-%m.log wz_Thermostat_Fenster:valveposition:.*|wz_Thermostat_Raum:valveposition:.*|wz_Wandthermostat:desiredTemperature:.*|wz_Wandthermostat:temperature:.*
attr FileLog_wz_test logtype text
attr FileLog_wz_test room Wohnzimmer


könnte dann ja auch mit dem RegEx von UliM auf folgendes reduziert werden
define FileLog_wz_test FileLog ./log/wz_test-%Y-%m.log wz_Thermostat_Fenster:valveposition:.*|wz_Thermostat_Raum:valveposition:.*|wz_Wandthermostat:(desiredTemperature|temperature).*
attr FileLog_wz_test logtype text
attr FileLog_wz_test room Wohnzimmer


Wenn ich jetzt meinen alten Code nehme
define wz_temperature dummy
define wz_temperature_dummy at +*00:00:05 { my $d= ReadingsVal("wz_Wandthermostat","temperature",0);; fhem("set wz_temperature $d");;}
define FileLog_wz_temperature FileLog ./log/wz_temperature-%Y-%m-%d.log wz_temperature
attr FileLog_wz_temperature logtype text


könnte ich diesen ja nun aber auch etwas einfacher auf ein
define FileLog_wz_test FileLog ./log/wz_dummy-%Y-%m.log wz_Wandthermostat:temperature:.*
attr FileLog_wz_test logtype text
attr FileLog_wz_test room Wohnzimmer

zusammenschrumpfen. Was bringt mir denn nun die eigentliche Variante mit "at", ausser, das dort alle 5 Sekunden ein Filelogeintrag geschrieben wurde?
FHEM auf Raspberry Pi
HM-CFG-LAN mit HM-TC-IT-WM-W-EU, HM-CC-RT-DN, HM-WDS10-TH-O, HM-LC-SW1-FM, HM-LC-Bl1-FM
Signalduino mit Elro AB440, LOGILINK WS0002, IT CMR-1000

Joachim

MoinCruiser79,

Bagdad?

Formuliere Deine Frage mal anders, ich versteh's nicht.

Gruß Joachim
FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

Puschel74

Hallo,

ZitatWas bringt mir denn nun die eigentliche Variante mit "at", ausser, das dort alle 5 Sekunden ein Filelogeintrag geschrieben wurde?
Nichts, ausser das alle 5 Sekunden ein Filelog-Eintrag geschrieben wurde  8)

Das hättest du aber auch mit einem addLog alle 5 Sekunden erreicht  ;)

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Cruiser79

Zitat von: Joachim am 29 Dezember 2013, 19:08:52
MoinCruiser79,

Bagdad?

Formuliere Deine Frage mal anders, ich versteh's nicht.

Gruß Joachim
Bagdad? Ne, FHEM  ;)

Ich versuche es mal: Ich wollte nur wissen, ob ich an der "at" Variante etwas nicht verstehe. Meiner Meinung nach, ist die "at" Variante für das von mir gewünschte Ziel (ich möchte wenige Werte einer Komponente loggen) etwas zu kompliziert. Man legt eine Variable an, holt mit ReadingVal Werte aus Komponenten heraus, schreibt diese mit SET wieder weg und packt am Ende das ganze in eine Datei.
Dagegen dann die für mich einfachere Variante, einfach direkt beim FileLog define anzugeben, welche paar Werte einer (oder mehrerer) Komponenten man denn wegschreiben möchte.

Insofern wird wohl Puschel74 Antwort die korrekte gewesen sein.
ZitatNichts, ausser das alle 5 Sekunden ein Filelog-Eintrag geschrieben wurde
FHEM auf Raspberry Pi
HM-CFG-LAN mit HM-TC-IT-WM-W-EU, HM-CC-RT-DN, HM-WDS10-TH-O, HM-LC-SW1-FM, HM-LC-Bl1-FM
Signalduino mit Elro AB440, LOGILINK WS0002, IT CMR-1000

Joachim

FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

Puschel74

Hallo,

naja,
define wz_temperature_dummy at +*00:00:05 { my $d= ReadingsVal("wz_Wandthermostat","temperature",0);; fhem("set wz_temperature $d");;}
define FileLog_wz_temperature FileLog ./log/wz_temperature-%Y-%m-%d.log wz_temperature

führt alle 5 Sekunden ein set wz_temperature $daus und $d wird jedesmal neu gelesen.
Dieser neue Wert des dummy wird dann bei jedem Set (also alle 5 Sekunden) in das zugehörige Logfile geschrieben.
Das sollte sich auch im Logfile prüfen lassen da alle 5 Sekunden ein Eintrag stehen sollte.

ZitatInsofern wird wohl Puschel74 Antwort die korrekte gewesen sein.
Ob das jetzt die "korrekte" Antwort ist weiß ich nicht - aber so verstehe ich das at zumindest.

Warum willst/wolltest du alle 5 Sekunden einen Logfile-Eintrag haben?
Schau dir mal addLog an - wenn du wirklich zusätzlich Einträge brauchst damit z.B. ein Plot "durchgehend" aussieht.
Dazu brauchst du aber nicht den Umweg über einen Dummy nehmen.
addLog macht das direkt mit dem Device und dem Reading.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Cruiser79

Zitat von: Puschel74 am 29 Dezember 2013, 20:05:03
Hallo,

naja,
define wz_temperature_dummy at +*00:00:05 { my $d= ReadingsVal("wz_Wandthermostat","temperature",0);; fhem("set wz_temperature $d");;}
define FileLog_wz_temperature FileLog ./log/wz_temperature-%Y-%m-%d.log wz_temperature

führt alle 5 Sekunden ein set wz_temperature $daus und $d wird jedesmal neu gelesen.
Dieser neue Wert des dummy wird dann bei jedem Set (also alle 5 Sekunden) in das zugehörige Logfile geschrieben.
Das sollte sich auch im Logfile prüfen lassen da alle 5 Sekunden ein Eintrag stehen sollte.
Ob das jetzt die "korrekte" Antwort ist weiß ich nicht - aber so verstehe ich das at zumindest.

Warum willst/wolltest du alle 5 Sekunden einen Logfile-Eintrag haben?
Schau dir mal addLog an - wenn du wirklich zusätzlich Einträge brauchst damit z.B. ein Plot "durchgehend" aussieht.
Dazu brauchst du aber nicht den Umweg über einen Dummy nehmen.
addLog macht das direkt mit dem Device und dem Reading.

Grüße

Gut, dann habe ich das mit dem "at" auch etwas mehr verstanden.
Ich wollte eig. keine 5 Sekunden ein Logfile-Einrag schreiben, das Beispiel schrieb nur alle 5 Sekunden. Ich hätte den Wert dann noch auf Minuten hochgesetzt. Insofern scheint mir die jetzige LogFile-Methode auch angebrachter.
addLog werde ich mir dann auch nochmal anschauen, ob das mir noch besser helfen könnte.

Danke euch allen, meine ursprüngliche ist somit sehr gut beantwortet worden.
FHEM auf Raspberry Pi
HM-CFG-LAN mit HM-TC-IT-WM-W-EU, HM-CC-RT-DN, HM-WDS10-TH-O, HM-LC-SW1-FM, HM-LC-Bl1-FM
Signalduino mit Elro AB440, LOGILINK WS0002, IT CMR-1000

Puschel74

Hallo,

Zitatmeine ursprüngliche ist somit sehr gut beantwortet worden.
Das ist schön.

Könntest du bitte deinen ersten Beitrag bearbeiten und ein (Gelöst) vor den Titel stellen?
Danke.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.