il cancello si apre...grazie anche a voi

Guglio,

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... :wink:

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 :slight_smile:
Intanto, se qualcuno vuole smanettare qua potete scaricare l'intero codice dell'app:

enjoy!

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

#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();
        }
      }
    }
  }
}

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

grazie!

Più che meritato... Grandissimo

votato

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!

miticissimissimo....figo....mi interessa molto la domotica....ho progetti da due anni in testa....a natale mi hanno regalato Arduino Uno, e leggendo questo topic mi hai messo tante cose in testa, anche come migliorare alcune cose che trovo migliorabili...stanotte ci studierò sopra, per ora ancora non ho nulla in testa partendo da queste cose che hai scritto.....
mito....
vorrei poter scrivere il codice, magari in Java per Linux Ubuntu per metterlo sul portatile che voglio mettere sul mio futuro VAN simile a quello dell' A-Team per controllare il VAN, computer di bordo e in zona di copertura di rete wi fi libera se sono fuori in viaggio da qualche parte poter controllare lo stato di camera mia, etc etc etc....... anzi.....ancora meglio....visto che programmazione non ne so molto, ma sono un grande appassionato di creazione siti web HTML e ora sto approfondendo il PHP mi creo un interfaccia web, in qualche modo, con tutti gli anni che ho davanti (ora ho 18 anni appena compiuti a dicembre) riuscirò ad arrivare a qualcosa di stabile da poter espandere a tutta la casa e non solo a camera mia e diventare owner di tutta casa, magari, fare gli scherzetti a mia madre, accendere e spegnere le luci della cucina mentre è li che fa i dolci, o disattivargli la planetaria.... ahahahahah..... ho sempre avuto un casino di fantasia mai messa in pratica, tantissimi progetti in testa, tempo da perdere... manca il denaro, perciò devo anche iniziare a lavorare abbassando il tempo a disposizione per sviluppare le idee marce presenti in testa......molte in_praticabili....
vabbè, seguirò il topic e resterò in silenzio anche se mi sembra morto.....
saluti a tutti.....

Ottimo lavoro bl4d3!
Una soluzione completa anche per chi Arduino lo conosce poco!

Scusami bl4d3,

ma quando genero il codice mi genera anche #include <mcp9700a.h>

e ovviamente quando compilo mi va in errore!
Come posso risolvere?

Grazie :wink:

mmmm

io ho un sensore di temperatura lm35, come posso integrarlo per utilizzarlo con la tua applicazione?

Grazie ;D

Per il sensore lm35 mi sono scritto io il codice e funzionaaaaaa grandeeeee! :smiley:

@ard2011 puoi scaricare la libreria da qui

un paio di sere fa ho fatto questo video

sempre in tema domotica

:smiley:

Credo che la app android debba avere anche un comando reload (ad esempio per ricaricare la temperatura senza tornare indietro, oppure aggiornare la temperatura ogni 10 secondi)

Cosa ne pensi? ;D

Ciao

si era nella todo list solo che ultimamente il tempo scarseggia, conto di farlo però!

Era un po' che non davo un occhio al tuo progetto, ero rimasto alla prima versione!
Mi sa che userò il tuo stesso "protocollo" per la domotica di casa mia!
Ma la tua come pensi di svilupparla? Cioè pensi di arrivare a comandare ogni luce e ogni presa via internet o solo qualche sensore?
Io per ora uso un' interfaccia web per comandare qualche luce ed è abbastanza scomoda!
Ciao!

No tutto non riesco e non so quanto senso avrebbe, credo che la cosa migliore da fare sia comandare quello che si usa di più e che è più scomodo a secondo delle esigenze. Es: alla sera devo portare fuori lo sporco e devo accendere la luce delle scale, aprire la porta ed il cancello, già che fa freddo e non ne ho voglia un preset che mi accende la luce ed apre le porte fa comodo.
Es: sono sul divano arriva gente, devo accendere la luce delle sala che è 10cm dal divano, non so quanto sia utile accenderla dal telefono, è sempre più utile aprire la porta.

Nulla vieta però di mettere sotto tutta la casa!
In parole povere accendete e spegnete quello che volete! :slight_smile:

E' quello che pensavo di fare anche io!
Io ora ho collegato la luce neon che ho in cucina (che se non ci fosse un relè bisognerebbe accenderla salendo sopra al mobile), una luce in garage utilizzando uno di quei kit che vendono alla lidl di relè wireless modificando il telecomando:

Ed altre due luci con dei relè "con cavo".
In questo modo posso fare una sorta di antifurto, cioè quando non ci sono far accendere diverse luci automaticamente facendo sembrare che ci sia qualcuno in casa
(A breve collegherò al sistema anche la TV con un led IR nascosto da qualche parte)

Ciao , tutto bello e interessante. Da un paio di giorni ho preso l'arduino con ethernet shield e mi sono messo a testare l'applicazione di bl4d3, e devo dire che funziona alla grande..

Ora però bisogna trovare il modo di implementare il tutto nell'impianto preesistente..
Come gia accennavo a bl4d3 un paio di giorni fa bisognerebbe trovare il modo di inserire una autenticazione con username e password per accedere ai comandi.

Per quanto riguarda l'autenticazione credo che in questo weekend farò delle prove :wink:

Poi un' altra cosa che volevo sapere... Il chibi arduino che portata ha?
Altrimenti quale sarebbe il modo piu funzionale per interfacciare due arduino tra di loro? Usare due arduino con due eth shield mi sembra che oltre ad essere dispendioso non sia supportatato dall'app su android che accetta un solo arduino per volta.

Aspetto vostre news e/o suggerimenti...

@dr4gone per la porta del chibi posso dirti che ne ho appena collegato 1 al piano di sotto e suo fratello con la eth shield è al piano di sopra e non ci sono problemi di comunicazione, ci saranno 30mt di distanza con in mezzo i muri e a latenza 0.
L'app per android ora supporta un solo ip la prima cosa che faccio è aggiungere più di un ip, quindi per quello tranquil.

Bisognerebbe costruire un aggeggio come chibi ma con 1 o 2 out e basta, ma penso che i moduli zigbee facciano proprio questo, se qualcuno ci ha già smanettato e vuole darci qualche info è il benvenuto!