Shelly in ana Nußschoin

Was ist Shelly?

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 hiermix nix zu tun!


Was macht ma mit an Shelly?

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.


Kraeuschuastas Anwendungen für einen Shelly

Was macht der Kraweuschuasta mit einem Shelly?

  • Energiemessung diverser Verbraucher über Shelly Plug S
  • Steuerung der Poolpumpe und Pool Wärmepumpe
  • Steuerung der  Außen- Weihnachtsbeleuchtung (geplant)
  • Steuerung diverser Verbraucher über den PV Wechselrichter (Testphase)
  • Schalten der Sickerschachtpumpe zum Garten gießen (geplant)


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.


Was ich nicht will

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 leider 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.


Womit fangt ma am Gscheitesten an?

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.

Kosten

Aktuell (Aprill 2024) kostet ein Plug S grob an Zwanzger, ein Plus 1 PM grob 18€

Shelly Inbetriebnahme

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.


TIP: Firmware Update

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.


Webhook URLs

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?


Webhooks für Nackerbatzln

Simples theoretisches Beispiel:

http://IPAdressevomShelly/schalte das Licht ein?für20Sekunden

Simples praktisches Beispiel:

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


TIP: IP Adressen auf irgendwelchen Webseiten und die Eigene

Der kluge, aufmerksame Leser, setzt statt der von mir angegebenen IP Adresse 192.168.1.33 selbstverständlich die IP  seines eigenen Shellies ein !!



Aufpassen

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


Kommt Zeit, kommt Strom

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


Bugreport Firmwareversion 1.2.2

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

Shelly redet mit Shelly

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).


Übung: Wechselschaltung

Jetzt könnts schon amal a Wechselschaltung zusammenmankln, also Gerät1 soll EIN sein und Gerät2 AUS, auf Tastendruck genau umgekehrt.

Viel Spaß!


Und da ist noch mehr

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


Auslesen von Shellyspezifischen Infos

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


TIP: Filtern von JSON Antworten

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

Und das ist noch nicht Alles!

Leisungs- und Energiewerte auslesen

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


Weitere Funktionen

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.

Zusammenfassung und Befehlsliste

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


Unsinn mit Shellies

Verspielt wie der Kraweuschuasta ist, mußte er natürlich aus 3 Plug S ein Lauflicht basteln, so ein Kindskopf!