bekanntlich gibt es ja bei einzelnen Geräten gern mal die Problematik, dass diese irgendwann mit UNREACH geflaggt werden, und dieser Status aber nie zurückgesetzt wird, egal was man tut. Das Gerät kann munter Daten an die Zentrale senden, die auch korrekt verarbeitet werden, es kann auch Befehle empfangen und umsetzen, man kann Servicemeldungen bestätigen, es hilft alles nichts. Die Variable UNREACH bleibt auf true.
Nun ist es ja eigentlich ganz nett in IPS zu wissen, ob ein Gerät Empfangsprobleme hat, aber dann müsste diese Anzeige auch verlässlich sein. Wie es aussieht gibt es (nur oder vorwiegend) „false positives“, sprich: Der Status ist manchmal fälschlicherweise (noch) gesetzt obwohl eigentlich kein Problem (mehr) besteht.
Um die UNREACH-Variablen auswerten zu können, aber trotzdem nicht ewig irgendwelche längst vergangenen Störungen im Speicher zu halten, ist mir die Idee gekommen, die Zeitstempel der Statusvariablen zu vergleichen. Sollte also UNREACH auf true sein, aber eine andere Statusvariable hat einen neueren Zeitstempel, so wird dieser Status ignoriert und das Gerät, nicht mehr als unerreichbar gelistet.
Was haltet ihr von dem Ansatz? Lösung, veritabler Workaround, oder ist mir ein fataler Denkfehler unterlaufen?
Für die CCU gibt es da ein Skript welches die Unreach-Meldungen bestätigt. Für reine LAN-Adapter-Lösungen ist das sicher ein Ansatz die Meldungen auszufiltern.
Das Skript muss man per Ereignis periodisch starten. Es legt dann unterhalb aller MAINTENANCE-Instanzen eine Variable UNREACH_CLEAN an, die nur dann true ist, wenn UNREACH der Instanz true ist und in keiner der auf der selben Ebene gelegenen Homematic-Instanz irgendeine Variable aktueller ist als der Wert von UNREACH.
Voraussetzung damit das funktioniert ist, dass man jeweils die „Nutz-Instanzen“ pro Gerät in einer Kategorie mit der zugehörigen MAINTENANCE-Instanz hat und für jedes Gerät eine eigene Kategorie.
Falls es nur um die Status-Variable in IPS geht, hab ich herausgefunden, dass eine Abfrage über
HM_RequestStatus(id, "UNREACH");
die Variable korrekt zurücksetzt. Aus dem Grund lass ich die Abfrage über Mitternacht automatisch laufen.
Schade ist, dass der BidCos-Service das anscheinend nicht an IPS übermittelt, wenn ein Aktor wieder erreichbar ist.
Vermute also das Problem im BidCos-Service.
Eben geschaut; meiner Meinung nach ja, denn die Uhrzeit der Aktualisierung zeigt mir Mitternacht an - auch bei den batteriebetriebenen Aktoren bzw. Sensoren.
Bei batteriebetriebenen HM-Geräten kann von der Zentrale (Bidoc oder CCU) immer nur der dort bekannte letzte (!) Status abgefragt werden. Das muss nicht immer zwingend der tatsächliche sein. Beispiel - es hat sich der Status eines TFKs geändert wärend der BidCos/die CCU Offline war.
Bei den meisten Geräten kann man aber einstellen ob Sie sich einmal täglich melden sollen - nach dem Motto „ich lebe noch“. Dabei wird dann auch der tatsächliche Status übertragen. Wenn dieser Keep-Alive ausbleibt kommt auch ein UNREACH - selbst wenn eigentlich alles in Ordnung ist.
Die CCU bzw. der BIDCOS können batteriebetriebene Geräte nicht direkt ansprechen um deren Status abzufragen. Diese nehmen Ihr Funkmodul aus Gründen der Batterielebensdauer nur von sich aus in Betrieb. Ausnahme ist soviel ich weiss derzeit nur der batteriebetriebene Schaltaktor.
@kronos: Das ist aber interessante Info, die mir zumindest völlig unbekannt war. Wo kann man denn einstellen, dass die batteriegetriebenen Geräte ihr „bin am Leben“ schicken und wann.
Ich bin im Moment auf Reisen und kann deswegen nicht auf meine Homematic Geräte gucken…
„zyklisch Status senden“ oder so ähnlich…komme gerade auch nicht drauf
ALLERDINGS: geht das massiv zu Lasten der Batterielaufzeit - daher habe ich bisher darauf verzichtet.
Außer bei ortsunabhängigen Sender/Empfänger denke ich braucht man es nicht.
Mein Fenstersensor war beim anlernen in Reichweite und bleibt es auch. auch wenn der Lan-Adapter anderer Meinung ist. Bisher habe ich alle Stati trotzdem zuverlässig bekommen
ALLERDINGS: geht das massiv zu Lasten der Batterielaufzeit - daher habe ich bisher darauf verzichtet.
Kann ich nicht nachvollziehen. Das ist ja nur ein Sendevorgang pro Tag.
Ich lasse das aktiviert weil die Firmware der CCU da mal einen BUG hatte oder hat (oder es war ein Feature ;)). Wenn die zyklische Meldung ausgeschaltet war kam bei den betreffenden HM-Geräten der UNREACH. Nagelt mich aber bitte nicht auf eine Firmware-Version fest.
Bei Sendern die sowieso einmal pro Tag ausgelöst werden kann man sich das Keep-Alive theoretisch sparen. Ich habe aber auch z.b. Fensterdrehgriffe die über Tage/Wochen nicht betätigt werden. Und wenn die Kids da gerade mal wieder die Batterie ausgebaut haben möchte ich das gerne wissen wenn der Sender sich längere Zeit nicht mehr gemeldet hat.
Danke für den Hinweis aber ich habe leider zumindest einen Grobmotoriker im Haus der Fenster mitunter so zu haut, dass der Batteriedeckel samt Knopfzellen das Weite sucht. Und dann ist auch mit einer Sabotagemeldung nichts mehr zu wollen :rolleyes:.