Ciao a tutti, tramite Arduino ho fatto questo cronotermostato completamente configurabile via internet tramite pagine web oppure applicazioni android/ios. Attualmente il sistema si appoggia su un web server su cui gira apache e mysql.
L' utente, dopo essersi autenticato, può visualizzare le varie località a lui connesse e scegliere per ogni luogo la temperatura desiderata e la modalità di funzionamento ( spento / manuale / automatica ). Nella modalità automatica è possibile la programmazione di ogni ora per ogni giorno della settimana.
Sempre da remoto è possibile impostare l' orologio di sistema, la temperatura minima e massima e anche quanti gradi di isteresi da rispettare.
Per ora vengono usati arduino uno con ethernet shield + uno shield disegnato da me che ospita il DS1307 + batteria tampone e cristallo ( l' orologio di sistema ), il DS1624 ( sensore di temperatura ) e un 2N7000 ( un mosfet usato come stadio di potenza e ho aggiunto anche un condensatore da 100nF tra gate e gnd per evitare sfarfallamenti del relè ). Il relè, per questioni di sicurezza, ho preferito installarlo nel quadro elettrico ed è un Finder serie 34. Larghi solo 5mm si comandano a 5 Vdc e sono in grado di gestire 6A a 250 Vac. Inoltre nello zoccolo del relè è integrato il circuito di protezione oltre a quello di segnalamento.
Nel mio progetto ogni nodo arduino è indipendente e necessita solo dell' alimentazione locale ( fornita dal cavo ethernet ) per funzionare. Ad ogni accensione del micro vengono richiamati dalla memoria le ultime impostazione volute dall' utente. L' ora di sistema è fornita solo dal DS1307, però l' utente quando si collega è informato se tra l' ora dell' arduino e quella del web server c' è una differenza maggiore di 60 secondi. La comunicazione tra il web server e un nodo arduino è tramite richieste REST e le risposte sono in JSON. Attualmente ho implementato 8 richieste ( quelle con numerazioni dispari sono comandi per variare i parametri, mentre quelle pari informano sullo stato dei parametri ). Per ogni richiesta di variazione è prevista anche una richiesta di informazione sul parametro appena variato. Se la richiesta non è specificata, il micro risponde informando della temperatura ambiente / impostata / minima / massima e la modalità di funzionamento ( oltre ad indicare lo stato dell' uscita relè ).
Ad esempio una richiesta del tipo:
http://192.168.1.232/?76121
serve a programmare il cronotermostato che di Domenica dalle 12.00 alle 13.00 deve essere acceso il riscaldamento e genera la risposta:
[0,0,0,0,0,0,1,1,0,1,0,1,0,1,1,1,0,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,0,1,1,1,1,1,1,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
mentre una richiesta senza specifiche:
http://192.168.1.232
ha come risposta:
{"temp":24.06,"tSet":24,"tMin":15,"tMax":25,"mode":2,"info":0}