Hue Lampe An/Aus über extcommands mit curl Befehl
Moinsen und frohe Weihnachten,
ich habe mich gerade mal daran versucht in der extcommands 2 Befehle einzufügen.
Diese werden mir auch in der Liste angezeigt, zeigen aber keine Wirkung.
Setze ich den Befehl im Terminal Fenster ab, kann ich darüber das einzelne Licht wunderbar an- und ausschalten.
Diesen Code habe ich eingefügt in der extcommands.xml (hue-user ist natürlich mein ausgeblendeter User, genauso wie bei der IP)
<command>
<name>Licht An</name>
<execute>sudo curl -X PUT --data '{"on":true}' --url http://192.168.x.x/api/hue-user/lights/42/state</execute>
</command>
<command>
<name>Licht Aus</name>
<execute>sudo curl -X PUT --data '{"on":false}' --url http://192.168.x.x/api/hue-user/lights/42/state</execute>
</command>
<name>Licht An</name>
<execute>sudo curl -X PUT --data '{"on":true}' --url http://192.168.x.x/api/hue-user/lights/42/state</execute>
</command>
<command>
<name>Licht Aus</name>
<execute>sudo curl -X PUT --data '{"on":false}' --url http://192.168.x.x/api/hue-user/lights/42/state</execute>
</command>
Ist dies ein Problem mit den Berechtigungen?! Wo genau müßte ich ansetzen?
Vielen Dank für die Hilfe!
Comments
Ich seh noch ein ; nach </execute> was da nicht reingehört. Sollte aber nicht wirklich stören. Als curl Befehl sollte root oder nicht keine Rolle spielen. Eher ein Problem sein wenn curl nicht in sudoers for repetierserver user ist. Würde daher eher ohne sudo versuchen aber für curl den absoluten Pfad angeben.
Eventuell noch " durch " ersetzen da du den Inhalt nicht über cdata geschützt hast.
<name>Licht An </name>
<execute>curl -X PUT -d "{\"on\":true}" "http://192.168.x.x/api/hue user/lights/1/state"</execute>
</command>
<command>
<name>Licht Aus</name>
<execute>curl -X PUT -d "{\"on\":false}" "http://192.168.x.x/api/hue user/lights/1/state"</execute>
</command>
Für cdata siehe hier:
https://www.tutorialspoint.com/de/xml/xml_cdata_sections.htm
Ist aber hier nicht nötig.
<execute>sudo curl -X PUT --data '{"on":true}' --url https://192.168.x.xxx/api/[Mein API-Key]lights/11/state </execute>;
</command>
<command>
<name>Licht Aus</name>
<execute>sudo curl -X PUT --data '{"on":false}' --url https://192.168.x.xxx/api/[Mein API-Key]/lights/11/state </execute>;
Mit der aktuellen Server Version kannst du das aber auch direkt in den Web Aktionen einrichten. PUT wird ja jetzt auch unterstützt. Bei meiner Hue klappt das wunderbar.
<name>Licht An</name>
<execute>curl -X PUT --data '{"on":true}' --url"https://[IP-Adresse]/api/[HUE-API]/lights/11/state" </execute>;
</command>
<command>
<name>Licht Aus</name>
<execute>curl -X PUT --data '{"on":false}' --url"https://[IP-Adresse]/api/[HUE-API]/l/lights/11/state" </execute>;
</command>
Das https muss möglicherweise http sein weil es kein gültiges Zertifikat gibt.
Ansonsten gehe ich davon aus das der curl Befehl in der Komandozeile getestet wurde uns so funktioniert?
Die einfache Lösung mit den Web Aktionen hast du verworfen?
Ja. In globalen Einstellungen->Web Aktionen kannst du curl ähnliche requests direkt eintragen.
Content type: application/json
Methode put,
data: {"on":true}
url: http://192.168.x.x/api/[Hue User]/lights/11/state
Dann noch sagen ob du es global ode reinem Drucker zugeordnet sehen willst und fertig. Kein extcommands.xml notwendig. Klappt bei mir so prima und einen eigenen server befehl zum setzen gibts noch obendrauf:-)