Und zur Sicherheit noch mal mit curl bitte:
curl http://192.168.178.14/tgi/control.tgi?p=l
Ich schätze mal, da kommt dann das dabei heraus:
<html>0 0 1 0</html>
Falls wirklich das dabei herauskommt, dann füttern wir diesen Output an ein neues Skript, das wir einfach status.sh nennen. Das erstellst du genauso wie bereits das andere Skript:
- Konsole der Weboberfläche der Homebridge öffnen.
- Dort eingeben sudo nano status.sh. Dort den folgenden Code eingeben:
#!/bin/bash
STRING=$(curl -s http://192.168.178.14/tgi/control.tgi?p=l)
PORTS=$(echo $STRING | sed -e 's/<[^>]*>//g')
STATE=$(echo $PORTS | cut -d " " -f $1)
echo $STATE
- Absichern mit control-x (oder strg-x), dann y, dann die Entertaste.
- Eingeben: chmod +x status.sh
- Jetzt muss die Plugin-Konfiguration geändert werden. Also in der Weboberfläche der Homebridge auf Plugins klicken, dann auf die drei überlanderliegenden Punkte des Plugins Homebridge Cmdswitch2, dort dann auf Einstellungen. Dann den dort vorhandenen JSON-Code durch das folgende ersetzen:
{
"platform": "cmdSwitch2",
"name": "CMD Switch",
"switches": [
{
"name": "DJI",
"on_cmd": "/var/lib/homebridge/switch.sh 1uuu",
"off_cmd": "/var/lib/homebridge/switch.sh 0uuu",
"state_cmd": "/var/lib/homebridge/status.sh 1 | grep 1",
"polling": true,
"interval": 3,
"timeout": 5
},
{
"name": "Euro",
"on_cmd": "/var/lib/homebridge/switch.sh u1uu",
"off_cmd": "/var/lib/homebridge/switch.sh u0uu",
"state_cmd": "/var/lib/homebridge/status.sh 2 | grep 1",
"polling": true,
"interval": 3,
"timeout": 5
},
{
"name": "GoPro",
"on_cmd": "/var/lib/homebridge/switch.sh uu1u",
"off_cmd": "/var/lib/homebridge/switch.sh uu0u",
"state_cmd": "/var/lib/homebridge/status.sh 3 | grep 1",
"polling": true,
"interval": 3,
"timeout": 5
},
{
"name": "StarTech",
"on_cmd": "/var/lib/homebridge/switch.sh uuu1",
"off_cmd": "/var/lib/homebridge/switch.sh uuu0",
"state_cmd": "/var/lib/homebridge/status.sh 4 | grep 1",
"polling": true,
"interval": 3,
"timeout": 5
}
]
}
Alles anzeigen
- Speichern und Homebridge neu starten.
Das sorgt dafür, dass die Anzeige in HomeKit dem Status deines Gerätes entspricht, auch wenn du es außerhalb von HomeKit schaltest. Das Plugin checkt jetzt alle 3 Sekunden ("interval": 3), wie der Status ist und setzt die Anzeige in der Home-App auf den richtigen Wert.
Alles Theorie: ich habe ja keine Möglichkeit, das zu testen. Ich habe daher eine kleine Umgebung aufgebaut, die deine NetIO soweit simuliert, dass ich eine Antwort wie 0 1 0 0 bekomme. In der Simulation funktioniert es bestens.