Pagina Html non visualizza valore sensori

Ho un problema sul pin 18 e 19 di arduino mega a cui è collegato un xbee in ricezione che riceve da un xbee connesso ad un sensore di temperatura.
Usando la serial1.print visualizzo i valori da monitor seriale, ma appena richiamo la serial1.print per visualizzare i valori da html tramite client.print non visualizza nessun valore.
Premetto che visualizzo correttamente la pagina html dove riesco a vedere i sensori collegati alle altre porte del mega, ma non quelli provenienti dal pin 18 e 19 dove è connesso xbee.
Qualcuno può aiutarmi?

Forse allegando lo sketch è più facile capire cosa non va.

#include <SPI.h>
#include <Ethernet2.h>
#include <RCSwitch.h>
#include "DHT.h"
#include <stdio.h>
#define DHTTYPE DHT22 
#define DHTPIN 5
RCSwitch mySwitch = RCSwitch();
DHT dht(DHTPIN, DHTTYPE);
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
IPAddress ip(192, 168, 1, 106);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);
EthernetServer server(80);                
//Sensori
const int value = mySwitch.getReceivedValue();
int sensorGas = A0;                                                    
String readString; //stringhe
boolean LEDON1 = false; 
boolean LEDON2 = false; 
boolean LEDON3 = false;
boolean LEDON4 = false; 
boolean LEDON5 = false; 
void setup(){
Serial.begin(9600);
Serial1.begin(9600);
dht.begin();
Ethernet.begin(mac, ip);
mySwitch.enableTransmit(31);
mySwitch.enableReceive(0);
}
void loop(){
  if (Serial1.available()){
  Serial.write(Serial1.read());   
   }
  /*inizio client*/
  EthernetClient  client = server.available();
  if (client) {
  Serial.println("new client");
   boolean currentLineIsBlank = true;
    while (client.connected()) {
     if (client.available()) {
       char c = client.read();
       Serial.write(c);
       readString.concat(c); 
        if (c == '\n' && currentLineIsBlank) {
         if(readString.indexOf("L=2") > 0) {     //rele ON
          mySwitch.send("000100000000010101010001"); 
          LEDON1 = true;
          //accende il led con comando a 433 Mhz
          }
          if(readString.indexOf("L=3") > 0) {    //rele1 OFF
          mySwitch.send("000100000000010101010100");    
          LEDON1 = false;
           //spenge il led  
          }
          if(readString.indexOf("L=4") > 0) {    //rele2 ON
          mySwitch.send("000100000001000101010001");  
          LEDON2 = true;
          }
          if(readString.indexOf("L=5") > 0) {    //rele2 OFF
          mySwitch.send("000100000001000101010100");  
          LEDON2 = false;
          }
          if(readString.indexOf("L=6") > 0) {    //rele3 ON
          mySwitch.send("000100000001010001010001"); 
          LEDON3 = true;
          }
          if(readString.indexOf("L=7") > 0) {    //rele3 OFF
          mySwitch.send("000100000001010001010100"); 
          LEDON3 = false;
          }          
          if(readString.indexOf("L=8") > 0) {    //rele4 ON
          mySwitch.send("000100000001010100010001"); 
          LEDON4 = true;
          }          
          if(readString.indexOf("L=9") > 0) {    //rele4 OFF
          mySwitch.send("000100000001010100010100"); 
          LEDON4 = false;          
          }          
          if(readString.indexOf("L=10") > 0) {   //rele5 ON
          mySwitch.send("010000000000010101010001"); 
          LEDON5 = true;
          }          
          if(readString.indexOf("L=11") > 0) {   //rele5 OFF
          mySwitch.send("010000000000010101010100"); 
          LEDON5 = false;         
          } 
          if(readString.indexOf("L=13") > 0) {   //rele tutti OFF
          mySwitch.send("000100000000010101010100");  
          
          mySwitch.send("000100000001000101010100"); 
       
          mySwitch.send("000100000001010001010100"); 
         
          mySwitch.send("000100000001010100010100");
           
          mySwitch.send("010000000000010101010100");
          LEDON1 = false;
          LEDON2 = false;
          LEDON3 = false;
          LEDON4 = false;
          LEDON5 = false;
        } 
        // COSTRUZIONE PAGINA HTML
        client.println("HTTP/1.1 200 OK");
        client.println("Content-Type: text/html");
        client.println();
        client.println("<html>");
        client.print("<head>");
        client.print(" <title>Gergio Server Domotica</title> ");
        client.println(" <meta name='viewport' content='width=device-width, user-scrollbar=no'>");
        client.print("</head>");
        client.println(" <body>");               
        client.println("<p>Temperatura Ambientale ");
        client.print(dht.readTemperature());       //Sensori Arduino Master da visualizzare via Html
        client.println(" C</p>");
        client.println("<p>Umidita Ambientale "); 
        client.print(dht.readHumidity());
        client.println(" %</p>");
        client.println("<p>Sensori Slave remoto ");   //Sensori Arduino Slave remoto da visualizzare via Html
        client.println(Serial1.read());   
          //Inizio pagina Menù luci 
          client.println("<h3>Luce Biblioteca</h3>");
          client.println("<a href='/?L=2'>Accendi</a> | <a href='/?L=3'>Spegni</a></h2>"); //primo rele
          if (LEDON1)  {
          client.println("<span style='color:green; font-weight:bold;'>ON</span></font>");
           }
          else
          {
          client.println("<span style='color:red; font-weight:bold;'>OFF</span></font>");
           }
          client.println("<hr >");
           
          client.println("<h3>Luce mensole</h3>");
          client.println("<a href='/?L=4'>Accendi</a> | <a href='/?L=5'>Spegni</a>");//secondo rele
          if (LEDON2) {
          client.println("<span style='color:green; font-weight:bold;'>ON</span></font>");
            }
          else
          {
          client.println("<span style='color:red; font-weight:bold;'>OFF</span></font>");
           }
          client.println("<hr >");
          client.println("<h3>Luce colonna</h2>");
          client.println("<a href='/?L=6'>Accendi</a> | <a href='/?L=7'>Spegni</a>"); //terzo rele
          if (LEDON3) {
          client.println("<span style='color:green; font-weight:bold;'>ON</span></font>");
           }
          else
          {
          client.println("<span style='color:red; font-weight:bold;'>OFF</span></font>");
           }
          client.println("<hr >");
          client.println("<h3>Led Scrivania</h3>");
          client.println("<a href='/?L=8'>Accendi</a> | <a href='/?L=9'>Spegni</a></h2>"); //quarto rele
          if (LEDON4)  
          {
          client.println("<span style='color:green; font-weight:bold;'>ON</span></font>");
           }
          else
          {
          client.println("<span style='color:red; font-weight:bold;'>OFF</span></font>");
           }
          client.println("<hr >");
          client.println("<h3>Audio diffusori</h3>");
          client.println("<a href='/?L=10'>Accendi</a> | <a href='/?L=11'>Spegni</a></h2>");//quinto rele
          if (LEDON5)  
          {
          client.println("<span style='color:green; font-weight:bold;'>ON</span></font>");
           }
          else
          {
          client.println("<span style='color:red; font-weight:bold;'>OFF</span></font>");
           }
          client.println("<hr >");
          client.println("<h3>All Off<h3><a href='/?L=13'>Spegni Tutto</a> ");                   
          client.println(" </body>");
          client.println("</html>");
          readString=""; 
          client.print("<meta http-equiv=\"refresh\" content=\"3\">");
          client.stop();
              }
               }
                } 
                 } 
                  }

