FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Gast45 am 31 Mai 2018, 18:50:20

Titel: Problem mit event-on-change-reading
Beitrag von: Gast45 am 31 Mai 2018, 18:50:20
Hallo, mir ist heute aufgefallen, dass das Attribut event-on-change-reading scheinbar nicht richtig funktioniert.

Ich habe u.a. Readings für "temperature" und "humidity". Nur wenn sich einer der beiden Werte ändert, möchte ich ein Event erzeugen um "dewpoint" berechnen zu lassen. Oder nach 5 Minuten soll auch eine Berechnung stattfinden.

Dazu abe ich ein event-on-change-reading angelegt mit "humidity,temperature".
Und ein event-min-intervall mit ".*:300"

Wenn sich "humidity" ändert, funktioniert es richtig. Auch nach 5 Minuten findet eine Berechnung statt. Ändert sich aber nur "temperature", so passiert nichts.

Hast das schon jemand genauso beobachtet? Gibt es eine Abhilfe?
Titel: Antw:Problem mit event-on-change-reading
Beitrag von: CoolTux am 31 Mai 2018, 19:25:23
Bitte ein list vom Devices machen und hier einstellen.
Titel: Antw:Problem mit event-on-change-reading
Beitrag von: Gast45 am 31 Mai 2018, 19:58:36
Das folgende List habe ich unmittelbar nach einem geänderten Temperaturwert (25.1 -> 25.0) und unveränderten Luftfeuchtewert gezogen.
Wie man sieht, hat keine Berechnung des Taupunktes stattgefunden. Zudem erkenne ich hier auch noch ein weiteres Problem, das ich nicht verstehe, nämlich dass der STATE noch ganz andere Werte zeigt. Wann wird der genau nachgezogen?

Internals:
   CHANGED   
   NAME       SensorAussen
   NR         41
   STATE      T: 25.6 H: 62.0
   TYPE       dummy
   OLDREADINGS:
   READINGS:
     2018-02-04 12:12:25   Batteriewechsel 0
     2018-05-31 19:51:24   absFeuchte      14.6
     2018-05-31 19:51:24   dewpoint        17.6
     2018-05-31 19:54:04   humidity        63.0
     2018-05-31 19:54:04   temperature     25.0
Attributes:
   event-min-interval .*:300
   event-on-change-reading humidity,temperature
   group      Sensordaten clonen – verarbeiten – loggen
   icon       temperature_humidity
   room       Sensoren
Titel: Antw:Problem mit event-on-change-reading
Beitrag von: CoolTux am 31 Mai 2018, 20:07:08
Min Intervall bedeutet das mindestens 300s gewartet werden soll seit dem letzten Event.
Schau bitte im Eventmonitor nach ob ein Event kommt.
Titel: Antw:Problem mit event-on-change-reading
Beitrag von: RomanticBoy83 am 31 Mai 2018, 20:09:29
Mal gerate: Wie setzt du denn die Temperatur?
Ein Notify, welches auf das auslösende Gerät reagiert und auf dieses dann ein Reading setzt, löst kein weiteres Event aus.
Vermutung: Du reagiert auf ein Event dieses Dummy und setzt auf diesen Dummy das Reading?!
Titel: Antw:Problem mit event-on-change-reading
Beitrag von: CoolTux am 31 Mai 2018, 20:11:06
Zitat von: RomanticBoy83 am 31 Mai 2018, 20:09:29
Mal gerate: Wie setzt du denn die Temperatur?
Ein Notify, welches auf das auslösende Gerät reagiert und auf dieses dann ein Reading setzt, löst kein weiteres Event aus.
Vermutung: Du reagiert auf ein Event dieses Dummy und setzt auf diesen Dummy das Reading?!

Auch bei diesem Ansatz hilft ein Blick in den Eventmonitor.
Titel: Antw:Problem mit event-on-change-reading
Beitrag von: Gast45 am 31 Mai 2018, 20:47:35
Also im Detail mache ich folgendes:

