Pages: 1 2 [3] 4   Go Down
Author Topic: il cancello si apre...grazie anche a voi  (Read 22851 times)
0 Members and 1 Guest are viewing this topic.
Germany
Offline Offline
Edison Member
*
Karma: 2
Posts: 1363
Here we go!!!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

L'impossibile...richiede solo piu' tempo!

0
Offline Offline
Full Member
***
Karma: 0
Posts: 149
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Deep south of Italy
Offline Offline
Faraday Member
**
Karma: 8
Posts: 2955
The quieter you become, the more you can hear
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bella!
Il prossimo passo è fare una unica board che contenga tutto smiley-wink
Logged

Fidenza, Parma
Offline Offline
God Member
*****
Karma: 9
Posts: 783
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Spero di riuscire presto a postare anche il mio impianto domotico...
Deve arrivarmi ancora un maledetto powerline ed una giornata libera smiley-razz
Logged

ArduMAP: Mappa degli utenti che utilizzano Arduino.
http://www.guglio.net/ArduMAP

0
Offline Offline
Full Member
***
Karma: 0
Posts: 149
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@giuglio appena hai finito dacci più dettagli! ...ho anche se non hai finito smiley
Logged

Fidenza, Parma
Offline Offline
God Member
*****
Karma: 9
Posts: 783
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 ( ) 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  8-)
« Last Edit: September 24, 2010, 04:16:38 pm by Guglio » Logged

ArduMAP: Mappa degli utenti che utilizzano Arduino.
http://www.guglio.net/ArduMAP

0
Offline Offline
Edison Member
*
Karma: 24
Posts: 2300
Have you mooed today?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao Guglio,
Quote
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).
Logged

Fidenza, Parma
Offline Offline
God Member
*****
Karma: 9
Posts: 783
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ho visto che stavi smacchinando con quei modulini, ma io non sono ancora al tuo livello sto ancora usando cose niubbe smiley-razz
La chiamata GET può essere una valida alternativa, un po' di tempo fa avevo messo mano a un programmino in J2ME (GoText) per inviare sms via internet e gli avevo appunto aggiunto una funzione per mandare una richiesta al mio server, potrei usare questo stesso metodo per far aprire il cancello!
Altrimenti tornando all'idea del ping l'unica soluzione che mi viene in mente è un link nel webserver locale tipo "Sto uscendo, fra 10 minuti inizia a pingarmi e se mi trovi aprimi il cancello", in questo modo il ping viene attivato solo quando dico che sto uscendo e disattivato come mi trova (altrimenti il cancello sarebbe sempre aperto).
Certo nulla mi vieta di implementare sia ping che chiamata GET e scegliere sul momento quello che più mi ispira.
Logged

ArduMAP: Mappa degli utenti che utilizzano Arduino.
http://www.guglio.net/ArduMAP

0
Offline Offline
Edison Member
*
Karma: 24
Posts: 2300
Have you mooed today?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Guglio,

Quote
La chiamata GET può essere una valida alternativa

come dici tu la semplice chiamata GET può essere l'alternativa più immediata.
E, naturalmente, non abbiamo considerato la soluzione più semplice:
la chiamata GET effettuata direttamente dal browser del telefonino...  smiley-wink
Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 149
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

anche io andrei sulla get poi per il bluetooth è certamente un'ottima idea, appena ho un po' di tempo ci metto la testa anche io, ovviamente la prima cosa che farò sarà interfacciarlo con il telefono smiley
Intanto, se qualcuno vuole smanettare qua potete scaricare l'intero codice dell'app:
http://github.com/bl4d3/DomoticHome
enjoy!

Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 149
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Aggiungo uno sketch per arduino uno, attiva e disattiva un uscita di arduino in base alla chiamata http usata.
attiva->http://yourip/?out=5&status=1
disattiva->http://yourip/?out=5&status=0
rappresentazione json delle uscite->http://yourip/?out=all

Code:
#include <SPI.h>
#include <Ethernet.h>

