Webbaktiverade hem termostaten (och hemautomation Hub) (6 / 10 steg)
Steg 6: Programmering termostaten
I programmet min termostater (i avkänningen av inläsning av koden i termostaten) använder Arduino IDE och en ISP programmerare, så det är vad jag kommer att diskutera här.
GitHub databasen bör innehålla en mapp som heter Thermostat_v1 som innehåller den arduino skissen för termostaten själv. Kopiera denna katalog till någon plats där du vill hålla den. Det finns också fyra kataloger kallas Utouch2, som innehåller ett bibliotek för pekskärmen, OneWire, som är ett bibliotek för temperaturgivare, och Adafruit_GFX och Adafruit_ILI9341, som är bibliotek för LCD-skärmen. Alla fyra av dessa bör kopieras till en mapp för din Arduino bibliotek – på windows-maskiner, som bör vara \Documents\Arduino\libraries. Ett speciellt tack till till alla folk som skrev dessa bibliotek (Jim Studt - OneWire; Adafruit - Adafruit_GFX och Adafruit_ILI93414, Henning Karlsen - Utouch och Mark Pendrith som ändrade Utouch biblioteket (UTouch2) så att pekskärmen kan dela SPI pins med LCD).
Nästa, innan programmering termostaten med Arduino IDE, IDE måste ha nödvändiga filer för att känna igen 1284P mikrokontroller. Dessa kan hittas här. Notera detta är för 1.6.3 version av IDE-det finns andra grenar för tidigare versioner. Denna sida innehåller också instruktioner om installation.
Nu, när du öppnar Arduino IDE och gå till verktyg/styrelse bör du se "Bobduino och mager Bob" som ett av alternativen. Välj det här alternativet och välj AVR ISP mkII under verktyg/Prorammer (eller vad programmerare du använder).
Nu öppnar termostaten skissen, och överväga att ändra följande för att passa din smak:
Funktionalitet – se till att termostaten fungerar som du vill att det ska fungera och att det är programmerad på ett sätt som är lämpligt för din VVS-system!
#define COMM_PIN 4321 – detta bör ändras till vad 4-siffriga PIN-kod du har valt att använda som RFX meddelande PIN. Det måste matcha webbsidor och python servrar.
#define TOUCH_TIMEOUT 10000UL – detta är timeout för pekskärm ingång (millis) efter vilka ändringar som inte sparats kommer att slängas.
#define TURN_OFF_INTERVAL 60000UL – detta är intervallet touchscreen inaktivitet efter vilken LED stängs av (i millis)
#define LOG_PORT 1700 -port för LogServer
#define MASTER_PORT 1800 -port för styrservern
Kontrollera att dessa portar ã¤r samma som hamnarna som python servrarna kör.
Under dessa finns några alternativ som avgör hur mycket information du vill ha skrivit att logga filer och om du vill att termostaten att skriva ut en statusuppdatering till serial varje 5 sekunder (som kan ses med PuTTy logga på porten för termostaten). I allmänhet bör DBGCHAT sättas till 0 om du inte behöver det för felsökning ändamål.
#define WDT 0 - aktivera (1) eller inaktivera (0) klocka hund timern (kan vara bättre att inaktivera för felsökning, men bäst för att aktivera den när du kör)
#define FAHRENHEIT 1 – förändring till 0 om du vill att temperaturen i celsius
Det finns också en massa variabler som börjar på rad 159 som styr när extra värmen slår på och av automatiskt på grund av huvudsakliga värmepumpen upplevda oförmåga att hålla. Dessa värden, liksom den funktion aux_heat_cntrl(), styr den extra värmen och förtjänar särskild uppmärksamhet.
På fliken Rfx_config.h kommer att du behöva ändra #define BOARD_ID 110 till nod antalet varje termostat innan programmering att termostaten. Till exempel om programmering en termostat tat du vill vara nod 127 bör detta läsa #define BOARD_ID 127. Under detta ID_STRING är ett namn RFX systemet kommer att använda för den här noden, men det behöver inte att knyta tillbaka till andra delar av systemet. Jag fann det enklast att bara har linjer i här för alla mina termostater och sedan kommentera ut de som jag inte programmering just då.
På fliken Touchscreen #define TEMP_MOVE 10 berättar termostaten hur många tiondels grader att ändra den inställda temperaturen varje gång en pil skjuts upp eller ner (men om du går med något annat värde än multiplar av 10, du vill förmodligen ändra den inställda temperatur displayen som visar decimalvärden).
När allt detta är gjort kroken ISP upp till termostaten (försiktig av orientering), väljer du Arkiv/ladda upp med hjälp av programmerare och programmera termostaten.
Nu kan du leka med det och testa det ordentligt så att den beter sig som förväntat. Försök också att använda webbplats att ändra temperatur programmet och ändra inställningarna för att se om att allt verkar fungera som förväntat.
Skapa en temperatur program med webbsidan
Nu är det dags att ställa in programmet temperatur på termostaten, och det är oerhört lätt. Längst upp på sidan, Välj termostaten du programmet och om detta program är för uppvärmning eller kylning. Ignorera knapparna skicka och hämta för nu-du skicka när du är klar med programmet, och återvinna drar i befintliga program, men det finns ingen existerande program ännu.
Då, i rutan mindre med tid och Temp rubriker ange tid när en period ska börja och temperaturen för den perioden. Till exempel, om du ville ha termostaten att värma huset upp till 70 grader kl 6 och låt om cool egen till 60 grader kl 9, anger du två rader i den här rutan:
6:00 70
21:00 60
(tyvärr, jag genomfört har inte am/pm notation här). Markera kryssrutorna nedan för de dagar som du vill använda det här schemat (eller Använd alternativknapparna välja flera dagar samtidigt som mån-fre), och klicka på Uppdatera. Schemat ska visas i rutan större ner nedan. Naturligtvis kan du också bara ange varje dag manuellt i den nedre rutan om du vill.
När schemat ser ut som du vill ha det, klicka på Skicka-knappen. Nu, om du kommer tillbaka till denna sida och klicka på Hämta (för samma termostat och samma uppvärmning eller kylning inställning), bör det fylla schemat så du enkelt kan se exakt hur du har varje dag programmeras.