1. Sammeln der Temperatur und Luftfeuchte in einem "SensorAussenQuelle". Mehr passiert hier nicht, um mir einen Batteriewechsel möglichst einfach zu halten.

2. Alle 20 Sekunden werden mittel at-Routine die beiden Werte nach SensorAussen kopiert mit:
+*00:00:20 { my $temp= ReadingsVal("SensorAussenQuelle","temperature",0) ;
my $hum= ReadingsVal("SensorAussenQuelle","humidity",0) ;
fhem("setreading SensorAussen temperature $temp");
fhem("setreading SensorAussen humidity $hum");}


3. Die geschilderte Berechnung des Taupunktes, wenn sich einer der Werte ändert aber mindestens alle 5 Minuten eine Berechnung.

Beispiel 1 mit Berechnung nach Ablauf von 5 Minuten:
Internals:
   NAME       SensorAussen
   NR         41
   STATE      T: 25.6 H: 62.0
   TYPE       dummy
   OLDREADINGS:
   READINGS:
     2018-02-04 12:12:25   Batteriewechsel 0
     2018-05-31 20:11:44   absFeuchte      14.4
     2018-05-31 20:11:44   dewpoint        17.3
     2018-05-31 20:11:44   humidity        64.0
     2018-05-31 20:11:44   temperature     24.6
Attributes:
   event-min-interval .*:300
   event-on-change-reading humidity,temperature
   group      Sensordaten clonen – verarbeiten – loggen
   icon       temperature_humidity
   room       Sensoren



Beispiel 2 mit geänderter Luftfeuchte (deutlich vor Ablauf von 5 Minuten):
Internals:
   NAME       SensorAussen
   NR         41
   STATE      T: 25.6 H: 62.0
   TYPE       dummy
   OLDREADINGS:
   READINGS:
     2018-02-04 12:12:25   Batteriewechsel 0
     2018-05-31 20:39:24   absFeuchte      13.8
     2018-05-31 20:39:24   dewpoint        16.6
     2018-05-31 20:39:24   humidity        65.0
     2018-05-31 20:39:24   temperature     23.6
Attributes:
   event-min-interval .*:300
   event-on-change-reading humidity,temperature
   group      Sensordaten clonen – verarbeiten – loggen
   icon       temperature_humidity
   room       Sensoren



Insofern kann ich den schon öfters gelesenen Hinweis
ZitatMin Intervall bedeutet das mindestens 300s gewartet werden soll seit dem letzten Event.
nicht verstehen, denn es funktioniert scheinbar so wie ich es verstanden hatte? *achselzuck*

ZitatVermutung: Du reagiert auf ein Event dieses Dummy und setzt auf diesen Dummy das Reading?!
Auch wird doch scheinbar ein Event erzeugt, wenn sich die Luftfeuchtigkeit ändert, nicht aber wenn sich die Temperatur ändert? Und bei beiden Werten verfahre ich doch auch identisch. Nur die Temperatur ist der zweite Wert im Attribut event-on-change-reading.
Allerdings habe ich gerade mal die Readings verdreht:
event-on-change-reading temperature,humidity
Auch hier keine Berechnung bei Änderung von Temperatur, aber bei Änderung der Feuchtigkeit.
Titel: Antw:Problem mit event-on-change-reading
Beitrag von: CoolTux am 31 Mai 2018, 20:59:47
Eventmonitor
Titel: Antw:Problem mit event-on-change-reading
Beitrag von: RomanticBoy83 am 31 Mai 2018, 21:04:11
Du solltest doch den Event-Monitor zur Hilfe nehmen!
Dieses drehen ist Wurst -> drehe mal im "at" die Reihenfolge. Ich vermute ja, dass du nur das letzte bekommst.
Titel: Antw:Problem mit event-on-change-reading
Beitrag von: Gast45 am 31 Mai 2018, 21:06:36
ZitatEventmonitor

