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
|