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:
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
- 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"}
################################################## ###