Hue Lampe An/Aus über extcommands mit curl Befehl

edited December 2020 in General
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>

Ist dies ein Problem mit den Berechtigungen?! Wo genau müßte ich ansetzen?

Vielen Dank für die Hilfe!

Comments

  • edited December 2020
    Ich hatte mal mit und mal ohne Sudo getestet.  Beides ohne Erfolg.

    Ein anderer Weg wäre per WebAction. Aber hier kann man ja nur Methode "Get" oder "Post" wählen.
    Die Hue API erwartet hier aber wohl die Methode "Put" damit es damit funktionieren würde.
  • Ja put hab ich bei den webactions nicht dran gedacht. Versuch gerade rauszubekommen wie ich den link für mich basteln muss. Hab auch eine hue und so könnte ich testen ob put klappt. Ist ja nicht weiter schwierig da eine methode mehr rein zu nehmen.

    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 &quot; ersetzen da du den Inhalt nicht über cdata geschützt hast.
  • Ok, ich update jetzt erstmal auf die 1.0 und werd das mal probieren.
    Muss ich noch für curl den Pfad mit angeben eventuell?
  • Ich würde es sicherheitshalber machen, einfach um die Fehlerquelle auszuschließen.
  • edited December 2020
    Ok, hier übrigens der Weg um die API für die Hue Lampen anzusprechen:

    /usr/bin/curl &quot;-X PUT --data '{"on":true}' --url http://192.168.x.x/api/hue_user/lights/42/state

    Hab es jetzt mal so entsprechend geändert aber leider immer noch ohne Erfolg. :)




  • edited December 2020
    Ok, ich hab es jetzt hin bekommen. :) Hab den Befehl noch etwas variiert.

    <command>
                    <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>


    Wie kann ich das, von dir oben beschrieben, besser schützen mit cdata?


  • Das hatte offenbar nichts mit cdata zu tun. Problem wie du erkannt hast war der -d parameter Du fängst mit " and und " beendet ihn aber da sind noch welche im Parameter die für die Shell escaped werden mussten.

    Für cdata siehe hier:
    https://www.tutorialspoint.com/de/xml/xml_cdata_sections.htm

    Ist aber hier nicht nötig.
  • Ab 1.0.1 wird put auch in WebActions funktionieren. Habs grad mit meiner Hue getestet und es funktioniert:-)
Sign In or Register to comment.