EMONCMS e rilevamento dati temperatura

Buongiorno,
sto tentando di creare un sistema di rilevazione di temperatura ed umidità per poter in futuro controllare un rudimentale sistema di vmc.
In sostanza dovrei rilevare i dati dalle varie zone di casa, li confronterò con i dati esterni e deciderò come e quando attuare la ventilazione.
Le rilevazioni le faccio attraverso alcuni DHT22 e due DHT11 (per i valori esterni).

I dati rilevati vorrei fossero archiviati su emoncms.org.
In allegato vedete coso ho partorito ed a seguire il codice.
I problemi che ho riscontrato sono, per ora, due.
Non mi rileva i dati di alcuni sensori
Non carica i dati.

Questo il codice

/*
  Arduino & OpenEnergyMonitor 
 Invio dati temperatura ed umidit? per futuro controllo vmc
 */

#include <SPI.h>
#include <Ethernet.h>
#include <DHT.h> //includi libreria DHT per sensori temperatura DHT11 e DHT22
//#include "EmonLib.h" // includi libreria Emon                  

int attesa=1*10; //secondi di tattesa per nuovi tentativi di connessione
int nuovaLettura=10*60*1000; //intervallo tra le letture dei sensori
DHT sala; //sensore in Sala, DHT22
DHT cucina; //sensore in cucina, DHT22
DHT bagnoP; //Sensore nel Bagno Piccol, DHT22
DHT bagnoG; // Sensore nel bagno Grande, DHT22
DHT gaia; // Sensore in camera di Gaia, DHT22
DHT genitori; // Sensore in camera Genitori, DHT22
DHT sud; //Sensore esterno lato SUD, DHT11
DHT nord; //Sensore esterno lato Nord, DHT11
DHT tetto; // Sensore nel sottotetto, DHT22

float SalaT;
float SalaU;
float CucinaT;
float CucinaU;
float BPiT;
float BPiU;
float BGaT;
float BGaU;
float GaiaT;
float GaiaU;
float GenT;
float GenU;
int SudT;
float SudU;
int NordT;
float NordU;
float tettoT;
float tettoU;

byte mac[] = {
  0x80, 0xA0, 0xDA, 0x00, 0x69, 0xD5};//using WIRED
// fill in an available IP address on your network here,
IPAddress ip(192, 168, 1, 20);
IPAddress subnet(255, 255, 255, 0);
IPAddress DNS(8, 8, 8, 8);
IPAddress gw(192, 168, 1, 1);
EthernetClient client;


//Emoncms configurations
char server[] = "emoncms.org";     // name address for emoncms.org
//IPAddress server(213, 138, 101, 177);  // indirizzo IP di emoncms.org per utilizzo senza DNS

String apikey = "----------------------------------";  //api key (rilevata su registrazione sito emoncms.org)
int node = 0; //if 0, not used

unsigned long lastConnectionTime = 0;          // last time you connected to the server, in milliseconds
boolean lastConnected = false;                 // state of the connection last time through the main loop
const unsigned long postingInterval = attesa*1000;  // delay between updates, in milliseconds

void setup() {
  Serial.begin(9600);// apertura serial port:

  Serial.println("Emoncms client starting...");// Benvenuto

  Ethernet.begin(mac, ip, dns, gw, subnet);

  sala.setup(11);// assegnazione PIN dei vari sensori
  cucina.setup(10);
  bagnoG.setup(9);
  bagnoP.setup(8);
  genitori.setup(7);
  gaia.setup(6);
  tetto.setup(5);
  nord.setup(4);
  sud.setup(3);
}

void loop() {

  // if there's incoming data from the net connection send it out the serial port.
  //  This is for debugging purposes only:
  if (client.available()) {
    char c = client.read();
    Serial.print(c);
  }

  // if there's no net connection, but there was one last time
  // through the loop, then stop the client:
  if (!client.connected() && lastConnected) {
    Serial.println();
    Serial.println("Disconnecting...");
    client.stop();
  }

  // if you're not connected, and at least <postingInterval> milliseconds have
  // passed sinceyour last connection, then connect again and
  // send data:
  if(!client.connected() && (millis() - lastConnectionTime > postingInterval)) {


    letturaSensori(); //legge i valori dei sensori
    ScritturaSeriale(); //serive i valori rilevati sulla seriale (per verifica via monitor seriale)
    InviaDati();// invia i dati ad EMONCMS

    delay(nuovaLettura);//attesa per il nuovo ciclo di letture
  }
}


