Webbaktiverade hem termostaten (och hemautomation Hub)
Detta Instructable förklarar hur jag byggt WiFi aktiverat termostater för mitt hem. Termostaterna är programmerbara med 6 olika tidsperioder under dagen, även om öka som ett godtyckligt värde skulle vara ganska trivial. De kan vara programmerad (i avkänningen av inställningen tider och temperaturer) som även kontrolleras via internet, och de har en pekskärm LCD-display för lokal kontroll också. Och, jag tillbringade (och fortsätta att spendera) en hel del tid att försöka få dem att se anständig; När allt detta är något som hänger på min vägg, och jag och min familj kommer att få se det varje dag.
En uppenbar fråga är "Varför skulle någon vilja att göra detta när det finns gott om WiFi-aktiverad termostater till salu kommersiellt?" Ett möjligt svar skulle vara att spara pengar. Men det är sant att dessa kanske kostar mindre att bygga än vissa kommersiella modeller, när du faktor i din tid, detta blir ett dåligt svar! Bättre svar skulle vara att ha roligt gör det (jag gjorde) eller att bygga en termostat som du kan programmera till kör och interagera med andra enheter på något sätt önskas. Jag byggde dessa som en del av ett större hem energiledningssystem, och kanske kommer jag att skriva en annan Instructable på det senare. Och som en bonus: navet för Termostaterna är redo att gå som ett nav för ett komplett hem automationssystem!
En andra uppenbara frågan är vilken typ av formella kvalifikationer eller relevant erfarenhet har jag i detta område, och svaret är absolut ingen – ingen bakgrund med VVS-system, ingen bakgrund i programmering, ingen bakgrund i elektronik. Så, om du väljer att bygga din egen termostater, bör du inte bara blint kopiera exakt vad jag har här och ansluta den till din vägg. Detta projekt kräver exakt, analytic tänkande, och du måste förstå vilken typ av VVS-system du har, granska och ändra alla koden och kretsar som är lämpligt och viktigt att du förstår vad du gör och konsekvenserna av att få det fel. Underlåtenhet att göra detta kan förstöra din VVS-system, electrocute dina nära och kära eller bränna ner ditt hus. På allvar! Jag välkomnar verkligen feedback från någon som har kunskap inom dessa områden när det gäller hur jag kunde göra dessa termostater bättre.
Och naturligtvis, jag kunde inte ha gjort detta utan allt hårt arbete från folk som skapade de olika biblioteken, de människor som tog sig tid att lägga ut information på webben i Instructables, forum och Bloggar, och de många människor som hjälpte mig med råd och svar på mina frågor. Speciellt tack till Mark Pendrith som var särskilt hjälpsam och gav mig koden som bildar grunden för arduino skiss.
Slutligen håller på att ändra filer att arbeta med bara Termostaterna (i motsats till den större hem energiledningssystem) samt att komma ihåg allt jag gjorde över tiden för att få detta att fungera, kommer det utan tvekan vara några fel här. Låt mig veta om du fånga någon och jag ska försöka få dem korrigerade så snabbt som möjligt.
Med allt detta ur vägen, härs gjorde vad jag:
Systemet använder en Raspberry Pi som ett centralt nav som serverar webbsidor så att jag kan kontrollera Termostaterna från var som helst. Navet också hanterar all trådlös kommunikation över nRF24L01 + radiomoduler (jag vet att jag sa "WiFi", och nRF24L01 + radio-modulen inte är tekniskt WiFi, men mer om det senare), och upprätthåller en MySQL-databas med termostaten programmering också som någon dataloggning som jag gör. Och slutligen, navet körs två servrar skrivet i Python – en kontrollerar termostaten (som en mellanhand mellan webbsidan och termostaten) och den andra hanterar data loggning. Jag tror detta skulle förmodligen kunna göras med Termostaterna varje servering en egen enkel web-sida och skickar data direkt till MySQL-databasen. Detta skulle eliminera behovet av lighttpd webbservern och två python servrar. Men det känns som gör detta på navet ger enkelheten i en enda webbplats och python-servrar ger stor flexibilitet. Plus att jag slipper uppdatera koden på Termostaterna när jag vill göra ändringar på dessa aspekter.
Om du verkligen gräva i detta, undrar du nog varför jag bry sig med en MySQL databas istället för att bara skriva en liten data till en textfil när det behövs. Primära svaret är att jag behöver den MySQL-databasen för andra delar av mitt system, men om allt jag hade var Termostaterna, kan det vara ganska lätt bara för att eliminera databasen och ersätta det med textfiler.
Så, kommunikationsflödet i huvudsak fungerar enligt följande.
Användaruppdateringar på webbplatsen
En användare styr eller program en termostat på en webbplats skriven i PHP (mestadels, en liten javascript).
Denna webbplats sparar alla ändringar till MySQL-databasen och skickar en instruktion till python styrservern.
Python styrservern tolkar dessa instruktioner, uppdaterar en inre representation av termostaten och skickar instruktioner till fysiska termostaten över RFX nätverket.
Användaruppdateringar på termostat
En användare styr en termostat med touchscreen kontroller.
Termostaten skickar ändringarna till python styrservern.
Python styrservern uppdaterar en inre representation av termostaten och sparar alla ändringar till MySQL-databasen.
Termostaten har data att logga in eller meddelanden spara
Termostaten skickar data eller ett meddelande till logga in python dataloggning servern.
Dataloggning servern sparar antingen att data till MySQL-databas eller till en loggfil baserat på typ av meddelande.
Termostat temperatur ändras automatiskt enligt ett Program som anger
Python styrservern övervakar programmet för termostaten och bestämmer när den inställda temperaturen bör ändra.
Python styrservern uppdaterar en inre representation av termostaten och skickar nya set temperaturen till termostaten.
Så med denna översikt bakom oss, nedan är detaljer på hur jag ställer in detta upp. Det första steget listar de förnödenheter och verktyg jag använde. Följande flera steg i Instructable täcka hur jag ställa in den maskinvara och programvara infrastrukturen för navet. De flesta av dessa kommer att inkludera instruktioner som referens-det finns gott om platser för att få bra information om hur, till exempel, att ställa in en MySQL-databas på en Raspberry Pi, så inte försöker jag replikera som. Sedan, när infrastrukturen finns på plats, jag ge betydligt mer i detalj på hur jag byggt de faktiska Termostaterna som koden jag använda för att styra dem.