da monitor seriale vedo cioè che arriva da xbee con Serial.write(Serial1.read());
ma non vedo niente da html se li stampo con client.println(Serial1.read());

gergio:
da monitor seriale vedo cioè che arriva da xbee con Serial.write(Serial1.read());
ma non vedo niente da html se li stampo con client.println(Serial1.read());

Ma se mandi un char prova a usare client.write() non client.println() (tra l'altro perché println() e non print(), che così mandi degli "a capo" dopo ogni singolo carattere?), per la seriale non ci sono problemi, ma forse per la Ethernet c'è differenza, non saprei.

Poi per semplificare le cose a noi (ma anche a te) per favore indenta decentemente il codice (se lo carichi nell'IDE premi Ctrl-T e te lo fa lui!)

Per finire, sappi che gli identificativi maiuscoli per convenzione sarebbero riservati alle costanti:

boolean LEDON1 = false; 
boolean LEDON2 = false; 
boolean LEDON3 = false;
boolean LEDON4 = false; 
boolean LEDON5 = false;

E' appunto solo una convenzione, ma ti conviene mantenerle per uniformità sia del tuo codice sia per gli altri.

Per il resto, scusa ma io mi astengo fino a che non sistemerai il tuo primo post come ti ha chiesto Guglielmo, poi pubblica il codice "rivisto e riformattato" e dicci quindi con QUELLO cosa funziona e cosa no.

Usando la serial1.print visualizzo i valori da monitor seriale, ma appena richiamo la serial1.print per visualizzare i valori da html tramite client.print non visualizza nessun valore.

considero che sia un errore di battitura.

usare la macro F() non sarebbe male per risparmiare RAM.

client.println("<p>Sensori Slave remoto ");   //Sensori Arduino Slave remoto da visualizzare via Html
client.println(Serial1.read());

Cosí leggi 1 Byte.
Cosa e come manda il sensore sulla seriale/XBee?

Ciao Uwe

Sulla pagina Html vedo il primo valore di umidità inviato dal sensore remoto al mega ma in effetti trasmette un solo byte anzichè 45.30 di umidità sulla pagina html vedo solo il primo valore ossia 4.
Come posso fare per visualizzare tutto il valore, dichiaro la variabile come float?

#include <SPI.h>
#include <Ethernet2.h>
#include <RCSwitch.h>
#include "DHT.h"
#include <stdio.h>
#define DHTTYPE DHT22
#define DHTPIN 5
RCSwitch mySwitch = RCSwitch();
DHT dht(DHTPIN, DHTTYPE);
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
IPAddress ip(192, 168, 1, 106);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);
EthernetServer server(80);
//Sensori
const int value = mySwitch.getReceivedValue();
int sensorGas = A0;
String readString; //stringhe
boolean ledon1 = false;
boolean ledon2 = false;
boolean ledon3 = false;
boolean ledon4 = false;
boolean ledon5 = false;
void setup() {
  Serial.begin(9600);
  Serial1.begin(9600);
  dht.begin();
  Ethernet.begin(mac, ip);
  mySwitch.enableTransmit(31);
  mySwitch.enableReceive(0);
}
void loop() {
  if (Serial1.available()) {
    Serial.write(Serial1.read());
  }
  /*inizio client*/
  EthernetClient  client = server.available();
  if (client) {
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        readString.concat(c);
        if (c == '\n' && currentLineIsBlank) {
          if (readString.indexOf("L=2") > 0) {    //rele ON
            mySwitch.send("000100000000010101010001");
            ledon1 = true;
            //accende il led con comando a 433 Mhz
          }
          if (readString.indexOf("L=3") > 0) {   //rele1 OFF
            mySwitch.send("000100000000010101010100");
            ledon1 = false;
            //spenge il led
          }
          if (readString.indexOf("L=4") > 0) {   //rele2 ON
            mySwitch.send("000100000001000101010001");
            ledon2 = true;
          }
          if (readString.indexOf("L=5") > 0) {   //rele2 OFF
            mySwitch.send("000100000001000101010100");
            ledon2 = false;
          }
          if (readString.indexOf("L=6") > 0) {   //rele3 ON
            mySwitch.send("000100000001010001010001");
            ledon3 = true;
          }
          if (readString.indexOf("L=7") > 0) {   //rele3 OFF
            mySwitch.send("000100000001010001010100");
            ledon3 = false;
          }
          if (readString.indexOf("L=8") > 0) {   //rele4 ON
            mySwitch.send("000100000001010100010001");
            ledon4 = true;
          }
          if (readString.indexOf("L=9") > 0) {   //rele4 OFF
            mySwitch.send("000100000001010100010100");
            ledon4 = false;
          }
          if (readString.indexOf("L=10") > 0) {  //rele5 ON
            mySwitch.send("010000000000010101010001");
            ledon5 = true;
          }
          if (readString.indexOf("L=11") > 0) {  //rele5 OFF
            mySwitch.send("010000000000010101010100");
            ledon5 = false;
          }
          if (readString.indexOf("L=13") > 0) {  //rele tutti OFF
            mySwitch.send("000100000000010101010100");

            mySwitch.send("000100000001000101010100");

            mySwitch.send("000100000001010001010100");

            mySwitch.send("000100000001010100010100");

            mySwitch.send("010000000000010101010100");
            ledon1 = false;
            ledon2 = false;
            ledon3 = false;
            ledon4 = false;
            ledon5 = false;
          }
          // COSTRUZIONE PAGINA HTML
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();
          client.println("<html>");
          client.print("<head>");
          client.print(" <title>Gergio Server Domotica</title> ");
          client.println(" <meta name='viewport' content='width=device-width, user-scrollbar=no'>");
          client.print("</head>");
          client.println(" <body>");
          client.println("<p>Temperatura Ambientale ");
          client.print(dht.readTemperature());       //Sensori Arduino Master da visualizzare via Html
          client.println(" C</p>");
          client.println("<p>Umidita Ambientale ");
          client.print(dht.readHumidity());
          client.println(" %</p>");
          client.println("<p>Sensori Slave remoto ");   //Sensori Arduino Slave remoto da visualizzare via Html
          client.write(Serial1.read());
          client.println(" %</p>");
          //Inizio pagina Menù luci
          client.println("<h3>Luce Biblioteca</h3>");
          client.println("<a href='/?L=2'>Accendi</a> | <a href='/?L=3'>Spegni</a></h2>"); //primo rele
          if (ledon1)  {
            client.println("<span style='color:green; font-weight:bold;'>ON</span></font>");
          }
          else
          {
            client.println("<span style='color:red; font-weight:bold;'>OFF</span></font>");
          }
          client.println("<hr >");

          client.println("<h3>Luce mensole</h3>");
          client.println("<a href='/?L=4'>Accendi</a> | <a href='/?L=5'>Spegni</a>");//secondo rele
          if (ledon2) {
            client.println("<span style='color:green; font-weight:bold;'>ON</span></font>");
          }
          else
          {
            client.println("<span style='color:red; font-weight:bold;'>OFF</span></font>");
          }
          client.println("<hr >");
          client.println("<h3>Luce colonna</h2>");
          client.println("<a href='/?L=6'>Accendi</a> | <a href='/?L=7'>Spegni</a>"); //terzo rele
          if (ledon3) {
            client.println("<span style='color:green; font-weight:bold;'>ON</span></font>");
          }
          else
          {
            client.println("<span style='color:red; font-weight:bold;'>OFF</span></font>");
          }
          client.println("<hr >");
          client.println("<h3>Led Scrivania</h3>");
          client.println("<a href='/?L=8'>Accendi</a> | <a href='/?L=9'>Spegni</a></h2>"); //quarto rele
          if (ledon4)
          {
            client.println("<span style='color:green; font-weight:bold;'>ON</span></font>");
          }
          else
          {
            client.println("<span style='color:red; font-weight:bold;'>OFF</span></font>");
          }
          client.println("<hr >");
          client.println("<h3>Audio diffusori</h3>");
          client.println("<a href='/?L=10'>Accendi</a> | <a href='/?L=11'>Spegni</a></h2>");//quinto rele
          if (ledon5)
          {
            client.println("<span style='color:green; font-weight:bold;'>ON</span></font>");
          }
          else
          {
            client.println("<span style='color:red; font-weight:bold;'>OFF</span></font>");
          }
          client.println("<hr >");
          client.println("<h3>All Off<h3><a href='/?L=13'>Spegni Tutto</a> ");
          client.println(" </body>");
          client.println("</html>");
          readString = "";
          client.print("<meta http-equiv=\"refresh\" content=\"3\">");
          client.stop();
        }
      }
    }
  }
}

