Shelly Bulb
Die Möglichkeit eine 220V LED mit E27-Sockel einfach per WLAN zu steuern, eröffnet viele neue Einsatzbereiche. Mal abgesehen von dem Einsatz zuhause als klassische Beleuchtung für Licht-Szenen kann so eine über Netzwerk beeinflussbare Leuchte für viele Dinge eingesetzt werden: Ein paar Beispiele:
- Große Skype/Teams Präsenzanzeige
Quasi "Busylight XL" - Alarmanzeige für Monitoring
PRTG kann bei Benachrichtigungen eine HTTP-Aktion auslösen (https://www.paessler.com/manuals/prtg/notifications_settings#http) und damit die Farbe z.B. ändern - Anzeige der verfügbaren Parkplätze in
einer Tiefgarage
Oder natürlich auch andere IoT Projekte
Abseits der Haus-Automatisierung interessiert mich natürlich, ob und wenn ja wie einfach so ein Gerät als Statusindikator verwendet werden kann
Shelly Bulb
Die Firma Shelly, welche schon mit den Shelly-1 und Shell-2 erste ESP8266-basierte Geräte vertreibt, hat mittlerweile auch eine LED-Leuchte mit E27 Sockel. Leider kann ich genau diese LED nicht öffnen um eine eigene Firmware zu flashen. Allerdings ist die eingebaute Shelly-Firmware ausgesprochen offen, leistungsfähig, gut dokumentiert und per Default nicht mit der Cloud verbunden. Anders, als viele Smart-Home-Devices aus China, die den ESP8266 nur mit einem Cloud-Backend betreiben. Ich habe mir daher mal eine Shelly Bulb genauer angeschaut. Sie kostet ca. 20€ und passt in einen normalen E327 Socket.
Interessant an dem Device ist, dass die gleiche offene API mit der eingebauten Firmware zur Verfügung steht. Auch sie spannt erst einmal ein eigenes WLAN auf, mit dem man sich per PC oder Smartphone verbindet und über eine Webseite dann den Beitritt in ein vorhandenes WLAN per Benutzername/Kennwort konfiguriert. Nachdem das Gerät dann in dem WLAN ist, kann es weiter verwaltet werden.
Steuerung per App
Zuerst nutze ich die App des Herstellers, um die allgemeine Funktion zu verstehen. Über die Webseite des Geräts kann nicht nur konfiguriert sondern auch gesteuert werden:
Die LED lässt sich also auch mit einem beliebigen Browser steuern. Über die Browser Debugging Tools oder auch Fiddler können Sie auch die Kommunikation mitschneiden. Letztlich sind es ein Paar REST-Aufrufe, die der Browser mit JavaScript zur Leuchte sendet. Aber Sie müssen gar nicht hacken, denn die API ist gut beschrieben.
Shelly Bulb per PowerShell steuern
Also habe ich mir die API als auch den Verkehr der Webseite mal etwas genauer angeschaut:
- Shelly Family Overview
https://shelly-api-docs.shelly.cloud/#shelly-family-overview
Die HTTP-Anfragen können als URL-Parameter oder Form-Parameter übermittelt werden. Für den Start können Sie einfach ein Shelly als AccessPoint in Betrieb nehmen und ihren Notebook per WLAN verbinden. Der PC bekommt dann die 192.168.33.2 und das Shelly-Device hat die 192.168.33.1. Es reagiert auf PING und natürlich HTTP-Anfragen: Eine einfache Anfrage liefert schon MAC-Adresse und Firmware
Invoke-RestMethod http://192.168.33.1/shelly type : SHBLB-1 mac : 827D3A123456 auth : False fw : 20171218-103527/??? num_outputs : 1
Ein Zugriff auf "/settings" liefert doch weitere Details
Invoke-RestMethod http://192.168.33.1/settings device : @{type=SHBLB-1; mac=827D3A123456; hostname=shellybulb-123456; num_outputs=1} wifi_ap : @{enabled=True; ssid=shellybulb-420FD7; key=} wifi_sta : @{enabled=False; ssid=; key=} login : @{enabled=False; unprotected=False; username=admin; password=admin} pin_code : name : fw : 20171218-103527/??? build_info : @{build_id=20171218-103527/???; build_timestamp=2017-12-18T10:35:27Z; build_version=1.0} cloud : @{enabled=False; connected=False} timezone : time : hwinfo : @{hw_revision=prod-1.3; batch_id=1} mode : color lights : {@{ison=True; red=0; green=0; blue=255; white=0; gain=100; temp=4750; brightness=100; effect=0; default_state=on; auto_on=0,00; auto_off=0,00; schedule=False; schedule_rules=System.Object[]; sun=False; sun_on_times=0000000000000000000000000000; sun_off_times=0000000000000000000000000000}}
Standardmäßig ist keine Authentifizierung aktiv.
Invoke-RestMethod "http://192.168.33.1/settings/login" enabled unprotected username password ------- ----------- -------- -------- False False admin admin
Auch der Systemstatus ist so abrufbar:
Invoke-RestMethod "http://192.168.33.1/status" wifi_sta : @{connected=False; ssid=; ip=192.168.33.1} cloud : @{enabled=False; connected=False} time : serial : 1 has_update : False mac : 827D3A123456 lights : {@{ison=True; mode=color; red=0; green=0; blue=255; white=0; gain=100; temp=4750; brightness=100}} ram_total : 51496 ram_free : 42180 uptime : 4300
Über die gleiche API lassen sich auch Werte setzen. Am Beispiel einer Lampe funktioniert das wie folgt. Zuerst habe ich über die Webseite einige Aktionen ausgelöst und parallel im Browser Debugger die Requests gesehen:
Danach war es natürlich sehr einfach die Farbe auch per PowerShell zu ändern.
# Aus und Einschalten Invoke-Restmethod http://192.168.33.1/color/0?turn=off Invoke-Restmethod http://192.168.33.1/color/0?turn=on # Einmal Rot, Gruen# Einmal Rot, Gruen, Blau, Gelb Invoke-Restmethod "http://192.168.33.1/settings/?mode=color" Invoke-Restmethod "http://192.168.33.1/color/0?turn=on&red=255&green=0&blue=0&white=0" Invoke-Restmethod "http://192.168.33.1/color/0?turn=on&red=0&green=255&blue=0&white=0" Invoke-Restmethod "http://192.168.33.1/color/0?turn=on&red=0&green=0&blue=255&white=0" Invoke-Restmethod "http://192.168.33.1/color/0?turn=on&red=255&green=255&blue=0&white=0" # Default bei Spannung Da auf Ein, Aus oder letzter Stsandvoke-Restmethod "http://192.168.33.1/settings/color/0?default_state=off" Invoke-Restmethod "http://192.168.33.1/settings/color/0?default_state=last" #Umschalten auf weiss mit unteterschiedlicher Temperatur Invoke-Restmethod "http://192.168.33.1/settings/?mode=white" Invoke-Restmethod "http://192.168.33.1/white/0?turn=on&temp=3000&brightness=100" Invoke-Restmethod "http://192.168.33.1/white/0?turn=on&temp=47500&brightness=100" Invoke-Restmethod "http://192.168.33.1/white/0?turn=on&temp=6500&brightness=100"
Die Änderung des "Mode" kann nicht mit den anderen
Parametern kombiniert werden und die RGB-Steuerung
funktioniert nur in der Betriebsart "mode=color". Der
Versuch die Lampe mit RBB=0/0/0 abzuschalten geht nicht.
Daher sollte Sie beim Setzen von Farbwerten auch immer
vorher einen Request zum Setzen des Color-Mode senden.
Speziell, wenn das Shelly Device von anderen Geräten
erreicht werden kann.
Invoke-Restmethod "http://192.168.33.1/color/0?turn=on&red=0&green=0&blue=0&white=100" Invoke-Restmethod : Bad RGB values!
Ein sehr helles Weiß kann aber sehr wohl mit 255/255/255/255 erreicht werden.
Interessant ist auch die Option die Lampe automatisch abschalten zu lassen. Die angegebene Zeit ist in Sekunden. Allerdings hat meine Lampe sich da nicht dran gehalten. Schade, denn so könnte eine Statusleuchte ausgehen, wenn keine regelmäßigen Updates mehr kommen.
# Leuchte automatisch x Sekunden abschalten Invoke-RestMethod "http://192.168.33.1/settings/color/0?auto_off=5" Invoke-RestMethod "http://192.168.33.1/settings/color/0?auto_off=0" # Leuchte nach x Sekunden Einschalten Invoke-RestMethod "http://192.168.33.1/settings/color/0?auto_on=5" Invoke-RestMethod "http://192.168.33.1/settings/color/0?auto_on=0"
Als Rückantwort kommt immer ein JSON-Datensatz mit dem Ergebnis. Weitergehende Aktionen, z.B. basierend auf Sonnenaufgang/Untergang oder Zeitplanung werden nur über die Cloud angeboten.
Das Umschalten der Leuchte auf ein vorhandenes WLAN geht dann natürlich auch sehr einfach.
Invoke-Webrequest "http://192.168.33.1/settings/sta?&enabled=1&ssid=ssidname&key=kennwort"
Das Thema "Security" ist bislang sehr kurz gekommen. Die Shelly Bulb unterstützt leider kein HTTPS, so dass bei einem konfigurierten Zugriffsschutz die Anmeldedaten unverschlüsselt übertragen werden.
- PRTG Manual: Account Settings—Notification
Templates
https://www.paessler.com/manuals/prtg/notifications_settings#http
Weitere Links
- Shelly IoT
- IoT - Internet of Things
- SONOFF mit ESP8266
- ESP8266
- MQTT
-
Shelly Developer
https://shelly.cloud/developers/ -
Shelly REST-Api
https://shelly-api-docs.shelly.cloud/#shelly-family-overview -
Shelly 1 - open Source Wi-Fi switch
https://forum.creationx.de/forum/index.php?thread/980-shelly-1-open-source-wi-fi-switch/&pageNo=1 -
ESP8266 für Schalterdoseneinbau
https://shop.allnet.de/detail/index/sArticle/288126
https://forum.creationx.de/forum/index.php?thread/452-esp8266-f%C3%BCr-schalterdoseneinbau/
https://www.brickrknowledge.de/content/uploads/2017/05/BRK-IoT-Set_Manual.pdf
https://GitHub.com/JanGoe/esp8266-wifi-relay -
Ratgeber: Stromkosten senken mit smarten
Steckdosen
https://www.techstage.de/ratgeber/Ratgeber-Stromkosten-senken-mit-smarten-Steckdosen-4325720.html