folgendes habe ich schon in der openhab google group gepostet, aber da hier auch einige openhab User vorhanden sind, frage ich hier auch um Rat.
Ich nutze openhab 1.6.1 und Homegear 0.5.20 auf einem Debian Linux System. Das physical interface ist ein HM-CFG-LAN und alles sieht gut aus. Von der openhab Web UI kann ich zB. meine Rolladen-Aktoren steuern.
Nach Neustart von openhab bekomme ich nach ca. 360s folgendes im Log:
No event since 360 seconds, refreshing Homematic server connections
Dann wird der HM communicator (Teil vom HM Binding) gestoppt und wieder neu gestartet, inkl. Einlesen aller Datenpunkte usw.
hmm, steht irgend was in “/var/log/homegear/homegear.err”? Es könnte sein, dass Homegear sich zum Beispiel nicht mit dem Callback-Server verbinden kann. Stell das homematic:alive.interval auch mal auf zumindest 600. Bei wenigen Geräten kann es durchaus mal passieren, dass für 5 Minuten kein Paket kommt.
Schick mir mal deine komplette homegear.log und homegear.err gepackt an meine E-Mail-Adresse (sathya (at) laufers (punkt) net). Vielleicht seh ich da irgendwas.
Ich habe aktuell übrigens nur drei Rolladenaktoren angelernt. Und die sind ruhig, wenn man die Rolladen nicht gerade fahren lässt oder was spezielles (unreach, config pending, …) passiert.
Ist das das Problem??
Falls ja, könnte Homegear so etwas wie “is alive” an openhab senden? Ich weiss allerdings nicht, ob so etwas in der Schnittstelle definiert ist…
das Log sieht soweit gut aus. Ich kann dir nicht sagen, warum OpenHAB nach dem ersten Reconnect das Intervall auf 60 Sekunden reduziert, aber dass der Reconnect stattfindet, ist logisch - die Rolladenaktoren senden keine Statuspakete. Du kannst das Senden von Statuspaketen allerdings forcieren, indem du Polling für die Rolladenaktoren aktivierst.
Trag dazu folgendes für jeden der drei Rolladenaktoren in “/var/lib/homegear/scripts/Test.php” ein:
Jetzt das Script mit “/var/lib/homegear/scripts/Test.php” ausführen und die Geräte werden alle 10 Minuten gepollt. Sicherheitshalber kannst du das Intervall in OpenHAB auf 610 Sekunden setzen.
habe das Polling für alle drei Rolladenaktoren aktiviert und auf 500s gesetzt:
Array
(
[INTERNAL_KEYS_VISIBLE] => 1
[POLLING] => 1
[POLLING_INTERVAL] => 500
[ROAMING] =>
)
In openhab habe ich das Checkintervall auf 600s gelassen.
Dennoch nach 660s:
No event since 660 seconds, refreshing Homematic server connections.
Danach reconnect des HM bindings, und das dann wieder alle 60s…
Ich meine, dass ich das früher mit älteren Homegear Versionen nicht gehabt habe.
Aber erklären kann ich es noch nicht.
Die Minimalzeit ist 600 Sekunden, darunter geht nicht. Nur ist das Polling-Intervall in Minuten - sorry . Also noch einmal das Ganze auf 10. Dann sollte es klappen.
Ja, so geht es einwandfrei. Keine reconnects mehr.
Ich sehe im openhab.log dann auch die Updates zu allen Rolladenaktoren (nach ~10 Minuten), auch wenn die Werte sich nicht verändert haben.
Denn ich habe den debug level für das openhab HM binding hochgesetzt.
Alternativ könnte man sicher auch ein weiteres HomeMatic-Device hinzunehmen, welches öfter Statusinformationen übergibt (z.B. ein Thermostat oder Zwischenstecker). In diesem Fall wäre das Polling der Rolladen-Aktoren nicht mehr zwingend notwendig - da kommt es aber natürlich darauf an, wie deine Gerätestruktur später einmal aussehen wird oder ob du momentan ausschließlich die Rolladensteuerung damit planst. Wäre nicht auch das Polling eines Rolladen-Aktors bereits ausreichend, um dem Timeout zu entgehen?
Jupp. Das Polling hat allerdings noch den Vorteil, dass Statusänderungen am Rolladenaktor sicher mitbekommen werden. Dieser sendet nämlich nur ein einziges Broadcastpaket für jede Statusänderung nach manueller Betätigung (das gleiche gilt für alle Aktoren - das hätte besser implementiert werden können). Es kann durchaus passieren dass dieses Paket nicht empfangen wird. Durch das Polling stimmt der Status in OpenHAB bzw. Homegear dann zumindest 10 Minuten später wieder. Die Rolladenaktoren waren sogar der Grund, weshalb ich das Polling eingebaut habe .
Das Problem mit den Reconnects zwischen openHAB und homegear habe ich durch einen “Heartbeat” gelöst, den homegear an openHAB sendet. Dazu einfach ein timed event scripten (z.B. alle 2 Minuten), dass eine Systemvariable setzt. Diese lässt sich in openHAB über ein Binding auch auslesen und, wenn man will, in einer Sitemap referenzieren und im GUI anzeigen.
Heartbeat starten (einmalig) - StartHeartbeat.php: