Hallo zusammen,
erstmal ein Riesen Kompliment an die Entwickler und User hier - Ihr habt mit FHEM ein echt schickes Stück Software geschaffen!
So, genug der Schleimerei... :P
Meine Familie und ich haben letztes Jahr ein Haus gebaut und dabei ein KNX-Bussystem selbst eingebaut. Alle Komponenten stammen von MDT, aus deren Glastastern wird der Bus mit Temperaturwerten aus allen Räumen gefüttert. Das funktioniert auch alles einwandfrei, kann man in der ETS auf dem Busmonitor verfolgen. Als Anbindung ans LAN benutze ich eine IP-Schnittstelle.
FHEM hab ich nach ein paar Versuchen ohne große Probleme dazu gebracht, auf dem Bus mit zu lauschen. Ich habe auch inzwischen Devices angelegt, um die Temperaturwerte im Webinterface anschauen zu können. Hier mal beispielhaft ein Listing, die anderen sehen genauso aus nur halt mit anderen Raumbezeichnungen und Gruppenadressen:
Internals:
DEF 1/1/1:dpt9
DEVNAME E.3_IstTemp
IODev KNX
KNX_MSGCNT 15
KNX_RAWMSG C01185w011010c29
KNX_TIME 2017-06-05 09:34:52
LASTInputDev KNX
MSGCNT 15
NAME E.3_IstTemp
NR 26
NTFY_ORDER 50-E.3_IstTemp
STATE 21.3 °C
TYPE KNX
Gaddr:
1 1/1/1
Gcode:
1 01101
Model:
1 dpt9
Readings:
2017-06-05 09:34:52 getG1 21.30
2017-06-05 09:34:52 last-sender 1/1/133
2017-06-05 09:34:52 state 21.30
Readingsname:
Attributes:
IODev KNX
alias E.3 Gäste-WC
stateFormat {sprintf("%.1f °C",ReadingsNum($name,"getG1",0))}
webCmd :
Als nächstes wollte ich versuchen, einen SVG-Plot von den Temperaturverläufen anzulegen. Dafür wollte ich ein Logfile "HausTemperaturen" anlegen und den "state" aller Temperatursensoren da rein schreiben. Nach ein bißchen Recherche hab ich das hier definiert:
Internals:
DEF ./log/HausTemperaturen-%Y-%m-%d.log E.3_IstTemp:state:.*|E.4_IstTemp:state:.*|E.5_IstTemp:state:.*|E.6_IstTemp:state:.*
NAME Temp_Logfile
NOTIFYDEV E.3_IstTemp,E.4_IstTemp,E.5_IstTemp,E.6_IstTemp
NR 33
NTFY_ORDER 50-Temp_Logfile
REGEXP E.3_IstTemp:state:.*|E.4_IstTemp:state:.*|E.5_IstTemp:state:.*|E.6_IstTemp:state:.*
STATE active
TYPE FileLog
currentlogfile ./log/HausTemperaturen-2017-06-05.log
logfile ./log/HausTemperaturen-%Y-%m-%d.log
Attributes:
So, jetzt zum Problem: Es funktioniert nicht. Ich hab ein paar Anläufe genommen, um die Definition richtig hinzubekommen, jetzt habe ich keine Fehlermeldung mehr gehabt beim Definieren. Aber es entsteht halt kein Logfile... Was mache ich falsch? Ich dachte erst an ein notify, aber das scheint ja mit "NOTIFYDEV" da zu sein, oder? Die "state"-Werte ändern sich jedenfalls von allein, wenn sich die Temperatur in den Räumen ändert.
Ich würd mich freuen, wenn mich jemand in die richtige Richtung stubsen könnte...
Danke schonmal!
Gruß André
Versuch mal nicht state zu loggen sondern getG1.
Ansonsten Fang erstmal klein an und logge nur ein Device mit dem genannten reading
Vllt so:
E.(3|4|5|6)_IstTemp:.*getG1.*
Das funktioniert! Aber der Reihe nach:
Ich hab jetzt verschiedene Kombinationen im Webfrontend ausprobiert:
-Zuerst hab ich alle "state" durch "getG1" ersetzt mit Hilfe der RegExp-Funtion im Webfrontend.
Internals:
DEF ./log/HausTemperaturen-%Y-%m-%d.log E.3_IstTemp:getG1:.*|E.4_IstTemp:getG1:.*|E.5_IstTemp:getG1:.*|E.6_IstTemp:getG1:.*
NAME Temp_Logfile
NOTIFYDEV E.5_IstTemp,E.6_IstTemp,E.3_IstTemp,E.4_IstTemp
NR 33
NTFY_ORDER 50-Temp_Logfile
REGEXP E.3_IstTemp:getG1:.*|E.4_IstTemp:getG1:.*|E.5_IstTemp:getG1:.*|E.6_IstTemp:getG1:.*
STATE active
TYPE FileLog
currentlogfile ./log/HausTemperaturen-2017-06-05.log
logfile ./log/HausTemperaturen-%Y-%m-%d.log
Readings:
2017-06-05 14:45:37 linesInTheFile 887
Attributes:
Das hat keine Veränderung gebracht.
- Als nächstes habe ich das Ganze auf einen Sensor reduziert:
Internals:
DEF ./log/HausTemperaturen-%Y-%m-%d.log E.3_IstTemp:getG1:.*
NAME Temp_Logfile
NOTIFYDEV E.3_IstTemp
NR 33
NTFY_ORDER 50-Temp_Logfile
REGEXP E.3_IstTemp:getG1:.*
STATE active
TYPE FileLog
currentlogfile ./log/HausTemperaturen-2017-06-05.log
logfile ./log/HausTemperaturen-%Y-%m-%d.log
Readings:
2017-06-05 14:48:37 linesInTheFile 899
Attributes:
Das hat aber leider auch keinen Fortschritt gebracht.
- Zuletzt hab ich dann die Lösung aus Deinem zweiten Beitrag versucht. Dafür hab ich fhem.cfg direkt bearbeitet. Ich weiß, soll man nicht machen, aber ich hatte keine Idee, wie ich die Definition im Webinterface so hinkriegen soll.
Internals:
DEF ./log/HausTemperaturen-%Y-%m-%d.log E.(3|4|5|6)_IstTemp:.*getG1.*
NAME Temp_Logfile
NR 33
NTFY_ORDER 50-Temp_Logfile
REGEXP E.(3|4|5|6)_IstTemp:.*getG1.*
STATE active
TYPE FileLog
currentlogfile ./log/HausTemperaturen-2017-06-05.log
logfile ./log/HausTemperaturen-%Y-%m-%d.log
Readings:
2017-06-05 15:29:29 linesInTheFile 1047
Attributes:
Und plötzlich gings.
Vielen Dank!
Mir ist aufgefallen, dass bei Dir die ganze RegExp anders aussieht, nämlich (...)_IstTemp:.*getG1.*. Vorher sah es so aus: (...)_IstTemp:getG1:.* Ich schätze mal, es liegt daran, dass es vorher nicht geklappt hat. Werde mich bei den Regular Expressions mal noch ein bißchen weiter einlesen, die Tage binde ich ja auch noch die Sensoren aus dem OG ein...
schöne Grüße
André