brutella / hkknx-public

hkknx is a HomeKit KNX bridge for KNX.
https://hochgatterer.me/hkknx
97 stars 6 forks source link

Gerät kann nicht hinzugefügt werden, Gerät nicht erreichbar #130

Closed eltomato89 closed 2 years ago

eltomato89 commented 2 years ago

Das einrichten der Bridge schlägt mit der Fehlermeldung "Gerät kann nicht hinzugefügt werden", "Gerät nicht erreichbar" ab.

HKKNX Debug log zeigt folgendes: ˋ Aufzeichnung gestartet DEBUG 2021/08/28 21:01:38 connection.go:112 Close connection and remove session DEBUG 2021/08/28 21:01:38 connection.go:112 Close connection and remove session DEBUG 2021/08/28 21:01:59 connection.go:112 Close connection and remove session DEBUG 2021/08/28 21:01:59 connection.go:112 Close connection and remove sessionˋ

Habs mit iOS 14 und 15 probiert.

HKKNX läuft auf ubuntu, x86, ausgeführt als root, keine firewall, kein docker

Hast du ne Idee?

hr-automation commented 2 years ago

Hallo - darf man fragen welches IP interface du benutzt?

eltomato89 commented 2 years ago

Gibts dafür ne Konfigurationsmöglichkeit? Der Server hat nämlich relativ viele Interfaces.. Kann ich irgendwo einsehen, welche NIC er verwendet?

hr-automation commented 2 years ago

Normalerweise kannst Du bei Aufruf von HKKNX unter Einstellungen das IP Gateway einstellen. Aber dies beantwortet meine Frage nicht, welchen KNX IP Gateway oder Interface hast Du verbaut? Des Weiteren wird das Gateway normalerweise im ETS Projekt parametriert, wo man auch IP Adressen etc. festlegen kann, aber das ist immer abhängig vom verwendeten Gerät

image

eltomato89 commented 2 years ago

Achso, jetzt weiß ich auch was du meinst .. ich nutze einen Gira KNX Router. Habs auch schon mit dem X1 probiert. Die IP dazu habe ich fest im HKKNX hinterlegt und der Status sagt "verbunden". Der Gruppenmonitor zeigt mir auch an, was auf dem Bus passiert. Die Kommunikation zum Gateway scheint also zu funktionieren...

Ich dachte du sprichst vom Netzwerkinterface auf dem Server.

chef76 commented 2 years ago

Vielleicht gibst Du mal ein paar Infos zu Deiner Netzwerkkonfiguration: Router, Verbindung zur Bridge, AP(?), iOS Geräte, VLANS(?).

Wenn die Brücke mit dem Gateway verbunden ist, dann liegt es an der Verbindung vom iOS-Gerät zur Bridge.

eltomato89 commented 2 years ago

Server: Ubuntu 20.04 LTS, HKKNX läuft als Dienst im Supervisord. Router: Ubiquity UDM Pro Verbindung zur Bridge: 5GHz Wifi AP: Unifi AP-AC-LR iOS Geräte: iPhone 11 Pro mit iOS 15 (iPad mit iOS 14 tuts aber auch nicht) VLAN: Alle betroffenen Geräte hängen in einem VLAN.

Die Bridge wird auch gefunden, kann dann aber nicht hinzugefügt werden. Advertising scheint also zu funktionieren..

Hab schon vermutet, dass es an den NICs liegen könnte, denn auf dem Server läuft ebenfalls ein microk8s. Also sehr viele virtuelle NICs, dann würde aber doch wahrscheinlich das Advertising ebenfalls nicht funktionieren, oder?

Ich werde gleich nochmal wireshark anschmeißen und mir die Bonjour Pakete anschauen, vielleicht gibt das Aufschluss ..

eltomato89 commented 2 years ago

Bonjour gibt folgendes unter hap:

`HKKNX (2)._hap._tcp.local.

0C4DB94F8638\032(2).local:34297 192.168.178.15:34297 192.168.178.16:34297 fe80::921b:eff:fe52:9db7%en0:34297 fe80::921b:eff:fe4d:69c3%en0:34297

c# = 1 ci = 2 ff = 0 id = 0C:4D:B9:4F:86:38 md = HKKNX pv = 1.0 s# = 1 sf = 1 sh = MKja1Q==`