ja  :D

2018-05-31 21:00:24 at cp_SensorAussenQuelle_to_SensorAussen Next: 21:00:44
2018-05-31 21:00:29 CUL_TX SensorAussenQuelle T: 23.0 H: 67.0
2018-05-31 21:00:29 CUL_TX SensorAussenQuelle temperature: 23.0
2018-05-31 21:00:30 CUL_TX SensorAussenQuelle T: 23.0 H: 67.0
2018-05-31 21:00:30 CUL_TX SensorAussenQuelle humidity: 67.0
2018-05-31 21:00:44 at cp_SensorAussenQuelle_to_SensorAussen Next: 21:01:04
2018-05-31 21:01:04 at cp_SensorAussenQuelle_to_SensorAussen Next: 21:01:24
2018-05-31 21:01:24 at cp_SensorAussenQuelle_to_SensorAussen Next: 21:01:44
2018-05-31 21:01:27 CUL_TX SensorAussenQuelle T: 22.9 H: 67.0
2018-05-31 21:01:27 CUL_TX SensorAussenQuelle temperature: 22.9
2018-05-31 21:01:28 CUL_TX SensorAussenQuelle T: 22.9 H: 67.0
2018-05-31 21:01:28 CUL_TX SensorAussenQuelle humidity: 67.0
2018-05-31 21:01:44 dummy SensorAussen temperature: 22.9
2018-05-31 21:01:44 at cp_SensorAussenQuelle_to_SensorAussen Next: 21:02:04
2018-05-31 21:02:04 at cp_SensorAussenQuelle_to_SensorAussen Next: 21:02:24
2018-05-31 21:02:24 at cp_SensorAussenQuelle_to_SensorAussen Next: 21:02:44
2018-05-31 21:02:26 CUL_TX SensorAussenQuelle T: 22.9 H: 67.0
2018-05-31 21:02:26 CUL_TX SensorAussenQuelle temperature: 22.9
2018-05-31 21:02:26 CUL_TX SensorAussenQuelle T: 22.9 H: 67.0
2018-05-31 21:02:26 CUL_TX SensorAussenQuelle humidity: 67.0
2018-05-31 21:02:44 at cp_SensorAussenQuelle_to_SensorAussen Next: 21:03:04
2018-05-31 21:03:04 at cp_SensorAussenQuelle_to_SensorAussen Next: 21:03:24
2018-05-31 21:03:24 CUL_TX SensorAussenQuelle T: 22.9 H: 67.0
2018-05-31 21:03:24 CUL_TX SensorAussenQuelle temperature: 22.9
2018-05-31 21:03:24 at cp_SensorAussenQuelle_to_SensorAussen Next: 21:03:44
2018-05-31 21:03:24 CUL_TX SensorAussenQuelle T: 22.9 H: 67.0
2018-05-31 21:03:24 CUL_TX SensorAussenQuelle humidity: 67.0
2018-05-31 21:03:44 at cp_SensorAussenQuelle_to_SensorAussen Next: 21:04:04
2018-05-31 21:04:04 dummy SensorAussen humidity: 67.0
2018-05-31 21:04:04 at cp_SensorAussenQuelle_to_SensorAussen Next: 21:04:24
2018-05-31 21:04:22 CUL_TX SensorAussenQuelle T: 22.9 H: 67.0
2018-05-31 21:04:22 CUL_TX SensorAussenQuelle temperature: 22.9
2018-05-31 21:04:23 CUL_TX SensorAussenQuelle T: 22.9 H: 67.0
2018-05-31 21:04:23 CUL_TX SensorAussenQuelle humidity: 67.0
2018-05-31 21:04:24 at cp_SensorAussenQuelle_to_SensorAussen Next: 21:04:44
2018-05-31 21:04:44 at cp_SensorAussenQuelle_to_SensorAussen Next: 21:05:04


