Hallo!
Ich tieger seid Stunden im Forum und Netz herum um zu verstehen wie ich einen gezielten Filelog erstelle.
Die Anleitungen sind schwer verständlich.
Mein Ziel:
Von einem Wandthermostat Homematic (mit 6 Kanälen die aktuelle Temperatur und Feuchtigkeit, als auch die Soll-Temperatur in einem Log darzustellen.
Wie wähle ich diese Daten gezielt aus?
In der Referenz steht: define <name> FileLog <filename> <regexp>
Define ist klar.
Name ist klar.
Filelog ist klar.
Filename ist klar.
Regexp???
In den Beispielen der Referenz steht für Regexp lamp?
define lamplog FileLog %L/lamp.log lamp
Bei diesem Beispiel wz...
define wzlog FileLog ./log/wz-%Y-%U.log wz:(measured-temp|actuator).*
Was bedeutet wz? wofür steht der punkt am Ende und das Sternchen?
Ich durchschaue FHEM noch nicht.
Gibt es denn irgendwo eine vollständige Anleitung wo der Programmiercode detailliert erläutert wird?
wz ist in dem Fall das Device, in deinem Fall wäre es also der Name der Thermostats.
.* ist nichts FHEM-spezifisches, sondern ein simpler RegEx, der auf (.=irgendein Zeichen) (*=beliebig oft) zielt.
Dazu findest du aber massenweise Infos im Netz, einfach nach "perl regex" suchen.
lg, Ici
Hi Icinger,
danke für die schnelle Antwort.
Wo kann ich denn erfahren wie ein bestimmter Parameter den ich aufzeichnen will heißt?
Ich habe von Homematic einen HM-TC-IT-WM-W-EU.
Von der Homepage Homematic habe ich ein gutes Manual gefunden wie das Ding definiert ist.
z.B.
Kanaltypen
Kanaltyp Kanalnummer
WEATHER_TRANSMIT 1
THERMALCONTROL_TRANSMIT 2
WINDOW_SWITCH_RECEIVER 3
REMOTECONTROL_RECEIVER 6
SWITCH_TRANSMIT 7
Alle möglichen Parameter z.B.
Actual_Temperature
Battery_State
Muss ich genau diese Bezeichnungen im Bereich Regexp angeben um sie dann aufzeichnen zu können?
gib einfach das device an, dann wird alles geloggt was vom device kommt.
In der Art:
define Thermostat_Log FileLog ./log/Thermostat-%Y-%m.log Thermostat
Naja, also.....
1) hast du ja beim Define (eigentlich sollte der ja per Autocreate angelegt werden) einen Namen angegeben, also heisst dein Thermostat zB "wz_Thermostat". --> Das ist der erste Teil des Regex (=wz_Thermostat)
2) Willst du ein oder mehrere Readings dieses Thermostats loggen. Wie die genau heissen, siehst du direkt im Thermostat-Device. --> Das ist der zweite Teil des Readings (=readingName)
3) Willst du alle Werte, die dieses Reading annehmen kann, loggen. --> Richtig geraten, das ist der dritte Teil. (.*)
Ergo:
wz_Themostat:readingName.*
lg, Ici
Hi!
Vielen Dank für Eure Unterstützung.
Jungs ihr seid klasse!
Jetzt hab ichs kapiert.
Den richtigen Kanal ausgewählt, Trennung der Parameter über |, Begriffe aus dem Readings....
und nun erhalte ich die gewünschte Tabelle.
Supi..
Und jetzt noch ein "Gelöst" vor den Betreff, und alle sind glücklich ;D
Wird gemacht!
Trotzdem noch eine Frage.
Kann man die Daten die man im Log aufzeichnet in Spalten schreiben?
Derzeit sieht der Log wie folgt aus:
2014-12-29_22:55:33 WC_WT_Climate_01 measured-temp: 21.2
2014-12-29_22:55:33 WC_WT_Climate_01 desired-temp: 17.0
2014-12-29_22:55:33 WC_WT_Climate_01 humidity: 49
2014-12-29_22:58:26 WC_WT_Climate_01 measured-temp: 21.2
2014-12-29_22:58:26 WC_WT_Climate_01 desired-temp: 17.0
2014-12-29_22:58:26 WC_WT_Climate_01 humidity: 49
2014-12-29_23:01:04 WC_WT_Climate_01 measured-temp: 21.2
Ist es möglich measured-temp / desired-temp / humidity in dieser Art in eine Reihe zu schreiben?
Nur über den Umweg über ein Userreading, in dem dann alle drei Werte stehen.
Das kannst du dann loggen.
Zitat von: Otti am 29 Dezember 2014, 23:08:41
Ist es möglich measured-temp / desired-temp / humidity in dieser Art in eine Reihe zu schreiben?
Jain. Die Readings werden so geschrieben, wie sie sind.
Aber Du kannst eigene Erstellen (mit dem Ihnalt von den anderen): Stichwort userReadings
Und unerwünschte vom Loggen ausschliessen (RegEx im FileLog, Attribute event-on-change-reading/event-on-update-reading)
Alles klar...
Für heute reicht es!
Immerhin ein kleines Erfolgserlebnis dank Eurer Hilfe.
Morgen geht's weiter!
Ciao