void letturaSensori(){
  SalaT = sala.getTemperature();
  SalaU = sala.getHumidity();
  CucinaT=cucina.getTemperature();
  CucinaU=cucina.getHumidity();
  BPiT=bagnoP.getTemperature();
  BPiU=bagnoP.getHumidity();
  BGaT=bagnoG.getTemperature();
  BGaU=bagnoG.getHumidity();
  GaiaT=gaia.getTemperature();
  GaiaU=gaia.getHumidity();
  GenT=genitori.getTemperature();
  GenU=genitori.getHumidity();
  SudT=sud.getTemperature();
  SudU=sud.getHumidity();
  NordT=nord.getTemperature();
  NordU=nord.getHumidity();
  tettoT=tetto.getTemperature();
  tettoU=tetto.getHumidity();
  Serial.println("Lettura sensori effettuata .............");
}



void ScritturaSeriale(){
  Serial.print("Sala:            T=");
  Serial.print(SalaT);
  Serial.print("  U=");
  Serial.println(SalaU);
  Serial.print("Cucina:          T=");
  Serial.print(CucinaT);
  Serial.print("  U=");
  Serial.println(CucinaU);
  Serial.print("BagnoPiccolo:    T=");
  Serial.print(BPiT);
  Serial.print("  U=");
  Serial.println(BPiU);
  Serial.print("BagnoGrande:     T=");
  Serial.print(BGaT);
  Serial.print("  U=");
  Serial.println(BGaU);
  Serial.print("Camera Gaia:     T=");
  Serial.print(GaiaT);
  Serial.print("  U=");
  Serial.println(GaiaU);
  Serial.print("Camera Genitori: T=");
  Serial.print(GenT);
  Serial.print("  U=");
  Serial.println(GenU);
  Serial.print("Lato Sud:        T=");
  Serial.print(SudT);
  Serial.print("  U=");
  Serial.println(SudU);
  Serial.print("Lato Nord:       T=");
  Serial.print(NordT);
  Serial.print("  U=");
  Serial.println(NordU);
  Serial.print("Sottotetto:      T=");
  Serial.print(tettoT);
  Serial.print("  U=");
  Serial.println(tettoU);
}

void InviaDati(){
  if (client.connect(server, 80)) {
    Serial.println("Connecting...");
    Serial.print("Scrittura dati su EMONCMS.org");
    client.print("GET /api/post?apikey=");// send the HTTP GET request:
    client.print(apikey);
    if (node > 0) {
      client.print("&node=");
      client.print(node);
    }
    client.print("&json={SalaTemp");
    client.print(":");
    client.print(SalaT);    
    client.print(",SalaUmidit:");
    client.print(SalaU);

    client.print(",CucinaTemp:");
    client.print(CucinaT);
    client.print(",CucinaUmidit:");
    client.print(CucinaU);

    client.print(",BagnoPTemp:");
    client.print(BPiT);
    client.print(",BagnoPUmidit:");
    client.print(BPiU);

    client.print(",BagnoGTemp:");
    client.print(BGaT);
    client.print(",BagnoGUmidit:");
    client.print(BGaU);

    client.print(",GaiaTemp:");
    client.print(GaiaT);
    client.print(",GaiaUmidit:");
    client.print(GaiaU);

    client.print(",GenitoriTemp:");
    client.print(GenT);
    client.print(",GenitoriUmidit:");
    client.print(GenU);   

    client.print(",SudTemp:");
    client.print(SudT);
    client.print(",SudUmidit:");
    client.print(SudU);

    client.print(",NordTemp:");
    client.print(NordT);
    client.print(",NordUidit:");
    client.print(NordU);

    client.print(",tettoT:");
    client.print(tettoT);
    client.print(",tettoU:");
    client.print(tettoU);

    client.println("} HTTP/1.1");
    client.println("Host:emoncms.org");
    client.println("User-Agent: Arduino-ethernet");
    client.println("Connection: close");
    client.println();

    lastConnectionTime = millis();// note the time that the connection was made:
  } 
  else {
    Serial.println("Connection failed");// if you couldn't make a connection:
    Serial.println("Disconnecting...");
    client.stop();
  }
  lastConnected = client.connected();// store the state of the connection for next time through the loop:
}

