🚫 WARNUNG
Das hier vorgestellte Projekte beinhaltet Arbeiten an 230V Wechselspannung. Diese sollten nur von einer elektrischen Fachkraft durchgeführt werden. Die 5 Sicherheitsregeln müssen jederzeit beachtet werden!
🎯 Motivation
Heutzutage muss ja alles “smart” sein und sich irgendwie in die Heimautomatisierung integrieren lassen. Um eine schnelle Lösung zu haben hatte ich vor einigen Jahren einfache IR-Bewegungsmelder gekauft, damit hatte ich eine autarke Insellösung. Jetzt war es an der Zeit diese mit einem zusätzlichen Wifi-Mikrocontroller auszustatten, sodass dann eine Integration in mein neues HomeAssistent möglich ist.
⚒️ Demontage & Analyse
Im Vorfeld des Projektes wusste ich nicht ob eine Umsetzung mit den bereits vorhandenen Bewegungsmelder möglich sein wird, dies hat sich erst durch einiges experimentieren bestätigt. Grundsätzlich lässt sich alles folgende sicherlich auch mit anderen Bewegungsmeldern realisieren, wer das wirklich nachbauen will empfehle ich “conecto Infrarot Wand-Bewegungsmelder IP20” da ich hier gute Erfahrungen habe.
Als Erstes wurde der Bewegungsmelder komplett zerlegt sodas an den beiden darin befindlichen Platinen gemessen werden konnte.
Die im Gehäuse unten befindliche Platine ist der Wechselspannungsteil, diese sollte niemals unter Spannungs angefasst werden! Schnell lässt sich erkennen dass das 12V Relais von einem Transistor geschalten wird. Ein weiterer Spannungsregler erzeugt 3.3Volt für die weitere interne Beschaltung. Über das graue, abgeschnitte Flachbandkabel sind die beiden Platinen miteinander verbunden. Der linke Pin im Kabel ist Masse, ganz rechts außen befindet sich die Versorgungsspannung. Der vorletzte Pin rechts hat sich nach einigen messen als das relevante Signal herausgestellt um das Relais zu schalten, wofür die anderen Leitungen sind habe ich nie rausgefunden. Auf der rechten Platine sind mittig der Infrarotsensor sowie eine Infrarotdiode. Mit den beiden Potis läst sich die Sensitivität einstellen bei welcher Beleuchtungsstärke eine Bewegung erkannt wird sowie die Dauer wie lange der Kontakt angeschalten bleibt. Leider konnte ich nicht mit Sicherheit rausfinden was der IC rechts unten genau ist. Meine Vermutung jedoch ist das es sich um ein Derivat eines NE556 handelt und es damit, zusammen mit den Potis und Kondensatoren, zwei monostabile Kippstufen sind.
Hier sieht man wie das Flachbandkabel gegen eine provisorische Verdrahtung ausgetauscht wurde. Die beiden blauen Kabelenden im linken Bild sind das Schaltsignal was ich hier händisch betätigen konnte. Da die Platine intern 3.3Volt verwendet versuchte ich lange Zeit den ESP8266 mit dieser Betriebsspannung zu versorgen - leider erfolglos. Ich vermute das durch die zusätzliche Stromaufnahme die Spannungsquelle an ihr Limit kommt und zusammen bricht. Damit war klar das ein zusätzlicher kleiner Spannungswandler mit angeschlossen werden muss. Dieser versorgt sich aus der 12V Leitung. Damit der ESP8266 von seinem Flash bootet müssen die beiden Pins GPIO00 und GPIO02 (während des Bootvorgang) logisch high sein. Dies gilt es zu beachten wenn man ein vorhandenes Signal verbinden will, schließlich wäre es ärgerlich wenn der Kontroller nicht mehr bootet nachdem man alles eingebaut hat.
Somit waren alle relevanten Informationen zusammengetragen und Zeit sich um die Software zu kümmern.
👨💻 Software & Controller
Um möglich wenig Software selbst schreiben zu müssen griff ich auf das bestehende espHome zurück. Damit lässt sich innerhalb kürzester Zeit die notwendigen Softwarekomponenten zusammenkonfigureren. Aufgrund des geringen verfügbaren Raums im Gehäuse ist für mir nur ein ESP01 Modul infrage gekommen. Daraus ergab sich eine Konfigurationsdatei wie folgt:
esphome:
name: esp
friendly_name: motion
name_add_mac_suffix: true
esp8266:
board: esp01_1m
ota:
password: !secret ota_password
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
ap: {}
captive_portal:
web_server:
port: 80
mqtt:
broker: !secret mqtt_broker
username: !secret mqtt_username
password: !secret mqtt_password
discovery: true
logger:
level: DEBUG
baud_rate: 0
#dallas:
# - pin: GPIO0
#sensor:
# - platform: dallas
# index: 0
# name: temperature
# - platform: adc
# pin: VCC
# name: voltage
binary_sensor:
- platform: gpio
id: input
name: presence
device_class: motion
pin:
number: GPIO2
inverted: false
mode:
input: true
pullup: true
switch:
- platform: gpio
id: status
name: led
pin:
number: GPIO1
inverted: true
- platform: gpio
id: output
name: relay
pin:
number: GPIO3
Zugangsdaten zum WLAN sowie MQTT Broker müssen in einer seperaten secrets.yml
gesetzt werden. Auskommentiert ist eine zusätzliche Option einen Temperatursensor anzuschließen, dies sollte zwar funktionieren, habe ich jedoch nie versucht.
Die Konfiguration lässt sich mit esphome run config.yml
über eine serielle Schnittstelle auf den ESP flashen. Jeder weitere Programmiervorgang kann später auch über das WIFI erfolgen.
Da ich drei der Sensoren umgebaut habe wurden gleich alle ESP geflashen und mit ihren IPs beschriftet. Das sich alle mit dem Gerätenamen “motion-{id}” melden lassen sich diese sonst später nur schwer unterscheiden.
⚒️ Neumontage
Jetzt ging es daran wieder alles zusammen zu bauen. Dabei waren noch ein paar kleine Modifikationen vorzunehmen:
Auf dieser Platine musste der Schiebeschalter ausgelötet werden. Einerseits braucht es diesen nicht mehr da der ESP künftig genau dessen Funktion übernehmen wird, zum anderen ist er schlicht im Weg. Die beiden mittleren Pins wurden mit einem Lötklecks verbunden.
Am ESP wurden zwei Kabel angelötet und etwas Schrumpfschlauch vorgesehen. Der Widerstand ist ein 220k Pull-Down zwischen GPIO2 und GND, ein 0603 SMD Widerstand sollte sich alternativ auf der Vorderseite gut zwischen die Pins löten lassen. Die Pins VCC, /RESET und CH_PD wurden ebenfalls vorne miteinander verbunden.
Der Spannungswandler wir mit je einem roten Kabel für Ein- und Ausgangsspannung, sowie zwei schwarzen Kabeln, vorbereitet. Auf der Rückseite lässt sich über eine Lötstelle die gewünschte Ausgangsspannung einstellen. Auf dem Bild ist noch die Option einer einstellbaren Spannung selektiert, besser ist es eine Lötverbindung bei 3.3V zu machen und den Kontakt bei ADJ zu unterbrechen.
Um genügend Platz für den ESP zu haben musste die Öffnung, wo bislang der Schiebeschalter drin war, etwas erweitert werden. Ebenfalls ist auf dem Bild zu sehen das, neben den beiden Drehschaltern, ein zusätzliches Loch gebohrt wurde. Hier kommt der Spannungswandler durch.
Nun konnten die Komponenten Stück für Stück zusammen gesetzt werden. Angefangen mit dem ESP selbst, diesen in seine Öffnung reinschieben und dabei darauf achten das alle Kabel um die beiden Öffnungen für Infrarotsensor und -diode frei bleiben. Hierfür muste man die Pins ein klein wenig biegen. Den Spannungsregler ebenfalls einfädeln und die Versorgungspins am ESP anschließen. Die Eingangsspannung des Reglers wurde an einem 12V Punkt von der Wechselspannungsplatine abgenommen.
Anschließend kann die Frontplatine wider auf das Frontgehäuseteil geschraubt werden. Dabei ist darauf zu achten das kein Kabel eingequetscht wird. Ebenso kann es sein dass die Achsen der Potis verdreht sind. Bevor das Frontteil wieder mit dem Unterteil zusammengefügt wurde unbedingt darauf achten dass der durchsichtige Kunststoffisolator wieder an seinem Platz ist! ESP und Spannungsregler kommen dann in den Freiraum des äußersten Gehäuseteils.
Der Deckel passt drauf, alles ist wieder verbaut! Im ausgeschaltenen Zustand ist von der Modifikation nichts zu sehen. Wenn der Schalter regulär in der Wand verbaut ist wird die rote LED dauerhaft leuchten da es eine einfache Power-on LED auf dem ESP01 Modul ist.
Über das Webinterface des ESP Modules lässt sich dieses einfach bedienen. Mit dem Schiebeschalter “led” geht die blaue LED an/aus. Dies ist nützliche wenn man auf der Suche nach dem richtigem Gerät im Haus ist. Genauso könnte man natürlich auch einfach mit dem Schalter “relay” das Licht ein/aus schalten. Eine Integration ins HomeAssistent erfolgt per MQTT hierfür wurden Topics angelegt:
home/raum1/motion-{id}/presence # Sensor status
home/raum1/motion-{id}/led ON # blaue Status LED
home/raum1/motion-{id}/relay OFF # schaltet den Ausgang aus