Shelly1
(Schalten von Geräten über WLAN)
(Eine Unterseite von http://www.oliver-schlenker.dyndns.org)

Beschreibung:

Mit dieser Seite soll gezeigt werden, wie man mit dem Shelly1-Gerät (siehe https://shelly.cloud/shelly1-open-source/) eine einfache Ansteuerung von Geräten über WLAN realisiert werden kann. Ich bekam das Shelly1-Modul als "Dankeschön" eines Benutzers meiner Programme für das AVR-NET-IO. Herzlichen Dank an H. Roland Keil für das herrliche Spielzeug. Das Shelly1-Gerät kann in einer Unterputzdose, z. B. hinter einem Lichtschalter oder einer Steckdose, unsichtbar installiert werden. Das Gerät kann mit 12V=, 24-60V= oder 110-240V~ betrieben werden und beinhaltet ein Relais, das mit 16A bei max. 240V~ belastet werden kann. Der Zugriff auf das Relais erfolgt entweder über die Shelly-Cloud oder per HTTP-Zugriff direkt auf den eingebauten Shelly-Webserver. Über die Bedieneroberfläche kann der Shelly1 geschaltet werden und diverse Einstellungen getroffen werden. Es läßt sich z. b. das generelle Schaltverhalten (Taster, Schalter, Flip-Flop) oder diverse Timerverhalten einstellen. Auch Schaltvorgänge bei Sonnenaufgang oder -untergang sind möglich. Weiter kann man beim Schaltvorgang auch das Ausführen diverser http://... Anfragen ausführen lasssen. Alles mit oder ohne Passwortschutz möglich. Also ich bin von dem kleinen kostengünstigen Teil begeistert, da man es auch mit 12V-Netzteil als einfaches WLAN-Relais nutzen kann.

Hier mal ein Bild des Shelly1-Gerätes mit der Anschlußbelegung:

Die Befehlsansteuerung per HTTP-Anfrage ist recht einfach. Hier mal ein paar Beispiele:


Einschalten des Relais im internen Netzwerk oder auch von außen per DDNS-Account:

http://[IP-Adresse Shelly1-Modul]/relay/0?turn=on

Ausschalten erfolgt analog:

http://[IP-Adresse Shelly1-Modul]/relay/0?turn=off

Timerschaltbefehl ablaufen lassen (Beispiel: Schalte Relais ein, warte 10 Sekunden, Schalte Relais aus):

http://[IP-Adresse Shelly1-Modul]/relay/0?timer=10&turn=on

Oder "Toggeln" (=letzten Schaltzustand invertieren; aus EIN wird AUS und umgekehrt):

http://[IP-Adresse Shelly1-Modul]/relay/0?turn=toggle


Hier der Link für für die Befehle um das Shelly1-Modul direkt per HTTP anzusprechen:

https://shelly.cloud/support/direct-device-to-device-communication-ddd/

Unter folgendem Link findet man den entsprechenden Befehlssatz der einzelnen Shelly-Geräte:

https://shelly-api-docs.shelly.cloud/#shelly-family-overview

Nun ist es natürlich prima, dass man das Shelly1-Modul über jedes Betriebssystem per Browser über eine HTTP-Anfrage oder über iOS und Android per ladbarer Cloud-App schalten kann. Es gibt auch richtig gute Tools um von iOS oder Android HTTP-Anfragen abzusetzen. Empfehlen kann ich hier für IOS z: B. "ssswitch" und für Android "HTTP Shortcut". Die entsprechenden Apps findet man dann im App-Store oder Play-Store des entsprechenden Betriebssystems. Ich habe beide ausprobiert (Apple-IPhone und Android-Tablett) und das funktioniert prima. Allerdings finde ich es recht unpraktisch, wenn man z. B. 8 Shelly-Geräte im Haus als Haussteuerung verbaut hat und man für jedes Gerät einen eigenen Link pro Befehl braucht oder pro Gerät die Weboberfläche starten muss um das Gerät zu schalten. Hier kommt dann wieder Purebasic (http://www.purebasic.de) ins Spiel.

Ich habe mir hier eine Bedienungsoberfläche gebastelt, mit der ich bis zu 8 Shelly-Geräte direkt schalten kann und ich finde es halt recht übersichtlich, wenn die Knöpfe/Buttons schön übersichtlich zusammen sind. Gerade für Windows habe ich für die Shellies da nichts ansprechendes gefunden und für jeden Befehl ein Icon auf dem Desktop als HTTP-Link fand ich dann auch zuviel. Man kann sich zwar auch auf die Shelly-Cloud  mit Windows einloggen ("https://my.shelly.cloud/"), aber über mein Programm kann man über Windows die Shellies m. E. einfacher und direkter bedienen. Im Purebasic-Quellcode werden Daten wie DDNS-Domain oder IP-Adresse, Port pro Shelly-Gerät, Name des Gerätes, etc. hinterlegt und eine EXE-Datei daraus kompiliert. Das hat den Vorteil, dass man diese Datei z. B. auf einem Speicherstick überall hin mitnehmen kann und auch die Geräte von jedem Windows-Rechner direkt schalten kann. Mit den Cloud-Apps hat man natürlich noch die Möglichkeit "Räume" und "Szenarien" zu definieren. Das brauche ich aber (im Moment) für meine Anforderungen (noch) nicht.

Da ich z. Zt. nur 2 Stück von den Shelly1 habe, greifen Knopf 3-8  auf auf den Shelly1 Nr. 1 und Knopf 2 auf den Shelly1 Nr. 2 zu.

Das Programm hat auch eine zyklische Abfrage bzgl. den Schaltzustandsveränderungen. Wenn z. B. mit einer anderen Software der Shelly1 geschaltet wird, zeigt mein Programm diese Zustandsänderung an. (Schaltzustand und ob z. Zt. ein Timer im Shelly1 abläuft). Pro Shelly-Button kann auch eine andere Grafik (Glühbirne, Pumpe, Schalter, etc.) eingebunden werden um die Anzeige etwas ansprechender zu gestalten.

Im Moment ist das Programm noch in der Entwicklung und bin hier um Wünsche, Anregungen, Tipps sehr dankbar und versuche das dann auch gerne entsprechend im Programm einzubauen.


Eingeschalteter Zustand:


Ausgeschalteter Zustand:


Und hier die Oberfläche für die Rollladensteuerung der Gästetoilette und 2 Lampen konfiguriert:
(Die weisse Ansicht kommt von der standardmäßigen Windows10-Optik)

 

Die 4 Shellies sind wie folgt konfiguriert:
Shelly1 Nr. 1 fährt den Rolladen hoch (nach 12 Sekunden wird das Relais deaktiviert). Shelly1 Nr. 2 fährt den Rollladen runter (auch hier wird das Relais nach 12 Sekunden automatisch wieder deaktiviert). Nun läßt sich der Rollladen recht einfach steuern. Entsprechenden Button anklicken und der Rollladen fährt bis ganz hoch oder ganz runter. Wenn man zwischendrin den entsprechenden Button löst, bleibt der Rollladen in Position stehen (z. B. halb oder viertel geöffnet/geschlossen). In den Shellies habe ich noch entsprechende Timer eingerichtet, damit der Rollladen jeden Tag um 06:00 öffnet und um 20:00 sich wieder schließt. (Gerade bei der Hitze im Sommer praktisch). Ich habe auch einen Timer gesetzt, der jeden Tag um 20:00 Uhr den Rollladen auf jeden Fall schließt. Das läuft schon eine ganze Weile so und funktioniert sehr zuverlässig.

Nun könnte man natürlich fragen, warum ich hier keinen Shelly2.5 genommen habe. Der hat 2 Relais eingebaut und unterstützt auch noch Rollladen-Steuerungen speziell. Nun ja, den Rollladen den ich in der Gästetoilette betreibe läuft mit 12V=. Der Shelly2.5 funktioniert aber nur mit 24V= als geringste Spannung. Da hätte ich mir dann ein 24V-Netzteil zulegen müssen und dann über das Relais z. B. weitere Relais oder MosFETs mit 12V schalten müssen. Da war mir der Aufwand zu groß. Dann einfach 2 Shellies nehmen und alles läuft wunderbar. Wenn ich mal wieder etwas Zeit habe würde ich gerne auch mal andere Shelly-Sensoren und -Aktoren ausprobieren und schauen wie man das verketten kann.

Shelly1 Nr. 3 schaltet eine Lampe am 3D-Drucker mit einem Timer für 5 Minuten an. Ist sehr praktisch, wenn man im dunklen Computerzimmer von der Ferne auf den Drucker bzw. den Druckauftrag schauen möchte.

Shelly1 Nr. 4 schaltet eine LED-Leiste im Schlafzimmer Ein und Aus. Hier habe ich mir ein Regal mit Plexiglas und Haltern aus dem 3D-Drucker gebaut. Die Stirnseite der Plexiplatte wird von hinten mit der LED-Leiste beleuchtet. Oben drauf steht der Disney-Zug von meiner Frau.


Falls Ihr hier den Quellcode des Programms benötigt um ihn mit der kostenlosen Purebasic-Demoversion zu bearbeiten bzw. an die eigenen Bedürfnisse anzupassen, bitte ich um eine kurze Email. Dann schicke ich Euch meine Bastelei gerne zu. Dieses Programm funktioniert scheinbar nur mit der Purebasic-Version 5.71. Ab 5.72 kommt es zu Verzögerungen im Bildaufbau und der Reaktionszeit. Ich bin noch nicht dahinter gekommen, warum das so ist bzw. was in den neuen Versionen geändert wurde. Download der Purebasic-Demoversion 5.71 von meiner Webseite um den Quellcode entsprechend zu bearbeiten.

Bei Interesse, Fragen, Wünsche, Anregungen, Lob oder Kritik könnt Ihr mir gerne eine

eMail senden an: Oliver.Schlenker@T-Online.de