Ping/Pong Problem

Hallo Sathya!

Ein User hat mich auf folgendes Problem zwischen Openhab 2.2 und Homegear hingewiesen:

Im 2.2’er Binding gibt es einen neuen Connection Tracker. Dieser prüft das Gateway in regelmäßigen Intervallen (15sek) ob es noch lebt. Das wird mit einem Ping gemacht, wenn ein Pong zurück kommt ist alles in Ordnung. Wenn nicht, geht die Bridge in Openhab offline und prüft alle 15sek ob das Gateway schon wieder da ist.

Wenn ich Openhab NACH Homegear starte, ist alles in Ordnung. Homegear sendet brav einen Pong zurück. Aber nun zum Problem:
1.) Openhab laufen lassen
2.) Homegear beenden
3.) Warten bis die Bridge in Openhab offline ist (nach 15sek)
4.) Homegear wieder starten
5.) Der Connection Tracker erkennt jetzt, dass er wieder was schicken kann und sendet ein init und einen Ping

Jetzt kommt allerdings KEIN Pong mehr zurück. Die Bridge geht nie mehr online. Habe das mit der CCU2 und RaspberryMatic getestet, dort funktioniert’s.

Ein weiterer Punkt ist, wenn auch nicht so tragisch, dass bei jedem init call newDevice events von Homegear gesendet werden. Immer wieder die gleichen Geräte. Sollten die nicht nur 1x gesendet werden? Aber vielleicht schicke ich eine falsche Antwort.

Könntest Du Dir das bitte einmal ansehen?
Ich verwende 0.7.3-1221 und der User hat 0.7.12-1492

Danke und viele Grüße
Gerhard

Hallo @sathya,
Der besagte Nutzer bin Ich. Hast du erste Ideen zu diesem Problem? Das besagte System ist leider gerade nutzlos und sorgt für Ärger im Heim :sweat_smile:
Über eine kurze Rückmeldung würde ich mich freuen, sonst muss ich am Wochenende mit entsprechendem Aufwand zu einer CCU2 wechseln. Ein Schritt der mir nicht wirklich recht ist - Homegear bietet schon seine Vorteile :wink:

Vielen Dank und viele Grüße! Thomas

Ich kenne das Problem, wenn Homegear beendet wird, kommt das Homematic-Binding nicht mehr klar (keine Schuldzuweisung :wink:). Ich hatte das allerdings damals so interpretiert, dass das Binding die Bridge wieder offline stellt, während Homegear noch munter die Gerätedaten überträgt. Dadurch entsteht ein nicht endender Zyklus. Da lag ich dann falsch, wenn es am “Pong” liegt.

In der Realität (mit Homegear 0.8.0) ist das bei mir allerdings kein Problem, weil Homegear einfach nur läuft, es wird eigentlich nur nach dem Reboot gestartet. (Das Problem besteht auch noch mit 0.8.0.)

@Mazzen, bevor du auf die CCU2 wechseln mußt, kann man nicht einen Workaround finden, der dieses Szenario abdeckt? Bis die Korrektur des Verhaltens implementiert ist, meine ich. Wenn ich mir vorstelle, ich müßte auf die CCU2 zurück, wird mir schlecht, ohne überhaupt den Migrationsaufwand zu berücksichtigen.

@job ich sollte die Situation vielleicht noch etwas konkreter darstellen. Ich habe das Problem in verschiedenen Konstellationen beobachten können.

  • Raspbian Jessie und Stretch
  • Homegear 0.7 und 0.8
  • Homegear mit meiner wiederhergestellten db.sql und im jungfräulichen Installationszustand ohne weitere Konfiguration

Alle daraus möglichen Kombinationen habe ich letztlich mehrfach getestet und dabei das Basis-System (openHABian ohne weitere spezielle Änderungen) x-mal neu aufgesetzt. In allen Fällen kommt es zur kurzen Kommunikation zwischen Homegear und openHAB, danach beginnt das angesprochene Ping-Pong Spiel. Was @gerrieg vergessen hat zu erwähnen: Mit einer gefüllten Datenbank bricht die Verbindung auch wenn Homegear zuerst gestartet wurde ab. Es gibt also aktuell keine Konstellation die für mich als Workaround in Frage kommen könnte.
Hätte @gerrieg das Problem nicht bei sich Reproduzieren können hätte ich die Schuld auf die Hardware geschoben.

Eine Lösung oder ein Workaround wären toll. Aktuell kann openHAB überhaupt nicht mit den Homematic Komponenten arbeiten und das System ist nicht das bei Mir zuhause…

Beim CCU2-Wechsel-Gedanken wird mir auch mulmig im Magen…

Ich fürchte, hier sind zwei Probleme am Werk, die die gleichen Symptome hervorrufen. Das Problem kenne ich überhaupt nicht. Konnte @gerrieg beide Varianten reproduzieren?

Reproduktion von Homegear während des Betriebs beenden ist einfach, siehe hier: Downgrade von 0.8 auf 0.7 möglich?

Hast Du bei der Network Callback Adress in der Homematic Bridge die korrekte IP-Adresse eingetragen? Die Auto-Erkennung funktioniert seit 2.2 nämlich nicht mehr zuverlässig.

Das kann dir @gerrieg mit Sicherheit beantworten, ich denke ja.

Ach richtig, eine weitere Stellschraube. Ich habe diverse config-Kombinationen probiert. Gateway Adresse und Callback Host jeweils mit 127.0.0.1 und/oder 192.168.1.2. Ich habe auch einmal die Interfaces in Homegear festgesetzt um eventuelle Interface-Verwirrung auszuschließen. Ein Versuch war sogar IPv6 Support im System zu deaktivieren. Das war schon eine holprige Fahrt bis hier her…