// define actions
#define action_none -1
#define action_out_all 0
#define action_mypin_up 1
#define action_mypin_down 2

// define network config
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xBE }; //physical mac address
byte ip[] = { 192, 168, 1, 20 };                  // ip in lan -> cambialo pure
byte gateway[] = { 192, 168, 1, 1 };                  // internet access via router
byte subnet[] = { 255, 255, 255, 0 };                   //subnet mask
Server server(80);                                      //server port
String readString = String(30); //string for fetching data from address

// arduino out
int pinOutRelay = 5;

// incoming GET command  
String r_pinOutRelay_down = "GET /?out=5&status=0 HTTP/1.1";
String r_pinOutRelay_up = "GET /?out=5&status=1 HTTP/1.1";
String r_out_all = "GET /?out=all HTTP/1.1";

// current action
int current_action;

void setup(){
  //start Ethernet
  Ethernet.begin(mac, ip, gateway, subnet);
  
  pinMode(pinOutRelay, OUTPUT);    
  digitalWrite(pinOutRelay, LOW);
  //enable serial datada print  
  Serial.begin(9600);
  current_action = -1;
}
void loop(){
  current_action = -1;
  // Create a client connection
  Client client = server.available();
    if (client) {
      while (client.connected()) {
       if (client.available()) {
        char c = client.read();
        //read char by char HTTP request
        if (readString.length() < 30)
        {
          //store characters to string
          readString = readString + c;
        }  
        //output chars to serial port
        //Serial.print(c);
        //if HTTP request has ended
        if (c == '\n') {
      
         Serial.print(readString);
         // ****************************************************
          if(readString.startsWith(r_pinOutRelay_up))
          {
          Serial.print("\n HIGH\n");
          current_action = action_mypin_up;
          }
          else if(readString.startsWith(r_pinOutRelay_down))
          {
           Serial.print("\n LOW\n");
           current_action = action_mypin_down;              
          }
          else if(readString.startsWith(r_out_all))
          {
            Serial.print("\n ALL\n");
            current_action = action_out_all;
          }
          else
          {
            Serial.print("\n None \n");  
            current_action = action_none;
          }
         // ****************************************************  
          // now output HTML data starting with standart header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();
         char buf[12];              
         switch(current_action)
         {
         case action_out_all:
           client.print("{\"ip\" : \"192.168.10.20\", \"devices\" : [{ \"type\" : \"gate\", \"name\" : \"caldaia\", \"out\" : \"");          
           client.print(pinOutRelay);
           client.print("\"}");            
           client.print("]}");                      
           break;
         case action_mypin_down:
           digitalWrite(pinOutRelay, LOW);
           client.print("{\"status\" : \"low\" , \"out\" : \"");
           client.print(pinOutRelay);
           client.print("\"}");                          
           break;          
         case action_mypin_up:
           digitalWrite(pinOutRelay, HIGH);
           client.print("{\"status\" : \"high\" , \"out\" : \"");
           client.print(pinOutRelay);
           client.print("\"}");                
           break;
         default:
           current_action = action_none;        
         }
        

         // ****************************************************            
        
          //clearing string for next read
          readString="";
          //stopping client
          client.stop();
        }
      }
    }
  }
}    
Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 149
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ho iscritto il mio progetto a MAKE un voto sarebbe gradito!

http://makezine.com/tagyourgreen/?id=90

grazie!
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 31
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Più che meritato... Grandissimo
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 13
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

votato
Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 149
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ho ricevuto un po' di email da varia gente che mi ha detto: "come posso scrivere il codice per arduino"? La riposta più ovvia era: "con la tastieria" ieri sera ho partorito questo

http://domotichome.heroku.com/masters

inserisci i device che vuoi collegare, la configurazione di rete e genera il codice.

E' tutto in beta, riportate eventuali bugs se qualcuno lo prova. Grazie!
Logged

Pages: 1 2 [3] 4   Go Up
Jump to: