Maker-Hub bei GitHub Maker-Hub bei Printables Maker-Hub bei MakerWorld Maker-Hub bei YouTube

Das Arbeiten mit Starkstrom (230 V) birgt erhebliche Risiken für Gesundheit und Sachschäden. Unachtsamkeit oder mangelnde Kenntnisse können zu schwerwiegenden Unfällen führen. Sei zu 100 % bei der Sache und arbeite nur an Projekten, bei denen Du über die nötigen Kenntnisse und Fähigkeiten verfügst.

In vielen Ländern dürfen Arbeiten an elektrischen Anlagen nur von qualifizierten Elektrofachkräften durchgeführt werden. Wenn Du nicht sicher bist, ob Du die erforderlichen Qualifikationen und Kenntnisse hast, verzichte auf diese Arbeiten und wende Dich an eine Elektrofachkraft.

Da ich unsere Gartenhütte ebenfalls intelligent gestalten wollte, habe ich überlegt, welche Funktionen umgesetzt werden sollen:

  • Es wäre praktisch, wenn das Licht automatisch eingeschaltet würde, sobald es dunkel ist und sich jemand in der Hütte aufhält.
  • Eine schaltbare Außensteckdose, beispielsweise für eine Pumpe, wäre ebenfalls nützlich. Diese sollte jedoch auch manuell bedienbar sein.
  • Gleiches gilt für die Lichtsteuerung.
  • Die Verwendung eines Doppeltasters wäre eine Möglichkeit, aber ich würde lieber einen größeren Taster bevorzugen. Mit schmutzigen Händen oder Handschuhen lässt sich dieser einfacher betätigen. Daher muss die Steuerung der beiden Relais mit short- & long-press erfolgen.
  • Zur Überprüfung, ob die Außensteckdose Strom hat, wäre eine visuelle Anzeige sinnvoll.
  • Als nettes Gimmick könnte ein Temperatursensor integriert werden.
  • Obwohl es sich nur um eine Gartenhütte handelt, wäre es praktisch, für die Türen und Fenster Kontaktsensoren zu installieren. Insgesamt hat die Hütte zwei Fenster und Türen.
  • Die Anbindung an FHEM soll kabellos mittels MQTT erfolgen.

Software

Meine Entscheidung fiel auf Tasmota als Software. Es ist leicht einzurichten, bietet alle erforderlichen Funktionen und lässt sich problemlos in verschiedene SmartHome-Systeme integrieren.

Hardware

Durch die Auswahl der Software ist die Kompatibilität bereits auf ESP-basierte Boards beschränkt. Aufgrund des Bedarfs an vielen GPIOs und der Entscheidung, keine I/O-Erweiterung zu verwenden, habe ich mich für den ESP32 in der Version S2 mini entschieden. Falls du jedoch lieber einen ESP8266/ESP8265 verwenden möchtest, wird ein I/O Port-Expander benötigt, beispielsweise der MCP23017. Je nach gewünschter Ansteuerung könnte es notwendig sein, Tasmota selbst zu kompilieren. Mehr Informationen sind unter Tasmota: MCP23008 / MCP23017 GPIO Expander zu finden.

Zusätzlich zu dem WeMos S2 Mini benötigen wir:

  • einen AC/DC-Wandler-Module von 230V auf 5V, (3,5 Watt reicht dicke)
  • einen Bewegungssensor (z. B. HC-SR501)
  • eine LED
  • ein 2-Relay-Module
  • vier Kontaktsensoren
  • Verschiedene Widerstände (1kΩ für den Pull-Down und einen passenden Widerstand für die LED)
  • Temperatur-Sensor (z. B. AM2320)
  • einen Taster für die Aufputzmontage mit Kontrollleuchte
  • eine Lochrasterplatine
  • Verbindungskabel
  • ein Gehäuse
  • Arderleitung (z.B. 22AWG)
  • Flachbandkabel oder ähnliches um die Komponenten zu verbinden

Optional:

  • Buchsen und stecker/Stitleisten (z.B.  JST-Buchsengehäuse und JST-Stiftleiste)
  • Kabelkanal
  • Schrumpfschlauch
Material für die smarte Gartenhütte

Werkzeuge

Für die Umsetzung werden folgende Werkzeuge benötigt:

  • einen Lötkolben
  • Lötzinn
  • Seitenschneider

Optional:

  • Crimpzange für die Steckverbindungen
  • Akkuschrauber oder Bohrmaschine und Holzbohrer zur Bearbeitung des Gehäuses
  • Heißluftlötkolben, Heißluftgebläse oder Feuerzeug für die Schrumpfschläuche

Schaltplan

Leider bin ich mit der Lochplatine nicht so gut. Daher sieht meine Ausführung doch recht abenteuerlich aus:

Tasmota konfigurieren

Grundeinstellungen

MQTT-Nachrichten sollen beigehalten (retain) werden (https://tasmota.github.io/docs/Commands/#mqtt).

ButtonRetain 1
InfoRetain 1
PowerRetain 1
SensorRetain 1

Setzen des Gerätenamen

DeviceName OS_MULTI_Bike_Shed

Da sich die Geräte im Garten befinden, kann es vorkommen, dass sie die WiFi-Verbindung verlieren.
Daher sollen Sie auf die WiFi-Verbindung warten und nicht in den Access-Point-Modus wechseln.
Um dies zu erreichen wird WiFiConfig auf 5 gesetzt (https://tasmota.github.io/docs/Commands/#wi-fi).

WifiConfig 5

Einstellungen für den Bewegungssensor

Setzen des Längen- & Breitengrades. Dies ist essentiell für die Funktion des Schalten des Lichtes über den Bewegungssensor. Dieser soll nur in der Nacht schalten. Also der Zeit zwischen Sonnenuntergang und Sonnenaufgang. Natürlich ist dies nur ein grobe Aussage über die Lichtverhältnisse, aber einen Lichtsensor wollte ich nicht verwenden (https://tasmota.github.io/docs/Commands/#timers).

Latitude 52.???
Longitude 9.???

Ebenfalls muss die richtige Zeitzone gesetzt werden. In meinem Fall ist das Deutschland/Berlin (https://tasmota.github.io/docs/Commands/#management).

TimeSTD 0, 0, 10, 1, 3, 60
TimeDST 0, 0, 3, 1, 2, 120
timezone 99

Mit dem Befehl time kann das Datum und Uhrzeit überprüft werden.

In der Variable mem1 soll die Anzahl der Sekunden, in der das Licht an sein soll, gespeichert (https://tasmota.github.io/docs/Commands/#rules). Es wird bewusst Mem<x> an stelle von Var<x> benutzt, da nach einem Neustart der Wert erhalten bleiben soll.

Mem1 120

Damit der Bewegungsmelder richrtig arbeiten kann, muss der SwitchMode auf eins gestellt werden.
Dadurch wird bei einer Bewegung ein ON gesendet und beim Abfallen der Haltezeit ein OFF (https://tasmota.github.io/docs/Buttons-and-Switches/#switchmode).

SwitchMode1 1

Da ich die Bewegung aus in FHEM auswert, setzen wird den automatischen MQTT Versand außer kraft (https://tasmota.github.io/docs/Commands/#mqtt).

SwitchTopic1 0

Damit das Relais zeitgesteuert geschaltet wird, muss eine Rule erstellt werden (https://tasmota.github.io/docs/Commands/#rules).

Rule1
ON Switch1#state=1 DO
  BACKLOG
    Publish %topic%/stat/PIR on;
    Event checkSunrise=%time%;
    Event checkSunset=%time%;
ENDON

ON Switch1#state=0 
  DO Publish %topic%/stat/PIR off
ENDON

ON Event#checkSunrise<%sunrise% DO
  BACKLOG
    Power1 1;
    RuleTimer1 %mem1%;
ENDON

ON Event#checkSunset>%sunset% DO
  BACKLOG
    Power1 1;
    RuleTimer1 %mem1%;
ENDON

ON Rules#Timer=1 DO
  Power1 0
ENDONCode-Sprache: PHP (php)

Erklärung der Blöcke

ON leitet den Begin einer Regel ein.
DO markiert das Ende der Bedingung.
Durch BACKLOG wird mitgeteilt, dass mehere Befehle duch ; getrennt aufeinander folgen.
ENDON beendet die Regel

ON Switch1#state=1 DO
  BACKLOG
    Publish %topic%/stat/PIR on;
    Event checkSunrise=%time%;
    Event checkSunset=%time%;
ENDONCode-Sprache: PHP (php)

Dieser Block wird aktive wenn Switch1 (der Bewegungssensor) ein ON sendet.
Es wird mit Publish eine MQTT-Nachricht versendet (%topic%/stat/PIR on).
Danach wird das Event checkSunrise und checkSunset aufgerufen. Dabei wird mit der Variable %time% die aktuelle Zeit übergeben.

ON Switch1#state=0 
  DO Publish %topic%/stat/PIR off
ENDONCode-Sprache: PHP (php)

Dieser Block wird aktive wenn Switch1 (der Bewegungssensor) ein OFF sendet.
Es wird mit Publish eine MQTT-Nachricht versendet (%topic%/stat/PIR off).

ON Event#checkSunrise<%sunrise% DO
  BACKLOG
    Power1 1;
    RuleTimer1 %mem1%;
ENDONCode-Sprache: CSS (css)

Dieser Block wird aktive wenn das Event checkSunrise aufgerufen wird und die aktuelle Zeit größer der Zeit des Sonnenuntergangs ist.
Mit Power1 1; wird das Relais eingeschaltet.
Danach wird der RuleTimer1 gestartet. Dieser soll nach Anzahl der Sekunden, die in Variable %mem1% gespeichert sind, ausgeführt werden.

ON Event#checkSunset>%sunset% DO
  BACKLOG
    Power1 1;
    RuleTimer1 %mem1%;
ENDONCode-Sprache: CSS (css)

Dieser Block wird aktive wenn das Event checkSunrise aufgerufen wird und die aktuelle Zeit größer der Zeit des Sonnenuntergangs ist.
Mit Power1 1; wird das Relais eingeschaltet.
Danach wird der RuleTimer1 gestartet. Dieser soll nach Anzahl der Sekunden, die in Variable %mem1% gespeichert sind, ausgeführt werden.

Um die Rule zu aktivieren muss der Befehl

Rule1 ONCode-Sprache: Bash (bash)

ausgeführt werden.

Einstellungen für die Tür- & Fenstersensoren

Bei Statusänderung soll kein Relais geschaltet werden sondern nur eine MQTT-Nachricht geendet werden.
Dazu wird der SwitchMode auf 15 gestellt. Dadurch wird verhindert, dass die Sensoren ein Relais steuert (https://tasmota.github.io/docs/Buttons-and-Switches/#switchmode).

SwitchMode5 15
SwitchMode6 15
SwitchMode7 15
SwitchMode8 15

Einstellungen für die Schalter

Die Text auf dem Webinterface werden mit dem Befehl WebButton gesetzt (https://tasmota.github.io/docs/Commands/#control).

WebButton1 Light
WebButton2 socket

Damit mit dem Schalter zwei Relais schalten kann, muss der Schaltermodus umgestellt werden.
Dabei soll bei einem kurzen Druck das Relais der Außensteckdose geschaltet werden.
Bei einem langen Druck soll das Licht geschaltet werden (https://tasmota.github.io/docs/Buttons-and-Switches/#switchmode).

6 = Set inverted push-button with long press mode (0 = OFF (default), 1 = TOGGLE, long press = HOLD)

SwitchMode2 6

Über die Option 32 kann die Zeitspann für den „long press mode“ eingestellt werden (https://tasmota.github.io/docs/Commands/#setoptions).

Number of 0.1 seconds to hold button before sending HOLD action message.

Aus meiner Sicht sind 0,5 Sekunden vollkommen ausreichend.

SetOption32 5

Den „long press“ muss über eine Rule ausgewertet bzw. behandelt werden (https://tasmota.github.io/docs/Commands/#rules).

Rule2
ON Switch2#state=3 DO
  Power1 toggle
ENDONCode-Sprache: PHP (php)

Auch hier muss wieder die Rule mit

Rule2 ON

aktiviert werden.

Erklärung des Blocks

Dieser Block wird aktive wenn Switch2 (der Schalter) ein HOLD sendet.
Mit Power1 toggle; wird das Relais eingeschaltet bzw. ausgeschaltet ( toggle = umschalten).

Damit die LED nur an geht, wenn die Steckdose geschaltet wird muss eine LED Mask gesetzt werden:

LedMask 0x0002

https://tasmota.github.io/docs/LedMask/

Wenn dir meine Arbeit gefällt, würde ich mich über einen Kaffee freuen