Temp,Feuchte,Druck in einer Zeile im Logfile

Begonnen von Intruder1956, 16 Oktober 2016, 15:08:21

Vorheriges Thema - Nächstes Thema

Intruder1956

hallo,
ich habe das LaCrossGateway mit einem BME280 versehen.
mein Problem ist, dass im Logfile nur dieses angezeigt wird 2016-10-16_14:55:45 AB_Kammer_LaC T: 20.8 H: 33
ich hätte aber gerne noch den Druck T: 20.8 H: 33 P: 1020 in der Zeile eingefügt.
Ich habe Google und das Forum seit gestern fast rauf und runter gelesen aber nichts gefunden wo alle 3 also T: H: P: in einer Zeile aufgeführt sind.

Hier das list vom Sensor
Internals:
   .lastTimestate 1476622545.27243
   DEF        00
   IODev      WlanJeeLink
   LASTInputDev WlanJeeLink
   LaCrosse_lastRcv 2016-10-16 15:01:35
   MSGCNT     6827
   NAME       AB_Kammer_LaC
   NR         133
   STATE      T: 20.8 H: 33 P: 1020
   TYPE       LaCrosse
   WlanJeeLink_MSGCNT 6827
   WlanJeeLink_RAWMSG OK WS 0 4 4 184 33 255 255 255 255 255 255 255 255 0 3 252
   WlanJeeLink_TIME 2016-10-16 15:01:35
   addr       00
   battery_new 0
   bufferedH  33
   bufferedT  20.8
   corr1      0
   corr2      0
   previousH  33
   previousT  20.8
   sensorType 4=LaCrosseGateway
   Readings:
     2016-10-16 15:01:35   battery         ok
     2016-10-16 15:01:35   error           0
     2016-10-16 15:01:35   humidity        33
     2016-10-16 15:01:35   pressure        1020
     2016-10-16 15:01:35   state           T: 20.8 H: 33
     2016-10-16 15:01:35   temperature     20.8
Attributes:
   IODev      WlanJeeLink
   event-min-interval state:600
   event-on-change-reading state
   event-on-update-reading .*
   group      Thermostat
   icon       temp_inside
   room       LaCrosse
   stateFormat T: temperature H: humidity P: pressure


Hier das def vom Filelog
define FileLog_AB_Kammer_Temp FileLog ./log/AB_Kammer_Temp-%Y-%m.log AB_Kammer_Temp:T\x3a.*
attr FileLog_AB_Kammer_Temp archivedir ./log-archive/
attr FileLog_AB_Kammer_Temp logtype temp4press8:Temp/Press,temp4hum6dew10:Temp/Hum,text
attr FileLog_AB_Kammer_Temp nrarchive 0
attr FileLog_AB_Kammer_Temp room LaCrosse


Ich habe nichts gefunden wo ich was verändern könnte.

Kann mir bitte jemand helfen ???

Gruß und einen schönen Sonntag

Werner

Zotac CI547 32GB RAM 500GB SSD,ESXI 6.5, VM-Fhem5.8, VM-ioBroker, Cul 868Mhz;Cul 433Mhz = Busware, LGW, HM-MOD-RPI-PCB, Uniroll, IT YCR-100 TMT2100,ITR-1500, LD382 mit Wifilight, ESA 2000 + SENSOR WZ SET,FS20 TFK, HM-Sec-SC, HM-CC-RT-DN,PCA301,

Intruder1956

Hallo, ich muss noch mal nachfragen

Ist es überhaupt möglich bei einem Temperatursensor (BME280 auf LacrosseGateway) das state so darzustellen, das es mir im Logfile in einer Zeile statt nur dieses

2016-10-18_11:03:35 AB_Kammer_LaC T: 21.1 H: 55

es mir so einträgt
2016-10-18_11:03:35 AB_Kammer_LaC T: 21.1 H: 55 P:1015

Ich suche seit drei Tagen nach einer Lösung, finde aber leider nichts.
Es geht darum das mir das Logfile nicht mit allen readings voll geschrieben wird, sondern nur bei Veränderung, eine Zeile mit  T: H: P:  im Logfile geschrieben wird.

Habe schon wieder so viel gelesen das mir die Birne qualmt  ::)

Gruß Werner
Zotac CI547 32GB RAM 500GB SSD,ESXI 6.5, VM-Fhem5.8, VM-ioBroker, Cul 868Mhz;Cul 433Mhz = Busware, LGW, HM-MOD-RPI-PCB, Uniroll, IT YCR-100 TMT2100,ITR-1500, LD382 mit Wifilight, ESA 2000 + SENSOR WZ SET,FS20 TFK, HM-Sec-SC, HM-CC-RT-DN,PCA301,

ernst1024

Hallo, ich kenne jetzt deinen Sensor nicht aber mit dem attribute stateFormat kannst du wie der Name schon sagt die Darstellung von 'state' bestimmen. Im Bsp unten ein DHT22 mit den readings Temperatur, Luftfeuchte und Heat-Index. So musst du mal versuchen