Ich würde sagen, dass es Events gibt?
Temperatur um 21:01:44
Luftfeuchte um 21:04:04


ZitatDieses drehen ist Wurst -> drehe mal im "at" die Reihenfolge. Ich vermute ja, dass du nur das letzte bekommst.
Das hatte ich auch vermutet, aber dem wiederspricht der Eventmonitor, oder nicht?
Titel: Antw:Problem mit event-on-change-reading
Beitrag von: Gast45 am 31 Mai 2018, 21:17:48
Die ganze Spielerei habe ich erst nach dem letzten Update ändern müssen, weil sich was an 98_dewpoint geändert hat und damit meine Konfig nicht mehr so funktionierte wie vorher.

Vor dem Update hatte ich die Werte nicht einzeln kopiert, sondern gemeinsam im state gesetzt und mit dewpoint den STATE erweitert. Das klappt nun nicht mehr und die Werte wurden durch mein stateFormat unbrauchbar im Log geschrieben. Ganz genau bekomme ich es jetzt nicht mehr auf die Reihe. Jedenfalls musste ich nur das stateFormat löschen, damit wenigstens die Werte im Log waren.

Mit den hier in diesem Thema oben geschilderten Verfahren wollte ich nun erreichen, dass ich auch die Zahlenwerte wieder im STATE stehen habe. Allerdings landen dann gar keine Werte mehr im Log :)

