FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Gast45 am 24 Mai 2018, 20:33:54

Titel: 98_dewpoint seit Update 23.05.18 fehlerhaft?
Beitrag von: Gast45 am 24 Mai 2018, 20:33:54
Hallo zusammen,
Seit dem o.g. Update wird mit
define dew_state dewpoint dewpoint Aussen_1 T H D
nicht immer, aber immer mal wieder im Device ein Reading ,,D" mit dem Taupunktwert angelegt. Manchmal wird nur der STATE um den Taupunkt erweitert, und manchmal zusätzlich dieses Reading.
(stateFormat zu dieser Zeit nicht definiert)

Da ich aber eigentlich stateFormat nutze
stateFormat state D: dewpoint A: absFeuchte
wird mir dieses Format zerschossen, sobald das erste mal das Reading ,,D" erzeugt wird, weil dann das D durch den Wert des Readings ersetzt wird.

Hat das Problem noch jemand?

Titel: Antw:98_dewpoint seit Update 23.05.18 fehlerhaft?
Beitrag von: sash.sc am 24 Mai 2018, 23:28:43
Schaue mal hier.


https://r.tapatalk.com/shareLink?url=https%3A%2F%2Fforum%2Efhem%2Ede%2Findex%2Ephp%3Ftopic%3D87916%2E0&share_tid=87916&share_fid=75100&share_type=t

