Ik heb al het bovenstaande bereikt door, wel net als Femme, alles zelf te bouwen. Onveilig IoT spul, Tuya rommel, of alles wat ook maar (vermoedelijk) "buitenom" wil communiceren, komt er niet in. Van software tot hardware heb ik vrijwel alles zelf gedaan. Voornamelijk omdat ik het leuk vind en software en elektronica beide een hobby van mij zijn. Goed, software is ook mijn vak, maar toch...
Voor ieder onderdeeltje heb ik een Raspberry Pi (Zero W) gebruikt. Deze zijn uiteraard minder zuinig als bijv. een Arduino of Wemos, maar wel OTA te voorzien van nieuwe software. En omdat mijn modules overal en nergens zijn verstopt en/of ingebouwd, ga ik ze er niet allemaal om beurten uit halen om te flashen. Bij vrijwel alle modules heb ik er rekening mee gehouden dat ik hier niet eeuwig ga blijven wonen, waardoor alles eenvoudig weg te halen is, zodat het huis weer in originele staat is. Daarnaast heb ik alles via normale schakelaars en bediening ook laten werken, want er woont hier ook iemand in huis die niet alles via de app wil bedienen.

Een idle Raspberry Pi Zero W gebruikt ongeveer 120 mA, wat neerkomt op 0.6W, als we de verliezen van de voeding niet meerekenen. Dit vond ik ruimschoots acceptabel.
Alle modules zijn verbonden met een websocket-server en geschreven in Python. De core van de applicatie is op alle modules hetzelfde en per module laad ik, afhankelijk van de configuratie, een extra python class in die module-specifieke dingen kan doen. Zo kan ik een update-commando sturen naar een specifieke module (of allemaal tegelijk), welke dan vervolgens zijn eigen software update en herstart. Vrijwel alle modules heb ik voorzien van meerdere DS18B20 temperatuursensors, zodat ik van alle vertrekken en (kleine) ruimtes de temperatuur weet. Dit logt allemaal naar een MariaDB-server welke, uiteraard, ook weer op een Raspberry Pi (3) draait. Hier draait ook de web-app, welke ik via een Android-app kan aanspreken.
Een greep uit de diverse modules:
Wekker
Ik heb mijn eigen wekker gebouwd voor op mijn nachtkastje. Hier zit een Raspberry Pi 3 in, met een 5" touch screen, mini audioversterker, Qi-oplader, LDR en een zooi WS2812-LEDs als "wake up light". Het hele handeltje zit in een 20x20x20 kubus van MDF welke ik met houtnerf-folie heb omwikkeld. Zo komt alleen het heldere licht van het scherm door de folie heen. De weergave van het scherm gebeurd door afbeeldingen met Python PIL te maken en deze rechtstreeks naar de framebuffer te sturen. Er draait dus geen grafisch OS op. Touch coordinaten lees ik ook rechstreeks uit. De LDR gebruik ik om de helderheid van het scherm te bepalen. Via het touchscreen, maar ook via mijn huis-app, kan ik het alarm instellen. Uiteraard is alles gekoppeld, dus als ik mijn telefoon op de wekker leg, verschijnt er een symbooltje op het scherm dat ie aan het opladen is. Als de wekker afgaat, gaan eerst de LEDs langzaam aan, daarna spreekt de wekker in het Vlaams (want dat vond ik leuk) een groet, de tijd en datum uit. Daarna speelt er een muziekje naar keuze (uiteraard instelbaar).
Badkamerverlichting
Hier heb ik een eigen lamp ontworpen welke voorzien is van 60 WS2812-LEDs. Afhankelijk van de hoeveelheid licht en tijdstip wordt de helderheid bepaald. Een PIR-sensor zorgt ervoor dat de verlichting inschakelt als ik de badkamer binnenloop. Deze gaat normaal na 4 minuten uit, dus ook als ik sta te douchen. Daarom vraagt deze module eerst aan mijn huis-API of de CV-ketel bezig is met het verwarmen van water, want dan sta ik hoogstwaarschijnlijk te douchen en blijft de verlichting nog eens 10 minuten langer aan. 's Nachts geeft ie net voldoende licht, zodat ik de WC kan vinden.
Ik heb hier een DHT22-sensor aan geknoopt voor het meten van de temperatuur en luchtvochtigheid. Wanneer de luchtvochtigheid een bepaalde waarde bereikt, wordt automatisch de huisventilatie ingeschakeld (ook dit wordt met een Raspberry Pi Zero W en 4 relais geregeld). Welke uiteraard, beneden via de schakelaar in de muur, of via de app weer te overrulen is.
Weersensors
Buiten heb ik allerlei weersensors opgehangen. Deze zijn natuurlijk leuk voor de statistiek en het vullen van de MariaDB-server, maar 's zomers gebruik ik de regensensor en windsnelheid om te bepalen of het zonnescherm automatisch ingetrokken moet worden (wat uiteraard ook een Raspberry Pi module is).
Deurbel
Het deurbelknopje heb ik vervangen voor een mooie metalen versie met transparante ring om de knop en achterkant. Hier heb ik twee WS2812-LEDs in weten te proppen. Wanneer iemand nu op de bel drukt, wordt het relais van de deurbel ingeschakeld, gaan de LEDs knipperen en krijgen wij een push-melding. Alles is hier instelbaar, van de rinkeltijd tot de kleur van de LEDs in idle, of tijdens knipperen en uiteraard weer afhankelijk van de hoeveelheid licht buiten. Vooral de korte rinkeltijd die ik heb ingesteld is een grote ergernis van onze DHL-bezorger. Want uiteraard log ik de indruktijd van de deurbel, welke via een push-bericht naar onze telefoons wordt gestuurd, tezamen met de foto welke gelijk gemaakt wordt door de UniFi-camera die daar toch al hangt. En als die kleine van mij 's middags op d'r bedje ligt, schakel ik via de app de rinkel van de deurbel gewoon uit, dan krijgen wij alleen nog een push-melding.
Ik heb hier nu 4 willekeurige modules benoemd, maar het zijn er inmiddels bijna 20. Zoals ik al zei hebben vrijwel alle modules een temperatuursensor voor de ruimte, maar ik heb er ook 1 op de voeding geplakt. Wanneer een bepaalde sensor een te hoge waarde meet, krijgen wij een high-prio push-melding welke de doden wakker maakt. Leek me wel zo veilig.
Ik ben met dit project nu bijna 3 jaar bezig (in de avonduren). Ik heb een externe API beschikbaar gemaakt, zodat ik enkele functies van buiten mijn huis kan bedienen, maar meer niet. Alles draait intern en een internetverbinding is in principe niet nodig.
Ik kan hier uren over vertellen, maar ik weet niet men daarop zit te wachten.
[Reactie gewijzigd door Bas_f op 28 januari 2022 14:14]