Soviel vielleicht zum Hintergrund. Mist ist halt, dass die ganze Sucherei extrem zeitaufwendig ist, weil man von den mehr oder weniger oft kommenden Messwerten abhängig ist. Und die sind dann auch oft noch unverändert. :(


Dieses (alte) Verfahren klappt:
Internals:
   CHANGED   
   NAME       SensorAussen
   NR         41
   STATE      T: 22.6 H: 68.0
   TYPE       dummy
   OLDREADINGS:
   READINGS:
     2018-02-04 12:12:25   Batteriewechsel 0
     2018-05-31 21:18:34   absFeuchte      13.6
     2018-05-31 21:19:14   state           T: 22.6 H: 68.0
Attributes:
   event-min-interval .*:300
   event-on-change-reading state
   group      Sensordaten clonen – verarbeiten – loggen
   icon       temperature_humidity
   room       Sensoren


Hier kopiere ich so:
+*00:00:20 { my $temp= ReadingsVal("SensorAussenQuelle","temperature",0) ;
my $hum= ReadingsVal("SensorAussenQuelle","humidity",0) ;
fhem("set SensorAussen T: $temp H: $hum");}


Und den Taupunkt berechne ich mit "T H D"


Nur mir gefällt halt nicht, dass ich den STATE nicht dauerhaft so darstellen kann:
T: 22.5 H: 68.0 D: 16.3 A: 13.6

Das wollte ich durch die oben dargestellte Umstellung versuchen zu ändern. Mit den Problemen die mir da so aufgefallen sind:
1. Berechnung
2. keine Werte mehr im Log
Titel: Antw:Problem mit event-on-change-reading
Beitrag von: amenomade am 31 Mai 2018, 21:21:11
ZitatIch würde sagen, dass es Events gibt?
Temperatur um 21:01:44
Luftfeuchte um 21:04:04
Ja, auf dem Device SensorAussenQuelle, nicht auf dem Device SensorAussen
Titel: Antw:Problem mit event-on-change-reading
Beitrag von: Gast45 am 31 Mai 2018, 21:25:26
ZitatJa, auf dem Device SensorAussenQuelle, nicht auf dem Device SensorAussen

Ne, auf SensorAussen, oder nicht:
2018-05-31 21:01:44 dummy SensorAussen temperature: 22.9
2018-05-31 21:04:04 dummy SensorAussen humidity: 67.0
Titel: Antw:Problem mit event-on-change-reading
Beitrag von: amenomade am 31 Mai 2018, 21:32:32
Ah ja sorry.
Aber ich verstehe nicht, was nicht funktioniert. Wenn z.B. die Temperatur sich ändert, wird nach dem at diese Temperatur in SensorAussen übertragen.
2018-05-31 21:01:24 at cp_SensorAussenQuelle_to_SensorAussen Next: 21:01:44
...
2018-05-31 21:01:27 CUL_TX SensorAussenQuelle temperature: 22.9
...
2018-05-31 21:01:44 dummy SensorAussen temperature: 22.9
Titel: Antw:Problem mit event-on-change-reading
Beitrag von: Gast45 am 31 Mai 2018, 21:38:41
ZitatAber ich verstehe nicht, was nicht funktioniert. Wenn z.B. die Temperatur sich ändert, wird nach dem at diese Temperatur in SensorAussen übertragen.

Ja, das Kopieren der Werte von SensorAussenQuelle nach SensorAussen klappt auch einwandfrei.
Nur die Berechnung des Taupunktes wird nur bei Änderung der Luftfeuchtigkeit oder nach Ablauf von 5 Minuten tatsächlich durchgeführt, nicht aber, wenn sich die Temperatur ändert.

Ich hatte weiter oben einige Beispiele eingefügt, wo man sehen konnte, dass trotz geänderter Temperatur der Taupunkt nicht neu berechnet wurde (alte Zeitstempel) [siehe Antwort #2].
Titel: Antw:Problem mit event-on-change-reading
Beitrag von: amenomade am 31 Mai 2018, 21:43:18
Wie wird den Taupunkt kalkuliert? Bitte die entsprechende "list"
Titel: Antw:Problem mit event-on-change-reading
Beitrag von: RomanticBoy83 am 31 Mai 2018, 21:47:43
Scheint doch alles zu funktionieren. Ich verstehe das Problem nicht wirklich.
Zum Test - um nicht warten zu müssen - kannst du auch ein setreading auf deine Quelle machen um eine Änderung anzustoßen.

Noch ein Tip/"ichglaube": das reading mit dem Namen "state" wird automatisch als "STATE" übernommen. Vielleicht erzeugst du dir so den gewünschten STATE. Aber wie geschildert, so richtig folgen kann ich dem Problem nicht.
Titel: Antw:Problem mit event-on-change-reading
Beitrag von: Gast45 am 31 Mai 2018, 22:11:09
@amenomade:
Taupunktberechnung:

Internals:
   CMD_TYPE   dewpoint
   DEF        dewpoint SensorAussen temperature humidity dewpoint
   DEV_REGEXP SensorAussen
   HUM_NAME   humidity
   NAME       dew_state_Aussen
   NEW_NAME   dewpoint
   NOTIFYDEV  SensorAussen
   NR         37
   NTFY_ORDER 10-dew_state_Aussen
   STATE      active
   TEMP_NAME  temperature
   TYPE       dewpoint
Attributes:
   absFeuchte 1


@RomanticBoy83:
ganz knapp nochmal in Antwort #14


@alle:
Dies steht im CommandRef:
Zitatevent-min-interval
This attribute takes a comma-separated list of reading:minInterval pairs. You may use regular expressions for reading. Events will only be generated, if at least minInterval seconds elapsed since the last reading of the matched type. If event-on-change-reading is also specified, they are combined with OR: if one of them is true, the event is generated.
Bei Kombination gilt: Bei Änderung oder nach Zeitablauf
Titel: Antw:Problem mit event-on-change-reading
Beitrag von: amenomade am 01 Juni 2018, 00:34:03
Kannst Du bitte das dewpoint Device auf verbose 5 stellen, und die Log posten?
Titel: Antw:Problem mit event-on-change-reading
Beitrag von: Gast45 am 01 Juni 2018, 15:40:50
Hallo,

ich habe das verbose eingestellt und per Hand die Werte geändert. Wie gestern schon gesehen wird sowohl bei Änderung von humidity als auch temperature ein Event erzeugt. Die Ergebnisse aus dem LOG sind folgende:

LOG nach Änderung humidity (83->82) im SensorAussenQuelle (Daten werden wie beschrieben alle 20 Sekunden nach SensorAussen kopiert):
2018.06.01 15:34:39 4: dewpoint_notify: cmd_type=dewpoint devname=SensorAussen dewname=dew_state_Aussen, dev=SensorAussen, dev_regex=SensorAussen temp_name=temperature hum_name=humidity
2018.06.01 15:34:39 5: dewpoint_notify: s='humidity: 82'
2018.06.01 15:34:39 5: dewpoint_notify: evName='humidity:' val=82'
2018.06.01 15:34:39 5: dewpoint_notify humidity! dev=SensorAussen, hum_name=humidity, hum=82
2018.06.01 15:34:39 5: dewpoint max_timediff=1
2018.06.01 15:34:39 5: >dev=SensorAussen, temp_name=temperature, reference temperature=20 (0), hum=82
2018.06.01 15:34:39 5: dewpoint_notify: dewpoint=16.8
2018.06.01 15:34:39 5: dewpoint absFeuchte= 14.1
2018.06.01 15:34:39 5: dewpoint_notify: current=16.8



LOG nach Änderung temperature (20->21) im SensorAussenQuelle (Daten werden wie beschrieben alle 20 Sekunden nach SensorAussen kopiert):
2018.06.01 15:35:59 4: dewpoint_notify: cmd_type=dewpoint devname=SensorAussen dewname=dew_state_Aussen, dev=SensorAussen, dev_regex=SensorAussen temp_name=temperature hum_name=humidity
2018.06.01 15:35:59 5: dewpoint_notify: s='temperature: 21'
2018.06.01 15:35:59 5: dewpoint_notify: evName='temperature:' val=21'
2018.06.01 15:35:59 5: dewpoint_notify temperature! dev=SensorAussen, temp_name=temperature, temp=21
2018.06.01 15:35:59 5: dewpoint max_timediff=1
2018.06.01 15:35:59 5: >dev=SensorAussen, hum_name=humidity, reference humidity=82 (20), temp=21


Man sieht, dass die Routine aufgerufen wird, aber die Berechnung bei Änderung der Temperatur nicht erfolgt. Ich kann hieraus aber nicht erkennen wieso nicht.....
Titel: Antw:Problem mit event-on-change-reading
Beitrag von: amenomade am 02 Juni 2018, 00:09:56
Im ersten Fall war time_diff 0, sprich < max_timediff. Deswegen erfolgte die Kalkulation.
Beim 2. Fall war time_diff 20, sprich > max_timediff. Deswegen keine Kalkulation.

Wenn nur ein Wert (temperature) geändert wurde, versucht dewpoint den anderen Wert (humidity) aus dem Reading zu lesen, aber er kalkuliert nicht, wenn dieser anderen Wert zu alt ist (älter als max_timediff).
Titel: Antw:Problem mit event-on-change-reading
Beitrag von: Gast45 am 02 Juni 2018, 10:28:46
Ah, das ist der Wert in der Klammer? Auf die Idee, dass ich mit max_timediff ein Problem haben könnte, bin ich gar nicht gekommen, weil ich beide Werte doch quasi gleichzeitig schreibe. Aber klar, ich schreibe zuerst die Temperatur, dann wird schon das Event (offenbar ein Interrupt) erzeugt und die Luftfeuchtigkeit ist noch 20 Sekunden alt.

Man muss hier in Millisekunden denken und wissen, dass ein Event ein Interrupt ist, der sich zwischen den Kopierschritt schiebt.
Danke für die Unterstützung ..... max_timediff = 60 sollte dieses Problem lösen :)


Bleibt nur noch das, warum bei dieser Konfiguration nichts mehr ins FileLog geschrieben wird.
SensorAussen:T:.*
Aber as gucke ich mir nochmal an. Wird vielleicht daran liegen, dass es das Reading state so nicht mehr gibt?
Titel: Antw:Problem mit event-on-change-reading
Beitrag von: amenomade am 02 Juni 2018, 11:34:56
Zitat von: Gast45 am 02 Juni 2018, 10:28:46
Ah, das ist der Wert in der Klammer? Auf die Idee, dass ich mit max_timediff ein Problem haben könnte, bin ich gar nicht gekommen,
Ja, isses. Auf die Idee wäre ich auch nicht gekommen, wenn ich nicht im Code geguckt hätte ;)

