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.
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ät | Modus | Zweck | Befehl |
---|---|---|---|
Shelly1 / Shelly1PM | – | anschalten | http://IP.vom.Shelly.Gerät/relay/0?turn=on |
Shelly1 / Shelly1PM | – | ausschalten | http://IP.vom.Shelly.Gerät/relay/0?turn=off |
Shelly2(.5) Kanal 1 | relay | anschalten | http://IP.vom.Shelly.Gerät/relay/0?turn=on |
Shelly2(.5) Kanal 1 | relay | ausschalten | http://IP.vom.Shelly.Gerät/relay/0?turn=off |
Shelly2(.5) Kanal 2 | relay | anschalten | http://IP.vom.Shelly.Gerät/relay/1?turn=on |
Shelly2(.5) Kanal 2 | relay | ausschalten | http://IP.vom.Shelly.Gerät/relay/1?turn=off |
Shelly2(.5) | roller | öffnen | http://IP.vom.Shelly.Gerät/roller /0?go=open |
Shelly2(.5) | roller | schließen | http://IP.vom.Shelly.Gerät/roller /0?go=close |
Dimmer/SL | – | anschalten | http://IP.vom.Shelly.Gerät/light/0?turn=on |
Dimmer/SL | – | ausschalten | http://IP.vom.Shelly.Gerät/light/0?turn=off |
Dimmer/SL | – | dimmen 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.
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.
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.
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.
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!
Bild | Bezeichnung | Info |
---|---|---|
Shelly Dimmer 2* | Preis: € 26,99 | |
Shelly Uni, WLAN Schaltaktor* | Preis: € 13,99 | |
Shelly plus 1PM | WLAN & Bluetooth Relais Schalter Mit Strommessung| Smart Home* | Preis: € 13,52 | |
Shelly PLUS 1PM Mini Gen. 3 - Steuerrelais mit Messfunktion, Unterputz, max. 8A, WLAN & Bluetooth, mit Shelly Chipsatz* | Preis: € 12,99 | |
Shelly Dimmer2 Relais, WLAN, Dimmfunktion, Unterputz (Shelly_Dimmer2)* | Preis: € 39,68 |
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.
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”
Hallo,
Danke für den Artikel. Eine Frage zu den Paswörtern:
http://admin:supergeheim@192.168.1.12/relay/0?turn=on
Ich habe keinen User angegeben, nur ein PW (Shelly1). Mir wird gar nicht angeboten einen User anzugeben. Was mache ich dann?
Gruß
ok, der user name ist admin
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!
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
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
Hat sich erledigt, war nur eine Einstellung im Shelly (Tastenmodus).
Gruß
Gregor
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?
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
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
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
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!
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
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
Hallo
mit tüfteln und Beschreibung von Cloud API:
https://shelly-16-eu.shelly.cloud/device/status
“Device_ID”&”Schlüssel”
gibt das Shelly sämtliche Info’s raus. Darunter auch die Info’s von allen angeschlossenen Sensoren.
Schön wäre wenn selektive die Sensoren angesprochen werden könnten!
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.
Gar kein Thema, ich danke dir für dein Feedback!
Beste Grüße und bis bald 👋
Hallo,
kann man eine URL erzeugen die den Shelly über das Internet schalten kann ohne Smarthome Interface oder die Shelly App?
Meine URL sieht bis jetzt folgendermaßen aus
MMEINESHELLYID und MEINSCHLÜSSEL ist natürlich mit meinen eignen Werten gefüllt
https://shelly-19-eu.shelly.cloud/device/relay/control/turn=on&channel=0&id=MEINESHELLYID&auth_key=MEINSCHLÜSSEL
Ja, das sollte gehen, wie im Beitrag unter Befehl an die Cloud-API senden beschrieben 😉
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 ?