Con serial write scrivo ciò che mi arriva da serial1 ossia i pin 18 e 19 del mega dove è ataccato un xbee che riceve segnale da una centralina remota e qui tutto ok perchè dal monitor seriale vedo correttamente temperature e umidità solo che usando client.write visualizzo un valore per volta quindi un byte alla volta però ora rieco a vederlo anche da pagina web ma i dati mi arrivano un byte alla volta.

gergio:
dal monitor seriale vedo correttamente temperature e umidità solo che usando client.write visualizzo un valore per volta quindi un byte alla volta però ora rieco a vederlo anche da pagina web ma i dati mi arrivano un byte alla volta.

Eh certo, le seriali sono così, centellinano i dati... E pensa che addirittura non lo sai ma il byte che leggi lo manda un bit alla volta! ;D 8)

Scherzi a parte, considera che se da Serial1 arrivano informazioni sotto forma di stringa ossia sequenza di caratteri, per prima cosa tu devi accumularli (la read() legge un solo byte alla volta) e poi devi anche sapere dove finisce la stringa (il "terminatore" qual è?).

Poi tu nel loop hai messo:

  if (Serial1.available()) {
    Serial.write(Serial1.read());
  }

Questo si "mangia" il byte ricevuto, ossia lo rimandi sulla seriale e non lo memorizzi da nessuna parte!
Quindi primo, TOGLI quella if(), secondo, tu devi accumulare in una stringa (char* non String, dimensiona questo buffer al numero massimo di caratteri che potresti ricevere +1) i byte ricevuti dalla Serial1 fino a che non arriva il "terminatore", e quando hai questo dato completo puoi mostrarlo nella pagina.

