Praxisnahe Tutorials, auf die du zählen kannst.
Einsteiger Guide für Home Assistant

Shelly API – Geräte über WebHook URL steuern

In diesem Blog-Beitrag zeige ich dir Schritt für Schritt, wie du Shelly-Geräte über die Shelly-API steuern kannst. Wir werden Schritt für Schritt zeigen, wie Sie Steuerungs-URL für Ihren Shelly Cloud Account oder lokale Geräte erstellen und verwenden können. Diese API ist sicher und einfach zu bedienen, sodass jeder schnell loslegen kann!

Warum sollte man überhaupt die API nutzen

Es gibt viele Gründe, warum du deine Smart Home-Geräte von Shelly über eine API steuern solltest. Der vielleicht wichtigste Grund ist die Sicherheit. Wenn du eine API verwendest, hast du die Kontrolle darüber, wer Zugang zu deinen Geräten hat und was er mit ihnen machen kann. Das ist viel sicherer, als jemandem oder einem Plugin einfach das Passwort für dein Konto zu geben.

Ein weiterer Grund, die API zu nutzen, ist die Bequemlichkeit. Es kann viel einfacher sein, eine Automatisierung einzurichten und deine Geräte über eine URL zu steuern als über eine mobile App oder ein Webinterface. Das gilt besonders, wenn du mehrere Geräte von verschiedenen Herstellern hast, die vielleicht keine Schnittstelle haben oder nicht alle Funktionen unterstützten.

Ich habe das beispielsweise schon für mein smartes Türöffner Projek, den Shelly Button und meinem DIY-Bewässerungscomputer gebraucht. Denn über diese URL aufrufe, kannst du deine Shelly Geräte deinem lokalen Netzwerk aus steuern und über die Shelly Cloud von überall aus steuern. Das einzige, was du dafür tun musst, ist eine simple URL aufzurufen und so dein Gerät zu schalten.

Also lass uns loslegen!

Geräte im lokalen Netzwerk (WLAN) steuern

Der einfachste Weg, deine Shellies zu steuern, ist erst mal über das Lokal Netzwerk. Tatsächlich nur eine simple URL aufrufen, bei der Cloud-Steuerung (weiter unten) funktioniert das Ganze etwas anders und komplizierter.

Mehr von simon42  Google Home: Homebridge & HomeKit Geräte steuern

IP Adresse herausfinden

Zuerst musst du mal herausfinden, welche IP-Adresse dein zu steuerndes Shelly Gerät hat. Verbinde dich hier zu einfach über den Browser mit dem Web Interface, oder schau in der App unter Geräteinformation nach.

Übrigens: Der Hostname (Gerätename) würde zwar auch funktionieren, aber die IP Adresse ist zuverlässiger 😉

Befehl aussuchen

Das Wichtigste, was du am Anfang wissen musst: Hier kannst du auf die Dokumentation des Herstellers zugreifen (leider nicht auf Deutsch verfügbar). Sie enthält jede Information darüber, wie du Shellies abfragen, programmieren und verwalten kannst. Aber hier sind die wichtigsten HTTP-API-Befehle zum Ändern von Shelly Gadgets, die ich aufgeschrieben habe:

GerätModusZweckBefehl
Shelly1 / Shelly1PManschaltenhttp://IP.vom.Shelly.Gerät/relay/0?turn=on
Shelly1 / Shelly1PMausschaltenhttp://IP.vom.Shelly.Gerät/relay/0?turn=off
Shelly2(.5) Kanal 1relayanschaltenhttp://IP.vom.Shelly.Gerät/relay/0?turn=on
Shelly2(.5) Kanal 1relayausschaltenhttp://IP.vom.Shelly.Gerät/relay/0?turn=off
Shelly2(.5) Kanal 2relayanschaltenhttp://IP.vom.Shelly.Gerät/relay/1?turn=on
Shelly2(.5) Kanal 2relayausschaltenhttp://IP.vom.Shelly.Gerät/relay/1?turn=off
Shelly2(.5)rolleröffnenhttp://IP.vom.Shelly.Gerät/roller/0?go=open
Shelly2(.5)rollerschließenhttp://IP.vom.Shelly.Gerät/roller/0?go=close
Dimmer/SLanschaltenhttp://IP.vom.Shelly.Gerät/light/0?turn=on
Dimmer/SLausschaltenhttp://IP.vom.Shelly.Gerät/light/0?turn=off
Dimmer/SLdimmen auf 50%http://IP.vom.Shelly.Gerät/light/0?brightness=50