Ein Reading state gibt es nw. immer. state reagiert aber ein bisschen anders, was Events angeht.
https://fhem.de/commandref_DE.html#DOIF_addStateEvent
Schau mal die Events im EventMonitor, und guck was er vorschlägt, wenn Du die Zeile markierst, und dann dort auf "Create/Modify Device" klickst und FileLog auswählst. Da kriegst Du die richtige Regex. Vermutlich fehlt ein . vor dem T
Titel: Antw:Problem mit event-on-change-reading
Beitrag von: Gast45 am 02 Juni 2018, 11:41:32
Ich habe eine noch schönere Lösung, um das max_timediff-Problem zu umgehen, weil man so weniger am Standard rumschrauben muss. Wenn man beide Werte (T/H) nicht einzeln, sondern nur einmal an eine FHEM-Routine übergibt, dann klappt es auch.

Ich habe die Definition für das Kopieren der Werte jetzt so gelöst:
+*00:00:20 { my $temp= ReadingsVal("SensorAussenQuelle","temperature",0) ;
my $hum= ReadingsVal("SensorAussenQuelle","humidity",0) ;
fhem("setreading SensorAussen temperature $temp;setreading SensorAussen humidity $hum");}
Titel: Antw:Problem mit event-on-change-reading
Beitrag von: Gast45 am 02 Juni 2018, 13:54:26
Das Problem mit dem Loggen scheint nicht trivial zu sein.