ip addr sagt:

[schnipp] 2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 90:1b:0e:52:9d:b7 brd ff:ff:ff:ff:ff:ff inet 192.168.178.15/24 brd 192.168.178.255 scope global enp2s0 valid_lft forever preferred_lft forever inet6 fe80::921b:eff:fe52:9db7/64 scope link valid_lft forever preferred_lft forever 3: enp0s25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 90:1b:0e:4d:69:c3 brd ff:ff:ff:ff:ff:ff inet 192.168.178.16/24 brd 192.168.178.255 scope global enp0s25 valid_lft forever preferred_lft forever inet6 fe80::921b:eff:fe4d:69c3/64 scope link valid_lft forever preferred_lft forever [schnapp]

IP Adressen scheinen also zu passen .. Firewall ist btw auch aus ..

chef76 commented 2 years ago

O.k., das ist etwas komplizierter als ich gehofft hatte ... :-(

Dass das Advertising funktioniert, heißt m.E. nach gar nichts.

Bei mir sieht das so aus:

image

(Raspi mit nur HKKNX direkt an der Fritz!Box)

Funktioniert denn ein simpler Ping von iOS zur Brücke?

chef76 commented 2 years ago

... musste grad noch mal googeln:

Bonjour-Grundlagen

Bonjour nutzt zum Informationsaustausch einzelne Multicast-DNS-Pakete (mDNS) laut RFC 6762 und DNS-Based Service Discovery (DNS-SD) laut RFC 6763. Dabei tauschen Clients die Bonjour-Informationen über die Multicast-Adresse 224.0.0.251 (IPv4) oder ff02::fb (IPv6) auf dem Port 5353 aus. Bonjour-Pakete werden nicht geroutet (Multicast Paket, TTL = 1), was die Nutzung auf das aktuelle lokale Netzwerk beschränkt. Anmerkung: Bitte beachten Sie, dass der Bonjour-Proxy lediglich zum Auffinden von Bonjour-Diensten dient. Für das entsprechende Routing zwischen den Kommunikationspartnern erfolgt eine separate Konfiguration oder Limitierung, z. B. über Routing- oder Firewall-Einträge.

eltomato89 commented 2 years ago

Okay, also Vermittlung über mDNS funktioniert.. nur die Kommunikation zur Bridge nicht, richtig?

Hab den Port jetzt mal manuell auf 51827 gesetzt und die Bridge neu gestartet. Der Port ist definitiv offen. (syn)

Was mir aufgefallen ist: sobald die Home app versucht eine Verbindung herzustellen, ploppt im Log zwei mal "connection.go:112 - Close connection and remove session" auf.

Anscheinend wird versucht eine Verbindung zu öffnen, schlägt dann aber fehl ..

chef76 commented 2 years ago

Ich vermute mal, dass HKKNX über Deine virtuelle NIC nicht raus darf und er deshalb die Verbindung abbricht!?

eltomato89 commented 2 years ago

Aber dann würde er nicht im HKKNX Log auflaufen. Zudem haben die virtuellen NICs nen komplett anderen Adressraum (10.x.x.x)

chef76 commented 2 years ago

... doch, die Anfrage kommt beim Service an, aber er darf nicht antworten. Erklärt den Log-Eintrag. Mit Deinem Setup hab ich leider keine Erfahrung, aber die Brücke an sich scheint zu funktionieren, wenn der Busmonitor funktioniert und sie in iOS gefunden wird ...

eltomato89 commented 2 years ago

Aber wenn HKKNX den falschen NIC genommen hätte, würde in der Bonjour Ad vmtl. auch eine andere IP Adresse stehen .. Alles Mutmaßungen .. vielleicht kann @brutella ja etwas Licht ins dunkle bringen?

brutella commented 2 years ago

@eltomato89 Sind die IP Adressen des Bonjour Dienstes – also 192.168.178.15:34297, 192.168.178.16:34297, fe80::921b:eff:fe52:9db7%en0:34297, fe80::921b:eff:fe4d:69c3%en0:34297 – von deinem iOS Gerät aus erreichbar?

eltomato89 commented 2 years ago

Jup, sind erreichbar ..

eltomato89 commented 2 years ago

Bump

brutella commented 2 years ago

Könntest du bitte mal folgende Schritte ausprobieren.

  1. Discovery.app auf deinem iOS Gerät öffnen und den Eintrag für die KNX Brücke auswählen.
  2. Eine der IP-Adressen aussuchen und über das iOS Gerät im Browser die IP-Adresse eingeben und mit dem Port 8080 die Weboberfläche aufrufen.

Wenn keinen Verbindung hergestellt werden kann, ist das ein Indiz dafür, dass die KNX Brücke von deinem iOS Gerät aus nicht erreichbar ist.

eltomato89 commented 2 years ago

Screenshot aus der Discovery app gibts schon oben .. habe grade nochmal ausprobiert, ob ich auf die Weboberfläche komme (bei mir Port 8001) Beide IPs (192.168.178.15 und 192.168.178.16) liefern über Port 8001 die Weboberfläche aus ..

Also ..

brutella commented 2 years ago

Siehst du eine Fehlermeldung in Weboberfläche → Konsole, wenn du die Bridge mit der Apple Home-App hinzufügen möchtest?

eltomato89 commented 2 years ago

Nur die oben bereits genannte:


DEBUG 2021/08/28 21:01:38 connection.go:112 Close connection and remove session
DEBUG 2021/08/28 21:01:38 connection.go:112 Close connection and remove session
DEBUG 2021/08/28 21:01:59 connection.go:112 Close connection and remove session
DEBUG 2021/08/28 21:01:59 connection.go:112 Close connection and remove sessionˋ```
brutella commented 2 years ago

Sind das alle Meldungen die angezeigt werden? Bitte überprüfe nochmal von dem Zeitpunkt weg an dem du Hinzufügen in der Apple Home-App antippst.

eltomato89 commented 2 years ago

Das sind tatsächlich alle ..

Ich öffne die Konsole: keine Einträge. Ich starte die Home App auf dem iPhone und füge die gefundene Bridge hinzu: die ersten zwei Einträge. Home App bricht mit Fehler ab: weitere Einträge.

Aber immer die gleichen Meldungen, keine weiteren ...

brutella commented 2 years ago

Da ich das Problem selbst nicht nachstellen kann und es auch nur bei dir auftritt, denke ich, dass das Problem mit deiner Netzwerkkonfiguration zu tun hat.

Hast du schonmal versucht, die Bridge über Ethernet mit deinem Netzwerk zu verbinden?

eltomato89 commented 2 years ago

Hängt alles an Kupfer .. Gibts vielleicht die Möglichkeit nen detailierteres Logging zu bekommen? Evtl. als Testbuild? Bin selbst Softwareentwickler (zwar kein go, aber) mit besseren logs könnte ich das ganze vielleicht eingrenzen. 😕

brutella commented 2 years ago

Wenn du hkknx mit --verbose startest, dann erhältst du auch die Debug Log-Ausgaben.

pfeifix commented 2 years ago

Ich habe vermutlich ein ähnliches Problem. Bei mir läuft das Linux-x64-Image in der WSL auf Windows. Soweit alles gut, konnte die Brücke aktivieren und sie auch in der iOS-Home-App einrichten. Habe einen Rolladen-Aktor konfiguriert und auch ihn hinzugefügt.

Jetzt ist es so, dass in der Home-App der Rolladenaktor nur immer einmalig als erreichbar angezeigt wird (und auch gesteuert werden kann), nachdem ich den hkknx-Prozess starte. Nach einer gewissen Zeit (1 Minute), nachdem das iPhone ausgegangen ist und ich danach die App wieder öffne, ist der Aktor nicht mehr erreichbar (Rote Schrift mit "Keine Antwort" auf dem Icon). Daraufhin beendet auch der hkknx seine Verbindung. In der Konsole steht dann nur diese eine Zeile:

DEBUG 2021/11/10 11:45:10 connection.go:112: Close connection and remove session

Wie eltomato89 folgere auch ich daraus, dass der Request des iPhone den hkknx zwar noch erreicht, dieser aber aus unerklärlichen Gründen die Verbindung zu macht. Die o. g. Ausgabe kommt auch NUR dann, wenn die Home-App geöffnet wird und wieder versucht, den Aktor über die Bridge zu erreichen.

Danach hiflt es nur noch, den hkknx zu beenden und neu zu starten. Danach ist der Aktor wieder (bis das obengenannte wieder eintritt) kurzweilig zu erreichen.

@brutella: Du könntest das ja mal versuchen nachzustellen, die Inbetriebnahme des hkknx über die WSL in Windows ist sehr einfach.

P.S. Netzwerkkarten sind alle abgeschaltet, außer der Ethernetverbindung, die an meinem Netzwerk hängt. Ports in der Firewall sind alle freigegeben.

brutella commented 2 years ago

@pfeifix Könntest du mal in der Discovery.app überprüfen, welche IP-Adressen für die Brücke angezeigt werden und einen Screenshot davon posten.

pfeifix commented 2 years ago

Kein Thema, hier ist der Screenshot:

20211111_084926000_iOS

brutella commented 2 years ago

Sind alle diese IP-Adressen von deinem iOS Gerät aus verfügbar?

pfeifix commented 2 years ago

Wie prüfe ich die Verfügbarkeit am Besten?

brutella commented 2 years ago

Versuch die Weboberfläche mit http://<IP-Adresse>:<Port> im Browser aufzurufen, zB http://192.168.0.23:8080

pfeifix commented 2 years ago

Die beiden IPv4-Adressen und die erste IPv6-Adresse funktionieren. Die zwei komischen IPv6-Adressen (mit dem "%en0" am Ende) und die mit 875c am Ende funktionieren nicht.

pfeifix commented 2 years ago

Ich habe das Ganze jetzt noch einmal auf einem zweiten Rechner laufen lassen, Windows 11 mit WSL (Version 1) und Ubuntu 20.04 LTS darin. Gleiches Spiel. Es erscheint

DEBUG 2021/11/10 11:45:10 connection.go:112: Close connection and remove session

nachdem der hkknx-Prozess gestartet wurde und initial die Brücke und Geräte auch von der Home-App gefunden werden und alles steuerbar ist.

Die Verbindung scheint sich irgendwie nach einer kurzen Idle-Zeit von selbst zu beenden und die Home-App kann sie danach auch nicht mehr aufbauen, ich nehme an weil die Listening-Sockets nicht vom hkknx erneut aufgebaut werden, nachdem sie in die Timeouts gelaufen sind.

Vielleicht kannst Du das mal nachstellen und den Source-Code ggf. anpassen. Mir wäre es sehr wichtig, die KNX-Brücke auf meinem Windows-Server in der WSL laufen lassen zu können. Ich fürchte, wenn ich es in eine virtuelle Linux-Maschine packe, ereignen sich ähnliche Probleme...

brutella commented 2 years ago

Die Verbindung scheint sich irgendwie nach einer kurzen Idle-Zeit von selbst zu beenden und die Home-App kann sie danach auch nicht mehr aufbauen, ich nehme an weil die Listening-Sockets nicht vom hkknx erneut aufgebaut werden, nachdem sie in die Timeouts gelaufen sind.

Die Verbindung wird normalerweise vom Client (iOS Gerät) aus geschlossen. Dann wird die Meldung Close connection and remove session ausgegeben. Das Schließen der Verbindung ist an sich kein Fehler und passiert ständig, sobald iOS die Verbindung trennt. Das tritt auf, wenn bspw. die Verbindung nicht mehr benötigt wird.

Das keine neue Verbindung aufgebaut wird, kann daran liegen, dass iOS die Brücke nicht über eine der IP-Adressen erreichen kann. Warum das passiert, ist teilweise stark von der Netzwerkkonfiguration abhängig.

pfeifix commented 2 years ago

Ich habe den hkknx jetzt mal auf dem gleichen Rechner in eine virtuelle Linux-Maschine gepackt (Ubuntu 20.04). Darin funktioniert es. Komisch, da die Netzwerkkonfiguration ja die gleiche ist wie bei Nutzung über die WSL... Ist eigentlich geplant, das Programm mittelfristig noch nativ für Windows zur Verfügung zu stellen?

brutella commented 2 years ago

Ist eigentlich geplant, das Programm mittelfristig noch nativ für Windows zur Verfügung zu stellen?

Nein, Windows wird nicht unterstützt.

brutella commented 2 years ago

Seems to be related to #150