Du hast vorhin so negativ gegen die CCU2 gesprochen. Gibt es neben dem Aufwand der Neu-Pairings noch andere Gründe dagegen? Mir fällt aktuell nur der RSSI Datenpunkt ein…

Bist du auf einem Pi3 unterwegs? Ich meine bei mir ist ipv6 aus und ich benutze die IP-Adresse des Ethernet-Ports. Aus irgendwelchen Gründen wird bei mir bei Autoerkennung immer genau die falsche Adresse gewählt. :wink:

Falls du openHABian auf einem Pi3 könnten wir mal die Einstellungen gegenprüfen.

zur CCU:
Ich habe 15 HM-CC-RT-DN und 8 Wandthermostate, wenn ich noch einmal im WebUI die Profile überarbeiten muß, laufe ich Amok. Ich mache das jetzt mit einem php-Skript. :wink:

Einen Verbindungsabbruch wenn Homegear zuerst gestartet wurde konnte ich nicht reproduzieren.

@Mazzen
Wenn Du willst, schicke ich dir ein jar file vom Binding, bei dem der Connection Tracker deaktiviert ist. Vielleicht hilft Dir das bis das Problem behoben ist.

1 Like

Hallo,

bisher wurde “ping” erst nach Abschluss des Aufrufs aller init-Funktionen beantwortet. Kann es damit zusammenhängen? Die init-Funktionen (listMethods, listDevices, newDevices) brauchen ja durchaus eine Weile. Für “pong” habe ich jetzt mal eine Ausnahme erstellt, so dass dieses sofort gesendet wird. Schaut mal, ob dies das Problem löst. Im nächsten Nightly ist die Änderung enthalten.

Ein weiterer Punkt ist, wenn auch nicht so tragisch, dass bei jedem init call newDevices events von Homegear gesendet werden. Immer wieder die gleichen Geräte. Sollten die nicht nur 1x gesendet werden? Aber vielleicht schicke ich eine falsche Antwort.

Das ist so korrekt. Homegear ruft vor dem newDevices ein listDevices auf und sendet alle Geräte, welche von dem listDevices nicht zurückgegeben wurden. Es gibt aktuell zwei Möglichkeiten, das Senden zu verhindern:

  1. newDevices nicht in system.listMethods zurückgeben (aber system.listMethods darf auch nicht leer sein). Nachteil: newDevices wird nicht für im Betrieb neu hinzugefügte Geräte aufgerufen. Ich weiß nicht, inwieweit das aktuell in OpenHAB relevant ist.
  2. Über listDevices die bekannten Geräte zurückgeben.

Verhält sich die CCU an dieser Stelle anders? Dann kann ich das Verhalten an das der CCU angleichen. An sich wird newDevices nach dem init vermutlich von kaum jemandem benötigt. Das Verhalten existiert nur, um möglichst genau das Verhalten der CCU zu imitieren.

Viele Grüße

Sathya

Hallo!

bisher wurde “ping” erst nach Abschluss des Aufrufs aller init-Funktionen beantwortet

Na das erklärt alles! Das ist es.

Nachteil: newDevices wird nicht für im Betrieb neu hinzugefügte Geräte aufgerufen. Ich weiß nicht, inwieweit das aktuell in OpenHAB relevant ist.

Das ist relevant, ich verwende den event um neue Geräte auch gleich in die Inbox von OH zu stellen.

Verhält sich die CCU an dieser Stelle anders?

Müsste ich erst ausprobiern, kann ich Dir auswendig nicht sagen. Mir ist es bis jetzt nicht aufgefallen, dort gibt es ja den Geräte-Posteingang.

Aber wenn ich init beim Hochfahren des bindings schicke, dann habe ich ja noch keine Geräte und kann auch keine an listDevices zurückgeben. Eventuell könntest Du was einbauen, dass man das new Flag in Homegear irgendwie löschen kann?

Viele Grüße

Gerhard

1 Like

Hallo @gerrieg,

Eventuell könntest Du was einbauen, dass man das new Flag in Homegear irgendwie löschen kann?

Das Flag ist “0x20”, dann wird weder listDevices noch newDevices von Homegear aufgerufen ;-). Ist im nächsten Nightly ;-). Siehe auch https://ref.homegear.eu/rpc.html#init.

Viele Grüße

Sathya

1 Like

Hallo @sathya

Super, Danke. Ist eingebaut.

Viele Grüße
Gerhard

1 Like

Hallo Gerhard, Hallo Sathya,

Vielen Dank erst einmal dafür! Ich habe die alternative Version gestern aktiviert und war erstmalig wieder in der Lage mit den Homematic Geräten zu interagieren!

Freut mich zu lesen, dass Ihr mittlerweile auch eine Lösung für das Problem finden konntet. Ich werde das ganze demnächst, wenn der openHAB pull request durch ist, testen. @gerrieg Ich frage mich ob dann auch die autodiscovery funktioniert…

@job Danke für deine Hilfe. Letztlich bin ich doch echt froh an dem Aufwand mit der CCU2 vorbei gekommen zu sein. Zu den Heizungsthermostaten wollte ich noch sagen, dass ich die WebUI natürlich auch nicht dafür nutze, wäre ja bescheuert :smile: Dafür habe ich doch openHAB! :tada::wink:

Viele Grüße! Thomas