Hier nochmal der zeitliche Ablauf (erspart sich nochmal den ganzen Thread durchzulesen):

Vor dem letzten Update
Ich habe T/H alle 20 Sekunden in den state von SensorAussen kopiert. Den Taupunkt hatte ich mit "T H D" berechnet, wodurch mein STATE entsprechend erweitert wurde. Für die textuelle Ansicht hatte ich auch noch einen stateFormat-"Trick".
attr SensorAussen stateFormat state D: dewpoint A: absFeuchte
--> Im FileLog stand dann immer sowas:
2018-05-23_19:24:48 SensorAussen T: 24.3 H: 43.0 D: 10.9 A: 9.5
2018-05-23_19:28:28 SensorAussen T: 24.2 H: 43.0 D: 10.8 A: 9.4
2018-05-23_19:32:08 SensorAussen T: 24.1 H: 43.0 D: 10.7 A: 9.4

Und im STATE stand bei neu berechneten Werten durch die Berechnungen über 98_dewpoint:
T: 24.2 H: 43.0 D: 10.8 A: 9.4
oder, wenn keine neuen Werte berechnet wurden und damit stateFormat griff
T: 24.2 H: 43.0 D: n.V. A: 9.4
Dazu hatte ich ein UserReading dewpoint mit dem Wert "n.V." angelegt. Trick  ;D

Beim Letzen Update
Hier hat sich in 98_dewpoint beim Umgang mit stateFormat etwas geändert. Ohne dass ich etwas geändert hatte, stand seitdem im FileLog nur noch:
2018-05-23_19:34:31 SensorAussen T: 24.1 H: 43.0
2018-05-23_19:36:21 SensorAussen T: 24.0 H: 43.0
2018-05-23_19:37:21 SensorAussen T: 24.0 H: 42.0