Dewpoint legte nach Update vom 17.05.2018 keine Taupunkt und absFeuchte an
(https://r.tapatalk.com/shareLink?url=https%3A%2F%2Fforum%2Efhem%2Ede%2Findex%2Ephp%3Ftopic%3D87916%2E0&share_tid=87916&share_fid=75100&share_type=t%3Cbr%20/%3E%3Cbr%20/%3EDewpoint%20legte%20nach%20Update%20vom%2017.05.2018%20keine%20Taupunkt%20und%20absFeuchte%20an)

Gesendet von meinem E6653 mit Tapatalk

Titel: Antw:98_dewpoint seit Update 23.05.18 fehlerhaft?
Beitrag von: Gast45 am 25 Mai 2018, 17:35:18
Ja, soweit so gut, nur wird das Reading D nicht regelmäßig aktualisiert. Die absFeuchte wird öfter aktualisiert, obwohl beides ja zeitgleich berechnet wird.
Außerdem wäre ein anderer Reading-Name statt D schöner, weil man dann ein schönes knappes stateFormat mit u.a. ,,D:" als Bezeichnung machen kann, ohne dass diese mit dem Wert des Readings überschrieben wird.

Mal ein aktueller Auszug:

DeviceOverview            T: 25.5 H: 52.0 D: 14.9 A: 12.3
D                       13.9                      2018-05-24 20:07:03
absFeuchte         12.4                      2018-05-25 17:43:43
state                  T: 25.6 H: 52.0      2018-05-25 17:44:23


Es gibt hier kein stateFormat und wie man sieht ist D von gestern, absFeuchte aktuell und der Overview weicht von allem nochmal ab. Unschön sag ich mal....

Titel: Antw:98_dewpoint seit Update 23.05.18 fehlerhaft?
Beitrag von: hotbso am 25 Mai 2018, 17:49:00
Das Reading heißt D, weil du das in deiner Definition so nennst. Siehe doch bitte in den anderen Thread oder die online Hilfe, da ist das beschrieben.

Gesendet von meinem Nexus 5X mit Tapatalk

Titel: Antw:98_dewpoint seit Update 23.05.18 fehlerhaft?
Beitrag von: Gast45 am 25 Mai 2018, 17:52:47
Sorry, ja stimmt mit dem Namen, war mir klar, hatte ich nur verdrängt. Aber mein ergänzter Satz oben zeigt weitere Diskrepanzen auf.....
Titel: Antw:98_dewpoint seit Update 23.05.18 fehlerhaft?
Beitrag von: hotbso am 25 Mai 2018, 17:58:30
Setze im dewpoint mal verbose auf 5. Dann wird sehr detailliert geloggt, wie die Werte zu Stande kommen.

Gesendet von meinem Nexus 5X mit Tapatalk

Titel: Antw:98_dewpoint seit Update 23.05.18 fehlerhaft?
Beitrag von: Gast45 am 25 Mai 2018, 19:01:41
Hier das Ergebnis, das meiner Meinung nach meine Schilderungen stützt.
Zunächst der Output im Log:

2018.05.25 18:45:23 4: dewpoint_notify: cmd_type=dewpoint devname=SensorAussen dewname=dew_state_Aussen, dev=SensorAussen, dev_regex=SensorAussen temp_name=T hum_name=H
2018.05.25 18:45:23 5: dewpoint_notify: s='T: 25.0 H: 56.0'
2018.05.25 18:45:23 5: dewpoint_notify: evName='T:' val=25.0'
2018.05.25 18:45:23 5: dewpoint_notify T: H:, temp=25.0 hum=56.0
2018.05.25 18:45:23 5: dewpoint max_timediff=1
2018.05.25 18:45:23 5: dewpoint_notify: dewpoint=15.6
2018.05.25 18:45:23 5: dewpoint absFeuchte= 12.9
2018.05.25 18:45:23 5: dewpoint_notify: current=T: 25.0 H: 56.0 D: 15.6 A: 12.9


Die Werte der letzte Zeile landen auch im File_LOG. Soweit so gut. Aber die Werte im Device sehen zu der Zeit leider so aus:

DeviceOverview        T: 25.0 H: 56.0

STATE                 T: 25.0 H: 56.0

D                     13.9              2018-05-24 20:07:03
absFeuchte            12.9              2018-05-25 18:45:23
Titel: Antw:98_dewpoint seit Update 23.05.18 fehlerhaft?
Beitrag von: Gast45 am 25 Mai 2018, 19:20:11
Ich habe noch einen Satz mitgeschrieben, weil hier der STATE vervollständigt wurde, was im vorherigen Beispiel irgendwie nicht der Fall war....

Log:

2018.05.25 19:14:43 4: dewpoint_notify: cmd_type=dewpoint devname=SensorAussen dewname=dew_state_Aussen, dev=SensorAussen, dev_regex=SensorAussen temp_name=T hum_name=H
2018.05.25 19:14:43 5: dewpoint_notify: s='T: 24.3 H: 58.0'
2018.05.25 19:14:43 5: dewpoint_notify: evName='T:' val=24.3'
2018.05.25 19:14:43 5: dewpoint_notify T: H:, temp=24.3 hum=58.0
2018.05.25 19:14:43 5: dewpoint max_timediff=1
2018.05.25 19:14:43 5: dewpoint_notify: dewpoint=15.5
2018.05.25 19:14:43 5: dewpoint absFeuchte= 12.8
2018.05.25 19:14:43 5: dewpoint_notify: current=T: 24.3 H: 58.0 D: 15.5 A: 12.8



Device:

DeviceOverview
SensorAussen        T: 24.3 H: 58.0 D: 15.5 A: 12.8

STATE              T: 24.3 H: 58.0 D: 15.5 A: 12.8

D             13.9 2018-05-24 20:07:03
absFeuchte     12.8 2018-05-25 19:14:43

state              T: 24.3 H: 58.0 2018-05-25 19:14:43


Edit:
Der erste Datensatz kann glaube ich ignoriert werden. Ich übertrage alle 20 Sekunden die Temperatur und Luftfeuchte von einem Gerät in das Device SensorAussen. Dadurch kann ich alle Konfigurationen an SensorAussen binden und habe es leichter bei einem Batteriewechsel, denn da erscheinen die Sensoren immer als völlig neues Gerät, das ich auf diese weise nicht aufwändig umprogrammieren muss. Dadurch verschwinden aber immer wieder Taupunkt und absFeuchte aus dem STATE.
Titel: Antw:98_dewpoint seit Update 23.05.18 fehlerhaft?
Beitrag von: hotbso am 26 Mai 2018, 11:45:36
Es sieht so aus, dass Du genau das Problem hast, wegen dem ich die Änderung in dewpoint gemacht habe. Die ist bei Dir nicht aktiv, weil du kein stateFormat benutzt.
Das ändern im STATE eines anderen devices muss (dewpoint ändert state im Sensor) ist problematisch.

Damit es richtig und deterministisch funktioniert, rate ich dir dringend zum Vorgehen mit stateFormat, wie hier https://forum.fhem.de/index.php?topic=87916.0 (https://forum.fhem.de/index.php?topic=87916.0) und in der Doku von dewpoint beschrieben.

Gruss
Holger
Titel: Antw:98_dewpoint seit Update 23.05.18 fehlerhaft?
Beitrag von: Gast45 am 26 Mai 2018, 12:54:53
Hi hotbso,

danke für deine Rückmeldung und schon mal sorry für den folgenden langen Text :)
Eigentlich hatte ich gedacht, dass ich es verstehe. Vor dem letzten Update hatte ich stateFormat genutzt, weil bei meiner Konfiguration im STATE immer nur T und H auftauchten, außer es kam zu einer Berechnung von D und A, dann kamen diese Werte für 20 Sekunden (s.u. at-Befehl) dazu.
Ich hatte da etwas getrickst: Durch das stateFormat (attr SensorAussen stateFormat state D: dewpoint A: absFeuchte) hatte ich erreicht, dass, wenn die Werte D/A nicht berechnet werden, der STATE nach dem stateFormat gebildet wird. Für "dewpoint" hatte ich ein userReading angelegt mit dem Wert "n.V.". Dadurch wußte ich, ob es aktuell berechnete Werte waren (D-Wert liegt durch 98_dewpoint vor) oder alte Werte (D-Wert ist "n.V." aus dem userReading), aber ich konnte zahlenmäßig immer den letzten Wert für absFeuchte lesen.

