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.
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.
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
CodeAlles anzeigenroot@raspberrypi ~ > sudo systemctl status knxd ● knxd.service - KNX Daemon Loaded: loaded (/lib/systemd/system/knxd.service; enabled; preset: enabled) Active: active (running) since Wed 2024-09-11 11:06:49 CEST; 7h ago TriggeredBy: ● knxd.socket Main PID: 820 (knxd) Tasks: 1 (limit: 762) CPU: 509ms CGroup: /system.slice/knxd.service └─820 /usr/bin/knxd -e 0.0.1 -E 0.0.2:8 -c -t 1023 -b ipt:192.168.> Sep 11 18:54:56 raspberrypi knxd[820]: Layer 0 [15:B.ipt/ipt 28086.9> Sep 11 18:54:56 raspberrypi knxd[820]: Layer 0 [15:B.ipt/ipt 28086.9> Sep 11 18:54:56 raspberrypi knxd[820]: Layer 1 [15:B.ipt/ipt 28086.9> Sep 11 18:54:56 raspberrypi knxd[820]: Layer 8 [14:B.ipt/Conn 28086.9> Sep 11 18:54:56 raspberrypi knxd[820]: Layer 6 [14:B.ipt/Conn 28086.9> Sep 11 18:54:56 raspberrypi knxd[820]: Layer 0 [15:B.ipt/ipt 28086.9> Sep 11 18:54:56 raspberrypi knxd[820]: Layer 0 [15:B.ipt/ipt 28087.0> Sep 11 18:54:56 raspberrypi knxd[820]: Layer 1 [15:B.ipt/ipt 28087.0> Sep 11 18:54:56 raspberrypi knxd[820]: Layer 6 [14:B.ipt/Conn 28087.0> Sep 11 18:54:56 raspberrypi knxd[820]: Layer 0 [15:B.ipt/ipt 28087.0> lines 1-20/20 (END)...skipping... ● knxd.service - KNX Daemon Loaded: loaded (/lib/systemd/system/knxd.service; enabled; preset: enabled) Active: active (running) since Wed 2024-09-11 11:06:49 CEST; 7h ago TriggeredBy: ● knxd.socket Main PID: 820 (knxd) Tasks: 1 (limit: 762) CPU: 509ms CGroup: /system.slice/knxd.service └─820 /usr/bin/knxd -e 0.0.1 -E 0.0.2:8 -c -t 1023 -b ipt:192.168.222.32 Sep 11 18:54:56 raspberrypi knxd[820]: Layer 0 [15:B.ipt/ipt 28086.933] Send(010): 06 10 04 21 00 0A 04 27 05 00 Sep 11 18:54:56 raspberrypi knxd[820]: Layer 0 [15:B.ipt/ipt 28086.936] Recv(021): 06 10 04 20 00 15 04 27 06 00 29 00 BC E0 FF FA 01 10 01 00 80 Sep 11 18:54:56 raspberrypi knxd[820]: Layer 1 [15:B.ipt/ipt 28086.936] Send(004): 04 27 06 00 Sep 11 18:54:56 raspberrypi knxd[820]: Layer 8 [14:B.ipt/Conn 28086.936] found addr 15.15.250 Sep 11 18:54:56 raspberrypi knxd[820]: Layer 6 [14:B.ipt/Conn 28086.936] is OK Sep 11 18:54:56 raspberrypi knxd[820]: Layer 0 [15:B.ipt/ipt 28086.936] Send(010): 06 10 04 21 00 0A 04 27 06 00 Sep 11 18:54:56 raspberrypi knxd[820]: Layer 0 [15:B.ipt/ipt 28087.067] Recv(021): 06 10 04 20 00 15 04 27 07 00 29 00 BC E0 11 03 02 0A 01 00 81 Sep 11 18:54:56 raspberrypi knxd[820]: Layer 1 [15:B.ipt/ipt 28087.067] Send(004): 04 27 07 00 Sep 11 18:54:56 raspberrypi knxd[820]: Layer 6 [14:B.ipt/Conn 28087.067] is OK Sep 11 18:54:56 raspberrypi knxd[820]: Layer 0 [15:B.ipt/ipt 28087.067] Send(010): 06 10 04 21 00 0A 04 27 07 00
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
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 ?
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.
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:
{
"ServiceType": "Lightbulb",
"ServiceName": "Steckdose 1 gedimmt",
"Characteristics": [
{
"Type": "On",
"Set": [
"0/0/36"
],
"Listen": [
"0/0/188"
]
},
{
"Type": "Brightness",
"Set": [
"0/0/184"
],
"Listen": [
"0/0/189"
]
}
Alles anzeigen
Hier eine Raffstore:
{
"ServiceType": "WindowCovering",
"Handler": "WindowCoveringTilt",
"ServiceName": "Jalousie Gästezimmer",
"Characteristics": [
{
"Type": "TargetPosition",
"Set": [
"0/1/119"
],
"Listen": [
"0/1/119"
],
"DPT": "DPT5"
},
{
"Type": "CurrentPosition",
"Listen": [
"0/1/116"
],
"DPT": "DPT5"
},
{
"Type": "PositionState"
},
{
"Type": "TargetHorizontalTiltAngle",
"Set": [
"0/1/114"
],
"Listen": [
"0/1/114"
],
"DPT": "DPT5"
},
{
"Type": "CurrentHorizontalTiltAngle",
"Listen": [
"0/1/117"
],
"DPT": "DPT5"
}
],
"KNXObjects": [
{
"Type": "ShutterMove",
"Listen": "0/5/39",
"DPT": "DPT1"
}
],
"KNXReadRequests": [
"0/1/116",
"0/1/117a"
],
"LocalConstants": {
"ninetyDegRotation": "true"
}
Alles anzeigen
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 ?
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
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
{
"bridge": {
"name": "Homebridge 6082",
"username": "0E:8B:72:9A:60:82",
"port": 51666,
"pin": "802-55-329",
"advertiser": "avahi"
},
"accessories": [],
"platforms": [
{
"name": "Config",
"port": 8581,
"auth": "form",
"theme": "auto",
"tempUnits": "c",
"lang": "de",
"platform": "config"
},
{
"name": "KNX",
"config_path": "/var/lib/homebridge/knx-config.json",
"knxconnection": "knxd",
"knxd_ip": "192.168.222.40",
"knxd_port": 6720,
"platform": "KNX",
"_bridge": {
"username": "0E:AC:51:2F:24:44"
}
}
]
}
Alles anzeigen
{
"bridge": {
"name": "Homebridge 6082",
"username": "0E:8B:72:9A:60:82",
"port": 51666,
"pin": "802-55-329",
"advertiser": "avahi"
},
"accessories": [],
"platforms": [
{
"name": "Config",
"port": 8581,
"auth": "form",
"theme": "auto",
"tempUnits": "c",
"lang": "de",
"platform": "config"
},
{
"name": "KNX",
"platform": "KNX",
}
}
]
}
Alles anzeigen
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:
{
"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?
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:
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:
OK, das hab ich mir schon fast gedacht. Homebridge und der KNXD scheinen von verschiedenen Usern installiert worden zu sein.
Mach mal:
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:
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.
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:
Anschliessend nochmal überprüfen mit:
Und dann müsste da "root" als Eigentümer stehen.
Danach mal den Raspi rebooten (sudo reboot). Und anschliessend:
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?
Hi sieht nun wie folgt aus
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
root@raspberrypi ~ > sudo systemctl status knxd.service
● knxd.service - KNX Daemon
Loaded: loaded (/lib/systemd/>
Active: active (running) sinc>
TriggeredBy: ● knxd.socket
Main PID: 824 (knxd)
Tasks: 1 (limit: 762)
CPU: 25ms
CGroup: /system.slice/knxd.se>
└─824 /usr/bin/knxd ->
Sep 15 08:50:49 raspberrypi system>
Sep 15 08:50:49 raspberrypi knxd[8>
Sep 15 08:50:49 raspberrypi knxd[8>
Sep 15 08:50:49 raspberrypi knxd[8>
Sep 15 08:50:49 raspberrypi knxd[8>
Sep 15 08:51:34 raspberrypi knxd[8>
Sep 15 08:51:34 raspberrypi knxd[8>
Sep 15 08:51:34 raspberrypi knxd[8>
Sep 15 08:51:34 raspberrypi knxd[8>
Sep 15 08:51:34 raspberrypi knxd[8>
lines 5-20/20 (END)
Alles anzeigen
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 .
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!
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!