Queste le letture sulla seriale

Emoncms client starting...
Lettura sensori effettuata .............
Sala:            T=nan  U=nan
Cucina:          T=nan  U=nan
BagnoPiccolo:    T=21.80  U=44.20
BagnoGrande:     T=21.80  U=44.30
Camera Gaia:     T=21.80  U=45.10
Camera Genitori: T=21.90  U=42.20
Lato Sud:        T=21  U=44.70
Lato Nord:       T=0  U=nan
Sottotetto:      T=21.70  U=45.90

Aggiungo che ho pochissima dimestichezza con programmazione ed elettronica ma spero di arrivare in fondo a questo progettino.

Grazie

Benvenuto. :) Ti invitiamo a presentarti qui: http://forum.arduino.cc/index.php?topic=113640.0 e a leggere il regolamento: http://forum.arduino.cc/index.php?topic=149082.0 - qui una serie di schede by xxxPighi per i collegamenti vari: http://forum.arduino.cc/index.php?topic=146152.0 - qui le pinout delle varie schede by xxxPighi: http://forum.arduino.cc/index.php?topic=151646.0 - qui una serie di link utili: http://forum.arduino.cc/index.php?topic=126861.0

A titolo informativo, quei link sono utili. Non nel tuo caso specifico. Qualche esperto ti risponderà. Pazienta. :D

i pin 10 e 11 a cui hai collegato i sensori di sala e Cucina, sono usati dalla scheda eterneth. Devi spostarli su altri Pin.

Puoi usare anche gli analogici, come se fossero digitali

Non avevo noto questo "problema". Grazie

Quindi sposto 10 e 11 a 14(A=) e 15(A1)

anche il Pin 4, e' usato dalla scheda SD a bordo dell' Ethernet

Grazie, correggendo le connessioni i valori sulla seriale sono recuperati. Tra parentesi sul pin4 era anche segnato. Ho decisamente molto da imparare.

Speravo che spostando i pin il trasferimento al database avvenisse ma purtroppo non è così.

Per la connessione ho utilizzato questo: http://playground.arduino.cc//Italiano/Emoncms#emoncms

ValAnd65:
Per la connessione ho utilizzato questo: http://playground.arduino.cc//Italiano/Emoncms#emoncms

Non lo conosco ma leggo:

Per inviare dati, utilizzeremo una query get come questa:
 http://<emoncms_url>/input/post?json={power:200}&apikey=<apikey>

Tu, credo, invii prima la apikey e poi i dati.
Potresti provare a sostituire quelle Client.print con Serial.print, ricevere sul Monito Seriale la stringa che stai per spedire e provare quella stringa in un browser per vedere se viene accettata dal sito.
Ripeto, però, non conosco questa tecnica, è solo una idea.

L'idea è effettivamente corretta. La stringa che mi ritorna non è però un indirizzo html forse dovrei provare semplicemente a costruire un html secondo la guida ... Ma è quasi cinese per me ...

edit... sono riuscito ad effettuare la modifica. Sta caricando i dati anche se la connessione non avviene sempre, spesso salta e l'inervallo di caricamento dei dati è abbastanza variabile.

Io utilizzo emoncms proprio per il monitoraggio di macchine vmc, per la precisione aggregati compatti. Prova a leggere l'ottimo tutorial di Pitusso e magari qualche dubbio si chiarisce...

http://playground.arduino.cc/italiano/emoncms#.UwR317QQ_-s

Ho linkato poco sopra quell'articolo. In effetti tutto è nato da lì.

L'idea è proprio di monitorare le stanze di casa confrontandole con interno, esterno e sottotetto (non abitabile). Sulla base di queste rilevazioni vorrei poi posizionare 3 o 4 scambiatori da rivolgere verso il sottotetto. La mia necessità primaria è di tenere sotto controllo l'umidità. In casa ho un acquario aperto che fa si che l'umidità sia spesso superiore al 70%. Spero così di riuscire a controllarla meglio, migliorando anche la qualità generale dell'aria. Un passettino alla volta spero di riuscirci. Grazie e buona giornata