Prova a modificare il tuo codice e se non ne vieni a capo scrivi nuovamente postando il nuovo codice.

mi metto un pò a lavoro e provo a venirne a capo!grazie dell'aiuto :slight_smile:

#include <SPI.h>
#include <Ethernet2.h>
#include <RCSwitch.h>
#include "DHT.h"
#include <stdio.h>
#define DHTTYPE DHT22
#define DHTPIN 5
RCSwitch mySwitch = RCSwitch();
DHT dht(DHTPIN, DHTTYPE);
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
IPAddress ip(192, 168, 1, 106);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);
EthernetServer server(80);
char s[20];
const int value = mySwitch.getReceivedValue();
String readString; //stringhe
boolean ledon1 = false;
boolean ledon2 = false;
boolean ledon3 = false;
boolean ledon4 = false;
boolean ledon5 = false;
void setup() {
  Serial.begin(9600);
  Serial1.begin(9600);
  dht.begin();
  Ethernet.begin(mac, ip);
  mySwitch.enableTransmit(31);
  mySwitch.enableReceive(0);
}
void loop() {
  while (Serial1.available())
  {
    delay(1);
    if (Serial1.available() > 0)
    {
      char s = Serial1.read();
      readString .concat(s);
      s++;
      if (s == ',')
      {
        Serial.print(String(s));
        Serial.print(";");
      }
    }
  }
  /*inizio client*/
  EthernetClient  client = server.available();
  if (client) {
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        readString.concat(c);
        if (c == '\n' && currentLineIsBlank) {
          if (readString.indexOf("L=2") > 0) {    //rele ON
            mySwitch.send("000100000000010101010001");
            ledon1 = true;
            //accende il led con comando a 433 Mhz
          }
          if (readString.indexOf("L=3") > 0) {   //rele1 OFF
            mySwitch.send("000100000000010101010100");
            ledon1 = false;
            //spenge il led
          }
          if (readString.indexOf("L=4") > 0) {   //rele2 ON
            mySwitch.send("000100000001000101010001");
            ledon2 = true;
          }
          if (readString.indexOf("L=5") > 0) {   //rele2 OFF
            mySwitch.send("000100000001000101010100");
            ledon2 = false;
          }
          if (readString.indexOf("L=6") > 0) {   //rele3 ON
            mySwitch.send("000100000001010001010001");
            ledon3 = true;
          }
          if (readString.indexOf("L=7") > 0) {   //rele3 OFF
            mySwitch.send("000100000001010001010100");
            ledon3 = false;
          }
          if (readString.indexOf("L=8") > 0) {   //rele4 ON
            mySwitch.send("000100000001010100010001");
            ledon4 = true;
          }
          if (readString.indexOf("L=9") > 0) {   //rele4 OFF
            mySwitch.send("000100000001010100010100");
            ledon4 = false;
          }
          if (readString.indexOf("L=10") > 0) {  //rele5 ON
            mySwitch.send("010000000000010101010001");
            ledon5 = true;
          }
          if (readString.indexOf("L=11") > 0) {  //rele5 OFF
            mySwitch.send("010000000000010101010100");
            ledon5 = false;
          }
          if (readString.indexOf("L=13") > 0) {  //rele tutti OFF
            mySwitch.send("000100000000010101010100");

            mySwitch.send("000100000001000101010100");

            mySwitch.send("000100000001010001010100");

            mySwitch.send("000100000001010100010100");

            mySwitch.send("010000000000010101010100");
            ledon1 = false;
            ledon2 = false;
            ledon3 = false;
            ledon4 = false;
            ledon5 = false;
          }
          // COSTRUZIONE PAGINA HTML
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();
          client.println("<html>");
          client.print("<head>");
          client.print(" <title>Gergio Server Domotica</title> ");
          client.println(" <meta name='viewport' content='width=device-width, user-scrollbar=no'>");
          client.print("</head>");
          client.println(" <body>");
          client.println("<p>Temperatura Ambientale ");
          client.print(dht.readTemperature());       //Sensori Arduino Master da visualizzare via Html
          client.println(" C</p>");
          client.println("<p>Umidita Ambientale ");
          client.print(dht.readHumidity());
          client.println(" %</p>");
          client.println("<p>Sensori Slave remoto ");   //Sensori Arduino Slave remoto da visualizzare via Html
          client.write(s);
          client.println(" %</p>");
          //Inizio pagina Menù luci
          client.println("<h3>Luce Biblioteca</h3>");
          client.println("<a href='/?L=2'>Accendi</a> | <a href='/?L=3'>Spegni</a></h2>"); //primo rele
          if (ledon1)  {
            client.println("<span style='color:green; font-weight:bold;'>ON</span></font>");
          }
          else
          {
            client.println("<span style='color:red; font-weight:bold;'>OFF</span></font>");
          }
          client.println("<hr >");

          client.println("<h3>Luce mensole</h3>");
          client.println("<a href='/?L=4'>Accendi</a> | <a href='/?L=5'>Spegni</a>");//secondo rele
          if (ledon2) {
            client.println("<span style='color:green; font-weight:bold;'>ON</span></font>");
          }
          else
          {
            client.println("<span style='color:red; font-weight:bold;'>OFF</span></font>");
          }
          client.println("<hr >");
          client.println("<h3>Luce colonna</h2>");
          client.println("<a href='/?L=6'>Accendi</a> | <a href='/?L=7'>Spegni</a>"); //terzo rele
          if (ledon3) {
            client.println("<span style='color:green; font-weight:bold;'>ON</span></font>");
          }
          else
          {
            client.println("<span style='color:red; font-weight:bold;'>OFF</span></font>");
          }
          client.println("<hr >");
          client.println("<h3>Led Scrivania</h3>");
          client.println("<a href='/?L=8'>Accendi</a> | <a href='/?L=9'>Spegni</a></h2>"); //quarto rele
          if (ledon4)
          {
            client.println("<span style='color:green; font-weight:bold;'>ON</span></font>");
          }
          else
          {
            client.println("<span style='color:red; font-weight:bold;'>OFF</span></font>");
          }
          client.println("<hr >");
          client.println("<h3>Audio diffusori</h3>");
          client.println("<a href='/?L=10'>Accendi</a> | <a href='/?L=11'>Spegni</a></h2>");//quinto rele
          if (ledon5)
          {
            client.println("<span style='color:green; font-weight:bold;'>ON</span></font>");
          }
          else
          {
            client.println("<span style='color:red; font-weight:bold;'>OFF</span></font>");
          }
          client.println("<hr >");
          client.println("<h3>All Off<h3><a href='/?L=13'>Spegni Tutto</a> ");
          client.println(" </body>");
          client.println("</html>");
          readString = "";
          client.print("<meta http-equiv=\"refresh\" content=\"3\">");
          client.stop();
        }
      }
    }
  }
}

