Shellys sind vereinfacht ausgedrückt WLAN Schalter in verschiedensten Ausführungen, der Banalste ist ein Schuko Zwischenstecker. Der informierte und bissl IT affine Leser bemerkt: AHA damit kann ich Geräte per WLAN schalten. Richtig!
Shellys werden vom bulgarischen Unternehmen Allterco entwickelt und herstellt. Link zur Shelly Website
Bitte nicht zu verwechseln mit einem der Protagonisten der Serie Big Bang Theory, Sheldon Cooper, der wird auch im Verlauf der Serie öfter Shelly genannt, hat aber hiermit nix zu tun!
Mittlerweile (April 2024) gibt es eine Vielzahl an verschiedenen Shellys, ich werd hier nicht auf sämtliche Anwendungsmöglichkeiten eingehen und auch nicht auf alle verschiedenen Shellys, das würd den Rahmen mehr als sprengen. Nur ganz kurz, Shellys kann man mit einer eigenen App über die sogenannte Shelly Cloud steuern (Internetverbindung erforderlich), über WLAN, Bluetooth, über den Browser im lokalen Netzwerk oder über webhooks - erklär ich unten irgendwo.
Was macht der Kraweuschuasta mit einem Shelly?
In diesem Kastl ist ein Shelly Plus 2PM verbaut. Das "PM" bedeutet, daß ma mit dem Shelly die Energie und Leistung des Verbrauchers messen kann.
Kraweuschuasta der Paranoiker will die Cloud nicht für so banale Spielereien wie die Haussteuerung benutzen. OK, Haussteuerung ists eh ned, es sind gezielte Einsatzbereiche.
Das heißt für mich, auf gewissen Annehmlichkeiten verzichten zu müssen, was aber ka Tragödie ist, Shellys sind wirklich universell einsetzbar, parametrierbar und programmierbar. Leider ist die offizielle Dokumentation für die Shelly URLs nicht wirklich einfach zu lesen, daher hab ich mich entschlossen, hier zukünftigen armen Nackerpatzln ein bissl weiterzuhelfen, damit ihr nicht wie ich hunderte Stunden mit Herumsuchen, ausprobieren und Fluchen verbringen müssts.
Najo a Shelly wär halt ned blöd, oder?
Am Besten für den Anfang amal Zwa, ich würde an Shelly Plus1PM und an Shelly Plug S empfehlen, dann hat ma scho Einiges zum Experimentieren.
Den Shelly stattet ma am Besten mit an Taster und an Lamperl aus, dann ist ma schon super gerüstet.
Aktuell (Aprill 2024) kostet ein Plug S grob an Zwanzger, ein Plus 1 PM grob 18€
Jeder Shelly hat sein eigenes "Mini-WLAN" an das man sich verbinden kann und mit der Standard IP Adresse 192.168.33.1 im Browser die Weboberfläche des Shellies erreichen kann. Mit dem Knopferl rechts im Bild kann man den Shelly ein und ausschalten. Das ist schonamal echt cool.
Sobald ma an neuen Shelly gekauft hat, sollt ma a Firmware update über die Lokale Weboberfläche machen, die vorinstallierte Version ist meist schon älter.
Ich gehe jetzt nicht auf sämtliche Konfigurationsmöglichkeiten eines Shellies ein, da es zu viele verschiedene Typen und je Typ zu viele Möglichkeiten gibt, je nach Anwendungsfall und User Präferenz. Im Prinzip kann ma nix falsch machen, im Notfall kann ma an Total Reset machen, dann ist der Shelly wieder im Auslieferungszustand.
Meine Beispiele beziehen sich auf den aktuellen Firmwarestand vom Shelly Plus1 PM 1.2.2
Aktuelle Shellies gehören zur 2. Generation Shellies, diese haben einen performanteren Prozessor und mehr Funktionen. Gen 1 Shellies würde ich nicht mehr kaufen, auch ned gebraucht.
Das ist schonamal total cool an den Shellies, die Steuerung über Webhooks. Das kann auch der unbedarfte User ausprobieren, einfach die IP Adresse des Shellies eintippen und den gewünschten Befehl dazu. Diese zusammenzubasteln erfordert a Wengl Geduld, aber mit Hilfe dieser coolen Seite sollte das ja für den Anfänger ka Problem sein.
Die Einfachsten Befehle sind schon amal das Ein- und Ausschalten:
http://192.168.1.33/relay/0?turn=on
http://192.168.1.33/relay/0?turn=off
http://192.168.1.33/relay/0?turn=toggle (toggle ist Umschalten, also von AUS zu EIn und von EIN zu AUS)
Der erstaunte Benutzer bekommt eine seltsame Antwort im Browser, die ungefähr so ausschaut
Herzlichen Glückwunsch, das ist Ihr erster JSON Response. JSON ist ein Antwortformat den "Das Internet" oft schickt. Wer einen IQ über 120 hat, hat möglicherweise die erste Zeile schon interpretiert: ison = true was soviel heißt wie Eingeschaltet = wahr. Cool, nicht?
Simples theoretisches Beispiel:
http://IPAdressevomShelly/schalte das Licht ein?für20Sekunden
Simples praktisches Beispiel:
http://192.168.1.33/relay/0?turn=on
Der kluge, aufmerksame Leser, setzt statt der von mir angegebenen IP Adresse 192.168.1.33 selbstverständlich die IP seines eigenen Shellies ein !!
Zum Beispiel beim Shelly Plus 2 PM gibts zwa Schaltausgänge, da muss ma aufpassen und beim Webhook angeben:
http://192.168.1.33/relay/0?turn=on
oder halt
http://192.168.1.33/relay/1?turn=on
Es gibt eine sehr nützliche Funktion bei WEB URLs, die Timerfunktion. Damit kann ma einem Schaltbefehl eine Zeitdauer in Sekunden mitgeben zum Beispiel für die Klo- Nachluftsteuerung
curl -s http://192.168.1.33/relay/0?turn=on&timer=300
Die von mir verwendete Firmwareversion 1.2.2 hat scheinbar an Bug, die Timer Funktion &timer=xxx wird vom Shelly nicht übernommen. Getestet mit PlugS, Plus1PM, Plus2PM
Und so kommt es, daß ein Shelly einen Anderen Shelly schalten kann, zum beispiel die eine Action, die einen Shelly lokal einschaltet, sendet dem Zweiten Shelly einen Webhook mit
Das gleiche noch fürs Ausschalten und ma hat eine quasi Parallelschaltung von 2 Shellies, wurscht, wo sie sich befinden (WLAN Verbindung vorausgesetzt).
Jetzt könnts schon amal a Wechselschaltung zusammenmankln, also Gerät1 soll EIN sein und Gerät2 AUS, auf Tastendruck genau umgekehrt.
Viel Spaß!
Das ist ein oder zwei Tage supercool, die Shellys über den Browser zu steuern, aber nach 3 Wochen irgendwann langweilig. Also schau ma uns noch die nöchste coole Steuerungsmöglichkeit von Shellys an. Die hat genau genommen nix mit den Shellies selbst zu tun, sondern mit dem Kommandozeilenprogramm cURL. Das heißt eigentlich Client URL und kann quasi Daten von Computer zu Computer übertragen, die wie Webadressen codiert sind.
Beispiel:
Im Browser tippt man ein: http://192.168.1.33/relay/0?turn=on
oder aus der Windows (oderLinux) Kommandozeile: curl -s http://192.168.1.33/relay/0?turn=on
gleiches Ergebnis: der Shelly schaltet ein.
Der nicht ganz Unterbelichtete Leser merkt: Cool, da könnt ma ja was scripten! Genau!
Banales Beispiel: Aufruf vom Raspberry Pi (Linux): Shelly einschalten, 10 Sekunden warten, dann wieder ausschalten (In der Linux Kommandozeile müssen die einzelnen Kommandos durch ; getrennt werden, sofern sie nicht in einem Shellscript ausgeführt werden):
curl -s http://192.168.1.33/relay/0?turn=on;sleep 10;curl -s http://192.168.1.33/relay/0?turn=off
Und munter geht es weiter, wenn ma die Infos eines Shellies auslesen möchte und nicht Unmengen an IP Adressen manuell in den Browser eintippen möchte, könnt ma folgende URL verwenden:
curl -s http://192.168.1.33/rpc/Shelly.GetDeviceInfo
mit dem Response:
{"name":null,"id":"shellyplus1pm-xxxxxxxxxxxx","mac":"B0B21AAAAAAA","slot":0,"model":"SNSW-001P16EU","gen":2,"fw_id":"20240223-141842/1.2.2-g7c39781","ver":"1.2.2","app":"Plus1PM","auth_en":false,"auth_domain":null}
Nützliche Info einzeln abgefragt wäre z.B. der Shelly Typ oder die Firmwareversion (vom Raspberry Pi aus aufgerufen):
curl -s http://192.168.1.33/rpc/Shelly.GetDeviceInfo | jq -r ".app"
Response: Plus1PM
curl -s http://192.168.1.33/rpc/Shelly.GetDeviceInfo | jq -r ".ver"
Response: 1.2.2
Um nur ein einziges Key-Value Paar aus der JSON Antwort rauszufiltern verwende ich unter Linux das Kommandozeilentool ./jq
Windows Fuzzis verwenden angeblich Powershell dazu.
Installation vin ./jq am Raspberry Pi:
sudo apt-get update
sudo apt-get install jq
generell:
curl -s http://192.168.1.33/rpc/Switch.GetStatus?id=0
{"id":0, "source":"http", "output":true, "apower":0.8, "voltage":236.6, "current":0.018, "aenergy":{"total":0.022,"by_minute":[1.990,0.000,1.990],"minute_ts":1712687280},"temperature":{"tC":48.5, "tF":119.3}}
Momentanleistung
curl -s http://192.168.1.33/rpc/Switch.GetStatus?id=0 | jq -r ".apower"
0.8
Einheit in W
Energie seit letztem Werte-Reset
curl -s http://192.168.1.33/rpc/Switch.GetStatus?id=0 | jq -r ".aenergy.total"
0.115
Einheit in Wh
Reset der Energiewerte
curl -s http://192.168.1.23/rpc/Switch.ResetCounters?id=0&type=["aenergy","ret_aenergy"]
Response:
[1] 39353
[user]@[Computername]:~$ {"aenergy":{"total":0.000}}
[1]+ Fertig curl -s http://192.168.1.23/rpc/Switch.ResetCounters?id=0
Shellys haben eine ganz coole Zeischaltuhrfunktion, genannt Schedules.
Weiters kann man Einiges scripten, dazu muss man sich aber mit JAVA auskennen. Mir ist das bissl zu hoch, da scripte ich lieber mit Linux Mitteln.
Wir kennen jetzt scho an Haufen Befehle, um allerhand Unsinn mit Shellies anstellen zu können. Hier nochamal a Liste
curl -s http://192.168.1.33/relay/0?turn=on | einschalten |
curl -s http://192.168.1.33/relay/0?turn=off | ausschalten |
curl -s http://192.168.1.33/relay/0?turn=toggle | umschalten |
curl -s http://192.168.1.33/rpc/Shelly.GetDeviceInfo | Shelly Info |
curl -s http://192.168.1.33/rpc/Switch.GetStatus?id=0 | Leistungs- und Energieinfo generell |
curl -s http://192.168.1.33/rpc/Switch.GetStatus?id=0 | jq -r ".apower" | Leistung |
curl -s http://192.168.1.33/rpc/Switch.GetStatus?id=0 | jq -r ".aenergy.total" | Energie |
curl -s http://192.168.1.23/rpc/Switch.ResetCounters?id=0&type=["aenergy","ret_aenergy"] | Reset Energiewerte |
Verspielt wie der Kraweuschuasta ist, mußte er natürlich aus 3 Plug S ein Lauflicht basteln, so ein Kindskopf!
Webhooks - eine generelle Erklärung
Temperaturmessung und Luftfeuchtemessung mit dem Shelly HT
Nutzung der Schaltausgänge des Fronius SYMO Gen 24 Wechselrichters mit einem Shelly und Weiterleitung an einen Raspberry Pi
https://shelly-api-docs.shelly.cloud/gen2/ComponentsAndServices/Shelly