FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Amenophis86 am 28 Juli 2017, 01:05:18

Titel: deleteBeforeUpdate keine neuen Readings (CloneDummy)
Beitrag von: Amenophis86 am 28 Juli 2017, 01:05:18
Bezogen auf das Thema fhem2fhem (https://forum.fhem.de/index.php/topic,74728.0.html) habe ich heute mal mit clonedummy gearbeitet. Hintergrund ist, dass mein Calendar Modul FHEM zu lange blockiert. Deswegen habe ich auf meinem Pi eine zweite Instanz installiert. Nun holt die Hauptinstanz mittels FHEM2FHEM die Daten ab. Geholt wird von dem Device KL.Anja.Ansicht_r und befüllt wird das Device KL.Ansicht.Anja. Soweit klappt das auch gut. Nun sind es jedoch dynamische Readings, welche erzeugt werden. Somit habe ich das Attr deleteBeforeUpdate aktiviert. Jetzt habe ich das Problem, dass die Readings zwar gelöscht werden, allerdings erst scheinbar nach dem Update.

Führe ich auf der Remote Instanz ein Update durch, kommt die Aktualisierung an, die Timestamps werden rot und die Readings neu befüllt. Allerdings werden danach alle Readings gelöscht. Es scheint, dass hier ein Fehler vorliegt, oder ich etwas falsch mache und nicht sehe was genau.

Ich habe mal geschaut was bei Verbose 5 angezeigt wird, aber es wird keine Meldung zum Löschen raus gegeben. Ich habe mir mal den Code angesehen und nach delete $hash->{READINGS} if(AttrVal($hn,'deleteBeforeUpdate',0)); einfach eine Logausgabe eingetragen. Diese wird gar nicht mehr ausgeführt, als ob nach der Zeile delete ... nichts mehr ausgeführt wird in der notifysub. Leider fehlt mir aber das Verständnis zu erkennen wo der Fehler liegt.
Titel: Antw:deleteBeforeUpdate keine neuen Readings (CloneDummy)
Beitrag von: Amenophis86 am 28 Juli 2017, 01:55:01
Ich glaube ich habe das Problem gefunden. Der Code delete $hash->{READINGS} if(AttrVal($hn,'deleteBeforeUpdate',0)); steht an einer falschen Stelle. Es wird quasi bei jedem Reading, welches angelegt werden soll erst die alten Readings gelöscht. Das heißt, wenn jetzt mehrer Readings ankommen, wie in meinem Fall, dann werden immer alle gelöscht und nur das neu Reading bleibt bestehen.

Vermutlich soll dies auch so sein und ich habe die Funktion falsch verstanden. Mein Problem ist nämlich, dass es teilweise alte Readings im cloneDummy gibt, welche es im richtigen Device nicht mehr gibt. Das heißt bei einem Event müssten erst alle Readings gelöscht werden und dann alle neuen Readings komplett in einem Pack geschrieben werden. 
Titel: Antw:deleteBeforeUpdate keine neuen Readings (CloneDummy)
Beitrag von: Amenophis86 am 28 Juli 2017, 17:38:48
Gibt es eine Möglichkeit alle Readings eines device abzufragen, wenn ich die Namen der Readings nicht kenne, da sie dynamisch sind?

Hintergrund ist, dass ich schauen will cloneDummy auf meine Bedürfnisse umzubauen, so, dass nicht alle Readings gelöscht werden und nur noch das Neuste stehen bleibt bei deleteBeforReadkng. Sondern er sich immer direkt alle Readings holt nach eintreffen eines Updates der Readings.
Titel: Antw:deleteBeforeUpdate keine neuen Readings (CloneDummy)
Beitrag von: amenomade am 29 Juli 2017, 00:05:19
my $hash=$defs{"device"};
$hash->{READINGS}
Titel: Antw:deleteBeforeUpdate keine neuen Readings (CloneDummy)
Beitrag von: Amenophis86 am 31 Juli 2017, 06:01:32
Klappt. Ich danke dir.