Ho modificato il programma nel seguente modo, ma ancora non riesco a visualizzare i valori per intero.
Sto studiando per cercare di capire, magari mi perdo in un bicchier d'acqua.

c'è un po di confusione qui :smiley:

      char s = Serial1.read();
      readString .concat(s);
      s++;
      if (s == ',')

s è un char che poi concateni e poi incrementi e poi controlli se è virgola....

dovrei fare la concatenzazione per ultima cosa

non solo, se s è qualche cosa che proviene dalla seriale perchè fai s++? cosa significa?

#include <SPI.h>
#include <Ethernet2.h>
#include <RCSwitch.h>
#include "DHT.h"
#include <stdio.h>
#define DHTTYPE DHT22
#define DHTPIN 5
RCSwitch mySwitch = RCSwitch();
DHT dht(DHTPIN, DHTTYPE);
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
IPAddress ip(192, 168, 1, 106);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);
EthernetServer server(80);
//Sensori
const int value = mySwitch.getReceivedValue();
int inByte;
char Data[8];
int s;
unsigned long Tempo;
String readString; //stringhe
boolean ledon1 = false;
boolean ledon2 = false;
boolean ledon3 = false;
boolean ledon4 = false;
boolean ledon5 = false;
void setup() {
  Serial.begin(9600);
  Serial1.begin(9600);
  dht.begin();
  Ethernet.begin(mac, ip);
  mySwitch.enableTransmit(31);
  mySwitch.enableReceive(0);
}
void loop() {
  do {
    if (Serial1.available()) {
      Data[s]  = Serial1.read();
      s++;
    }
    if (s < 1)Tempo = millis();
  } while (s < 5 && (millis() - Tempo) < 0); 
  Data[s] = 0;
  inByte = atoi(Data);
  s = 0;
  Serial.println( inByte);
/*inizio client*/
EthernetClient  client = server.available();
if (client) {
  boolean currentLineIsBlank = true;
  while (client.connected()) {
    if (client.available()) {
      char c = client.read();
      readString.concat(c);
      if (c == '\n' && currentLineIsBlank) {
        if (readString.indexOf("L=2") > 0) {    //rele ON
          mySwitch.send("000100000000010101010001");
          ledon1 = true;
          //accende il led con comando a 433 Mhz
        }
        if (readString.indexOf("L=3") > 0) {   //rele1 OFF
          mySwitch.send("000100000000010101010100");
          ledon1 = false;
          //spenge il led
        }
        if (readString.indexOf("L=4") > 0) {   //rele2 ON
          mySwitch.send("000100000001000101010001");
          ledon2 = true;
        }
        if (readString.indexOf("L=5") > 0) {   //rele2 OFF
          mySwitch.send("000100000001000101010100");
          ledon2 = false;
        }
        if (readString.indexOf("L=6") > 0) {   //rele3 ON
          mySwitch.send("000100000001010001010001");
          ledon3 = true;
        }
        if (readString.indexOf("L=7") > 0) {   //rele3 OFF
          mySwitch.send("000100000001010001010100");
          ledon3 = false;
        }
        if (readString.indexOf("L=8") > 0) {   //rele4 ON
          mySwitch.send("000100000001010100010001");
          ledon4 = true;
        }
        if (readString.indexOf("L=9") > 0) {   //rele4 OFF
          mySwitch.send("000100000001010100010100");
          ledon4 = false;
        }
        if (readString.indexOf("L=10") > 0) {  //rele5 ON
          mySwitch.send("010000000000010101010001");
          ledon5 = true;
        }
        if (readString.indexOf("L=11") > 0) {  //rele5 OFF
          mySwitch.send("010000000000010101010100");
          ledon5 = false;
        }
        if (readString.indexOf("L=13") > 0) {  //rele tutti OFF
          mySwitch.send("000100000000010101010100");

          mySwitch.send("000100000001000101010100");

          mySwitch.send("000100000001010001010100");

          mySwitch.send("000100000001010100010100");

          mySwitch.send("010000000000010101010100");
          ledon1 = false;
          ledon2 = false;
          ledon3 = false;
          ledon4 = false;
          ledon5 = false;
        }
        // COSTRUZIONE PAGINA HTML
        client.println("HTTP/1.1 200 OK");
        client.println("Content-Type: text/html");
        client.println();
        client.println("<html>");
        client.print("<head>");
        client.print(" <title>Gergio Server Domotica</title> ");
        client.println(" <meta name='viewport' content='width=device-width, user-scrollbar=no'>");
        client.print("</head>");
        client.println(" <body>");
        client.println("<p>Temperatura Ambientale ");
        client.print(dht.readTemperature());       //Sensori Arduino Master da visualizzare via Html
        client.println(" C</p>");
        client.println("<p>Umidita Ambientale ");
        client.print(dht.readHumidity());
        client.println(" %</p>");
        client.println("<p>Sensori Slave remoto ");   //Sensori Arduino Slave remoto da visualizzare via Html
        client.write(inByte);
        client.println(" %</p>");
        //Inizio pagina Menù luci
        client.println("<h3>Luce Biblioteca</h3>");
        client.println("<a href='/?L=2'>Accendi</a> | <a href='/?L=3'>Spegni</a></h2>"); //primo rele
        if (ledon1)  {
          client.println("<span style='color:green; font-weight:bold;'>ON</span></font>");
        }
        else
        {
          client.println("<span style='color:red; font-weight:bold;'>OFF</span></font>");
        }
        client.println("<hr >");

        client.println("<h3>Luce mensole</h3>");
        client.println("<a href='/?L=4'>Accendi</a> | <a href='/?L=5'>Spegni</a>");//secondo rele
        if (ledon2) {
          client.println("<span style='color:green; font-weight:bold;'>ON</span></font>");
        }
        else
        {
          client.println("<span style='color:red; font-weight:bold;'>OFF</span></font>");
        }
        client.println("<hr >");
        client.println("<h3>Luce colonna</h2>");
        client.println("<a href='/?L=6'>Accendi</a> | <a href='/?L=7'>Spegni</a>"); //terzo rele
        if (ledon3) {
          client.println("<span style='color:green; font-weight:bold;'>ON</span></font>");
        }
        else
        {
          client.println("<span style='color:red; font-weight:bold;'>OFF</span></font>");
        }
        client.println("<hr >");
        client.println("<h3>Led Scrivania</h3>");
        client.println("<a href='/?L=8'>Accendi</a> | <a href='/?L=9'>Spegni</a></h2>"); //quarto rele
        if (ledon4)
        {
          client.println("<span style='color:green; font-weight:bold;'>ON</span></font>");
        }
        else
        {
          client.println("<span style='color:red; font-weight:bold;'>OFF</span></font>");
        }
        client.println("<hr >");
        client.println("<h3>Audio diffusori</h3>");
        client.println("<a href='/?L=10'>Accendi</a> | <a href='/?L=11'>Spegni</a></h2>");//quinto rele
        if (ledon5)
        {
          client.println("<span style='color:green; font-weight:bold;'>ON</span></font>");
        }
        else
        {
          client.println("<span style='color:red; font-weight:bold;'>OFF</span></font>");
        }
        client.println("<hr >");
        client.println("<h3>All Off<h3><a href='/?L=13'>Spegni Tutto</a> ");
        client.println(" </body>");
        client.println("</html>");
        readString = "";
        client.print("<meta http-equiv=\"refresh\" content=\"3\">");
        client.stop();
      }
    }
  }
}
}

