Temperaturdaten aus logfile für csv-export bereitstellen

Begonnen von Olaf234, 24 Juni 2021, 11:09:10

Vorheriges Thema - Nächstes Thema

Olaf234

Liebe Experten,

ich habe Tecnoline Temperatursensoren, welche mir humidity und temperature als Einzelwerte liefern und state als Mehrfachwerte IN EINER ZEILE. Genau darauf kommt es mir an - ich benötige die Werte (und nur diese) so, wie sie in state geliefert und auch ins logfile geschrieben werden, damit ich sie exportieren und in excel weiter bearbeiten kann.

Da ich die Datenlast reduzieren und Messschwankungen eindämmen möchte, habe ich
event-min-interval temperature:1800,humidity:1800,battery:3600
und
event-on-change-reading temperature:0.2,humidity:2,battery.*
gesetzt. Dadurch bekomme ich aber kein state mehr ins logfile geschrieben. Auch der Versuch eines zusätzlichen reading mit
userReadings export_csv {"T: ".ReadingsVal("LaCrosse_36","temperature",0)." H: ".ReadingsVal("LaCrosse_36","humidity",0)}
ein zusätzliches reading zu erzeugen klappt nicht, da es ja durch event-on-change reading nicht mehr ins logfile findet.
wenn ich
event-on-change-reading temperature:0.2,humidity:2,battery.*,export_csv.*
versuche, ist die Schwankungseindämmung dahin.
Ich komme einfach nicht mehr weiter... was kann ich nur tun?

Otto123

Hi,

ich würde einfach:
event-on-change-reading .* setzen und im FileLog das regExp so in der Art schreiben SensorAussen:T:.*

Das reduziert die Events auf Veränderungen und das LogFile auf die "state" Einträge.

ZitatDadurch bekomme ich aber kein state mehr ins logfile geschrieben. Auch der Versuch eines zusätzlichen reading mit
Man darf aber auch state in die Liste des eocr Eintrages reinschreiben :)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Olaf234

Hi Otto,

vielen Dank, dass Du Dich meinem Thema annimmst. Dein Lösungsvorschlag würde aber leider bedeuten, dass Temperaturschwankungen von 0.1°C gelogt werden. Das muss aber unbedingt verhindert werden. Dadurch entstehen tausende von Einträgen pro Tag, wenn die Temperaturmessung z.b zwischen 0.5°C schwankt. 

Was ist denn ein eocr -Eintrag?  :o

Viele Grüße, Olaf

Nobbynews

#3
Zitat von: Olaf234 am 24 Juni 2021, 13:19:23
Dein Lösungsvorschlag würde aber leider bedeuten, dass Temperaturschwankungen von 0.1°C gelogt werden. Das muss aber unbedingt verhindert werden. Dadurch entstehen tausende von Einträgen pro Tag, wenn die Temperaturmessung z.b zwischen 0.5°C schwankt. 
siehe hier: https://wiki.fhem.de/wiki/Event-on-change-reading#Syntax
Über Threshold kann die Differenz zum vorheringen Wert angegeben werden, um ein Event und damit Log-Eintrag auszulösen

Olaf234

Hi Nobbynews,
das habe ich ja auch gemacht:
event-on-change-reading temperature:0.2,humidity:2,battery.*
Das klappt aber nicht mit
state T: 24.6 H: 60
weil es ein mehrfachwert darstellt.

Viele Grüße, Olaf

Otto123

#5
e-o-c-r :)
event-on-change-reading temperature:0.2,humidity:2,battery.*,state
so geht das nicht? Da der state Eintrag doch auf dem temperature:0.2 Eintrag basiert sollte der sich doch nur ändern wenn sich der temperature Wert ändert?

Und userReadings immer unbedingt mit trigger:
userReadings export_csv:temperature.* {"T: ".ReadingsNum("LaCrosse_36","temperature",0)." H: ".ReadingsNum("LaCrosse_36","humidity",0)}
Da sich mit deinem eocr ja die temperature nur mit 0.2 ändert, sollte sich nun das userReadings auch nur mit 0.2 ändern.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Olaf234

nein, leider nicht  :(
In diesem Fall:
event-on-change-reading temperature:0.2,humidity:2,battery.*
wird state (oder das userreading) gar nicht ins log geschrieben.
In diesem Fall (hier mit userreading):
event-on-change-reading temperature:0.2,humidity:2,battery.*,export_csv.*
wird  die Temperaturschwelle von 0.2 einfach ignoriert

Das Problem liegt wohl daran, dass 2 Werte in einer Zeile stehen.

eocr! ok, jetzt hab ich's auch  ;D

Otto123

#7
Du hast aber meinen Code komplett ignoriert? Wenn Du state nicht in Deiner Liste hast, kommt keine Event und wird es nicht geschrieben: So ist das Design ;)

Und noch Hinweis: Ich weiß nicht ob battery.* wirklich Sinn macht. Ich weiß zwar das .* funktioniert ob reading.* wirklich funktioniert weiß ich nicht.
Gibt es bei Dir mehrere Readings die mit battery beginnen?

In der Doku steht: es soll eine Liste von readings dort stehen, von regExp ist nicht die Rede!
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Olaf234

#8
ups entschuldige... den hab ich wirklich komplett übersehen...frag bitte nicht wie das geht  :-[
Ich habe den code so eingefügt und lass mal laufen. Es wird etwas dauern bis sich genug Daten gesammelt haben. Ich melde mich auf jeden Fall wieder

noch eine Zwischenfrage: wie würde denn das userreading aussehen müssen, wenn humidity ebenso triggern soll?

Wegen der battery.* bei genauer Überlegung gebe ich Dir recht. Es macht eigentlich keinen Sinn, denn battery gibt sowieso nur ok oder low aus.

Nein, es gibt nur ein reading mit battery

bis bald, Olaf

Otto123

Mir fällt noch ein: temperature:0.2,humidity:2 Du willst aber einen kombinierten Wert loggen, dann würde ich mich auf einen konzentrieren oder getrennt loggen. So könnte es sein, das Du in der Kombination wieder ständig ändernde Werte im state bekommst.

Zitatnoch eine Zwischenfrage: wie würde denn das userreading aussehen müssen, wenn humidity ebenso triggern soll?
das geht nicht (oder nicht simpel). Es geht auf die Art nur ein trigger.
Aber:
Ich würde meinen, wenn Du nur mit temperature und humidity events erzeugst (eocr) dann kannst Du im userReadings den trigger weglassen und FHEM erstellt ein userReadings wenn sich einer der beiden Werte ändert. Aber das geht mit state genauso.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Olaf234

Nach dem Wochenende und einer aussagekräftigen Datenansammlung kommt hier jetzt endlich die Rückmeldung.
Es funktioniert! Herzlichen Dank Otto für den super Tipp einen Trigger an das userreading zu binden :)