attr 8266_f_Innen stateFormat {sprintf("H: %.0f %% T: %.1f °C  HI: %.1f °C",ReadingsVal($name,"humidity",0),ReadingsVal($name,"temperature",0),ReadingsVal($name,"heat-index",0))}
Gruß Ernst

Intruder1956

Hallo Ernst,
vielen Dank für deine Hilfe.

Ich denke, das was du meinst ist für das "STATE", also für die Anzeige der readings in FHEM und das wird nicht ins Logfile geschrieben.

Nur das "state" wird ins Log geschrieben.

Ich hoffe das ich hier richtig liege.

Das ist halt meine frage, kann man das "state" so verändern, das nur gewünschte readings  ins Log geschrieben wird.

Gruß Werner
Zotac CI547 32GB RAM 500GB SSD,ESXI 6.5, VM-Fhem5.8, VM-ioBroker, Cul 868Mhz;Cul 433Mhz = Busware, LGW, HM-MOD-RPI-PCB, Uniroll, IT YCR-100 TMT2100,ITR-1500, LD382 mit Wifilight, ESA 2000 + SENSOR WZ SET,FS20 TFK, HM-Sec-SC, HM-CC-RT-DN,PCA301,

dev0

#4
Mit userReadings ein eigenes Reading erzeugen, dass Du dann loggst. Das Reading state wird vom Modul gestzt.
Edit: Oder den Modulautor bitten das anzupassen oder konfigurierbar zu machen.

Hollo

Da passt doch was in der Definition nicht zusammen.  ???
Ich würde das Stück für Stück probieren und dann verfeinern.
Also erstmal im FileLog-Def nur den "Sensornamen" mit :.* dahinter und nicht gleich filtern.
Außerdem erstmal den logfile-type weglassen.
Jeweils gucken was angezeigt wird und was dann wirklich im Log steht.
Anschliessend weiter verfeinern.
Wenn daraus ein Plot erzeugt werden soll, müssen die Werte im Log aber auch nicht unbedingt in einer Zeile stehen. 
FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"

ernst1024

Zitat von: Intruder1956 am 18 Oktober 2016, 11:55:21


Ich denke, das was du meinst ist für das "STATE", also für die Anzeige der readings in FHEM und das wird nicht ins Logfile geschrieben.

Nur das "state" wird ins Log geschrieben.



ok man lernt immer noch dazu. Es gibt nicht nur "if" & "IF" es gibt auch "state" & "STATE". Also manchmal ist das schon reichlich verwirrend.
Gruß Ernst

dev0

state in ein Reading. STATE ist ein Internal. STATE wird in der Raumansicht angezeigt und kann mit dem Attribute stateFormat definiert werden, wenn sich der Modulautor an die Regeln gehalten hat. Ist kein stateFormat Attribut vorhanden, dann wird der Inhalt von state übernommen.

Intruder1956

Hallo Hollo,

das mit dem verfeinern ist mein Problem ;)
im Wiki steht nichts über userreadings, ist noch in arbeit, ansonsten gibt es nicht viel dazu in Verbindung zum Thermostat

Es geht mir ja nur darum, damit mein Logfile nicht mit dem Rest zugemüllt wird, was ich nicht brauche für ein Plot

So wie du mir es vorgeschlagen hast, ohne Filter habe ich jedes mal fünf Zeilen im Log

2016-10-18_14:14:52 AB_Kammer_LaC error: 0
2016-10-18_14:14:52 AB_Kammer_LaC battery: ok
2016-10-18_14:14:52 AB_Kammer_LaC temperature: 21.2
2016-10-18_14:14:52 AB_Kammer_LaC humidity: 55
2016-10-18_14:14:52 AB_Kammer_LaC pressure: 1021


Ich denke, nach 3 Tagen lesen gebe ich es schon fast auf das "state" von temperature,humidity,pressure in einer Zeile zu bekommen.
Ist vielleicht auch gar nicht vorgesehen beim LaCrosseGateway mit BME280

Gruß Werner
Zotac CI547 32GB RAM 500GB SSD,ESXI 6.5, VM-Fhem5.8, VM-ioBroker, Cul 868Mhz;Cul 433Mhz = Busware, LGW, HM-MOD-RPI-PCB, Uniroll, IT YCR-100 TMT2100,ITR-1500, LD382 mit Wifilight, ESA 2000 + SENSOR WZ SET,FS20 TFK, HM-Sec-SC, HM-CC-RT-DN,PCA301,

CoolTux


Internals:
   NAME       dummy1
   NR         10
   STATE      1
   TYPE       dummy
   Readings:
     2016-10-18 14:38:11   holeInOne       5°C, 15%, 6mPha
     2016-10-18 14:38:11   state           1
     2016-10-18 14:28:03   wert1           5
     2016-10-18 14:28:31   wert2           15
     2016-10-18 14:28:19   wert3           6