Scusa, in effetti non avevo prestato sufficiente attenzione! :P

comunque lasciando il serial monitor aperto dovresti riuscire a capire le cause del mancato invio dei dati, a me ad esempio capita in alcune installazioni dove utilizzo una chiavetta 3g che a volte non prende bene!

Comunque se lo scopo principale è mantenere sotto controllo l'umidità non dovresti avere malfunzionamenti ma al massimo il dato non si aggiorna costantemente...

piccolo suggerimento: quando fai il confronto delle umidità per azionare la ventilazione, prendi in considerazione l'umidità relativa o ti calcoli l'assoluta?

Il collegamento avviene via rete ed adsl quindi non dovrei avere problemi di connessione… considerato anche l’entità modesta dei dati.
Ho fatto diverse aggiunte per vedere su seriale quando invia i dati e quando perde la connessione ma, apparentemente, i dati risultano inviati ma non ricevuti su emoncms.
C’è qualcosa che mi sfugge.
Ho provato a giocare con vari time di invio ma non cambia praticamente nulle.
Tu invi i dati direttamente con una stringa html od usi il sistema del playground lincato sopra?

Pensavo di utilizzare l’umidità relativa per semplificarmi le cose ma è tutto ancora in divenire.

Inserisco l’ultima stesura del codici, magari qualcuno nota qualche svarione … probabile.

/*
 Arduino & OpenEnergyMonitor 
 Invio dati temperatura ed umidit? per futuro controllo vmc
 */
#include <SPI.h>
#include <Ethernet.h>
#include <DHT.h> //includi libreria DHT per sensori temperatura DHT11 e DHT22

int attesa=1*10; //secondi di tattesa per nuovi tentativi di connessione
int nuovaLettura=10*60*1000; //intervallo tra le letture dei sensori
DHT sala; //sensore in Sala, DHT22
DHT cucina; //sensore in cucina, DHT22
DHT bagnoP; //Sensore nel Bagno Piccol, DHT22
DHT bagnoG; // Sensore nel bagno Grande, DHT22
DHT gaia; // Sensore in camera di Gaia, DHT22
DHT genitori; // Sensore in camera Genitori, DHT22
DHT sud; //Sensore esterno lato SUD, DHT11
DHT nord; //Sensore esterno lato Nord, DHT11
DHT tetto; // Sensore nel sottotetto, DHT22

float SalaT; 
float SalaU;
float CucinaT; 
float CucinaU;
float BPiT; 
float BPiU;
float BGaT; 
float BGaU;
float GaiaT; 
float GaiaU;
float GenT; 
float GenU;
int SudT; 
int SudU;
int NordT; 
int NordU;
float tettoT; 
float tettoU;
int contatore=0;
int a=0;
byte mac[] = {
  0x80, 0xA0, 0xDA, 0x00, 0x69, 0xD5};//using WIRED
// fill in an available IP address on your network here,
IPAddress ip(192, 168, 1, 20);
IPAddress subnet(255, 255, 255, 0);
IPAddress DNS(8, 8, 8, 8);
IPAddress gw(192, 168, 1, 1);
EthernetClient client;


//Emoncms configurations
char server[] = "emoncms.org";     // name address for emoncms.org
//IPAddress server(213, 138, 101, 177);  // indirizzo IP di emoncms.org per utilizzo senza DNS

String apikey = "------------------------------------------------";  //api key (rilevata su registrazione sito emoncms.org)

unsigned long lastConnectionTime = 0;          // last time you connected to the server, in milliseconds
boolean lastConnected = false;                 // state of the connection last time through the main loop
const unsigned long postingInterval = attesa*1000;  // delay between updates, in milliseconds

void setup() {
  Serial.begin(9600);// apertura serial port:

  Serial.println("Emoncms client starting...");// Benvenuto

  Ethernet.begin(mac, ip, dns, gw, subnet);

  sala.setup(3);// assegnazione PIN dei vari sensori
  cucina.setup(5);
  bagnoG.setup(6);
  bagnoP.setup(7);
  genitori.setup(8);
  gaia.setup(9);
  tetto.setup(14);
  nord.setup(16);
  sud.setup(15);
}