Nach dem Update blieben die Werte D/A komplett aus und ich habe stateFormat erstmal entfernt. Damit waren die Werte zumindest wieder im FileLog und damit in den Grafiken.

Also zur Erkläung im Detail mache ich vom Prinzip her folgendes:
Der Klimasensor liefert seine Daten (T/H) mal zeitnah mal weniger zeitnah und vereinzelt an ein Device vom Typ CUL_TX mit Namen "SensorAussenQuelle". Damit ich bei einem Batteriewechsel möglichst wenig Arbeit habe, passiert hier absolut nichts weiter.

Per at-Befehl kopiere ich alle 20 Sekunden die gerade vorliegenden Werte für T/H in den state von "SensorAussen". Zwar können die Werte in der Quelle zeitlich weiter auseinander liegen, aber davon weiß "SensorAussen" so natürlich nichts.
+*00:00:20 { my $temp= ReadingsVal("SensorAussenQuelle","temperature",0) ;
my $hum= ReadingsVal("SensorAussenQuelle","humidity",0) ;
fhem("set SensorAussen T: $temp H: $hum");}


Um nicht alle 20 Sekunden unveränderte Werte ins FileLog zu schreiben, werden Events nur ausgelöst, wenn der state sich ändert, aber mindestens alle 5 Minuten.
attr SensorAussen event-min-interval .*:300
attr SensorAussen event-on-change-reading state


Mit der ursprünglichen stateFormat Definition kann ich jetzt ohne Änderungen nichts mehr erreichen
attr SensorAussen stateFormat state D: dewpoint A: absFeuchte
Im Ergebnis würde bei mir jetzt "state", "D", "dewpoint" und "absFeuchte" durch die Readings ersetzt, wobei "D", wie du siehst nur einmal erzeugt und dann nie wieder aktualisiert wird.
T: 35.1 H: 33.0 13.9: n.V. A: 13.1


Ich könnte mir mit der jetzigen Philosophie von 98_dewpoint ja wieder mit stateFormat behelfen. Aber leider wird D offensichtlich nicht aufgefrischt.
Leider verstehe ich nicht, was du mit
ZitatDas ändern im STATE eines anderen devices muss (dewpoint ändert state im Sensor) ist problematisch.
meinst.
Ich ändere ja nach meinem Verständnis nichts in einem anderen Device? Aus SensorAussen wird Event-gesteuert dewpoint aufgerufen und sonst nichts weiter eigentlich. Und das ist doch auch Sinn und Zweck von 98_dewpoint?
define dew_state_Aussen dewpoint dewpoint SensorAussen T H D
Titel: Antw:98_dewpoint seit Update 23.05.18 fehlerhaft?
Beitrag von: hotbso am 26 Mai 2018, 13:43:15
Ja, aber dewpoint ist ja ein selber ein Gerät, nämlich ein anderes Gerät als dein Sensor SensorAussen. Mit define legt man ja ein Gerät im Sinne von FHEM an. Und das Gerät dewpoint soll den STATE deines Geräts AussenSensor ändern. Das tun bei Dir aber noch jede Menge andere Akteure.

