brutella / hkknx-public

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

Problem beim Gerätetyp "Garagentor" #99

Closed chrpuf closed 3 years ago

chrpuf commented 3 years ago

Hallo, ich teste gerade die Software als Ablösung für die Homebridge und bin bisher sehr angetan. Bei der Konfiguration des Garagentors habe ich allerdings ein Problem. Der Status "Geschlossen" des Garagentors wird nur kurzzeitig richtig angezeigt. Das Gerät ist wie folgt konfiguriert:

image

Die Steuerung des Garagentors sendet eine 1 an die entsprechende Gruppenadresse auf den Bus, wenn das Garagentor geschlossen bzw. geöffnet ist. Das klappt soweit auch. Ist das Garagentor geschlossen wird nach einiger Zeit (die Dauer variiert) in der Home App das Garagentor jedoch wieder als offen angezeigt, obwohl das Garagentor noch zu ist. Ich konnte herausfinden, dass über den KNX-Bus eine Leseanforderung an die beiden hinterlegten Status GAs stattfindet. Hinter den GAs existiert aber kein Kommunikationsobjekt, welches diese Leseanforderung korrekt beantworten könnte. Die Steuerung des Garagentors pushed diese Info nur. Meine Frage wäre nun, ob diese Leseanforderung originär von hkknx kommt oder sogar von HomeKit selbst und nur durchgereicht wird. Wenn diese Leseanforderung von hkknx kommt könnte man darüber nachdenken ein Option einzubauen die es erlaubt, dass der Statuswert dann zyklisch von KNX-Bus gesendet wird bzw. anders gesagt man diese Leseanforderungen aktiv unterbinden kann.

Besten Dank schon mal!

brutella commented 3 years ago

hkknx liest die Initialisieren-GAs aus, wenn die HomeKit Geräte neu initialisiert werden. Das tritt auf, wenn

Wenn die GAs nicht lesbar sind, dann trage unter Initialisieren keine GA ein. Das hat aber zur Folge, dass der initiale Status des Garagentors nach einem Neustart nicht definiert ist. Das heißt, nach einem Neustart kann es sein, dass in HomeKit angezeigt wird, dass das Garagentor offen ist, obwohl es geschloßen.

chrpuf commented 3 years ago

Vielen Dank für die schnelle Antwort.

Dann scheinen hier zwei unterschiedlich gelagerte Probleme vorzuliegen:

  1. Das initial von mir gemeldete "Problem" mit der Leseanforderung bzw. der Initialisierung. Wenn ich deine Antwort richtig interpretiere könnte ich einfach die Initialisierungs-GA bei der Konfiguration einfach nicht setzen und den Status-Wert dann einfach zyklisch senden. Abhängig vom Sende-Intervall wäre der Status nach der Initialisierung eine Zeit lang nicht korrekt. Alternativ stelle den Wert über meine Smarthome Lösung einfach nochmal auf einer separaten GA mit Lesemöglichkeit bereit...
  2. Interessanter ist aber das Problem, weshalb überhaupt neu initialisiert werden muss. Von den drei von dir genannten Gründen kann ich zwei ausschließen. Übrig bleibt eigentlich nur der Neuaufbau der Verbindung zum KNX Gateway. Hab mir daraufhin mal das Konsole-Log näher angeschaut und festgestellt das es wirklich öfters/regelmäßig zu Verbindungsabbrüchen mit anschließendem Neuaufbau kommt.

image Das geht ja etwas in die Richtung von #98 ,oder?

Soll ich hierzu einen neuen Issue eröffnen? Danke!

brutella commented 3 years ago

Zu 1. Ja, korrekt. Zu 2. Laut Log-Ausgabe wurde hkknx am 31.05.2021 um 10:39:48 beendet. Hast du womöglich eine automatische Beendigung der Binärdatei irgendwo in deinem System? Das Beenden von hkknx wird nicht vom dem Programm selbst veranlasst.

chrpuf commented 3 years ago

Wiederum vielen Dank für die schnelle Antwort.

Der Service/die Binärdatei wird Debian-seitig von systemd überwacht. Folgendes meldet dieser zum besagten Zeitpunkt:

image

Nach meinem Verständnis startet systemd hkKNX aufgrund eines Timeouts neu. Die Frage ist, woher dieser Timeout kommt...

chrpuf commented 3 years ago

Ich hab jetzt selbst noch etwas rumgetestet. Ich hab in der Config für den systemd Service den Service Type von "forking" auf "simple" geändert.

image

Seitdem seh ich im Console-Log von hkknx eigentlich gar nichts mehr. OS-seitig im daemon Log seh ich seitdem auch seltsame Logeinträge:

image

Komischerweise scheint hkknx aber noch zu funktionieren, zumindest hab ich bisher nichts gegenteiliges feststellen können.

Aber "Service Type=simple" scheint auch nicht das richtige zu sein. Kannst du ggf. Hilfestellung geben, wie man hkknx am besten als Dienst/Service einrichtet?

Danke schon mal!

brutella commented 3 years ago

Aber "Service Type=simple" scheint auch nicht das richtige zu sein. Kannst du ggf. Hilfestellung geben, wie man hkknx am besten als Dienst/Service einrichtet?

Bei mir funktioniert es tadellos auch ohne der Option Type.

PS: hkknx braucht kein knxd. Daher kann man After=knxd.service und After=knxd.socket weglassen.

chrpuf commented 3 years ago

Bei mir funktioniert es tadellos auch ohne der Option Type.

Hab ich mittlerweile auch gemacht. Hab die Config auch noch weiter aufgeräumt. Seitdem hatte ich noch einen Ausfall, bei dem der Service leider weiterlief, hkknx aber nicht mehr funktionierte. Ich werd das noch beobachten...

In meinem Fall braucht hkknxden knxd, weil dieser als Schnittstelle zum KNX-Bus dient. Wenn der nicht läuft macht ein Start von hkknx auch keinen Sinn...

Ich mach dieses Ticket jetzt auf jeden Fall mal zu... Danke für deinen Support!

brutella commented 3 years ago

In meinem Fall braucht hkknx den knxd, weil dieser als Schnittstelle zum KNX-Bus dient. Wenn der nicht läuft macht ein Start von hkknx auch keinen Sinn...

Ist bei dir also knxd das KNXnet/IP Gateway?

chrpuf commented 3 years ago

Korrekt. Hardwareseitig hängt am SBC ein TPUART2 als Buskoppler.