il cancello si apre...grazie anche a voi

Bravo!

rieccomi, in questa settimana ho aggiunto qualche sensore al mio arduino e ho sviluppato questa app per Android in modo da interfacciarmi con esso.

Arduino è in ascolto sulla porta 80 e comunica con l'app usando http.
In breve:
App -> http get request -> Arduino -> http json response -> App

L'App si sincronizza recuperando la lista degli attuatori/sensori comandati da Arduino.
Un servizio che lavora in background gestice ciclicamente il recupero dei riguardanti temperatura, consumi etc... memorizzandoli nel database, in futuro mi piacerebbe creare grafici statistici.

Che ne dite? Se qualcuno è interessato appena è tutto funzionante lo metto su github.

PS l'icona "lucchetto aperto" significa "attiva il pin corrispondente su arduino"

Ciao! :slight_smile:

Fantastico, bl4d3!
Complimenti per l'obiettivo raggiunto.

Hai sensori anche sul cancello e sulla porta ::)?
Ovvero: oltre ad aprire / chiudere, riesci anche a leggerne lo stato (aperto / chiuso)?

Che ne dite? Se qualcuno è interessato appena è tutto funzionante lo metto su github.

..se vuoi farlo funzionare prima del tempo, condividilo prima possibile (potere della community)!

per il cancello o porta nel mio caso ho un elettro-serratura (se si chiamano così) praticamente devo tenere alta l'uscita ed abbassarla dopo circa 300ms altrimenti la serratura si frigge, in questo caso potrei memorizzare lo stato "aperto" ma la chiusura avviene manualmente e non riesco a recuperarla.

Per luci/prese o in mente di salvare un flag direttamente su arduino ed aggiornarlo ad ogni operazione di apertura/chiusura in modo da avere una sincronizzazione con android.

Se per esempio prendo il telefono ed esco di casa, ritorno, sincronizzo e mi recupero lo stato di luci e prese.

Per fare questo al primo avvio del sistema devo chiudere/spegnere prese /luci in modo che non ci siano fuori sync, oppure leggere lo stato delle variabili, aprire/chiudere eventuali attuatori e fare il sync con il mobile.

EDIT ecco come ho ragionato
################################################## ###
AS = Arduino Station (raggruppa più sensori/attuatori) è composto da arduino 2009/Mega + ethernet shield

(collegata a router wifi)/wifi shield + RF TX
ASRF = Arduino Station (raggruppa più sensori/attuatori) è composto da arduino 2009/Mega + RF RX (va piazzato dove non arriva il cavo di rete e limita i costi)
M = Master (applicativo su piattaforma android)

Precondizioni: tutti i dispositivi (AS, M) sono sulla stessa subnet e comunicano tra di loro attraverso TCP/IP.

Ogni AS è programmata in modo da comunicare ad M i vari sensori ed attuatori (terminazioni) che sono stati

