Raspberry Pi 2 Home Automation met Windows 10 IoT Core: complete componentengids
Onderdelen en benodigdheden
- Raspberry Pi 2 Model B (1x)
- HSRel5 - I²C-relaisbord (5 relais, 3 GPIO's, PCF8574) (1x)
- HSRel8(+8) - 8-kanaals relaisbord (8 relais, 8 GPIO's, MAX7311) (1x)
- I2C-Port 16 HS - 16-bit poortuitbreider (16 GPIO's, MAX7311) (1x)
- DR-60-12 Hutschienen voeding 12V/54W (1x)
- Hutschienen voeding 15W 5V/3A (MeanWell DR-30-5) (1x)
- Prototyping Shield voor Raspberry Pi (met status-LED, beveiligde interrupt-in, 3-polige schroefklemmen) (1x)
- I2C-Buffer HS (niveaushifter P82B96, met pull-up weerstanden) (1x)
- Arduino Nano R3 (1x) — als brug tussen DHT22-sensoren en I²C-bus
- 433 MHz zender & ontvanger (1x) — voor draadloze relais
Apps en online diensten
- Microsoft Visual Studio 2015
- Arduino IDE
Over dit project
Update 2: Het project groeit nog steeds; nieuwe features zoals Twitter-client en Telegram-bot integratie zijn toegevoegd. Check de GitHub repository en release notes voor details.
Update 1: Bedankt aan iedereen voor feedback! Het project werd gepresenteerd op Maker Faire Rome 2015 en Microsoft Technical Summit 2015.

Ik ontwikkel al 3 jaar een thuisautomatisatie-oplossing, inclusief hardware-installatie en software-ontwikkeling.
Features
Inputs
- Drukknop (Busch-Jaeger 2020US)
- Bewegingsmelder (Abus 360° BW8085)
- Kamer temperatuur (eigen DHT22-apparaat)
- Kamer vochtigheid (eigen DHT22-apparaat)
- Raamstatus (open/dicht met Honeywell Slimline reed-contact)
- Zonsopgang, zonsondergang, temperatuur & vochtigheid (via OpenWeatherMap)
Outputs
- Lamp (plafond) — via relais, geen dimmen
- Stopcontact — via relais, geen dimmen
- Rolruiten (raam) — via 2 relais (omhoog/omlaag)
- Ventilator (plafond) — via 3 relais (3 standen)
- Badkamer ventilator — via 2 relais (2 standen)
Overige features
- Web-app voor iOS, Android, Windows, macOS — configuratie wordt geladen van de controller (Windows IoT)
- Alle events naar Microsoft Azure Event Hub en/of CSV-logging
- UDP-based tracing via console-applicatie voor debugging
- Aangepaste actuatoren voor extra hardware
- Fysieke outputs combineren tot logische outputs
- Animaties binnen logische outputs
- Fouttolerant systeem: bij hardware-falen blijven andere delen werken
- Ondersteuning voor 433 MHz draadloze relais
Het concept
Bij de verbouwing van ons huis koos ik voor besturing vanaf de stroomverdeling met relais. Elk element (knop, lamp, stopcontact, rolruit) heeft een eigen kabel naar de stroomverdeling. Geen KNX/EIB-bus nodig.
Let op: Alle componenten zijn ontworpen voor 230V (Duitsland). Installatie van 230V-kabels en nieuwe stroomverdelingen werd gedaan door een gecertificeerd elektricien.
Hardware
De nieuwe stroomverdeling
We installeerden een nieuwe stroomverdeling voor twee verdiepingen.

De I²C-bus
De I²C-bus is niet bedoeld voor lange kabels, maar met optimalisaties kan de lengte worden vergroot:
- Bus op 5V draaien (RPi is 3.3V → I²C niveaushifter P82B96 nodig). De kabel hier moet zo kort mogelijk zijn.
- Gedraaide paar kabel (CAT7): één paar voor SDA+GND, een ander voor SCL+GND. Scherming op PE.
- Draadkabel (stranded) voor betere bereik.
- Pull-up weerstanden 10k aan het einde van de bus (SDA en SCL).
- Bus snelheid beperken tot 100 kbit (Standard Mode).
- I²C-buffer (P82B96) in het midden van de bus plaatsen voor segmentering.
Deze geoptimaliseerde I²C-bus verbindt alle borden in de stroomverdeling.
Relaisborden (outputs)
CCTools (Duitsland) levert relaisborden met I²C-aansluiting. De HSRel5 heeft 5 relais + 3 GPIO's via een PCF8574 (8-bit). De eerste 5 poorten sturen relais aan (via relaisdriver ULN2803 en inverter), de laatste 3 zijn vrij. De inverter is nodig omdat de PCF8574 na power-up alle poorten HIGH zet — wat alle relais zou sluiten (ongewenst).
Voorbeeld: om relais 1 aan te zetten, stuur 00011110 (MSB) naar de PCF8574. Poort 1 wordt LOW → inverter → HIGH op relaisdriver → relais sluit.
De HSRel8(+8) gebruikt een MAX7311, heeft 8 relais + 8 GPIO's en geen hardware-inverter nodig. HIGH = AAN. Dit verschil wordt in software afgehandeld.
PCF8574 heeft 8 adressen, PCF8574A nog eens 8 → max 16 HSRel5 op de bus.
Poortuitbreiders (inputs)
Knoppen, beweegmelder, reed-contacten → I2C-Port16 HS (MAX7311, pull-up 5V/10k per poort, keramische condensators 100 nF voor glitch-filter). Elk input-apparaat heeft een eigen CAT7-kabel naar de stroomverdeling (scherming op PE). Meerdere knoppen op één plek (bijv. rolruit) kunnen één kabel delen.
Alle input-borden delen een gemeenschappelijke interrupt-lijn (pull-up). Bij statuswijziging trekt de betreffende poortuitbreider de interrupt LOW. De software op de Pi2 pollt alleen de interrupt-GPIO; bij wijziging worden alle input-borden uitgelezen en events gegenereerd. Dit voorkomt continue polling van alle borden via I²C.
Raspberry Pi 2
Draait Windows 10 IoT, gemonteerd in een custom behuizing in de stroomverdeling. Prototyping shield met status-LED, interrupt-pin met pull-up (10k), beveiligingsweerstand (1k) en condensator (100 nF). Alle kabels op schroefklemmen.

Temperatuur & vochtigheid sensor
10 locaties met DHT22 (AOSONG). Proprietaire protocol zonder adressering → elke sensor op een microcontroller. Een Arduino Nano V3.0 fungeert als I²C-slave. De Nano leest alle sensoren elke 2,5 seconden en cached de waarden. De Pi2 leest via I²C door poort-ID (0-10) op te vragen.

De web-app toont temperatuur en vochtigheid in twee weergaven. Een icoon bij vochtigheid geeft schimmelrisico aan: <60% groen, <70% geel, ≥70% rood.
Hardware-opzet


433 MHz draadloos relais
De 433 MHz zender (FS1000A) is ingebouwd in de behuizing van de temperatuur/vochtigheid-sensor in een centrale ruimte. Gevoed met 12V voor groter bereik. De Arduino Nano stuurt de 433 MHz signalen.

Uitdaging: Draadloze relais geven geen status terug. De software forceert synchronisatie elke 5 seconden. Codes worden handmatig geconfigureerd via een experimenteerprintje (Arduino sketch in repo: CK.HomeAutomation.SensorsBridge\RemoteCodeFinder).
De digitale kattenbak
Kattenbak in berging zonder raam → oude rookkanaal met ventilator op relais. Beweegmelder detecteert kat en draait ventilator enkele minuten. Web-app heeft eigen icoon voor handmatige bediening. Logs laten gebruikspatroon zien voor optimale schoonmaakintervallen.

Software
Oorspronkelijk op GHI Electronics G120 (.NET Micro Framework 4.3), gemigreerd naar Windows 10 IoT Background Task met Azure-integratie. Repository bevat Visual Studio 2015 solution met alle projecten.
Projectstructuur
- App — Web-app (AngularJS, jQuery, Bootstrap)
- Controllers — Startup projecten voor Pi (IoT Background Tasks)
- SDK — Gedeelde projecten
Belangrijke componenten
- CK.HomeAutomation.TraceViewer — Console-app voor UDP-trace (poort 19227)
- CK.HomeAutomation.Networking — HTTP-server voor web-app (JSON API, statuswijzigingen). Web-app bestanden handmatig uploaden via SMB naar
\\\[IP\]\c$\Users\DefaultAccount\AppData\Local\Packages\CK.HomeAutomation.Controller-uwp_p2wxv0ry6mv8g\LocalState\app - CK.HomeAutomation.Controller.* — Startup projecten (bijv.
Cellarvoor tuin/parkeerverlichting).CK.HomeAutomation.Controller.Emptyals startpunt. Vereist: RPi2 setup met Windows 10 IoT, PowerShell remote sessie, UWP deploy. InclusiefSetupRaspberryPi.ps1script. - CK.HomeAutomation.Actuators — Hoogste abstractielaag: huis, kamers, actuatoren (knoppen, lampen, stopcontacten, etc.) met fluent API voor configuratie.
- Actuator types: MotionDetector (events: MotionDetected, DetectionCompleted), Button (PressedShort <1,5s, PressedLong >1,5s), VirtualButton (via web-app), BinaryStateOutput (Socket, Lamp), CombinedBinaryStateActuator (logische groepering zonder I²C-vertraging), StateMachine (meerdere standen, bijv. ventilator standen of "moods"), TemperatureSensor/HumiditySensor (elke 10s polling via I²C-sensor bridge).
Automatiseringen
- AutomaticTurnOnAndOffAutomation — Zet output AN na trigger (knop/beweging) voor configureerbare duur, optioneel tijdsbereik (dag/nacht via weerstation).
- AutomaticRollerShutterAutomation — Rolruiten open bij zonsopgang, dicht bij zonsondergang (met offset). Optioneel: dicht bij buiten-temp >28°C (dakramen). Positie tracking via tijdmeting.
- AutomaticConditionalOnAutomation — Outputs AN tijdens voorwaarden (bijv. tuinlampen alleen nachts). Tijdsbereiken en zonsop/ondergang.
- Generieke automatiseringen & complexe voorwaarden — Framework voor custom acties bij triggers (knop, beweging, interval, code).
Weerstation
Virtueel weerstation via OpenWeatherMap API (elke 60s). Implementeert IWeatherStation voor eenvoudige vervanging door fysiek station.
Hardware drivers
CK.HomeAutomation.Hardware — Drivers voor CCTools relaisborden, inputborden, 433 MHz schakelaars. Arduino Nano code (sensor bridge + 433 MHz zender) inbegrepen. Abstractielaag via interfaces voor uitbreidbaarheid.
Telemetrie
- CSV Writer — Logt alle statuswijzigingen naar
BinaryStateOutputActuatorChanges.csv(download via SMB). - AzureEventHubPublisher — Stuurt events (statuswijzigingen, sensorwaarden, knopdrukken, beweging) naar Azure Event Hub. SQL-scripts en StreamAnalytics query in
#Azuremap. Elke statuswijziging genereert START en END event met duur. PowerBI rapportages mogelijk.
WebApp
Project CK.HomeAutomation.App (AngularJS, jQuery, Bootstrap). Kamerconfiguratie wordt van de controller (Pi2) geladen, UI wordt gegenereerd. Draait vanaf bestandssysteem (index.html) of webserver. Configuration.js voor configuratie/vertaling en controller IP. Toevoegen aan iOS startscreen werkt alleen als gehost op webserver (bijv. BananaPi met nginx).

Terminal
Oude iPad 3 in de woonkamer als vaste terminal.

Toekomstige plannen
- IR-actuatoren (bijv. RGB-LED-strip)
- XML-configuratie naast code-configuratie
- Toegewezen tablet-webapp met ander layout
- Reed-contacten voor ramen met status in web-app
- Drivers voor andere fabrikanten (433 MHz)
- CV-klepbesturing (outputs en temperatuursensoren al klaar)
- Alarm systeem (beweging/raam open → notificatie)
- Hardware weerstation
- Automatisch rolruit dicht bij open raam + regen (API ondersteunt dit)
- Meer unit tests
- Gedetailleerde documentatie op GitHub wiki
- Animaties (al in .NET MF, nog niet volledig gemigreerd)
Interesse om mee te werken? (hardware, software, documentatie) Neem contact op!
Code
Repository: https://github.com/chkr1011/CK.HomeAutomation.git — bevat complete solution (SDK, WebApp, persoonlijke configuratie).
Schema's
- 433 MHz code-uitlees schakeling:

- DHT22 sensor printje (per kamer):

- RPi Shield (status LED, schroefklemmen I²C/interrupt):

- Gecombineerde temperatuur/vochtigheid sensor met 433 MHz zender (één per huis):

Productieproces
- Bouw Een Raspberry Pi Temperatuur Logger Met Een $5 I2C Sensor
- Externe weerbewaking met Raspberry Pi 3 en PubNub
- TI SensorTag integreren met Blynk via Node-RED op Raspberry Pi Zero
- Een LED Besturen met een PIR-bewegingssensor op Raspberry Pi
- Je huis temperatuur monitoren met een Raspberry Pi-dashboard
- Hartslagpulsen uitlezen met Windows 10 IoT Core op Raspberry Pi – Stap-voor-stap gids
- Een Raspberry Pi-thuisautomatiseringssysteem bouwen voor afstandsbediening
- Adafruit 10DOF IMU-data van Raspberry Pi 2 naar Azure Event Hubs Sturen met Windows 10 IoT Core
- Nauwkeurige Temperatuur- & Vochtigheidsmonitoring met SHT15 op Windows 10 IoT Core
- Windows 10 IoT Core Installeren op Raspberry Pi 3 Model B+: Stap-voor-stap Handleiding
- Bouw een Slimme Robot met de Bridge Shield – Raspberry Pi & Arduino Integratie