CRONOTERMOSTATO ETHERNET


Il dispositivo realizza un cronotermostato per il controllo del riscaldamento di casa e di un eventuale boiler per l'acqua calda con la possibilita' di visualizzare e modificare tutte le impostazioni via internet.
Per la realizzazione del progetto sono necessari una scheda Arduino con Ethernet shield, un sensore digitale di temperature DS18B20 ed uno o due rele' elettromeccanici.
I collegamenti tra i componenti possono essere effettuati come in figura, utilizzando un pin digitale per il sensore di temperatura ed un ulteriore pin per ciascuno dei rele' elettromeccanici



Il codice implementato permette il controllo automatico dell'accensione e spegnimento impianto di riscaldamento secondo le seguenti modalita':

- Sempre acceso
- Sempre spento
- Mantenimento continuo di una temperatura fissa
- Mantenimento di una temperatura variabile in base ad un calendario giornaliero e settimanale
- Mantenimento continuo di una temperatura fissa fino ad una certa data e ora e successivo passaggio al calendario
- Mantenimento di una temperatura variabile secondo uno specifico giorno della settimana fino ad una certa data e ora e successivo passaggio al calendario

E' possibile impostare fino a 6 temperature diverse nell'arco di ciascuna giornata su fasce orarie a discrezione. Tutti i giorni della settimana possono essere gestiti in modo indipendente. E' inoltre possibile accendere o spegnere un boiler per la produzione di acqua calda secondo le seguenti modalita':

- Sempre acceso
- Sempre spento
- Accensione e spegnimento in base ad un calendario giornaliero e settimanale

Si possono avere due fasce orarie indipendenti per ciascuna giornata.
Data ed ora del sistema sono costantemente aggiornate via Internet tramite un collegamento ad un server NTP.
Le impostazioni del cronotermostato sono salvate ed aggiornate su un file di testo che deve essere caricato ed accessibile su un webserver in rete.
Un esempio di file di impostazioni e' riportato qui di seguito:

myheatingSETTINGS.txt:


In caso di perdita di connessione di rete il cronotermostato continua a funzionare regolarmente anche se non e' possibile cambiarne le impostazioni.
Per un corretto funzionamento del cronotermostato e' invece indispensabile avere una connessione di rete all'avvio per la prima lettura di tutte le impostazioni.

Il codice per Arduino realizza un semplicissimo server web. Collegandosi direttamente all'Arduino tramite il suo indirizzo IP con eventuale porta TCP(http://arduino_address[:porta]) si ottiene in risposta un semplice file di testo con riportati i dati sullo stato e le impostazioni correnti.
Inserendo nella URL il comando per ricaricare il file delle impostazioni (http://arduino_address[:porta]/?SETTINGS=RELOAD) l'Arduino si collega al webserver di rete dove e' salvato il file delle impostazioni e ne carica il contenuto.
Cambi di stato o di impostazioni del cronotermostato devono essere effettuati modificando direttamente il file di testo delle impostazioni presente sul webserver di rete prima di collegarsi all'Arduino con il comando di ricaricarlo.
Questa modalita' di utilizzo e' schematizzata nella figura sotto.



Per rendere l'utilizzo del cronotermostato molto piu' immediato e facile, ho anche realizzato una applicazione web. Una volta caricata sul webserver di rete permette di visualizzare lo stato del sistema e cambiare tutte le impostazioni mediante una semplice interfaccia grafica. Le modifiche al file delle impostazioni ed i comandi alla scheda Arduino sono gestiti in maniera del tutto trasparente per l'utente.
Per il corretto funzionamento e' necessario che il webserver di rete possa far girare applicazioni ASP.NET.
Questa modalita' di utilizzo e' schematizzata nella figura sotto.



Il codice per la scheda Arduino e' riportato qui di seguito.
Prima di procedere con la compilazione tramite al Arduino IDE, e' necessario caricare le librerie OneWire, DallasTemperature e Time mediante il Library Manager.

Arduino_Riscaldamento_e_Boiler.ino:


L'area di testo qui sotto visualizza il codice della pagina ASP.NET da installare sul webserver di rete nella stessa directory che contiene il file di testo delle impostazioni. Oltre alla versione in Italiano, e' disponibile anche un file con tutti i menu in Inglese. Tutte le variabili di testo visualizzate nell'interfaccia utente sono raccolte in una stessa zona del codice per facilitare una eventuale traduzione in una lingua diversa.

myheatingita.aspx:


Tutti i file necessari per realizzare il sistema possono essere scaricati a questo link.

Uno speciale ringraziamento a mio figlio Giulio che mi ha supportato nella realizzazione della pagina web ASP.NET.

"Arudino", "ESP8266" ed altri marchi citati in queste pagine sono proprieta' dei rispettivi titolari.