void loop() {

  // if there's incoming data from the net connection send it out the serial port.
  //  This is for debugging purposes only:
  if (client.available()) {
    char c = client.read();
    Serial.print(c);
  }
delay (3000);
  // if there's no net connection, but there was one last time
  // through the loop, then stop the client:
  if (!client.connected() && lastConnected) {
    Serial.println();
    Serial.println("Disconnecting...");
    client.stop();
  }
delay (3000);
  // if you're not connected, and at least <postingInterval> milliseconds have
  // passed sinceyour last connection, then connect again and
  // send data:
  if(!client.connected() && (millis() - lastConnectionTime > postingInterval)) {

    letturaSensori(); //legge i valori dei sensori
    ScritturaSeriale(); //serive i valori rilevati sulla seriale (per verifica via monitor seriale)
    InviaDati();// invia i dati ad EMONCMS
    Serial.print("Numero di cicli effettuati= ");
    Serial.println(contatore++); 
    delay(nuovaLettura);//attesa per il nuovo ciclo di letture 
  }
  else {
    Serial.println("procedura sospesa");
    Serial.print(a++);
    Serial.println(" volte");
  }
}



void letturaSensori(){
  SalaT = sala.getTemperature();
  SalaU = sala.getHumidity();
  CucinaT=cucina.getTemperature();
  CucinaU=cucina.getHumidity();
  BPiT=bagnoP.getTemperature();
  BPiU=bagnoP.getHumidity();
  BGaT=bagnoG.getTemperature();
  BGaU=bagnoG.getHumidity();
  GaiaT=gaia.getTemperature();
  GaiaU=gaia.getHumidity();
  GenT=genitori.getTemperature();
  GenU=genitori.getHumidity();
  SudT=sud.getTemperature();
  SudU=sud.getHumidity();
  NordT=nord.getTemperature();
  NordU=nord.getHumidity();
  tettoT=tetto.getTemperature();
  tettoU=tetto.getHumidity();
  Serial.println("Lettura sensori effettuata .............");
}



void ScritturaSeriale(){
  Serial.print("Sala:            T=");
  Serial.print(SalaT);
  Serial.print("  U=");
  Serial.println(SalaU);
  Serial.print("Cucina:          T=");
  Serial.print(CucinaT);
  Serial.print("  U=");
  Serial.println(CucinaU);
  Serial.print("BagnoPiccolo:    T=");
  Serial.print(BPiT);
  Serial.print("  U=");
  Serial.println(BPiU);
  Serial.print("BagnoGrande:     T=");
  Serial.print(BGaT);
  Serial.print("  U=");
  Serial.println(BGaU);
  Serial.print("Camera Gaia:     T=");
  Serial.print(GaiaT);
  Serial.print("  U=");
  Serial.println(GaiaU);
  Serial.print("Camera Genitori: T=");
  Serial.print(GenT);
  Serial.print("  U=");
  Serial.println(GenU);
  Serial.print("Lato Sud:        T=");
  Serial.print(SudT);
  Serial.print("     U=");
  Serial.println(SudU);
  Serial.print("Lato Nord:       T=");
  Serial.print(NordT);
  Serial.print("     U=");
  Serial.println(NordU);
  Serial.print("Sottotetto:      T=");
  Serial.print(tettoT);
  Serial.print("  U=");
  Serial.println(tettoU);
}

