HTTP API? (GET, PUT etc)

  • Hallo alle zusammen,


    Dank dieser Anleitung

    https://smartapfel.de/homebridge/raspberry-pi-vorbereiten/

    Habe ich mir Homebridge auf einem PI Zero installiert und das läuft super mit (im Moment noch) einer Philips Hue-Bridge und einem Ikea Tradfri-Gateway.


    So weit, so gut.

    Nun baue ich mir selbst noch eine Lampe die auch integriert werden soll.

    Diese soll allerdings nicht nur gesteuert werden können sondern auch meine anderen Lampen mit steuern können.


    Daher meine Frage:

    Wie kann ich Homebridge per HTTP-Api ansprechen?

    Ich habe viel gelesen, aber nix aussagekräftiges gefunden. Insecure Mode scheint klar, aber wie sehen dann die Befehle zum Auslesen zB des Status einer Lampe (Helligkeit, Farbe, etc) aus und wie kann ich diese Eigenschaften über GET/PUT-Aufrufe steuern?

    Darüber scheint es keine Dokumente zu geben, nur den Hinweis dass die API sich dann am HAP-Protokoll orientiert habe ich gefunden. Dazu habe ich aber auch keine Doku finden können.


    Meine Lampe funktioniert und mit der HUE-Bridge kann ich schön kommunizieren. Aber mit dem Tradfri-Gateway eben nicht direkt, wegen COAPS, daher die Hoffnung, dass über Homebridge realisieren zu können.


    Meine Idee war, mit meinem MikroController quasi einfache GET oder PUT Requests zu machen mit den entsprechenden Parametern... Mir fehlt aber sowohl die URL als auch mögliche Parameter und der entsprechende Aufbau.


    Könnt ihr mir bitte weiter helfen?


    Vielen Dank!

    Viele Grüße

    summsel

  • Ich hab mal vor einiger Zeit das hier gefunden:



    Im Webbrowser reicht ein einfaches http://RASPI-IP:51826/accessories (best viewed with Firefox).


    Ich habe aber nicht die erforderliche Geduld, da tiefer in die Materie einzusteigen.


    Stefan

  • Servus Zusammen,

    hat jemand zu den direkten API mal eine Doku oder Geschriebsel gefunden, welche calls es gibt?

    Das Datenmodell scheint sich seit 2 Jahren geändert zu haben (erweitert), so dass der "Auslesen der accessories" funktioniert, aber das verändern des Status nicht.


    Was FUnktioniert:

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, 'http://<meineIP>:51826/accessories');

    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');

    curl_setopt($ch, CURLOPT_HTTPHEADER, array(

    'Content-Type:Application/json',

    'authorization: 031-45-154',

    ));


    Damit erhalte ich ein wunderbares JSON mit allen Accessories (inkl. AID, IID, und allen Characteristics)


    Wenn ich dann versuche einen Status zu setzen, bekomme ich einen kryptische Rückmeldung - die ich mir nicht herleiten kann (ohne Doku)

    Code
    {"status":-70410}

    was ich sende:

    $request = "{ \"characteristics\": [{ \"aid\": 15, \"iid\": 5, \"value\": true}] }"; //ich hab es auch als Array versucht, klappt auch nicht...

    $request = json_encode($request);


    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, 'http://192.168.0.107:51826/characteristics');

    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    curl_setopt($ch, CURLOPT_POSTFIELDS,$request);

    curl_setopt($ch, CURLOPT_HTTPHEADER, array(

    'Content-Type:Application/json',

    'authorization: 031-45-154',

    ));


    Falls jemand einen guten Tip hat: immer her damit.


    Mein Ziel: Ich möchte meine Geräte direkt per Rest API steuern, so dass ich eine grafische Karte meines Smart Home habe, und durch ein Event / link klick die homebridge direkt steuern kann (nicht den Umweg über die http webhooks und IFTTT).

  • Falls jemand einen guten Tip hat: immer her damit.

    Erstmal danke für dein "Geschriebsel" - damit kann ich was anfangen. Ich weiß nicht, wie du deine Homebridge installiert hast oder startest, aber vielleicht hilft das Setzen des Insecure-Modus (homebridge -I) beim Start der Homebridge?

  • Hi sschuste,


    danke für Deine schnelle Antwort. Das mit -I hatte ich auch schon versucht, weiß aber ehrlich gesagt nicht, wo und was ich dann sehen sollte. beim starten, schalten o.ä. kommen leider keine API's.



    Vielleicht stehe ich aber auch einfach nur auf dem Schlauch.


    Installiert habe ich es "einfach" nach Deiner Anleitung - Danke dafür!!!