collegati ad esso ed anche le terminazioni collegati ai vari ARSF (questo va inserito programmato all'interno di AS).

Comunicazione Sync

AS esegue un ipscan sulla subnet specificata quando trova un ip attivo invia la chiamata http:

http://ipttivo/?m=hello

M risponde indicando le sue terminazioni seguendo questo schema JSON:

{"ip" : "192.168.10.15", "devices" : [" +
"{ "type" : "gate", "name" : "cancellino ingresso", "out" : "5"}, " +
"{"type" : "door", "name" : "porta ingresso", "out" : "4"}, " +
"{"type" : "light", "name" : "luce soggiorno", "out" : "6"}, " +
"{"type" : "light", "name" : "luce cucina", "out" : "7"}," +
"{"type" : "temperature", "name" : "camera da letto", "out" : "0"}," +
"{"type" : "temperature", "name" : "camera bimbi", "out" : "9"}," +
"{"type" : "wattmeter", "name" : "consumo energetico casa", "out" : "10"}]}

dove:

  • ip indica l'ip del master
  • out è il pin al quale è collegato l'attuatore
  • name nome dell'oggetto (presa cucina)
  • type tipo dell'oggetto

Tipi disponibili

  • plug (prese)
  • light (luci)
  • door (porte)
  • gate (cancelli)
  • temperature (sensore temperatura)
  • humidity (sensore umidità)
  • wattmeter (sensore corrente o tensione)

Quando M avrà rilevato tutte le terminazioni collegate a ciascun AS verrà mostrata l'interfaccia di figura.

Attivazione/Disattivazione terminazione

AS invierà la chiamata http

http://M/?out=1&status=1

  • M indica l'ip del master recuperato in precedenza
  • status può essere 1/0
  • out indica la terminazione

AS risponderà con l'esito dell'operazione con una stringa JSON del tipo

{"out": "4", "status" , "1"}

################################################## ###

Bello bello bello.
Sono appena tornato dalle ferie e questo e' un progetto interessante :slight_smile:
Non mi piace molto la realizzazione finale hardware su arduino(un po' sprecata direi, forse dettata dall'inesperienza) ma mi piace parecchio l'idea e la realizzazione software. Anche il lavoro sulle luci e' interessante. Bravo, continua cosi!

Fede

si arduino l ho conosciuto circa 1 mese fà e ci devo ancora "fare su la mano" :slight_smile:

Nooo fantastica l'applicazione ahahah
Complimenti!!

ho fatto un breve riassunto sul nostro blog

veramente interessante.. spulcerò il blog per qualche update!(schemi etc)

E' la stessa identica cosa che volevo fare su iPhone 8-)... per il parsing di JSON hai scritto tu la libreria o usi quella pubblicata su GoogleCode?

PS:Bravissimo

come libreria per json ho usato questa

se ti va di farlo per iphone, se vuoi ti passo il codice e fai il porting, ciao!

Mi sono veramente divertito grazie a questo esperimento e ho conosciuto un po' di gente che mi ha fatto prendere coraggio, ora mi sto dedicando al software ho finito di implementare la creazione di "azioni concatenate"

ora devo temporizzarle, fare un po' di testing, etc...
Dato che sulla parte elettronica non sono ferratissimo, qualche volenteroso non vorrebbe collaborare?
Ecco cosa personalmente mi piacerebbe integrare:

  • qualcosa del tipo tweet-a-watt, misurare la corrente erogata da un'utilizzatore o dal contatore e salvarla nel db ogni X minuti
  • un sensore di umidità per il terreno (ho visto parecchi link su come si fanno ma mi manca materialmente il tempo per farlo)
  • una stazione meteo esterna (temperatura, umidità, pressione)
  • tutto quello che vi viene in mente e che possa essere utile a qualcuno
  • qualcuno vuole fare il porting per iphone o symbian? (anche in cobol e in ada :D)

Ciao a tutti!

Mi riferivo alla codifica da parte di Arduino del messaggio JSON
In realtà il mio progetto è un po' diverso, molto più generale, meno specifico ma che avrebbe portato come primo sviluppo ad un sistema di domotica.
Sono un po' bloccato perchè sto finendo due apps per iphone e devo ancora decidere come strutturare il messaggio JSON e farlo "comprendere" da arduino. Non so se usare una lib generica come questa Google Code Archive - Long-term storage for Google Code Project Hosting. o se analizzare da solo le stringhe ricevute.
Credo che procederò nel secondo caso visto appliccherò un messaggio con formattazione definita da me, quindi a priori conosco gli elementi.
In più volevo implementare bonjour per il discovery del servizio.

Il tuo progetto è bellissimo e anche l'interfaccia grafica è notevole.

Senza parole...mi sono letto un pò di cose...davvero complimenti...!!!

se ha qualcuno interessa l'applicazione è disponibile sul market, basta cercare "DomoticHome", qui
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1284455681
uno spezzone di codice di esempio da caricare su arduino. Se qualcuno ci smanetta mi faccia sapere.

Bella!
Il prossimo passo è fare una unica board che contenga tutto :wink:

Spero di riuscire presto a postare anche il mio impianto domotico...
Deve arrivarmi ancora un maledetto powerline ed una giornata libera :stuck_out_tongue:

@giuglio appena hai finito dacci più dettagli! ...ho anche se non hai finito :slight_smile:

L'idea è di avere un solo nodo ethernet (per ora) con collegato:

  • sensore di temperatura,
  • un emettitore IR per controllare la tv da remoto,
  • 6 relè per iniziare ad automatizzare un po' di luci
  • un mediacenter
  • una parte "social"
  • ed apertura automatica del cancello

I primi 3 punti sono "classici", gli ultimi 3 sono un po' più carini:
Ho modificato la mia vecchia xbox 1 e la connetto tramite powerline (200Mbps) al modem Alice modificato.
In questo modo posso condividere film e files tramite samba da un HDD esterno collegato al modem e allo stesso tempo scaricare (Eh sì, il modem della telecom ha kernel linux quindi wget, torrent, emule, webserver...)
L'xbox ha inoltre un controllo remoto via ethernet per ogni sua funzione quindi è completamente interfacciabile con l'arduino e il resto del sistema.
In questo modo scrivendo sul mio telefono il nome del film parte la riproduzione, si spengono le luci e si accende l'amplificatore e... arriva il robottino con i popcorn ;D
Stesso discorso vale per la musica.
(Se qualcuno è interessato sull'xbox utilizzo il software XBMC, compatibile anche con win, unix e mac
http://xbmc.org/wp-content/gallery/aeon/aeon_home_watchmen.jpg
http://xbmc.org/wp-content/gallery/confluence/screenshot001.jpg)

La parte social invece sarà per la maggior parte php, penso di utilizzare una "cassetta della posta" come quella in questo video (- YouTube) per le notifiche di facebook e per le nuove email, poi tramite un bot di msn sempre online, chi mi cerca potrà sapere se sono in casa o meno e lasciare un messaggio.

Riguardo invece all'ultimo punto sto ancora pensando: volevo riuscire a far aprire il cancello quando sono vicino a questo, l'unica idea che ho per ora è un ping continuo da parte dell'arduino dell' IP lan del mio cellulare, così quando sono vicino a casa e il cellulare si connette al wifi il cancello mi si apre.
Non so però se è sicurissimo: la rete è protetta da una chiave WPA e potrei fare in modo di controllare anche il MAC del mio telefono certo che non è difficile nè cambiare l'ip locale nè il mac di un dispositivo...

In realtà nessuna di queste funzioni è veramente utile ma almeno imparo un po' d'elettronica e a programmare un in wiring :sunglasses:

Ciao Guglio,

Riguardo invece all'ultimo punto sto ancora pensando: volevo riuscire a far aprire il cancello quando sono vicino a questo, l'unica idea che ho per ora è un ping continuo da parte dell'arduino dell' IP lan del mio cellulare, così quando sono vicino a casa e il cellulare si connette al wifi il cancello mi si apre.
Non so però se è sicurissimo: la rete è protetta da una chiave WPA e potrei fare in modo di controllare anche il MAC del mio telefono certo che non è difficile nè cambiare l'ip locale nè il mac di un dispositivo...

per quest'ultimo punto io ti consiglierei piuttosto:

  • GET effettuata direttamente dal cellulare (se hai Symbian, puoi utilizzare Python oppure Java, se Android bl4d3 può darti una mano) via wifi;
  • comando da bluetooth (sviluppo come sopra).

Mi sembra molto meno macchinoso della tua ipotesi.
Utilizzare la vicinanza come trigger inoltre temo sia controproducente: come fai a distinguere la vicinanza perchè devi entrare con l'auto, rispetto alla vicinanza perchè sei in garage per (esempio banale) recuperare un cacciavite? O sei uscito a buttare l'immondezza?

Personalmente (mi piace molto di più il wired, del wireless) uso le classiche GET nel caso di rete fisica. Nel caso di dispositivo remoto, piuttosto del wifi preferisco il bluetooth.

A tal proposito sto iniziando un progettino con dei modulini bluetotth a basso costo, e la prima applicazione sarà sicuramente relativa ad un uso in ambito domotico (apertura e/o autenticazione).