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
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
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))}
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
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.
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.
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.
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.
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
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.
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).*
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
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 ???
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