void InviaDati(){
  if (client.connect(server, 80)) {
    Serial.println("Connecting...");
    Serial.println("Scrittura dati su EMONCMS.org");
    client.print(" http://emoncms.org/input/post?json={");// send the HTTP GET request://sostituito client con Serial
    //   Serial.print(apikey);
    /*    if (node > 0) {
     Serial.print("&node=");
     Serial.print(node);
     }
     */    client.print("SalaTemp");
    client.print(":");
    client.print(SalaT);    
    client.print(",SalaUmidit:");
    client.print(SalaU);

    client.print(",CucinaTemp:");
    client.print(CucinaT);
    client.print(",CucinaUmidit:");
    client.print(CucinaU);

    client.print(",BagnoPTemp:");
    client.print(BPiT);
    client.print(",BagnoPUmidit:");
    client.print(BPiU);

    client.print(",BagnoGTemp:");
    client.print(BGaT);
    client.print(",BagnoGUmidit:");
    client.print(BGaU);

    client.print(",GaiaTemp:");
    client.print(GaiaT);
    client.print(",GaiaUmidit:");
    client.print(GaiaU);

    client.print(",GenitoriTemp:");
    client.print(GenT);
    client.print(",GenitoriUmidit:");
    client.print(GenU);   

    client.print(",SudTemp:");
    client.print(SudT);
    client.print(",SudUmidit:");
    client.print(SudU);

    client.print(",NordTemp:");
    client.print(NordT);
    client.print(",NordUmidit:");
    client.print(NordU);

    client.print(",tettoT:");
    client.print(tettoT);
    client.print(",tettoU:");
    client.print(tettoU);

    client.print("}&apikey=");
    client.println(apikey);
    //    Serial.println("User-Agent: Arduino-ethernet");
    client.println("Connection: close");
    Serial.println("Invio dati su EMONCMS effettuata .....");// fine sostituzione

    lastConnectionTime = millis();// note the time that the connection was made:
  } 
  else {
    Serial.println("Connection failed");// if you couldn't make a connection:
    Serial.println("Disconnecting...");
    client.stop();
  }
  lastConnected = client.connected();// store the state of the connection for next time through the loop:
}

Ho un po’ tribolato … viste le mi scarse capacità … ma sono arrivato ad una soluzione che funzionicchia.

questo il codice se a qualcuno dovesse servire

/*
 Arduino & OpenEnergyMonitor 
 Invio dati temperatura ed umidit� per futuro controllo vmc
 */
#include <SPI.h>
#include <Ethernet.h>
#include <DHT.h> //includi libreria DHT per sensori temperatura DHT11 e DHT22


int attesa=10*60; //secondi di tattesa per nuovi tentativi di connessione
DHT sala; //sensore in Sala, DHT22
DHT cucina; //sensore in cucina, DHT22
DHT bagnoP; //Sensore nel Bagno Piccol, DHT22
DHT bagnoG; // Sensore nel bagno Grande, DHT22
DHT gaia; // Sensore in camera di Gaia, DHT22
DHT genitori; // Sensore in camera Genitori, DHT22
DHT sud; //Sensore esterno lato SUD, DHT11
DHT nord; //Sensore esterno lato Nord, DHT11
DHT tetto; // Sensore nel sottotetto, DHT22

float SalaT; 
float SalaU;
float CucinaT; 
float CucinaU;
float BPiT; 
float BPiU;
float BGaT; 
float BGaU;
float GaiaT; 
float GaiaU;
float GenT; 
float GenU;
int SudT; 
int SudU;
int NordT; 
int NordU;
float tettoT; 
float tettoU;
int contatore=0;
int a=0;
byte mac[] = {0x80, 0xA0, 0xDA, 0x00, 0x69, 0xD5};//using WIRED
IPAddress ip(192, 168, 1, 186);// fill in an available IP address on your network here,
EthernetClient client;


char server[] = "emoncms.org";     // name address for emoncms.org - IPAddress server(213, 138, 101, 177);  // indirizzo IP di emoncms.org per utilizzo senza DNS

String apikey = "------------------------------------";  //api key (rilevata su registrazione sito emoncms.org)
int node=0;

unsigned long lastConnectionTime = 0;          // last time you connected to the server, in milliseconds
boolean lastConnected = false;                 // state of the connection last time through the main loop
const unsigned long postingInterval = attesa*1000;  // delay between updates, in milliseconds

void setup() {
  Serial.begin(9600);// apertura serial port:
  Serial.println("Emoncms client starting...");// Benvenuto
  Ethernet.begin(mac, ip);
  sala.setup(3);// assegnazione PIN dei vari sensori
  cucina.setup(5);
  bagnoG.setup(6);
  bagnoP.setup(7);
  genitori.setup(8);
  gaia.setup(9);
  tetto.setup(14);
  nord.setup(16);
  sud.setup(15);
}

