Heimische Steckdosen automatisieren mit Windows 10 IoT Core, Raspberry Pi & Arduino
Komponenten und Zubehör
| Raspberry Pi 2 Model B | × | 1 |
| XBee-Module (ZigBee) | × | 2 |
| Arduino UNO | × | 1 |
| FTDI-Kabel (6-polig, USB) | × | 2 |
| 4-Kanal-Relay-Shield für Arduino | × | 1 |
| SparkFun XBee Shield | × | 1 |
Apps und Onlinedienste
- XCTU (XBee-Konfiguration)
- Visual Studio 2015+ (UWP-Entwicklung)
- Arduino IDE
- Microsoft Azure (Cloud-Hosting, SQL, Storage)
- Microsoft Windows 10 IoT Core (auf Raspberry Pi)
Projektbeschreibung
Einführung
Dieses Projekt zeigt, wie Sie die Steckdosen Ihres Zuhauses lokal im Netzwerk und weltweit über die Cloud steuern können – mit einem Raspberry Pi unter Windows 10 IoT Core, XBee-Funkmodulen und einem Arduino als Aktuator. Alle Code-Beispiele liegen auf GitHub.
Warum Steckdosen automatisieren?
Statt einzelne Geräte in die Cloud einzubinden, automatisieren Sie die Stromversorgung selbst. Jedes Gerät, das an die gesteuerte Steckdose angeschlossen ist (Ventilator, Lampe, Heizung…), wird damit smart. Im Beispiel werden ein Ventilator und eine Lampe geschaltet.
XBee-Module (die „Bienen“) einrichten
Zwei XBee-Module im ZigBee-Protokoll kommen zum Einsatz:
- Coordinator – am Raspberry Pi (zentrale Steuerung)
- Router – am Arduino/Relay (Aktuator an der Steckdose)
Der Coordinator sendet Befehle per Funk an den Router, der die Relais schaltet.
XBees im AT-Modus konfigurieren
- XCTU herunterladen & installieren.
- Firmware-Update der XBees via FTDI-Adapter (z. B. Adafruit FTDI Friend).
- Beide XBees im AT-Modus konfigurieren (PAN ID, DH/DL-Adressen, Baudrate 9600).
- Vor dem Weiterbauen prüfen, ob die beiden Module miteinander kommunizieren (Terminal in XCTU).
Video-Tutorial: „Configuring Bees“
Empfänger-Seite (Router + Arduino + Relais) aufbauen
Benötigte Hardware
- XBee Router (konfiguriert)
- Arduino UNO R3
- XBee Shield für Arduino
- 4-Kanal-Relay-Shield
Arduino-Sketch (Relais-Steuerung)
Der Arduino empfängt serielle Kommandos vom XBee (z. B. „ON1“, „OFF2“) und schaltet die entsprechenden Relais.
#define RELAY1 7
#define RELAY2 5
String state = "OFF";
void setup() {
Serial.begin(9600);
pinMode(RELAY1, OUTPUT);
pinMode(RELAY2, OUTPUT);
}
void loop() {
if (Serial.available() > 0) {
state = Serial.readString();
Serial.println(state);
}
if (state == "ON1\r\n") digitalWrite(RELAY1, HIGH);
else if (state == "ON2\r\n") digitalWrite(RELAY2, HIGH);
else if (state == "OFF1\r\n") digitalWrite(RELAY1, LOW);
else if (state == "OFF2\r\n") digitalWrite(RELAY2, LOW);
else {
digitalWrite(RELAY1, LOW);
digitalWrite(RELAY2, LOW);
}
}
Kompilieren und auf den Arduino UNO hochladen.
Netzsteckdose an Relais anschließen (Hochspannung – Vorsicht!)
Relais sind bewährte Schaltelemente: Der Mikrocontroller steuert die Niederspannungs-Seite (Spule), das Relais schaltet die Netzspannung (110–240 V AC) galvanisch getrennt.
ACHTUNG: Arbeiten an 230 V AC sind lebensgefährlich! Nur mit entsprechender Qualifikation und Sicherheitsvorkehrungen durchführen. Auf eigene Gefahr.
Statt direkt an der Wanddose zu arbeiten, wird ein Verlängerungskabel modifiziert: Eine Ader wird durchtrennt, ein Ende an den Common (C)-Kontakt, das andere an NO (Normally Open) des Relais angeschlossen.
Mechanischer Aufbau
- Relais-Shield auf Arduino stecken.
- XBee Shield oben auf das Relais-Shield stecken (Stapelung).
- XBee (Router) in das XBee Shield stecken.
- Arduino mit externer Stromquelle versorgen (nicht nur USB).
Das XBee Shield besitzt einen Schalter (XBee/USB). Für den Betrieb auf „XBee“ stellen. Zum Flashen der XBee-Firmware auf „USB“ schalten (nutzt den FTDI-Chip des Arduino).
Server-Seite (Raspberry Pi + Coordinator) einrichten
Hardware
- Raspberry Pi 2 mit Windows 10 IoT Core
- XBee Coordinator an FTDI-Adapter → USB-Port des Pi
Software: UWP-Webserver auf dem Pi
Ein UWP-Webserver (Universal Windows Platform) läuft auf dem Pi. Er wartet auf Benutzereingaben (Web-UI), schreibt die Kommandos seriell an den FTDI-Port → Coordinator-XBee sendet per Funk an den Router.
Die DH/DL-Adressen des Coordinators wurden zuvor auf die Adresse des Routers gesetzt, sodass die Nachricht korrekt zugestellt wird.
Für FTDI-Treiber unter Windows IoT Core siehe: github.com/jark/ftdisample
Video-Tutorial: „Web Server“
Cloud-Anbindung mit Microsoft Azure
Für weltweiten Zugriff wird die Anwendung in Azure gehostet:
- Azure Web App (ASP.NET Core) für die Benutzeroberfläche.
- Azure SQL Database für Benutzer-Authentifizierung/Autorisierung.
- Azure Table Storage für Befehlswarteschlange (Commands vom Web → Pi).
- Der Raspberry Pi pollt die Table Storage („Blinky App“) und führt Befehle aus.
Hilfreiche Azure-Dokumentation:
- Table Storage: storage-dotnet-how-to-use-tables
- SQL Database: sql-database-get-started
Video-Tutorial: „Enable Azure“
Demo: Zwei Zugriffswege
- Lokal: Direkter Aufruf der Webserver-URL des Raspberry Pi im Heimnetz.
- Cloud: Über die in Azure gehostete Web-App von überall.
Video: „Demo“
Fazit & Erweiterungsmöglichkeiten
- Zusatzsensoren (Licht, Bewegung) ermöglichen energiesparende Automatik (Licht aus bei Abwesenheit).
- Seniorenfreundliche Fernbedienung via RFID/Taster.
- Zeitpläne (Scheduler) für Beleuchtung/Heizung.
- Einbruchschutz: Alle Lichter an bei Alarm.
- Urlaubsmodus: Ganzes Haus per Knopfdruck stromlos.
- Temperaturregelung nur bei Bedarf → Energieeinsparung.
Code
Relais-Steuerung (Arduino, C/C++)
#define RELAY1 7
#define RELAY2 5
String state = "OFF";
void setup() {
Serial.begin(9600);
pinMode(RELAY1, OUTPUT);
pinMode(RELAY2, OUTPUT);
}
void loop() {
if (Serial.available() > 0) {
state = Serial.readString();
Serial.println(state);
}
if (state == "ON1\r\n") digitalWrite(RELAY1, HIGH);
else if (state == "ON2\r\n") digitalWrite(RELAY2, HIGH);
else if (state == "OFF1\r\n") digitalWrite(RELAY1, LOW);
else if (state == "OFF2\r\n") digitalWrite(RELAY2, LOW);
else {
digitalWrite(RELAY1, LOW);
digitalWrite(RELAY2, LOW);
}
}
Weitere Beispiele
Komplettes Repository: github.com/syediddi/hacksterio
Schaltplan
Herstellungsprozess
- Günstiges drahtloses Sensornetzwerk für Zuhause selbst bauen
- Sichere Gesichtserkennungs-Tür mit Windows IoT und Raspberry Pi bauen
- Präzise Temperatur- & Feuchtigkeitsüberwachung mit SHT15 unter Windows 10 IoT Core
- Windows 10 IoT Core auf Raspberry Pi 3 Model B+ installieren – Schritt-für-Schritt
- Sprachgesteuerter Roboter mit Windows 10 IoT Core auf Raspberry Pi 2 bauen
- GoPiGo v2 auf Windows 10 IoT Core für Raspberry Pi 3 erweitern
- IoT nutzen: Digitale Transformation heute beschleunigen
- Echtzeit-IoT-Herzfrequenzmonitor mit Arduino & MAX30100
- Azure IoT Schwimmbadsteuerung: Smarte Sensoren & Fernüberwachung
- Power BI Dashboards aus PLCnext-Clouddaten erstellen