Ho modificato il programma in questo modo ma non riesco comunque a visualizzare il valore per intero ossia 23.7 C 70% ma solo un byte per volta.
Non riesco a concatenare i singoli Byte che ricevo.
Forse dovrei laasciar perdere.

#include <SPI.h>
#include <Ethernet2.h>
#include <RCSwitch.h>
#include "DHT.h"
#include <stdio.h>
#define DHTTYPE DHT22
#define DHTPIN 5
RCSwitch mySwitch = RCSwitch();
DHT dht(DHTPIN, DHTTYPE);
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
IPAddress ip(192, 168, 1, 106);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);
EthernetServer server(80);
//Sensori
char dato[255] = "";
byte conta = 0;
char d;
const int value = mySwitch.getReceivedValue();
String readString; //stringhe
boolean ledon1 = false;
boolean ledon2 = false;
boolean ledon3 = false;
boolean ledon4 = false;
boolean ledon5 = false;
void setup() {
  Serial.begin(9600);
  Serial1.begin(9600);
  dht.begin();
  Ethernet.begin(mac, ip);
  mySwitch.enableTransmit(31);
  mySwitch.enableReceive(0);
}
void loop() {
  if (Serial1.available()) {
    while (Serial1.available())
    {
      d  = Serial1.read();
      Serial.write(d);
      if ( d != '\n' ) {
        if ( d != '\r' ) {
          dato[conta] = d;
          conta++;
        } else {
            for (int i = 0; i < 100; i++)
            dato[i] = 0;
        }
      }
    }
  }
  /*inizio client*/
  EthernetClient  client = server.available();
  if (client) {
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        readString.concat(c);
        if (c == '\n' && currentLineIsBlank) {
          if (readString.indexOf("L=2") > 0) {    //rele ON
            mySwitch.send("000100000000010101010001");
            ledon1 = true;
            //accende il led con comando a 433 Mhz
          }
          if (readString.indexOf("L=3") > 0) {   //rele1 OFF
            mySwitch.send("000100000000010101010100");
            ledon1 = false;
            //spenge il led
          }
          if (readString.indexOf("L=4") > 0) {   //rele2 ON
            mySwitch.send("000100000001000101010001");
            ledon2 = true;
          }
          if (readString.indexOf("L=5") > 0) {   //rele2 OFF
            mySwitch.send("000100000001000101010100");
            ledon2 = false;
          }
          if (readString.indexOf("L=6") > 0) {   //rele3 ON
            mySwitch.send("000100000001010001010001");
            ledon3 = true;
          }
          if (readString.indexOf("L=7") > 0) {   //rele3 OFF
            mySwitch.send("000100000001010001010100");
            ledon3 = false;
          }
          if (readString.indexOf("L=8") > 0) {   //rele4 ON
            mySwitch.send("000100000001010100010001");
            ledon4 = true;
          }
          if (readString.indexOf("L=9") > 0) {   //rele4 OFF
            mySwitch.send("000100000001010100010100");
            ledon4 = false;
          }
          if (readString.indexOf("L=10") > 0) {  //rele5 ON
            mySwitch.send("010000000000010101010001");
            ledon5 = true;
          }
          if (readString.indexOf("L=11") > 0) {  //rele5 OFF
            mySwitch.send("010000000000010101010100");
            ledon5 = false;
          }
          if (readString.indexOf("L=13") > 0) {  //rele tutti OFF
            mySwitch.send("000100000000010101010100");

            mySwitch.send("000100000001000101010100");

            mySwitch.send("000100000001010001010100");

            mySwitch.send("000100000001010100010100");

            mySwitch.send("010000000000010101010100");
            ledon1 = false;
            ledon2 = false;
            ledon3 = false;
            ledon4 = false;
            ledon5 = false;
          }
          // COSTRUZIONE PAGINA HTML
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();
          client.println("<html>");
          client.print("<head>");
          client.print(" <title>Gergio Server Domotica</title> ");
          client.println(" <meta name='viewport' content='width=device-width, user-scrollbar=no'>");
          client.print("</head>");
          client.println(" <body>");
          client.println("<p>Temperatura Ambientale ");
          client.print(dht.readTemperature());       //Sensori Arduino Master da visualizzare via Html
          client.println(" C</p>");
          client.println("<p>Umidita Ambientale ");
          client.print(dht.readHumidity());
          client.println(" %</p>");
          client.println("<p>Sensori Slave remoto ");   //Sensori Arduino Slave remoto da visualizzare via Html
          client.write(dato);
          client.println(" %</p>");
          //Inizio pagina Menù luci
          client.println("<h3>Luce Biblioteca</h3>");
          client.println("<a href='/?L=2'>Accendi</a> | <a href='/?L=3'>Spegni</a></h2>"); //primo rele
          if (ledon1)  {
            client.println("<span style='color:green; font-weight:bold;'>ON</span></font>");
          }
          else
          {
            client.println("<span style='color:red; font-weight:bold;'>OFF</span></font>");
          }
          client.println("<hr >");

          client.println("<h3>Luce mensole</h3>");
          client.println("<a href='/?L=4'>Accendi</a> | <a href='/?L=5'>Spegni</a>");//secondo rele
          if (ledon2) {
            client.println("<span style='color:green; font-weight:bold;'>ON</span></font>");
          }
          else
          {
            client.println("<span style='color:red; font-weight:bold;'>OFF</span></font>");
          }
          client.println("<hr >");
          client.println("<h3>Luce colonna</h2>");
          client.println("<a href='/?L=6'>Accendi</a> | <a href='/?L=7'>Spegni</a>"); //terzo rele
          if (ledon3) {
            client.println("<span style='color:green; font-weight:bold;'>ON</span></font>");
          }
          else
          {
            client.println("<span style='color:red; font-weight:bold;'>OFF</span></font>");
          }
          client.println("<hr >");
          client.println("<h3>Led Scrivania</h3>");
          client.println("<a href='/?L=8'>Accendi</a> | <a href='/?L=9'>Spegni</a></h2>"); //quarto rele
          if (ledon4)
          {
            client.println("<span style='color:green; font-weight:bold;'>ON</span></font>");
          }
          else
          {
            client.println("<span style='color:red; font-weight:bold;'>OFF</span></font>");
          }
          client.println("<hr >");
          client.println("<h3>Audio diffusori</h3>");
          client.println("<a href='/?L=10'>Accendi</a> | <a href='/?L=11'>Spegni</a></h2>");//quinto rele
          if (ledon5)
          {
            client.println("<span style='color:green; font-weight:bold;'>ON</span></font>");
          }
          else
          {
            client.println("<span style='color:red; font-weight:bold;'>OFF</span></font>");
          }
          client.println("<hr >");
          client.println("<h3>All Off<h3><a href='/?L=13'>Spegni Tutto</a> ");
          client.println(" </body>");
          client.println("</html>");
          readString = "";
          client.print("<meta http-equiv=\"refresh\" content=\"3\">");
          client.stop();
        }
      }
    }
  }
}

