Riporto sinteticamente l'avventura del modding di un linksys wrt54gl v1.1 per gestire riscaldamento, luci interne ed esterne pi? l'apriporta di un centro sociale via wireless. Il centro, utilizzato per molte attivit? con orari fissi e variabili, presentava molti problemi di gestione soprattutto per il riscaldamento che, seppur programmato tramite termostato, veniva talvolta posto su manuale scaldando anche quando il centro era chiuso. Anche le chiavi erano spesso un problema: troppe copie in giro o chiamate da persone che ne erano prive e dovevano entrare. L'illuminazione poi, quella esterna soprattutto, rimaneva spesso accesa tutta notte. L'idea ? stata quella di gestire il tutto dalla sede comunale tramite wireless, non disponendo il centro di una linea adsl, con un'interfaccia semplice da poter essere usata da una impiegata. Il primo esperimento ? stato con una fonera 2100 che con i suoi GPIO ben in vista ? facile da modificare. Per poter trasferire l'esperimento in pi? sedi (palestra, biblioteca, scuole...) sempre da gestite dalla sede comunale ho pensato di utilizzare i linksys wrt54gl che ho usato molte volte con tanta soddisfazione con openwrt. Son diventato matto con il trunk brcm47xx (8.09 kernel 2.6) come riportato qui
http://www.nabuk.org/f/index.php?topic=2341.0 , ma questo funziona solo se si utilizza il linksys come "centralina" essendo il wifi inutilizzabile per problemi di sviluppo del driver b43. Son passato quindi al brcm-2.4 (8.09.2 kernel 2.4) che ha l'wifi pienamente supportato. Pensavo ci fossero per? problemi per la gestione GPIO invece qui
http://downloads.openwrt.org/utils/gpio-uclibc-0.9.29.tar.gz si trova nel tgz sia il sorgente che il prog "gpio" con il quale si gestiscono molto facilmente le gpio del linksys. Modificando quindi il codice inserendo il prog "gpio" e altri piccoli accorgimenti tutto ? andato a meraviglia.
Per i rel? necessari ho acquistato tre di questi
http://www.futurlec.com/Opto_Relay_4.shtml , che con le spese di spedizione e dogana (arrivati da Hong Kong dopo un mese dall'ordine) son costati circa 15 Euro all'uno contro i 35/37 trovati uguali in italia. Questa scheda va particolarmente bene in quanto chiude i rel? con logic 0 proprio come il wrt54gl (la fonera li chiude con logic 1 e quindi quando rebootta ti ritrovi con tutti i rel? chiusi). Quindi, con il prog "gpio", per accendere qualcosa bisogna disabilitare un GPIO (gpio disable x) e abilitarlo per spegnerlo (gpio abled x). L'altro vantaggio ? la presenza di tre connettori per il collegamento ai GPIO (5 volt, 1 2 3 4 , GRN: ai 5 volt va collegato un punto a 3,3 volt presente, ad esempio, sulla seriale del linksys), cos? mettendo in corto il GRN con un punto 1 2 3 4 si pu? attivare un rel? senza l'intervento dei GPIO. Questo per me sar? utilissimo per il riscaldamento in quanto per controllare l'antigelamento dell'ambiente installer? un semplice termostato che bypassa le GPIO e quando la temperatura scende sotto i 5 gradi attiva la pompa anche se fuori programma. Inoltre la scheda va alimentata a 12v, proprio come il linksys.
Sul wrt54gl si utilizzano i GPIO 2 3 (? molto pi? comodo girare la scheda e saldare nei punti corrispondenti... saldare sui led ? un casino)
e 4 7
servono poi i 12 V da prendere dal connettore principale e, come gi? detto i 3,3 dalla seriale.
I 12 vanno ad alimentare la scheda e i 3,3 servono per la TTL
Riposto le immagini dell'interfaccia web realizzata. Si tratta di semplici script .sh posti in /www/cgi-bin/webif/centralina, ho creato poi una cartella in /etc nominandola "centralina" dove vengono registrati i log e le configurazioni, e la cartella /bin/centralina per i comandi.
Ho utilizzato abbastanza "sed" e "awk" che comunque sono gi? installati con openwrt.
La prima pagina serve per comandare direttamente i rel?, si accendono e spengono semplicemente tranne per l'apriporta che accende per 3 secondi e poi stacca.
la seconda serve per programmare i comandi posti in /bin/centralina. Non fa altro che scrivere in /etc/crontab/root e riavviare il servizio ad ogni modifica. Oltre a cancellare un programma si pu? disabilitarlo e riabilitarlo (pone o toglie un # nella riga corrispondente.
La terza gestisce le chiamate telefoniche con pass da un asterisk e serve per aprire, per ora, la porta. Gli amministratori hanno pass "private" con le quali possono comandare tutti i rel? (riscaldamento, luci).
la quarta gestisce i log
ed ecco il pupo pronto. Ho gi? fatto un giorno di prove con un altro wrt54gl a 100 m di distanza con i suoi gommini... 1000 accensioni e spegnimenti e tutto va alla perfezione. Esiste un unico neo: il gpio7, quello del led DMZ, all'accensione resta acceso per circa mezzo minuto quindi nessun problema se il rel? corrispondente accende le luci o il riscaldamento in caso di mancata corrente e riavvio ma, naturalmente, non pu? essere associato all'apriporta che resterebbe aperta.
Ecco il pupo: