Schaltzentrale mit einem Raspberry Pi Zero W

 

Vor einem Dreivierteljahr hatte ich Lust auf ein bisschen Steuerung zuhause. In Wohn- und Esszimmer und in der Küche gab es sowieso schon 433-Mhz-Steckdosen und Fernbedienungen (die alten mit den DIP-Schaltern), und ich wollte gern im Schlafzimmer und Arbeits- und Besuchszimmer die Lampen so organisieren, dass man sie vom Schalter aus bedienen kann (also wie gehabt) – aber eben auch vom Smartphone, vom Laptop oder vom Tablet aus.
 

Was ich nicht wollte: WiFi-Steckdosen, die sich erst mit einem Server in China verbinden, um anschließend bei mir zuhause den Strom an- oder abzuschalten.

Von einer nie angefangenen Bastelei lag noch ein Gehäuse herum, und der Raspberry Pi Zero W, der eine Zeitlang mal mein Reisenotebook angetrieben hatte, war auch noch da.

Dann habe ich nachgelesen (tatsächlich in einem Buch über den Raspberry Pi, das ich vor Jahren mal gekauft hatte), wie man wohl 433-Mhz-Steckdosen mit einem Pi steuert und ob man dazu komplizierte Python-Installationsorgien machen muss – und da stand: Muss man nicht. Geht alles mit einem Webinterface, CGI-Scripts und der BASH-Shell. Super.

Bei eBay habe ich mir einen kleinen 433-Mhz-Sender
bestellt (den gab es nur als Sender/Empfänger Kombination – den Empfänger
hab
e ich nicht
gebraucht
).
 