Wie du siehst, gibt es abhängig von deinem Gerätetyp, Version der Firmware und der entsprechenden Ausgänge, Eingänge beziehungsweise Interface es gibt es nun verschiedene Befehle zur Steuerung. Such dir aus der Tabelle 👆 einfach dein Gerät und einen Befehl aus.

Testen der Befehls-URL

In meinem Fall, sie die fertig generierte URL zum Anschalten des Shelly Plug S so aus:

http://192.168.1.12/relay/0?turn=on

Diese kann einfach im Browser aufgerufen werden, und es smarte Stecker schaltet sofort.

Sobald die Anfrage verarbeitet wurde, siehst du ein weises Browserfenster mit der Antwort des Gerätes, in JSON-Daten geschrieben. Hier teilen dir die Shellys mit z.B. mit, dass der Status von “ison” nun auf “true” ist, also angeschaltet ist.

Mehr von simon42  Home Assistant Dashboards 2024 (Tile-Card-Style)

Was tun bei Passwortgeschützen Shellies?

Wenn du diese Oberfläche mit einem Benutzernamen und ein Kennwort gesichert hast, musst du zusätzlich noch einen sogenannten “HTTP Basic Autorisation Header” mitgeben.

Klingt erst mal nach Raketenwissenschaft, ist aber kein Problem. Denn im Browser lässt sich der Header relativ einfach übergeben. Schreibe einfach vor die IP-Adresse deines Geräts die Zugangsdaten in der Form:

http://Benutzername:Kennwort@IP-Adresse

Bei mir also:

http://admin:supergeheim@192.168.1.12/relay/0?turn=on

Genau diese URLs benötigst du übrigens beim Shelly Button als “URL-Action”, um Geräte beim Tastendruck steuern zu können. Alternativ kannst du aber auch Szenen verwenden.

Geräte über das Internet (Shelly-Cloud) steuern

Da die Steuerung über die Cloud um einiges komplizierter ist, empfiehlt sich diese Vorgehensweise nur für erfahrene oder leidensfähig Smart Home Enthusiasten 🙂

Cloud aktivieren

Als Erstes musst du ein Shelly Cloud-Konto erstellen oder dich mit deiner E-Mail Adresse bzw. Benutzername anmelden. Das geht sowohl in der App, als auch in der Weboberfläche der Shelly Cloud.

Außerdem muss das Gerät, dass du steuern willst, natürlich in der Shelly Cloud sein, zu erkennen an dem kleinen Wolkensymbol am Gerät.

Shelly Cloud Symbol

Cloud-Key, Server und Device-ID herausfinden

Was du noch benötigst, ist dein Cloud API Key und der Server, auf dem dein Konto angelegt wurde. Beides findest du wieder in der Shelly App oder der Weboberfläche.

Der API-Key gilt für alle Geräte deines Accounts, genau wie der Server.

Ein Login mit E-Mail und Password ist bei der Cloud übrigens nicht möglich.

Von dem zu steuernden Gerät benötigst du außerdem noch die Device-ID. Diese gibts ebenfalls in der App.

Mehr von simon42  Wie du einen smarten Bewässerungscomputer selber bauen kannst

Cloud-Befehl herausfinden

Dringend ist erst mal zu wissen, dass die Seite für die Dokumentation für eine andere ist. Hier (Link) gibt es alle Informationen und ein Beispiel zum Senden sowie Empfangen von Daten.

Im Abschnitt Communication sieht man bereits, dass die Anfragen auch anders aufgebaut sind. Denn hier wird anstatt mit URL Parametern über eine Payload gearbeitet (also einen Anfrage-Inhalt, wenn man so will), der dem Format “application/x-www-form-urlencoded” entsprechen muss.

Befehl an die Cloud-API senden

Über den Browser lässt sich die Cloud-API nun nicht mehr so einfach testen, weshalb wir auf die Anwendung Postmann (Download) zurückgreifen. Dies ist eine kostenfreie Applikation, welche von Google mit entwickelt wird, um APIs zu testen.

Nachdem du die Anwendung installiert hast, folge einfach dem Video und pausiere, wenn nötig. Denke bitte auch daran, deine(n) eigene(n) Device-ID, Server Namen und API Key zu nutzen.

Wie du mit Postman in API-Sprache einen Request an ein Shelly Device senden kannst. In meinem Beispiel an eine Shelly 1.