Deshalb schlage ich vor:
Wie auch immer erzeuge die Readings temperature und humidity in deinem AussenSensor und sorge dafür, dass events generiert werden.

Definiere dewpoint mit
define dew_state_Aussen dewpoint dewpoint SensorAussen temperature humidity dewpoint

Wenn dann events für temperature/humidity erzeugt werden, legt dewpoint verläßlich die Readings dewpoint und absFeuchte an und löst die Events dafür aus.
Dein stateFormat vom AussenSensor wird getriggert und formatiert den state nach deinen Wünschen.

Das funktioniert dann deterministisch.
Titel: Antw:98_dewpoint seit Update 23.05.18 fehlerhaft?
Beitrag von: Gast45 am 26 Mai 2018, 14:46:01
Ich habe jetzt folgendes getan:

T/H alle 20 Sekunden kopieren:
+*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");}


Events auslösen:
attr SensorAussen event-min-interval .*:300
attr SensorAussen event-on-change-reading humidity,temperature


Taupunktberechnung:
define dew_state_Aussen dewpoint dewpoint SensorAussen temperature humidity dewpoint

STATE formatiert:
attr SensorAussen stateFormat T: temperature H: humidity D: dewpoint A: absFeuchte

Scheint soweit zu funktionieren, nur leider laufen die Werte jetzt nicht mehr ins FileLog. Das verstehe ich jetzt gerade noch nicht so recht, weil ich dachte, dass der STATE ins FileLog geschrieben wird. Damit die Files nicht so lang werden, hatte ich bisher folgendes Fileformat erzeugt:
2018-05-26_14:24:03 SensorAussen T: 36.6 H: 29.0 D: 15.7 A: 12.4
2018-05-26_14:28:03 SensorAussen T: 36.2 H: 29.0 D: 15.3 A: 12.2
2018-05-26_14:30:03 SensorAussen T: 36.3 H: 29.0 D: 15.4 A: 12.2


Dazu hatte ich folgende Definition für REGEXP im FileLog:
SensorAussen:T:.*
Titel: Antw:98_dewpoint seit Update 23.05.18 fehlerhaft?
Beitrag von: hotbso am 27 Mai 2018, 12:30:07
Ich vermute mal, Du musst addStateEvent setzen. Bin aber kein Experte für Filelog.
Titel: Antw:98_dewpoint seit Update 23.05.18 fehlerhaft?
Beitrag von: Gast45 am 28 Mai 2018, 19:54:46
Danke für den Tipp. Manchmal braucht man einen Anstoß, in welche Richtung es Sinn macht weiter zu lesen. Leider komme ich im Moment nicht dazu..... melde mich aber, ob es geholfen hat :)
Titel: Antw:98_dewpoint seit Update 23.05.18 fehlerhaft?
Beitrag von: Gast45 am 31 Mai 2018, 15:29:21
Ne, das hat leider nicht geholfen..... 
Titel: Antw:98_dewpoint seit Update 23.05.18 fehlerhaft?
Beitrag von: sash.sc am 31 Mai 2018, 17:21:37
Kann ich bestätigen.
Müsste nach der Umstellung im Modul jetzt jedes reading einzeln loggen. Habe auch das SVG umgestellt.
Wollte mir den state;T:.* die logs etwas kleiner halten.

Gruß Sascha

Gesendet von meinem E6653 mit Tapatalk

Titel: Antw:98_dewpoint seit Update 23.05.18 fehlerhaft?
Beitrag von: Gast45 am 31 Mai 2018, 22:45:10
Beruhigend, dass ich nicht allein das Problem habe :)