Der Pi Zero W eignet sich hervorragend als Schaltzentrale für 433MHz-Steckosen und Open-Source-WiFi-Schalter. Ein einziges Gerät in meiner zweistöckigen Wohnung schaltet alle in der Wohnung befindlichen 433-MHz-Steckdosen mühelos – und die WiFi-Schalter natürlich sowieso.

  1. 1.Hardware 

    1. a.Für den Betrieb als 433MHz-Zentrale genügt der Raspberry Pi Zero W mit einer mindestens 4 GB großen SD-Karte und einem 433MHz-Sender. Der Sender wird mit dem linken Pin an GPIO #17 (Pin 11) angeschlossen, mit dem mittleren an 5V (Pin 2 oder 4) und mit dem rechten Pin an Masse (Pin 6 und viele andere). Der Antennenanschluss sollte mit einem ca. 17 cm langem Kabelende versehen werden. Der Sender funktioniert mit 5V Arbeitsspannung, aber er ist dann ein bisschen schwach – ich betreibe ihn mit einem 12V-Netzteil und den Pi Zero W an einem Wandler von 12V auf 5V vom selben Netzteil aus. 

    2. b.Für die über 433 MHz hinausgehende Schaltwünsche habe ich mehrere Steckdosen und Schalter, darunter einen Sromstoßschalter, mit dem Open-Source Betriebssystem Tasmota beschafft. Die lassen sich ganz einfach über die konventionellen Schalter, die immer schon die Lampen geschaltet haben, schalten – und zusätzlich über WiFi. Ein guter Laden für mit Tasmota vorinstallierte Geräte ist https://mediarath.de/.  

  1. 2.Betriebssystem 

    1. a.Als Betriebssystem funktioniert Devuan Daedalus gut. Ich habe das Image rpi-devuan-daedalus-6.1.93-armel-ext4-2025-01-12-0543.zip von der Seite https://arm-files.devuan.org/RaspberryPi%20Latest%20Builds/ benutzt. Das root-Passwort lautet „toor“. 

    2. b.Nachdem das Image auf eine SD-Karte geschrieben wurde (z. B. mit etcher), sollte die zweite Partition z. B. mit Hilfe von gparted so vergrößert werden, dass die ganze SD-Karte genutzt wird. 

    3. c.Dann kann gebootet werden – jetzt noch mit angeschlossener Tastatur und angeschlossenem Display 

    4. d.Um Tastatur und Display loszuwerden, sollte als erstes WiFi eingerichtet werden. Das funktioniert am allereinfachsten über den folgenden Eintrag in der Datei /etc/network/interfaces: 

       auto wlan0
      iface wlan0 inet dhcp
      wpa-essid {ESSIDName}
      wpa-psk {WPA-Passwort} 

      Ein anschließender Reboot sollte Tastatur und Display überflüssig machen, weil ab jetzt per SSH auf den Pi Zero zugegriffen werden kann. 

    5. e.Auf dem Router sollte die per DHCP zugewiesene IP-Adresse stetig gemacht werden, damit der Pi Zero immer über die gleiche Adresse erreichbar ist. 

    6. f.Über SSH sollte jetzt die BenutzerIn devuan gelöscht, eine neue BenutzerIn angelegt und das root-Passwort geändert werden. 

    7. g.Dann sollte der Pi Zero lokalisierte Einstellungen erhalten:
      a. dpkg-reconfigure locales
      b.
      dpkg-reconfigure tzdata
      c. dpkg-reconfigure keyboard-configuration
      d. dpkg-reconfigure console-data
       

  1. 2.Voraussetzungen für 433MHz und Tasmota im Terminal und im Webserver 

    1. a.Für die weiteren Arbeiten braucht der Pi Zero die Unterstützung für git: 

      apt install git-core 

    2. b.Außerdem benötigt der Pi Zero einen Webserver. Es ginge bestimmt auch mit leichteren Servern, aber von verschiedenen anderen Projekten her kenne ich den Apache-Webserver einfach am besten: 

      apt install apache2 

    3. c.Der Webserver muss das cgi-Modul aktiviert haben:
      a2enmod cgi (danach muss der Webserver neu gestartet werden: 

      service apache2 restart) 

    4. d.Danach wird wiringpi geholt und kompiliert: 

      Ins Verzeichnis /home/BenutzerIn wechseln 

      git clone https://github.com/wiringpi/wiringpi 

      cd wiringPi 

      ./build 

      Das ist bei mir vollkommen fehlerlos durchgelaufen – also keine Angst vorm Kompilieren! 

    5. e.Danach brauchen wir das Programm für die Fernbedienung: 

      git clone https://github.com/xkonni/raspberry-remote.git 

      cd raspberry-remote 

      make send 

    6. f.Wenn alles funktioniert hat, kann das Verzeichnis ~/raspberry-remote z. B. als remote in das Verzeichnis /opt kopiert und von da aus alles weitere gemacht werden. 

    7. g.Für die einfache Steuerung der Tasmota-Geräte benutze ich tasmo-shell, ein sehr praktisches Script. Ihr findet es unter https://github.com/mdscunningham/tasmo-shell/tree/main.
       
       

Jetzt haben wir also eine hoffentlich funktionierende Schaltzentrale. Zum Schalten brauchen wir jetzt nur noch eine kleine Webseite, die auf dem Pi Zero W residiert und die über cgi-bin-Scripts die Schaltvorgänge auslöst und über 433 MHz oder WiFi an die jeweiligen Schalter weitergibt.

In meinem Beispiel habe ich mich auf Lichtsteuerung und an/aus einiger kleiner Geräte beschränkt. Wer will, kann das Ganze natürlich auf Heizungen, Rolläden und so weiter ausbauen.

Ein kleines Gimmick im Garten ist eine von Öl auf LED umgerüstete Bahnwärterlampe, die mit Hilfe eines Scripts, das den Sonnenuntergang ermittelt, an- und zu einer festen Uhrzeit in /etc/crontab oder manuell wieder abgeschaltet wird. Den Kern des Scripts habe ich im Netz gefunden und es für meine Bedürfnisse angepasst – die Quellenangabe steht aber oben im modifizierten Script.

Der Webserver läuft bei mir unverschlüsselt über das http-Protokoll, weil ich ihn nicht von außen bedienen möchte – auch das kann natürlich geändert werden.

Die Webseite, alle CGI-Scripts, Konfigurationsdateien und diesen Text findet ihr:

Text (nur eben schnell als html aus Libreoffice exportiert):

https://l4a.org/433MHz/.

Scripts und Webserverkonfiguration:

https://l4a.org/433MHz/scripts.webserver.tar.bz2)