Ich hoffe, dieser Blog-Beitrag war hilfreich und hat dir gezeigt, wie du deine Shelly-Geräte mit der API steuern kannst. Wenn du Fragen hast oder auf Probleme stößt, zögere bitte nicht, uns ein Kommentar dazulassen.

Vielen Dank fürs Lesen!

Verpasse keine Tipps!

Ich senden keinen Spam! Erfahre mehr in der Datenschutzerklärung.

Transparenz: In diesem Artikel sind Partnerlinks enthalten. Durch einen Klick darauf ge­lan­gt ihr direkt zum Anbieter. Solltet ihr euch dort für einen Kauf entscheiden, erhalte ich ei­ne kleine Provision. Für euch ändert sich am Preis nichts & Partnerlinks haben keinerlei Einfluss auf meine Berichterstattung. Vielen Dank für deine Unterstützung!

Gründer von simon42. Schreibt hier ehrlich und leidenschaftlich über Smart Home und Technik Themen, denn das Zuhause wurde bereits von Sprachassistenten übernommen und die Kontrolle abgegeben 😁

21 Gedanken zu „Shelly API – Geräte über WebHook URL steuern“

  1. Hallo Leute,
    Ich kann leider keine Nachricht per “Post” senden. Liegt es daran, dass sich die Shelly Cloud geändert hat?
    Denn seit der Erstellung des Beitrags haben sich POSTMAN und ShellyCloud stark verändert.
    Ich habe nur folgende Daten für den “Shelly Plus Plug S” gefunden:
    http://192.168.33.1/rpc/WiFi.GetConfig,
    http://192.168.33.1/rpc/WiFi.SetConfig?config={“sta”:{“ssid”:”Shelly”,”pass”:”Shelly”,”enable”:true}},
    http://192.168.33.1/rpc/WiFi.GetStatus,
    http://192.168.33.1/rpc/WiFi.Scan,
    http://192.168.33.1/rpc/WiFi.ListAPClients,

    Ich habe sie ausprobiert, aber ohne Erfolg.
    Was mache ich falsch? Bitte um eine Lösung.
    Danke.

    Antworten
  2. Dank deiner Anleitung habe ich es endlich zusammengebracht externe Shelly 3em abzufragen und als Entität im Homeserver alle 30 sekunden aktualiesiert zu bekommen.

    Falls es wer braucht. Hier die Vorlage für die configuration.yaml:
    sensor:
    – platform: rest
    name: “Shelly Power Consumption”
    resource: “https://shelly-XX-eu.shelly.cloud/device/status/”
    method: GET
    headers:
    Content-Type: “application/x-www-form-urlencoded”
    params:
    id: “XxXxXxXxXxXxX”
    auth_key: “XxXxXxXxXxXxXXxXxXxXxXxXxXXxXxXxXxXxXxXXxXxXxXxXxXxXXxXxXxXxXxXxXXxXxXxXxXxXxXXxXxXxXxXxXxXXxXxXxXxXxXxXXxXxXxXxXxXxX”
    value_template: “{{ value_json.data.device_status[’em:0′].total_act_power }}”
    unit_of_measurement: “W”

    Antworten
  3. Hallo Simon Müller,

    Du machst mit abstand die besten videos und tutorials! Mit deiner Hlfe habe ich schon so einiges in meinen HA einbinden und realisieren können und bin schon sehr zufrieden damit.
    Leider bekomme ich die Cloudbox bzw. das Everhome welches meine Jaro – Lifte (Rollos) steuert nicht eingebunden, obwohl das eine API Schnittstelle bietet: https://everhome.cloud/de/entwickler.
    Das mit den API Schnittstellen wäre echt eine super Idee ein separates Erklärvideo zu machen, denn bis dato konnte ich leider nichts einfaches dazu finden. Auch Github ist bezüglich der Cloudbox / Everhome leer 🙁
    Danke!

    Antworten
  4. Hallo Simon,
    es wäre wirklich super, wenn du erklären könntest, wie man dann ein Shelly über die Cloud in Homeassistant als Sensor, Switch und Binary Sensor anlegt. Habe das leider nirgendwo im Internet “idiotensicher” beschrieben gefunden. Lediglich den Template Sensor habe ich über die API hin bekommen. P.s. habe dazu in deinem Forum auch nichts gefunden. Wäre wirklich super, wenn du mir das weiterhelfen könntest

    Antworten
  5. Hallo zusammen,

    ich bin neu hier im Forum und beschäftige mich erst seit kurzem mit Home Assistant.

    Heute habe ich einen Shelly Plus 2PM bei mir installiert um meine Rolläden im EG zu steuern. Über die Shelly App funktioniert alles einwandfrei.

    Den Shelly konnte ich auch problemlos in Home Assistant integrieren. Aber ich habe eine Problem mit dem steuern der Rollos. Bei dem Steuerelement ist der Button zum hochfahren der Rollos nur aktiv, solange ich die Rollos runterfahre, ansonsten ist der Button immer inaktiv.

    Hat jemand eine Idee was das Problem sein könnte?

    Viele Grüße
    Gregor

    Antworten
    • Keine direkte Idee, normalerweise ist der Button verfügbar, wenn das Rollo nicht komplett hochgefahren ist.

      Wird vielleicht der öffnungstatus nicht übertragen? Shellys richtig konfiguriert? Home Assistant Hardware mal neu gestartet?

  6. Hallo,
    bei mir funktioniert das nur teilweise, setze ich den Code mit body (x-www-form….) ab, funktioniert es, setze ich es genau wie im Video mit raw (mit id vorne) ab bekomme ich einen „Unauthorized! Wrong authorization header provided!“ „The login information is invalid! Please login again! Fehler.

    Hat jemand Rat?
    Grüße
    Torsten

    Antworten
  7. Habe schon in einem anderen Beitrag gepostet.
    Die Homekit FW der Shelly hat ja inzwischen auch eine eigenen API.
    Ich kann problemlos einen Request absetzen. Allerdings klappt das nicht wenn ein Passwort in dem GUI gesetzt ist.
    Der funktionierende GET lautet:
    192.168.178.115/rpc/Shelly.SetState?id=1&type=0&state={“state”:true}

    Das übliche Vorgehen mit admin:1234@ vorangestellt klappt aber nicht.
    Laut Beschreibung soll man ein –user “admin:<password>” –digest
    voranstellen.

    Hat da einer von Euch ein-en Rat für mich?
    Grüße
    Peter

    Antworten
    • Moin Peter,

      ich habe das gleiche Problem. Hast Du schon eine Lösung?
      Ich arbeite an einer VB.NET Einbindung der Shellys in meine selbst entwickelten SmartHome Lösung

      Gruß
      Rolf

  8. Besten Dank für den Artikel, das hat einiges an Klarheit gebracht! 🙂 Wäre es möglich auch ein eigenes Dashboard mit Bedienungselementen für meine Shellys zu bauen, das ich von überall aus steuern kann, ohne die Shelly App / Cloud App zu nutzen? Mit Postman klappt die API Steuerung schon sehr gut, allerdings ist mir noch nicht ganz klar, wie man das ganze auf seine eigene kleine Website bringt!

    Antworten
    • Hi Jan,
      prinzipiell kann ich dir dafür Home Assistant empfehlen (Schau gerne mal auf meinem YouTube-Kanal), da man hier ja alles steuern könnte. Die Shelly-Geräte (Cloud) könnte man dann als Rest-API Entitäten anbinden…

      Sonst bräuchtest du prinzipiell ein Backend, was dir in irgendeiner Form API-Requests ausführen kann. Über JS im Browser könnte es zwar auch gehen, wird aber zu CORS-Fehler führen…

      Beste Grüße

  9. Hallo,

    besten Dank für die Erklärungen. Es funktioniert.

    Nur habe ich verschiedene Shely devices und die möcht ich ebenfalls überwachen und kontrollieren.
    Shelly 1 mit temperatur sensoren
    Shelly 2.5 mit Storensteuerung
    Temperatur Sensoren
    Wo finde ich die entsprechenden Beschreibungen für Ansprechen und Befehle.

    Wo finde ich die Beschreibung?

    für Pfade …cloud:/devices/?
    und die entsprechenden control commands

    besten Dank
    Peter

    Antworten
  10. Super Beitrag – hat mir sehr geholfen. ich steuere mit 2 Überwachungskameras einen shelly uni an (als Alarmserver). Wenn die Kamera nun alamiert, schaltet die Kamera bei Nacht in dem jeweiligen Bereich zusätzliche Lichter an und der NVR-Recorder bekommt ein externes Alarmsignal.
    Nochmal Danke.

    Antworten
    • Habe das gleiche Problem.
      Würde gerne über eine URL einen Shelly schalten.
      Bei mir kommt immer die Fehlermeldung:
      {“isok”:false,”errors”:{“404″:”Requested method was not found”}}

      Gibt es da bereits eine Lösung ?

Schreibe einen Kommentar

Send this to a friend