Ich habe aber noch die Hoffnung, das irgendwie wieder hin zu bekommen....
Wenn ich mal irgendwann Zeit habe. Das Probieren frisst ja schon ordentlich Zeit.
Titel: Antw:98_dewpoint seit Update 23.05.18 fehlerhaft?
Beitrag von: Gast45 am 02 Juni 2018, 22:07:49
Ich habe eine Lösung, die mir zwar auch noch nicht 100%-ig gefällt, aber es kommt dem vorherigen wieder nahe. Auch muss man hier trotzdem jedes SVG wieder anpassen, weil die Werte eine Position nach hinten verschoben sind.

Ich habe einfach ein userReading angelegt
attr <device> userReading all {sprintf("T: %.1f H: %.1f D: %.1f A: %.1f", ReadingsVal("<device>","temperature",0),ReadingsVal("<device>","humidity",0),ReadingsVal("<device>","dewpoint",0),ReadingsVal("<device>","absFeuchte",0))}

<device> natürlich duch das individuell genutzte ersetzen.


Dass die Position im Log gleich bleibt und somit die SVG's nicht angepasst werden müssen, kann man bestimmt wie folgt machen:
attr <device> userReading T {sprintf("%.1f H: %.1f D: %.1f A: %.1f", ReadingsVal("<device>","temperature",0),ReadingsVal("<device>","humidity",0),ReadingsVal("<device>","dewpoint",0),ReadingsVal("<device>","absFeuchte",0))}

Das Reading heißt hier T und dafür steht T nicht mehr direkt im Reading.
Titel: Antw:98_dewpoint seit Update 23.05.18 fehlerhaft?
Beitrag von: LuckyDay am 02 Juni 2018, 22:58:35
@Gast45

mir geht es genauso, deswegen
attr global exclude_from_update 98_dewpoint.pm
Titel: Antw:98_dewpoint seit Update 23.05.18 fehlerhaft?
Beitrag von: Gast45 am 02 Juni 2018, 23:03:54
Zitatattr global exclude_from_update 98_dewpoint.pm
Bewirkt das, dass 98_dewpoint auf der eigenen Installation von Updates ausgenommen wird?

Ich bin kein Freund davon, auf immer und ewig auf einer alten Version hängen zu bleiben. Spätestens wenn man mal ganz neu installieren muss, läuft man hinter der richtigen alten Version hinterher, oder nicht? :)
Titel: Antw:98_dewpoint seit Update 23.05.18 fehlerhaft?
Beitrag von: sash.sc am 02 Juni 2018, 23:15:05
Das Exclude wäre auch ne Möglichkeit gewesen. Ich möchte auch das System eigentlich immer aktuell halten.

Habe deswegen auch die FileLogs alle umgestellt, so dass jedes reading einzeln geschrieben wird.

Gruß Sascha

Gesendet von meinem E6653 mit Tapatalk

Titel: Antw:98_dewpoint seit Update 23.05.18 fehlerhaft?
Beitrag von: LuckyDay am 02 Juni 2018, 23:20:27
Naja, das alte Modul macht das was es soll, ich habe einfach keine Lust meine SVGs und FileLogs der letzten Jahre (7) zu ändern,
für null Vorteile der neuen Version.

