metti il crontab alla caldaia

Dopo l’ irrigatore per il prato non potevo non utilizzare una Fonera per fare il cronotermostato per la caldaia dei termosifoni.
La cosa è abbastanza semplice: si utilizza il driver gpio che tramite un piedino configurato come uscita pilota un fotoaccoppiatore che attiva un relè.
Il relè viene collegato in modo da accendere o spegnere la caldaia.
Scrivendo “1” sulla porta designata come output si accende la caldaia, scrivendo “0” si spegne.
Per pilotare il relè ho utilizzato un LH1191 ( High-Voltage Solid State Relay ) che ho smontato da qualche parte, se fosse difficile da reperire è comunque possibile utilizzare un fotoaccoppiatore e un transistor ( es un BC337 ) in configurazione darlington.
Ecco gli schemi elettrici, quello con l’ LH1191 è quello che sto utilizzando ed è quindi testato, l’altro non è testato ma dovrebbe funzionare, il condizionale è d’obbligo…. Murphy è sempre in agguato…
Il relè è a 5 volt, quello che ho io assorbe 100mA, l’LH1191 secondo le specifiche ce la dovrebbe fare ( dal datasheet: “The output is rated at 280 V and can handle loads up to 120 mA” ).
schema con lh1191 schema con fotoaccoppiatore

Ecco alcune foto dell’oggetto durante la costruzione..
fori su millefori Fori per mettere le viti su basetta millefori..
fori su scatola Fori su coperchio della Fonera..
pezzi prima I pezzi prima dell’assemblaggio su millefori…

pezzi in test
Test dell’ interfaccia…

particolare alimentazione
Qui ho preso i 5 volt per l’ “accrocco”…

finito
Aspetto a lavoro finito.

Lo script per comandare la porta/relè è questo:

#!/bin/sh
usage () {
echo "Usage kalda <on|off>"
exit 1
}
if [ ! $# = 1 ] ; then
    usage
fi

case $1 in
    "on" ) bit=1;;
    "off" ) bit=0;;
    * ) usage;;
esac

#
if grep "^`date +%d/%m/%y`$" /etc/nokalda ; then
bit=1
echo "no-kalda day"
fi
echo  $bit > /proc/gpio/3_out
echo  1 > /proc/gpio/3_dir

Se la data corrente è presente nel file /etc/nokalda lo script non pilota la caldaia.
Il formato del file “nokalda” è

root@OpenWrt:~# cat /etc/nokalda
#gg/mm/aa
06/12/08
07/12/08
root@OpenWrt:~#

Vediamo la “ricetta” nel dettaglio:

  • costruire la parte Hardware
  • Configurare la Fonera come scritto in questo post
  • creare il file “kalda” sopra esposto e metterlo in /usr/sbin, rendendolo eseguibile
  • provare il funzionamento dell’hardware
  • installare il vostro nuovo cronotermostato
  • regolate accensioni e spegnimenti a piacere usando il comando “crontab

Questo è il mio crontab

crontab -l
10 * * * * /usr/sbin/ntpclient -c 1 -s -h pool.ntp.org
15 16 * * * /usr/sbin/kalda on
20 19 * * * /usr/sbin/kalda off

Per quanto riguarda la data, occorre specificare il corretto timezone nel file /etc/TZ come spiegato in questo post.

root@OpenWrt:/etc# cat /etc/TZ
CET-1CEST-2,M3.5.0/02:00:00,M10.5.0/03:00:00

Perchè cronotermostato ?
In realtà questo oggetto è solo “crono” ma, essendo collegato in rete, è possibile sapere la temperatura esterna interrogando una qualche stazione meteo vicina a casa (es. quelle di Weather Underground) oppure i feed rss meteo di Yahoo ( esempio questo riporta la temperatura a Roma) e fare in modo che la caldaia non si attivi se la temperatura esterna è superiore a un tot di gradi.

Per ora utilizzo l’ “accrocco” collegandomici tramite ssh ( anche da telefonino, con putty 😀 ) e programmandolo con “crontab -e”, ho comunque intenzione di perfezionarlo; man mano che aggiungo funzionalità aggiornerò questo post: questa è soltanto la “base” minima hardware/software.

Cose che mi vengono in mente:

  • Accensione/spegnimento/programmazione tramite email/sms.
  • Scelta del programma di accensione in base al periodo e alla media della temperatura esterna.
  • Ottimizzazione delle accensioni in base alla temperatura esterna.
  • Interfaccia web di programmazione.
  • Log accensioni (per sapere quanto è stata accesa in totale la caldaia e quindi stimare i costi del riscaldamento).
  • Aggiungere pulsanti di comando della caldaia con gli altri pin di IO liberi.

Qui trovate scriptini già fatti che possono essere utili per implementare nuove funzionalità.

Quasi dimenticavo il disclaimer: se decidete di costruire quest’ oggetto lo fate sotto la vostra responsabilità.
In pratica se vi scottate col saldatore o scassate la Fonera o vi si guasta la caldaia, sono affari soltanto vostri.
Inoltre la manipolazione di circuiti elettrici ed elettronici implica un certo rischio: prendete tutte le opportune precauzioni.