Attributes:
   room       test
   setList    1 2 3 4
   userReadings holeInOne { return ReadingsVal($NAME,"wert1",0) . "°C, " . ReadingsVal($NAME,"wert2",0) . "%, " . ReadingsVal($NAME,"wert3",0) . "mPha"}


Und dann Deine Regex für das Log einfach nach holeInOne anpassen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Hollo

Zitat von: Intruder1956 am 18 Oktober 2016, 14:24:14
...
Ich denke, nach 3 Tagen lesen gebe ich es schon fast auf das "state" von temperature,humidity,pressure in einer Zeile zu bekommen.
Ist vielleicht auch gar nicht vorgesehen beim LaCrosseGateway mit BME280
Das state beinhaltet bei Dir ja auch gar keinen Druck.

Das STATE , welches Du mit dem stateFormat (müsste daher eigentlich besser STATEFormat heissen) formatierst, ist aber quasi eine formatierte Variable;
also kein Reading/Event, welches Du direkt loggen kannst.
Du könntest also vermutlich am einfachsten Dein Log auf 2 Zeilen reduzieren... state mit Temp/Feuchte und pressure .
Dann hast Du doch schon einiges gewonnen.

define FileLog_AB_Kammer_Temp FileLog ./log/AB_Kammer_Temp-%Y-%m.log AB_Kammer_Temp:(T|pressure).*

FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"

DeeSPe

Zitat von: CoolTux am 18 Oktober 2016, 14:39:39

Internals:
   NAME       dummy1
   NR         10
   STATE      1
   TYPE       dummy
   Readings:
     2016-10-18 14:38:11   holeInOne       5°C, 15%, 6mPha
     2016-10-18 14:38:11   state           1
     2016-10-18 14:28:03   wert1           5
     2016-10-18 14:28:31   wert2           15
     2016-10-18 14:28:19   wert3           6
Attributes:
   room       test
   setList    1 2 3 4
   userReadings holeInOne { return ReadingsVal($NAME,"wert1",0) . "°C, " . ReadingsVal($NAME,"wert2",0) . "%, " . ReadingsVal($NAME,"wert3",0) . "mPha"}


Und dann Deine Regex für das Log einfach nach holeInOne anpassen.

Das sollte Dich ja nun wirklich weiter bringen.

Ist es für das Log nicht eventuell besser die Einheiten weg zu lassen und vor jeden Wert einen Buchstaben für das Reading zu setzen?
Und return kann man sich glaube auch sparen.  8)

userReadings holeInOne {"T:".ReadingsVal($NAME,"temperature",0)." H:".ReadingsVal($NAME,"humidity",0)." P:".ReadingsVal($NAME,"pressure",0)}

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Intruder1956

Vielen lieben Dank,

das HoleInOn hat mir geholfen
2016-10-18_17:48:11 AB_Kammer_LaC holeInOne: T: 21.7 H: 55 P: 1018
habe es auch gleich so gemacht

event-min-interval holeInOne:600
event-on-change-reading holeInOne
event-on-update-reading .*

dann müllt es mir auch nicht das log voll
Ich werde es so schnell nicht vergessen  ;D ;D

jetzt nur noch einen Plot entsprechend definieren und dann sollte es passen

Danke an euch

Gruß Werner

PS: statt HoleInOn hätte ich auch holestate oder auch Frikadelle nehmen können ???
Zotac CI547 32GB RAM 500GB SSD,ESXI 6.5, VM-Fhem5.8, VM-ioBroker, Cul 868Mhz;Cul 433Mhz = Busware, LGW, HM-MOD-RPI-PCB, Uniroll, IT YCR-100 TMT2100,ITR-1500, LD382 mit Wifilight, ESA 2000 + SENSOR WZ SET,FS20 TFK, HM-Sec-SC, HM-CC-RT-DN,PCA301,

MBHG

Zitat von: DeeSPe am 18 Oktober 2016, 16:11:36
userReadings holeInOne {"T:".ReadingsVal($NAME,"temperature",0)." H:".ReadingsVal($NAME,"humidity",0)." P:".ReadingsVal($NAME,"pressure",0)}

Im obigen Beispiel fehlen die Leerzeichen. Besser ist
userReadings holeInOne {"T: ".ReadingsVal($NAME,"temperature",0)." H: ".ReadingsVal($NAME,"humidity",0)." P: ".ReadingsVal($NAME,"pressure",0)}

Dann kann man es auch mit SVG plotten.

Gruss Marc
-----------------------------------------------------------
https://smarthome.family.blog Debian Linux, NanoCUL 868, Signalduino, 4x HM-SW4, 11x HM Asksin Unisensor, NodeMCU ESP8266, RCS 1000 N Comfort, Magic Home, Rauchmelder PT2262, Babble