Daraufhin hatte ich das stateFormat einfach nur gelöscht und im FileLog steht seit dem wieder:
2018-05-24_20:47:23 SensorAussen T: 19.3 H: 70.0 D: 13.7 A: 11.6
2018-05-24_20:52:43 SensorAussen T: 19.3 H: 70.0 D: 13.7 A: 11.6
2018-05-24_20:53:03 SensorAussen T: 19.3 H: 71.0 D: 13.9 A: 11.7


Allerdings habe ich jetzt auch im SATE nur noch T und H, hätte aber gerne auch wieder D und A.

Seit dem
Jetzt versuche ich irgendwie die alte Darstellung wieder herzustellen. Meine Erkenntnis bisher:
1. Offenbar darf man den Taupunkt nicht so berechnen:
dewpoint SensorAussen temperature humidity dewpoint
sondern so
dewpoint SensorAussen T H D
Das ist aber laut CommandRef nicht mehr anzuwenden
ZitatVeraltet, für neue Definitionen nicht mehr benutzen
  Wenn <temp_name> T lautet, wird die Temperatur aus state T: H: benutzt und <new_name> zu STATE hinzugefügt. Das hinzufügen zu STATE erfolgt nur, falls im Zielgerät das Attribut "stateFormat" nicht definiert ist.

2. Wenn man dennoch letztere Definition benutzt, dann führt
stateFormat state D: dewpoint A: absFeuchte
seit dem Update aber dazu, dass folgendes im STATE steht:
T: 19.3 H: 70.0 13.7: n.V. A: 11.6
"D" wird durch ein seit dem Update erzeugten Reading D ersetzt. Der Haken an der Sache ist nur, dass D nur genau einmal erzeugt und dann nie wieder aktualisiert wird :(
Sonst hätte ich das stateFormat einfach mit
[sprintf("....")}
umgeschrieben.


Darum nun die ganze Aktion auf
dewpoint SensorAussen temperature humidity dewpoint
umzustellen.
Hier habe ich mit dem stateFormat
attr SensorAussen stateFormat T: temperature H: humidity D: dewpoint A: absFeuchte
kein Problem. Aber das Loggen klappt halt nicht mehr. Über die Taupunktberechnung mit "T H D" gibt es im Logfile folgende Zeile am Ende der Taupunktberechnung:
dewpoint_notify: current=T: 26.1 H: 55 D: 16.4 A: 13.4
Die gibt es bei der Berechnung über "temperature humidity dewpoint" nicht.
Auch das Attribut
attr FileLog_SensorAussen addStateEvent 1
hat leider nicht geholfen.  :(
Man kann dann zwar "state" auswählen und der wird auch geloggt, aber "state" ist nicht gleich "STATE" und enthält D und A nicht.

Ich wühle mich mal durchs Forum.....


Titel: Antw:Problem mit event-on-change-reading
Beitrag von: amenomade am 03 Juni 2018, 00:16:40
Ich würde sagen: verschieb das Thread nach "Automatisierung" Unterforum. Dort werden dewpoint und Filelog gepflegt.
File                         Maintainer           Forum
=========================================================================
FHEM/92_FileLog.pm           rudolfkoenig         Automatisierung
FHEM/92_SingleFileLog.pm     rudolfkoenig         Automatisierung
FHEM/93_DbLog.pm             Tobias/DS_Starter    Automatisierung
FHEM/98_dewpoint.pm          hotbso               Automatisierung

Oder mach einfach ein neues Thread dort.
Titel: Antw:Problem mit event-on-change-reading
Beitrag von: Gast45 am 03 Juni 2018, 11:08:21
In dem Zusammenhang gibt es folgenden Thread, der sich schwerpunktmäßig auf das Loggen bezieht:

https://forum.fhem.de/index.php?topic=88098.msg807911#msg807911 (https://forum.fhem.de/index.php?topic=88098.msg807911#msg807911)