die alten Versionen kann man sich auch aus dem SVN ziehen, oder man hat sie in seinen backups.
es gibt ja mehrere Developer die so einen Hauruck update machen, wo die Installation dann nicht mehr so läuft wie gehabt :(
so als Bsp OWSERVER , das geht gar nicht.
Titel: Antw:98_dewpoint seit Update 23.05.18 fehlerhaft?
Beitrag von: Gast45 am 02 Juni 2018, 23:21:38
Ich glaube meine in Antwort #17 geschilderte Lösung hat noch einen Haken. Wenn sich Werte ändern, dann erscheinen zwei Einträge im FileLog.

Einmal mit den neuen Messwerten, aber noch alte Werte für D und A.
Und einmal mit neuen Messwerten und aktuell berechneten Werte für D und A.

Der erste Eintrag ist natürlich total unnütz, weil die Werte nicht zusammenpassen.

Wenn ich Zeit finde, gucke ich morgen nochmal..... :(
Titel: Antw:98_dewpoint seit Update 23.05.18 fehlerhaft?
Beitrag von: Gast45 am 03 Juni 2018, 10:57:29
Hallo zusammen,

ich versuche immer noch die Darstellung von Klimadaten wieder so herzustellen, wie es vor dem letzten Update funktionierte. Insbesondere hätte ich gerne wieder Folgendes erreicht:

1. Ein relativ kompaktes FileLog nach folgendem Schema:
2018-05-22_14:40:08 SensorAussen T: 28.5 H: 38.0 D: 12.8 A: 10.6
2018-05-22_14:42:08 SensorAussen T: 28.4 H: 38.0 D: 12.7 A: 10.5
2018-05-22_14:44:08 SensorAussen T: 28.3 H: 38.0 D: 12.6 A: 10.5
2018-05-22_14:46:08 SensorAussen T: 28.2 H: 38.0 D: 12.5 A: 10.4

Es sollen dabei nur geänderte Werte erfasst werden, aber mindestens alle 3 Minuten soll auf jeden Fall ein Eintrag erfolgen.

--> userReading und event-on-....


2. Der STATE soll ebenfalls nach diesem Schema aufgebaut sein:
T: 28.5 H: 38.0 D: 12.8 A: 10.6

--> stateFormat


Lösungsversuch:

Nach vielen Versuchen bin ich der Meinung, dass diese Konfiguration den Wünsche am nähesten kommt:
Internals:
   CHANGED   
   NAME       SensorAussen
   NR         41
   STATE      T: 22.0 H: 74.0 D: 17.1 A: 14.3
   TYPE       dummy
   OLDREADINGS:
   READINGS:
     2018-02-04 12:12:25   Batteriewechsel 0
     2018-06-03 10:52:32   absFeuchte      14.3
     2018-06-03 10:52:32   dewpoint        17.1
     2018-06-03 10:52:52   humidity        74.0
     2018-06-03 10:52:52   state           T: 22.0 H: 74.0 D: 17.1 A: 14.3
     2018-06-03 10:52:52   temperature     22.0
Attributes:
   event-min-interval .*:175
   event-on-change-reading humidity,temperature,state
   group      Sensordaten clonen – verarbeiten – loggen
   icon       temperature_humidity
   room       Sensoren
   stateFormat {sprintf("T: %.1f H: %.1f D: %.1f A: %.1f", ReadingsVal("SensorAussen","temperature",0),
ReadingsVal("SensorAussen","humidity",0),
ReadingsVal("SensorAussen","dewpoint",0),
ReadingsVal("SensorAussen","absFeuchte",0))}
   userReadings state {sprintf("T: %.1f H: %.1f D: %.1f A: %.1f", ReadingsVal("SensorAussen","temperature",0),
ReadingsVal("SensorAussen","humidity",0),
ReadingsVal("SensorAussen","dewpoint",0),
ReadingsVal("SensorAussen","absFeuchte",0))}


Und FileLog gefiltert nach:
REGEXP     SensorAussen:T:.*


Allerdings ergibt sich da ein Problem im FileLog:
2018-06-03_10:49:52 SensorAussen T: 22.0 H: 74.0 D: 17.1 A: 14.3
2018-06-03_10:52:52 SensorAussen T: 22.0 H: 74.0 D: 17.1 A: 14.3
2018-06-03_10:53:52 SensorAussen T: 25.0 H: 74.0 D: 17.1 A: 14.3
2018-06-03_10:53:52 SensorAussen T: 25.0 H: 74.0 D: 20.0 A: 17.0

Wie man sieht erscheinen bei Änderungen zwei Zeilen im FileLog. Die letzte Zeile ist in Ordnung, weil sie konsistente Daten enthält. Die vorletzte Zeile jedoch enthält noch die alten Werte für D und A, aber schon die neuen für T und H. Die Werte dieser Zeile passen somit nicht zusammen.
Gibt es hier noch einen Trick, wie ich das verhindern kann?

Ich glaube ja, dass die von mir eingebrachte Idee das pauschal ändern/vereinfachen könnte:
https://forum.fhem.de/index.php/topic,88336.0.html (https://forum.fhem.de/index.php/topic,88336.0.html)