homebridge-knx

  • Stimmt nicht:


    Prerequisites

    This node module requires either

    • a running (and properly configured) knx daemon (knxd). You can find the latest version here.

    Und HKNX ist mWn nichts anderes als ein vorgepacktes bzw. eine vorinstallierte Homebridge mit KNX-Packages - ohne die Freiheiten einer Homebridge, aber dafür zahlbar.

  • Was sagt denn:

    sudo systemctl status knxd



    Hallo spliffspliff,


    Du trägst bei der Config gleich die IP des MDT Routers ein. Der knxd ist m.M. nur für USB Interfaces notwendig. Aber ich würde mir auch mal HKNX von https://hochgatterer.me/de/hkknx/docs/ anschauen. Das ist aktueller.

    Hi die Anleitung ist leider nur für ein komplettes image. da ich aber auf dem raspi noch andere Programme am laufen habe benötige ich eher die Anleitung für ein bestehende installation


    So KNXd funktioniert mit den Befehlen . Mein WZ LIcht kann ich jetzt per Befehl ein uns aus schalten


    Code
    root@raspberrypi ~ > knxtool groupswrite ip:localhost 0/2/8 1
    Send request
    root@raspberrypi ~ > knxtool groupswrite ip:localhost 0/2/8 0
    Send request
    root@raspberrypi ~ > knxtool groupswrite ip:localhost 0/1/16 1
    Send request
    root@raspberrypi ~ > knxtool groupswrite ip:localhost 0/1/16 0
    Send request


    Homebridge scheint jetzt zu funktionieren nach dem ich den chache gelöscht habe....


    Wie erstelle ich nun aus meiner ETS5 Konfiguration eine knx_config.json bzw die Geräte? Will ungern alles manuell eintragen, gibts da einen besseren weg ?

    Einmal editiert, zuletzt von Patrick_ () aus folgendem Grund: 2 Beiträge von spliffspliff mit diesem Beitrag zusammengefügt.

  • Supi, schön, dass es jetzt läuft. :)


    Nächster Schritt, knx_config.json. Und ja, das ist leider Handarbeit. Zumindest habe ich noch keinen automatisierten Weg gefunden. Ich habe mir überlegt, welche gleiche Arten von Geräten (Storen/Jalousinen, Licht an/aus, Dimmer etc.) ich habe und dann per copy/paste eine Rohfassung der .json angelegt. Im nächsten Schritt dann überall die Gruppenadressen eingetragen und am Ende die komplette .json auf jsonlint.com überprüft (und x "," etc. ergänzt, korrigiert X) ).


    Danach dann ins Apple Home über Homebridge einbringen, auch wiederum manuell gruppieren/den Räumen zuordnen. Hierfür hilft es, in der .json sinnvolle Gerätenamen zu verwenden, was bei der Zuweisung hilft, weil der Name nämlich in Home hinterher "grau hinterlegt" ist, wenn man den Namen manuell ändert. Dafür also am besten so etwas nehmen wie "Jalousie1WZ". Der Name wird dann in Home so neu vergeben, dass eine "natürlich" Sprachwendung für Siri & Co möglich ist. ;) Ich habe für diesen Schritt auch nochmal einige Anläufe gebraucht und musste den Cache immer wieder mal leeren und die Geräte neu einlesen, weil doch wieder eine Gruppenadresse in der .json falsch war.


    Wenn man dann mal fertig ist, unbedingt Backup machen und die .json nochmal separat absichern. :D


    Dieser ganze letzte Teil ist anscheinend mit HKKNX automatisiert, zumindest habe ich das so gelesen. Anscheinend kann man da die KNX-Projektdatei einlesen.

  • Ich habe mir überlegt, welche gleiche Arten von Geräten (Storen/Jalousinen, Licht an/aus, Dimmer etc.) ich habe und dann per copy/paste eine Rohfassung der .json angelegt.

    Kannst du mir deine oder eine passende Rohfassung zur Verfügung stellen ?


    Habe einige raffstores und Lichter zum dimmen ,(mdt KNX Geräte ).


    Der Rest ist kein Problem .

  • Hier ein gedimmte Licht:



    Hier eine Raffstore:

    Der Parameter "ServiceName" ist dann hinterher in Apple Home die Bezeichnung die erscheint, wenn Du den Namen des Gerätes löscht. Da eben die "Siri-sinnvolle" Bezeichnung manuell vergeben (siehe Hinweis von mir oben).


    Bei den Gruppenadresse musst Du natürlich Deine eigenen finden und eintragen.


    Sag Bescheid, wenn Du noch ein anderes Beispiel als für die beiden Gerätekategorien brauchst. Ich schau dann mal nach, ob ich bei mir was passendes finde.


    Lies Dir bitte unbedingt den Artikel bzw. das Wiki auf Github zum Plugin Homebridge-KNX durch. Auch damit Du die passenden GAs findest. Und nicht aufgeben, wenn es nicht direkt auf Anhieb beim ersten Mal klappt. Ich habe damals meine .json x Mal bearbeitet, immer wieder neu in Homebridge eingelesen, ausprobiert um mehrere Male festzustellen, dass ich doch wieder einen Fehler im Syntax oder einer GA hatte. Wenn Du mit der Fleissarbeit der .json aber mal durchbist, kannst Du Dich an die Raumzuordnung in Apple Home machen. Bevor nicht alles passt, lohnt es sich nicht.


    Automatisierungen am besten in "Controller für Homekit" und Apple Home "nur" für die Visualisierung und direkte Steuerung nutzen.


    Viel Erfolg! :)

  • Hab mir jetzt mal zwei Geräte zum üben angelegt.


    Aber es stimmt etwas nicht mit der Schnittstelle.

    Bekomme immer folgende Fehlermeldung in Homebridge wenn ich ein Gerät von KNX schalten will.


    [warn] 2024-09-14 12:28:10.685 read KNXNetHeader: unhandled serviceType = SEARCH_REQUEST


    Gehe mal davon aus das Homebdrige nicht richtig mit knxd kommuniziert.

    An was kann das liegen ?

  • Hast Du diesen Eintrag in der config.json Deiner Homebridge?

    Code
     {
                "name": "KNX",
                "platform": "KNX"
            },

    Die Geräte, die Du jetzt mit Deiner Homebridge schalten möchtest, funktionieren aber mit den direkt via KNXD abgesetzten Gruppenadressen?

  • Die Geräte, die Du jetzt mit Deiner Homebridge schalten möchtest, funktionieren aber mit den direkt via KNXD abgesetzten Gruppenadressen?

    ja, hier am Beispiel meiner Stehlampe. einmal schreiben und einmal knx abhören wenn ich Taster für stehlampe drücke

    Code
    root@raspberrypi ~ > knxtool groupswrite ip:localhost 0/1/20 1
    Send request
    root@raspberrypi ~ > knxtool groupsocketlisten ip:localhost
    Write from 1.1.7 to 0/1/20: 01
    Write from 1.1.3 to 0/2/10: 01
    Write from 1.1.7 to 0/1/20: 00
    Write from 1.1.3 to 0/2/10: 00



    hier meine Hombridge.json


  • Hmmm... versuch es mal so. Also ohne die ganzen Parameter in der KNX-platform section. Du siehst ja oben aus meinem Beispiel, dass diese ganzen zusätzlichen Parameter, die Du da hast, eigentlich nicht notwendig sind.


    Der Standard-Dateiname ist übrigens eigentlich knx_config.json. (Unterstrich, nicht Bindestrich).


    Sehr gut, dass der KNXD funktioniert. Das ist eigentlich die grössere Herausforderung. ;) Und mit der Homebridge-Config (eben nur mit name und platform) sollte es eigentlich direkt laufen.


    Wenn Du die Homebridge-Config geändert hast, auf jeden Fall die Homebridge (nicht notwendigerweise den Raspi) neu starten. Beim Start wird die knx_config.json eingelesen und die (beiden bei Dir testweise eingegebenen Devices) in die Homebridge eingebaut. Die siehst Du dann auch im Web-IF unter "Geräte". Hmmm... und jetzt fällt mir gerade auf, dass Du die ja sehen musst, um zu schalten... X) Wie auch immer. Versuch mal ohne diese zusätzlichen Parameter. Eigentlich sollte es dann direkt laufen, weil die Homebridge via homebridge-knx Plugin ja nur auf den KNXD zugreift


    Wenn es dann immer noch nicht geht, ist vermutlich die knx_config.json nicht OK. Überprüfen auf jsonlint.com. Und Du musst Dir sicher sein, dass die Gruppenadressen stimmen.


    EDIT

    Und jetzt sehe ich gerade, dass die Parameter, die Du in der Homebridge-config hast, eigentlich (zum Teil) in die knx_config.json reingehen. Meine knx_configjson (liegt in /var/lib/homebridge/) fängt so an:


    Code
    {
        "knxd_ip": "127.0.0.1",
        "knxd_port": 6720,
        "AllowWebserver": true,
        "AllowKillHomebridge": true,
        "Devices": [
    
    ...

    Natürlich unter der Voraussetzung, dass der KNXD auf demselben device (Raspi) läuft wie die Homebridge.


    Und der Eigentümer der Datei knx_config.json ist der user "pi". (herauszufinden mit dem Befehl ls -l /var/lib/homebridge/knx_config.json). Unter der Voraussetzung, dass Du die Homebridge gemäss hiesiger Smartapfel-Beschreibung installiert hast.


    Funktioniert es?

    Einmal editiert, zuletzt von HKuser ()

  • Hi, leider keine Besserung. Alles wie gehabt. Aber auch kein Unterschied. Übrigens das mit dem _ hab ich gleich gefixt. Danke


    Hier die Rückmeldung auf die Zugriffsrechte:


    Code
    root@raspberrypi ~ > ls -l /var/lib/homebridge/knx_config.json
    -rwxrwxrwx 1 homebridge homebridge 3599 14. Sep 17:29 /var/lib/homebridge/knx_config.json


    Auffällig ist jedoch im Homebridge LOG:

    Code
    Server Listening...localhost:undefined
    [warn] 2024-09-14 15:29:42.658 Invalid KNX 3-level mid group: 15/15/250
  • Ich vermute, es liegt an einer Berechtigung bzw. einem User-Recht... mal sehen.


    Was sagt denn:


    Code
    ls -l /home/pi/knxd/systemd/knxd.service
  • Code
    root@raspberrypi ~ > ls -l /home/pi/knxd/systemd/knxd.service
    ls: Zugriff auf '/home/pi/knxd/systemd/knxd.service' nicht möglich: Datei oder Verzeichnis nicht gefunden
    root@raspberrypi ~ >
  • OK, das hab ich mir schon fast gedacht. Homebridge und der KNXD scheinen von verschiedenen Usern installiert worden zu sein.


    Mach mal:


    Code
    find / -name knxd.service

    Als Ergebnis sollte Dir als Ausgabe angezeigt werden, wo/in welchem Pfad der KNXD installiert wurde. Dann den Befehl von oben nochmal mit dem gesamten Pfad eingeben:


    Code
    ls -l /kompletter-Pfad-zum-KNXD/knxd.service

    Ich vermute, der ist vom User root installiert. Deswegen werden auch die Schaltvorgänge zu den KNX-Devices, die Du direkt per Befehlszeile an den KNXD geschickt hast, funktioniert haben.


    So weit ich mich erinnern kann, muss der KNXD Schreibrechte für die knx_config.json haben. Also muss der User, der den KNXD installiert hat, auch Schreibrechte für die knx_config.json haben. Wenn das so ist, müsstest Du den Owner für die knx_config.json auf den User ändern, der die Homebridge installiert hat. Das versuchen wir jetzt herauszufinden.


    Linux-Experts kommen da vermutlich viel schneller zum Ziel als ich. Ich beschäftige mich mit dem Linux nur gezwungenermassen für Homebridge. ;)

  • Code
    root@raspberrypi ~ > find / -name knxd.service
    /sys/fs/cgroup/system.slice/knxd.service
    /root/knxd/systemd/knxd.service
    /usr/lib/systemd/system/knxd.service
    /etc/systemd/system/network-online.target.wants/knxd.service
    /etc/systemd/system/multi-user.target.wants/knxd.service
    /var/lib/systemd/deb-systemd-helper-enabled/network-online.target.wants/knxd.service
    /var/lib/systemd/deb-systemd-helper-enabled/multi-user.target.wants/knxd.service
    root@raspberrypi ~ > ls -l /root/knxd/systemd/knxd.service
    -rw-r--r-- 1 root root 262 10. Sep 17:19 /root/knxd/systemd/knxd.service

    Somit gibt es mehrere Orte wo das liegt …

  • Ne, die sind mit Symlinks "verbunden".


    Also der KNXD wurde vom User "root" installiert. Das homebridge-knx Plugin wurde (natürlich) vom User "homebridge" installiert. Wer installiert hat, dem "gehört" die Datei und hat die entsprechenden Rechte.


    Ich hab jetzt mal bei mir auf dem Raspi nachgesehen. Der KNXD wurde bei mir vom User "pi" installiert und das Plugin natürlich auch vom User "homebridge". Allerdings gehört bei mir die knx_config.json (auch) dem User "pi". Und das ist der Unterschied zwischen unseren beiden Installationen.


    Ich würde daher die knx_config.json mal Deinem User "root" vererben. Mach mal:


    Code
    chwon root /var/lib/homebridge/knx_config.json

    Anschliessend nochmal überprüfen mit:


    Code
    ls -l /var/lib/homebridge/knx_config.json

    Und dann müsste da "root" als Eigentümer stehen.


    Danach mal den Raspi rebooten (sudo reboot). Und anschliessend:


    Code
    sudo systemctl status knxd.service

    Was dann einen funktionierenden KNXD signalisieren sollte. Evtl nochmal mit einem einzelnen KNX-Befehl nochmal testen, ob das Device schaltet. Wenn alles OK, dann in die Homebridge und dort das Device mit der "Kachel" schalten.


    Uuuund? 8|

  • Hi sieht nun wie folgt aus


    Code
    root@raspberrypi ~ > chown root /var/lib/homebridge/knx_config.json
    root@raspberrypi ~ > ls -l /var/lib/homebridge/knx_config.json
    -rwxrwxrwx 1 root homebridge 3599 14. Sep 17:42 /var/lib/homebridge/knx_config.json
    root@raspberrypi ~ >

    Dann hab ich Sudo reboot gemacht .


    Befehl ausgeführt

    UPDATE : 11:33: Es funktioniert.


    Ich hab jetzt noch die Benutzer zur Gruppe root hinzugefügt und siehe da es geht. Die Lampe funktioniert . Da raffstorre zwar nicht aber zumindest kommunizieren jetzt homebridge und KNXd miteinander .

    Code
    root@raspberrypi ~ > sudo gpasswd -a homebridge root
    Benutzer homebridge wird zur Gruppe root hinzugefügt.
    root@raspberrypi ~ > sudo gpasswd -a knxd root
    Benutzer knxd wird zur Gruppe root hinzugefügt.
    root@raspberrypi ~ > sudo gpasswd -a daemon root
    Benutzer daemon wird zur Gruppe root hinzugefügt.


    Danke HKuser bis hier hin. Jetzt beginnt die Fleißarbeit die Geräte einzuarbeiten.

  • YEAH! :D


    Bei der Raffstore liegt es vermutlich an den GA. Das ist am Anfang ein bisschen undurchsichtig, welche GA wo in der _config.json eingetragen werden müssen.


    Im knx-user-forum gibt es noch einen Thread speziell zu diesem Plugin in Verbindung mit KNXD. Evtl dort noch Inspiration für das Aufsetzen der knx_config.json holen, falls es hakt.


    Gutes Gelingen! :)