Mit ShellyScript an Homebridge API Befehle abschicken

  • Hallo Zusammen,

    ich benutze Homebridge um Tuya LED's und Shellys zu steuern.

    Nun versuche ich seit einer weile über verschiedene Möglichkeiten eine Tuya LED mit einer Shelly i4 über die Homebridge zu steuern.

    Auf der Homebridge gibt es die swagger "Homebridge UI API Reference", ist es möglich mit dem Shelly-Script dort einen PUT request zu senden ?

    so sieht das UI von Swagger aus.

    Ich habe auch versucht ein http-befehl in die shelly einzufügen hat aber nicht funktioniert

    http://shellyuser:DjBQL6t9YmKFDNe@10.1.1.166:8581/api/accessories/868767a70871e0708c6637372a9cd1e75b3949585?characteristicType=On&value=true

    Da gibts Probleme beim auth ich bekommen einen

    Code
    {"statusCode":401,"message":"Unauthorized"}

    Deshalb die Frage ob man per Script so eine Anmeldung an diese API Schnittstelle machen kann und die benötigte Befehle absenden kann?


    Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen.

    Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen.

    Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen.

    Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen.
  • nurix 19. Januar 2022 um 23:48

    Hat den Titel des Themas von „Mit ShellyScript an swagger api Befehle abschicken“ zu „Mit ShellyScript an Homebridge API Befehle abschicken“ geändert.
  • Hallo Zusammen,

    bin etwas weiter mit meiner Suche nach einer Lösung.

    Man kann mit curl (true/false)

    Code
    curl -X PUT http://HomebridgeIP:port/characteristics --header "Content-Type:Application/json" --header "authorization: 081-15-123" --data "{\"characteristics\":[{\"aid\":2,\"iid\":10,\"value\":1}]}"

    die Tuya LED'S ein- / ausschalten.

    Die Frage ist nun ob man mit der i3 oder die neuen Shelly plus solche Befehle abschicken kann?

    Oder kann man diesen curl Befehl in eine URL umwandeln?

    Mit dieser URL im Braowser bekommt man den Status vom Gerät

    Code
    http://hb-ip:port/characteristics?id=2.10
    
    -->{"characteristics":[{"aid":2,"iid":10,"value":0}]}

    Viele Grüße

  • mit dem I3 wird das sicher nicht gehen, da der lediglich HTTP GET-Request schicken kann. Der neue Plus I4 kann zwar per Script aktuell GET und POST Requests schicken, PUT aber auch (noch) nicht.

    PUT wird kommen, ein entsprechender Feature-Request von mir wurde akzeptiert. Was aber vermutlich problematisch wird ist der zusätzliche Authorization-Header, der mit geschickt werden muss..

    --header "authorization: 081-15-123"

    >100 Shellies, darunter so gut wie alles was der Hersteller produziert hat. ;)
    :!: ich beantworte grundsätzlich keine Fragen per persönlicher Nachricht:!:

  • Was aber vermutlich problematisch wird ist der zusätzliche Authorization-Header, der mit geschickt werden muss

    Wie ist denn das eigentlich?

    Diese Header --header "Content-Type:Application/json" --header "authorization: 781-07-915" wird das von der Gegenstelle verarbeitet oder muss der Client das selber verarbeiten und sendet es dann an die Gegenstelle?

    Ich verstehe ja nicht was von Programmierung und so, aber ist die Authentifizierungsmethode mit dieser PIN nicht einfacher und sicherer als user:password@ in der URL bzw im script zu haben?

    Habe hier was von einem jq parser und native 'sed' & 'awk' parser gelesen

    https://github.com/homebridge/hom…mment-387980947

    https://github.com/KhaosT/HAP-Nod…PServer.js#L700

    Wenn es gehen würde, könnte man über die Homebridge-Schnittstelle alle Geräte direkt mit der Shelly ansprechen ohne noch zusätzlich mqtt und node-red installieren zu müssen.

    Das wäre ein riesen Vorteil bei der Installation der LED Spot's weil dann keine direkte Kabelverbindung benötigt wird und man mit den i4's verschiedene Gruppen schalten könnte.

    Kann ich dich beim Feature-Request irgendwie unterstützen?

  • Kann ich dich beim Feature-Request irgendwie unterstützen?

    die Entwickler haben bereits zugesagt, dass das Senden von HTTP PUT requests eingebaut wird.

    Basic Auth in der URL (user:password@...) ist ziemlich unsicher, weil username und passwort im Klartext übermittelt werden. Wenn das aber weiterhin von der Homebridge unterstützt wird, dann wird das zukünftig mit dem Shelly I4 funktionieren.

    --header "Content-Type:Application/json" --header "authorization: 781-07-915"

    Das sind Informationen, die vom Client (in deinem Fall wäre das der I4) an den Server (in deinem Fall die Homebridge) gesendet werden müssen. zusätzliche Header kann der Shelly aber bei einem Request nicht mit schicken, da der intern nicht mit cURL arbeitet.

    >100 Shellies, darunter so gut wie alles was der Hersteller produziert hat. ;)
    :!: ich beantworte grundsätzlich keine Fragen per persönlicher Nachricht:!:

  • Dieses Thema enthält 3 weitere Beiträge, die nur für registrierte Benutzer sichtbar sind.