Dit Instructable legt uit hoe ik WiFi toegelaten thermostaten gebouwd voor mijn huis. De thermostaten zijn programmeerbaar met 6 verschillende perioden tijdens de dag, hoewel steeds meer die op elk willekeurig nummer zou vrij onbeduidend. Ze kunnen worden geprogrammeerd (in de zin van instelling tijden en temperaturen), alsook via het internet gecontroleerd, en ze hebben een touchscreen LCD display voor lokale controle en. En ik besteed (en blijven uitgeven) een behoorlijke hoeveelheid tijd proberen om hen te kijken fatsoenlijk; immers, dit is iets die op mijn muur hangt, en ik en mijn familie zal zien het elke dag.
Een voor de hand liggende vraag is "Waarom zou iemand willen om dit te doen wanneer er tal van WiFi-toegelaten thermostaten te koop commercieel zijn?" Een mogelijke oplossing zou zijn om geld te besparen. Maar, hoewel het klopt dat dit misschien goedkoper te bouwen dan sommige commerciële modellen, zodra u factor in uw tijd, dit wordt een slecht antwoord! Betere antwoorden zou zijn om plezier doen (deed), of om te bouwen van een thermostaat die u kunt uitvoeren en communiceren met andere apparaten op geen enkele manier programmeren gewenst. Ik heb deze als onderdeel van een groter huis energie managementsysteem gebouwd, en misschien zal ik post een andere Instructable daarover later. En als bonus: de hub voor de thermostaten is klaar om te gaan als een hub voor een compleet domoticasysteem!
Een tweede voor de hand liggende vraag is welke soort van formele kwalificaties of relevante ervaring heb ik in dit gebied, en het antwoord is absoluut geen – geen achtergrond met systemen HVAC, geen achtergrond in programmeren, geen achtergrond in de elektronica. Dus, als u besluit om te bouwen van uw eigen thermostaten, u moet niet alleen maar blindelings kopiëren precies wat ik hier heb en sluit deze dan aan uw muur. Dit project vereist nauwkeurig, analytisch denken, en moet u het type van HVAC-systeem u hebben, bekijken en wijzigen van alle code en circuits als passende en zorg ervoor dat u begrijpt wat u doet en de gevolgen van verkeerd begrijpen. Niet te doen zou kunnen vernietigen uw HVAC-systeem, elektrocuteer uw dierbaren of afbranden van je huis. Serieus! Ik ben zeker blij met feedback van iemand die beschikt over kennis op deze gebieden over de vraag hoe ik deze thermostaten beter kon maken.
En natuurlijk, ik kon niet hebben dit gedaan zonder al het harde werk van de mensen die gemaakt van de verschillende bibliotheken gebruikt, de mensen die de tijd genomen om informatie stak op het web in Instructables, forums, en blogs, en de vele mensen die me met advies en antwoorden op mijn vragen geholpen. Speciale dank aan Mark Pendrith die was bijzonder nuttig en gaf me de code die de basis voor de arduino schets vormt.
Tot slot, in het proces van het wijzigen van bestanden om te werken met alleen de thermostaten (in tegenstelling tot de grotere huis energie managementsysteem) evenals het onthouden van alles wat die ik deed na verloop van tijd te halen zulks voor werkzaamheden, er zullen ongetwijfeld enkele fouten hierin. Laat het me weten als u om het even welk vangen, en ik proberen zal ze zo snel mogelijk gecorrigeerd te krijgen.
Met al dat uit de weg, hier van deed wat ik:
Het systeem maakt gebruik van een Raspberry Pi als een centrale hub die serveert van webpagina's, zodat ik de thermostaten vanaf elke locatie kunt bepalen. De hub ook behandelt alle van de draadloze communicatie over nRF24L01 + radio modules (ik weet dat ik zei "WiFi", en de nRF24L01 + radio module is niet technisch WiFi, maar daarover later meer), en onderhoudt een MySQL-database met de thermostaat programmering zo goed als elke gegevensregistratie ik doen. En tot slot de hub draait twee servers in Python geschreven-een regelt de thermostaat (als intermediair tussen de webpagina en de thermostaat) en de andere grepen gegevens vastleggen. Ik denk dat dit kan waarschijnlijk gebeuren met de thermostaten elke serveren eigen eenvoudige web-pagina en het verzenden van gegevens rechtstreeks naar de MySQL database. Dit zou elimineren de noodzaak voor de lighttpd webserver en de twee python-servers. Maar ik voel me als dit te doen op de hub biedt de eenvoud van een enkele website, en de python-servers een heleboel flexibiliteit bieden. Plus ik heb niet de code op de thermostaten bijwerken wanneer ik wijzigingen wilt aanbrengen aan deze aspecten.
Als je echt in dit graven, zult u waarschijnlijk zich afvragen waarom ik moeite met een MySQL-database in plaats van gewoon een beetje gegevens te schrijven naar een tekstbestand wanneer dat nodig is. Het primaire antwoord is dat ik de MySQL database voor andere delen van mijn systeem moet, maar als alles wat die ik had waren de thermostaten, kan het zijn vrij gemakkelijk enkel te elimineren van de database en tekstbestanden te vervangen.
Dus, de communicatiestroom in wezen werkt als volgt.
Gebruiker Updates op website
Een gebruiker bepaalt of een programma van een thermostaat op een web-site geschreven in PHP (meestal een beetje javascript).
Deze web-site slaat wijzigingen op in de MySQL database en stuurt een instructie naar de python control server.
De python control server interpreteert deze instructies, bijgewerkt een interne representatie van de thermostaat en de passende instructies stuurt naar de fysieke thermostaat via de RFX netwerk.
Gebruiker Updates op thermostaat
Een gebruiker bepaalt een thermostaat met behulp van het touchscreen controles.
De thermostaat stuurt de wijzigingen naar de server van python controle.
De python control server updates een interne representatie van de thermostaat en slaat wijzigingen op in de MySQL database.
Thermostaat heeft gegevens naar logboek of berichten op te slaan
De thermostaat stuurt gegevens of een bericht aan de logserver python gegevens te melden.
De gegevensregistratie server slaat ofwel dat gegevens naar de MySQL-database of naar een logboekbestand op basis van het type bericht.
Thermostaat temperatuur automatisch gewijzigd volgens een programma instellen
De python control server het programma instellen voor de thermostaat controleert en bepaalt u wanneer de ingestelde temperatuur moet wijzigen.
De python control server updates een interne representatie van de thermostaat en stuurt de nieuw ingestelde temperatuur op de thermostaat.
Dus, met dat overzicht achter ons, hieronder vindt u informatie over hoe ik dit instellen op. De eerste stap worden de leveringen en de hulpmiddelen die ik gebruikte. De volgende stappen van de Instructable dekken hoe ik het opzetten van de hardware en software-infrastructuur voor de hub. De meeste van deze zal instructies bevatten aan de hand van-er zijn tal van plaatsen om grote informatie over hoe, bijvoorbeeld, instellen van een MySQL-database op een Raspberry Pi, zodat ik niet proberen te repliceren die. Dan, wanneer de infrastructuur aanwezig is, geef ik aanzienlijk meer informatie over hoe ik de werkelijke thermostaten, evenals de code die ik gebruik om hen gebouwd.