void loop() {
  if (client.available()) {
    char c = client.read();
    Serial.println(c);
  }
  // if there's no net connection, but there was one last time
  // through the loop, then stop the client:
  if (!client.connected() && lastConnected) {
    Serial.println();
    Serial.println("Sconnessione per ripristino invio...");
    client.stop();
  }

  // if you're not connected, and at least <postingInterval> milliseconds have
  // passed sinceyour last connection, then connect again and
  // send data:
  if(!client.connected() && (millis() - lastConnectionTime > postingInterval)) {
    letturaSensori(); //legge i valori dei sensori
    InviaDati();// invia i dati ad EMONCMS
    a=0;
    Serial.print("Numero di cicli effettuati= ");
    Serial.println(contatore++); 
  }
  else {
    Serial.print("procedura in attesa ");
    Serial.print(a++);
    Serial.println(" volte");
    delay(60*1000);// un minuto di attesa
  }
  lastConnected = client.connected();
}

void letturaSensori(){
  SalaT = sala.getTemperature();
  SalaU = sala.getHumidity();
  CucinaT=cucina.getTemperature();
  CucinaU=cucina.getHumidity();
  BPiT=bagnoP.getTemperature();
  BPiU=bagnoP.getHumidity();
  BGaT=bagnoG.getTemperature();
  BGaU=bagnoG.getHumidity();
  GaiaT=gaia.getTemperature();
  GaiaU=gaia.getHumidity();
  GenT=genitori.getTemperature();
  GenU=genitori.getHumidity();
  SudT=sud.getTemperature();
  SudU=sud.getHumidity();
  NordT=nord.getTemperature();
  NordU=nord.getHumidity();
  tettoT=tetto.getTemperature();
  tettoU=tetto.getHumidity();
  Serial.println("Lettura sensori effettuata ...");
}


void InviaDati(){
  Serial.println("Inzio invio dati ad EmmonCMS");
  if (client.connect(server, 80)) {
    Serial.println("Connessione ...");

    client.print("GET /api/post?apikey=");
    client.print(apikey);
    if (node > 0) {
      client.print("&node=");
      client.print(node);
    }
    client.print("&json={");// send the HTTP GET request:

    client.print("SalaTemp:");
    client.print(SalaT);
    client.print(",SalaUmidit:");
    client.print(SalaU);
    client.print(",CucinaTemp:");
    client.print(CucinaT);
    client.print(",CucinaUmidit:");
    client.print(CucinaU);

    client.print(",BagnoPTemp:");
    client.print(BPiT);
    client.print(",BagnoPUmidit:");
    client.print(BPiU);
    client.print(",BagnoGTemp:");
    client.print(BGaT);
    client.print(",BagnoGUmidit:");
    client.print(BGaU);

    client.print(",GaiaTemp:");
    client.print(GaiaT);
    client.print(",GaiaUmidit:");
    client.print(GaiaU);
    client.print(",GenitoriTemp:");
    client.print(GenT);
    client.print(",GenitoriUmidit:");
    client.print(GenU); 

    client.print(",SudTemp:");
    client.print(SudT);
    client.print(",SudUmidit:");
    client.print(SudU);
    client.print(",NordTemp:");
    client.print(NordT);
    client.print(",NordUmidit:");
    client.print(NordU);
    client.print(",tettoT:");
    client.print(tettoT);
    client.print(",tettoU:");
    client.print(tettoU);

    client.println("} HTTP/1.1");
    client.println("Host:emoncms.org");
    client.println("User-Agent: Arduino-ethernet");
    client.println("Connection: close");
    client.println();

    client.println("Connection: close");
    Serial.println("Invio dati su EMONCMS effettuata .....");// fine sostituzione

    lastConnectionTime = millis();// note the time that the connection was made:
  } 
  else {
    Serial.println("Connessione fallita");// if you couldn't make a connection:
    Serial.println("Sconnessione ...");
    client.stop();
  }
  lastConnected = client.connected();// store the state of the connection for next time through the loop:
}

le scritture su emmoncms non sono ancora costatanti e continue ma per le prime analisi dovrebbero andare bene.

Ti consiglio di cancellare la key dallo sketch pubblicato. Sostituiscila con degli asterischi.

Ahi ragione, non sarebbe un grosso danno se qualcuno ci giocasse un po', almeno in questo periodo di sperimentazione personale.

Grazie per l'osservazione di cui farò tesoro.