Thuis Controle

Het eigenlijke doel was om een compleet programma te schrijven voor mijzelf, waarna wij in huis zonder “thermostaat” van een “bekend” merk te gebruiken. Tevens was het de bedoeling om dit, wanneer ik het klaar zou hebben, volledig in huis te gaan gebruiken.

Het idee zoals bovenstaand, is geboren uit eigenlijk een beetje noodzaak, wegens dat ik was vergeten om tijdens de verbouwing van het huis (keuken en woonkamer) een kabel te leggen naar zolder. Uiteraard is het op dit moment ook geen probleem deze kabel alsnog te leggen, maar in de keuken / woonkamer kan ik dan de kabel niet verbergen.

Nu zijn er dan ook andere oplossingen, zoals het draadloos systeem van een “bekend” merk te gebruiken welke ongeveer 200 euro kost, en alleen op batterij-en kan werken, waarbij ik / mijn vrouw het zeer wenselijk vinden dit niet te willen.

Het idee is ontstaan:
– Thermostaat bouwen op 230V
– Data via wifi toegankelijk
– Thermostaat intern in het netwerk / VPN aan te passen
(denk aan het hoger of lager zetten van de temperatuur)

Nu een paar jaar later (daar bovenstaande eigenlijk al 2 jaar bestaat) is er een extra persoon ermee gaan bemoeien op een wel eigenwijze manier (niet dat dit fout is).
Echter zijn er dus wel een paar extra ideeën bij gekomen……

– Een head unit
– Scherm t.b.v. head unit
– Layout head unit (welke uit onze inspiratie gehaald is uit de honeywell evohome thermostaat (Link)
– Meer soorten sensoren kunnen uitlezen
– meer soorten apparaten kunnen aansturen

dit houd dan voor mij in, dat er een beste hoeveelheid aan programmeren voor mij staat.

#HTML
HTML tbv het visualiseren van de data op het scherm, maar daar komt de eerste uitdaging, ik heb geen idee hoe ik html aan client zijde kan updaten, zonder dat ik de pagina opnieuw zou moeten laden…
Gelukkig bracht internet (https://w3schools.com) een heleboel oplossingen t.b.v. html, php, java enz…

#Python3
Ja python3, wegens dat python2 niet meer volledig ondersteund wordt. python3 heb ik al het een en ander aan ervaring in, dus was weer een gelukje….
heb python3 ook gebruikt voor “Versie 1” en voor andere programma’s (voornamelijk voor mijzelf, zonder een echt doel), waarbij ik veel leuke onderdelen heb mogen leren.

#MicroPython
Wegens gebruik van laatste raspberry producten (en natuurlijk dat deze producten nagenoeg niets kosten, en stroomverbruik erg laag is), hebben wij ervoor gekozen om voor de diverse sensoren en aan te sturen apparaten een Raspberry Pico te gaan gebruiken. Wel was de ervaring er voor Python3 maar nog niet voor MicroPython, dus opnieuw het een en ander moeten uitzoeken en leren.

#Andere software
Wij gebruiken een Raspberry Pi 4 als head unit / server, daarop hebben wij ervoor gekozen deze met de standaard OS (besturingssysteem zoals “Windows” voor de meeste computer is) te installeren, waarbij dit voor een Raspberry Pi 4 “Raspbian OS” is.
Raspbian OS is voor het overgrote deel linux (debian) met een iets verouderde grafische interface, maar dat is voor het doel dat wij hebben niet erg.

Tevens hebben wij voor netwerk communicatie nog het een en ander nodig….
Ja, ik ben oldschool begonnen met een request te sturen vanaf de Rasberry Pico naar de “Head unit” om dan een PHP file te openen, deze de data te laten schrijven naar een database (MariaDB) om dan vervolgens dit weer uit te lezen met een andere PHP pagina….
Tja, voor de wat ervaren gebruikers van computers zien natuurlijk aankomen wat er gebeurde met de RPI4, jawel, ik had een overvolle log, en mijn SD-Card was dus dan ook erg snel vol (ongeveer elke dag)

Dit moest dan ook kleiner kunnen, dus zoeken naar nieuwe software. We hebben nieuwe software gevonden, maar weten nog niet hoe het werkt.

Wij hier dagen uitzoeken hoe we dit makkelijk in het project kunnen toevoegen, blijkt het makkelijker dan makkelijk. MQTT Server opzetten op de head unit (RPI 4) en de Raspberry Pico zo programmeren dat deze de data via MQTT naar de head unit kan sturen.

Echter was dit niet genoeg, we kunnen nog steeds niet op afstand informatie aanpassen, het b.v. toevoegen en / of aanpassen en / of verwijderen van sensoren denkende aan temperatuur of luchtvochtigheid. Ook hierin bleken er meer mogelijkheden te zijn in MQTT, want ik kan niet alleen versturen met een Raspberry Pico, maar ik kan ook ontvangen, en hierin complete programma’s overschrijven van een computer naar de pico, zodat we op afstand de Raspberry Pico verder kunnen aanpassen naar onze wensen, waarbij uiteraard ook de mogelijkheid geopend is om op deze manier updates te maken voor de diverse systemen welke wij gaan gebruiken.

Wij gaan gebruiken:
Systemen:
Raspberry Pi 4 (als head unit / server)
– Dit mag ook een Raspberry Pi 1, 2 of 3 zijn, ook de Raspberry Pi Zero is hier uitermate voor geschikt
Raspberry Pico (het uitlezen van sensoren en aansturen diverse apparaten)

Sensoren:
Temperatuur –> AM2320 (bevalt ons het beste, met zo min mogelijk foute lezingen)
Luchtvochtigheid –> Zijn we nog een sensor voor aan het zoeken, in tussentijd gebruiken we daar ook de AM2320 voor
Luchtdruk –> BME280 (let op, dit is wel de goedkope versie, waarbij alleen luchtdruk en luchtvochtigheid kunnen worden uitgelezen, de mogelijkheid van temperatuur zit niet op de PCB)

Netwerk:
Het gebruik van ons netwerk zal erg laag zijn (10 mbit/s max) met een redelijk aantal sensoren (100). Voor de Raspberry Pico heeft hierin weinig opties, deze heeft alleen een wifi module op het “moederbord” waar het alleen mogelijk is met 2,4GHz wifi netwerken te verbinden
De Raspberry Pi 4 zou wel 5GHz kunnen gebruiken, maar raad ik aan om ook via de 2,4GHz wifi aan te sluiten wanneer je toch wifi moet / wilt gebruiken. Voor deze geld dat bedraad altijd beter is.