Sono riuscito finalmente a visualizzare tutto il contenuto del buffer su pagina Html, rimane il problema dello svuotamento del buffer in quanto non si svuota.
Vorrei visualizzare su pagina Html solo 67.80 *H 23.60 *C, il problema è che mi visualizza una serie lunghissima di byte dati dalle precedenti letture quindi 67.80 *H 23.60 *C ripetuti n volte.
Dovrei usare un ciclo for e se si dove lo dovrei inserire?qualcuno mi può fare un esempio?

#include <string.h>
#include <SPI.h>
#include <Ethernet2.h>
#include <RCSwitch.h>
#include "DHT.h"
#include <stdio.h>
#define DHTTYPE DHT22
#define DHTPIN 5
RCSwitch mySwitch = RCSwitch();
DHT dht(DHTPIN, DHTTYPE);
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
IPAddress ip(192, 168, 1, 106);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);
EthernetServer server(80);
//Sensori
char dato[24] = "";
byte conta = 0;
char d;
const int value = mySwitch.getReceivedValue();
String readString; //stringhe
boolean ledon1 = false;
boolean ledon2 = false;
boolean ledon3 = false;
boolean ledon4 = false;
boolean ledon5 = false;
void setup() {
  Serial.begin(9600);
  Serial1.begin(9600);
  dht.begin();
  Ethernet.begin(mac, ip);
  mySwitch.enableTransmit(31);
}
void loop() {
  if (Serial1.available()>0) {
    while (Serial1.available())
    {
      d  = Serial1.read();
      Serial.write(d);
      if(d != ""){ 
          dato[conta] = d;
          conta++;
          
          } else {
            for (int i = 0; i < 24; i++)
            dato[i] = 0;
        }
      }
    }

Ora riesco a visualizzare i valori su pagina html solo che anzichè svuotare ciò che c'è dentro la seriale,arduino la sovrappone creando una serie di ripetizioni finchè ad un certo punto si blocca arduino e non riesco più ad accedere alla pagina Html.
Se qualcuno può darmi una mano

Scusa, nel loop vedo questo:

void loop() {
  if (Serial1.available()) {
    while (Serial1.available())
    {
      d  = Serial1.read();
      Serial.write(d);
      if ( d != '\n' ) {
        if ( d != '\r' ) {
          dato[conta] = d;
          conta++;
        } else {
            for (int i = 0; i < 100; i++)
            dato[i] = 0;
        }
      }
    }
  }
  ... eccetera

Quindi tu usi la variabile "conta" come indice dell'array dato[] per memorizzare i dati, esatto? La variabile la inizializzi a zero, poi nel loop la incrementi ad ogni carattere, ed anche questo va bene.

Stando a quanto vedo, tu in questa sezione del loop() se il carattere ricevuto è diverso da LF, vai a vedere se è diverso anche da CR ed in questo caso accumuli nell'array ed incrementi "conta", altrimenti resetti il buffer. Quindi di fatto i tuoi dati DEVONO finire con \r o almeno \n esatto?

Primo, sei quindi sicuro che dall'altra parte ti mandano le informazioni terminandole con \r \n o almeno \n? Se non ricevi il terminatore, tu accumuli i vari byte fino a far scoppiare il tuo buffer dato[] dopo 255 byte ricevuti visto che non ti sei chiesto dov'è che la variabile "conta" la riporti a zero (ossia mai, almeno stando al listato che hai postato....).

Secondo, se anche ti mandassero i dati correttamente ossia con il terminatore previsto, tu alla ricezione del terminatore invece di USARE il dato fin qui ricevuto hai messo quel for() che riporta a zero tutti i dati, quindi non leggerai mai nulla! Questo, sempre stando a quanto dici, non capita mai (altrimenti avresti detto che non leggi nessun dato) per cui temo che tu NON riceva mai \n.

Terzo, è un suggerimento per farti capire come si fanno queste cose: per fare quello che ti serve dovresti usare DUE array, uno per accumulare i byte ricevuti (in genere viene chiamato "buffer") diciamo un "char buf[255];", ed uno, anche il tuo "dato[255]" dove troverai l'ultimo dato completo ricevuto.
Quando ricevi \n devi copiare tutti i byte da buf[] a dato[] (escluso il \n) e se lo usi come una stringa mettere in coda il terminatore di stringa (\0) quindi azzerare buf[] e riposizionare a zero il "conta" (è qui che va fatto).

Prova a modificare in questo modo il programma e facci sapere.

#include <SPI.h>
#include "DHT.h"
#include <stdio.h>
#include <XBee.h>
#include <SoftwareSerial.h>
#define DHTTYPE DHT22 
#define DHTPIN 5
// Define NewSoftSerial TX/RX pins
// Connect Arduino pin 8 to TX of usb-serial device
uint8_t ssRX = 1;
// Connect Arduino pin 9 to RX of usb-serial device
uint8_t ssTX = 0;
int sensorPin = A5; 
int sensorValue = 0;
SoftwareSerial nss(ssRX, ssTX);
XBee xbee = XBee();
DHT dht(DHTPIN, DHTTYPE);
void setup(){
Serial.begin(9600);
xbee.setSerial(Serial);
dht.begin();
}
void loop() {
  sensorValue = analogRead(sensorPin);
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  Serial.print(h);
  Serial.print(" H ");
  Serial.print(t);
  Serial.print(" C ");
  Serial.print(sensorValue);
  Serial.print(" ppm ");
  Serial.print("\n");
  Serial.print("\r");
}

Questo è ciò che manda arduino uno al seriale del mega dove gira il programma che vi ho fatto vedere in precedenza.
E' corretto mandare i terminatori così in modo che poi il programma li interpreti come fine riga?

#include <SPI.h>
#include <Ethernet2.h>
#include <RCSwitch.h>
#include "DHT.h"
#include <stdio.h>
#define DHTTYPE DHT22
#define DHTPIN 5
RCSwitch mySwitch = RCSwitch();
DHT dht(DHTPIN, DHTTYPE);
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
IPAddress ip(192, 168, 1, 106);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);
EthernetServer server(80);
//Sensori
char dato[255];
char d;
byte conta = 0;
const int value = mySwitch.getReceivedValue();
String readString; //stringhe
boolean ledon1 = false;
boolean ledon2 = false;
boolean ledon3 = false;
boolean ledon4 = false;
boolean ledon5 = false;
void setup() {
  Serial.begin(9600);
  Serial1.begin(9600);
  dht.begin();
  Ethernet.begin(mac, ip);
  mySwitch.enableTransmit(31);
  mySwitch.enableReceive(0);
}
void loop() {
  if (Serial1.available()) {
    while (Serial1.available())
    {
      d  = Serial1.read();
      Serial.write(d);
      if ( d != '\n' ) {
        if ( d != '\r' ) {
          dato[conta] = d;
          conta++;
        }
      }
    } 
  }

Li dovrebbe ricevere quì giusto?

gergio:
Questo è ciò che manda arduino uno al seriale del mega dove gira il programma che vi ho fatto vedere in precedenza.
E' corretto mandare i terminatori così in modo che poi il programma li interpreti come fine riga?

Beh, intanto perché ti servono due terminatori se l'output lo interpreta un programma? Te ne basta anche uno solo, ad esempio solo \n, ma potrebbe anche essere un qualsiasi altro carattere (es. "|"), purché non possa mai comparire nei caratteri che compongono i dati. Se vuoi mandare un solo carattere specifico, ad esempio solo Line Feed \n, puoi usare la Serial.write() specificando il carattere:
Serial.write('\n');

Ma diciamo che se va bene avere la coppia di caratteri \r \n, le ultime due righe funzionano ma puoi sostituirle con un semplice Serial.println(); che fa la stessa cosa ossia manda la coppia \r (carattere ASCII 13 ossia CR) e \n (ASCII 10 ossia LF).

Li dovrebbe ricevere quì giusto?

Chiarito quindi il discorso dei terminatori, la parte di codice che hai mostrato non funzionerebbe comunque perché non hai messo le due variabili (una dove accumuli i byte che stai ricevendo, l'altra dove c'è l'intera linea appena ricevuta, che usi poi per visualizzare i dati) e soprattutto non hai messo il reset di "conta" che quindi aumenta indefinitamente.

Prova a fare queste modifiche (che poi sono quelle che ti ho scritto nel precedente post, se lo hai letto) e poi posta il nuovo codice.