Allarme PIR Arduino su Pagina Web

Salve a tutti,
è la prima volta che scrivo su questo forum. Sto, in questi giorni, dilettandomi con i PIR su Arduino per fare un allarme con sensori di movimento. I sensori li ho collegati su un Arduino Uno e via RF400Mhz inviano lo stato (1/0) ad un Arduino Mega sul quale è collegato un Ethernet Shield con una pagina web accessibile. Il problema è il seguente:
Ho scritto il codice su Arduino Mega per la ricezione dello stato dei sensori (1 o 0) e funziona, il problema è che non riesco a far visualizzare lo stato di ENTRAMBI i sensori sulla pagina web, ma me ne visualizza uno solo. Vi allego il codice prima di Arduino Mega e poi della pagina web sperando che qualcuno di voi mi possa dare una mano. Molte grazie a chiunque mi aiuti, cordiali saluti! Daniele :slight_smile:

/* CODICE ARDUINO MEGA*/

//*** WIRING SECTION *** //

//DATA DEL RX SU PIN 3

//*** Inclusione Librerie *** //

#include <VirtualWire.h>
#include <SPI.h>
#include <Ethernet.h>
#include <SD.h>


// *** Dichiarazione variabili e costanti *** //

byte message[VW_MAX_MESSAGE_LEN]; // a buffer to store the incoming messages
byte messageLength = VW_MAX_MESSAGE_LEN; // the size of the message
//#define cicalino A0
#define REQ_BUF_SZ   100
char HTTP_req[REQ_BUF_SZ] = {0}; // buffered HTTP request stored as null terminated string
char req_index = 0;              // index into HTTP_req buffer

// **** IMPOSTAZIONI ETHERNET ****

byte mac[] = { 0x00,0xAA,0xBB,0xCC,0xDE,0x02 };
byte subnet[] = { 255, 255, 255, 0 };
byte gateway[] = { 192, 168, 50, 1 };
IPAddress ip(  192,168,50,106   ); // IP address, may need to change depending on network
EthernetServer server(80);  // create a server at port 80
File webFile;


void setup()
{
 // disable Ethernet chip
 pinMode(10, OUTPUT);
 digitalWrite(10, HIGH);
     Ethernet.begin(mac, ip, subnet, gateway);
     Serial.begin(9600);
     server.begin();
     Serial.println("Initializing SD card...");
     
     if (!SD.begin(4)) {
     Serial.println("ERROR - SD card initialization failed!");
     return;    // init failed
     }
     
     Serial.println("SUCCESS - SD card initialized.");
     // check for index.html file
 
     if (!SD.exists("index.htm")) {
     Serial.println("ERROR - Can't find index.htm file!");
     return;  // can't find index file
     }
     Serial.println("SUCCESS - Found index.htm file.");
     //pinMode(cicalino, OUTPUT);
     vw_set_rx_pin(3);
     
     Serial.println("Dispositivo Pronto");
     // Initialize the IO and ISR
     vw_setup(4000); // Bits per sec
     vw_rx_start(); // Start the receiver
}

void loop()
{
 EthernetClient client = server.available();  // try to get client

 if (client) {  // got client?
     boolean currentLineIsBlank = true;
     while (client.connected()) {
         if (client.available()) {   // client data available to read
             char c = client.read(); // read 1 byte (character) from client
             // buffer first part of HTTP request in HTTP_req array (string)
             // leave last element in array as 0 to null terminate string (REQ_BUF_SZ - 1)
             if (req_index < (REQ_BUF_SZ - 1)) {
                 HTTP_req[req_index] = c;          // save HTTP request character
                 req_index++;
             }
             // last line of client request is blank and ends with \n
             // respond to client only after last line received
             if (c == '\n' && currentLineIsBlank) {
                 // send a standard http response header
                 client.println("HTTP/1.1 200 OK");
                 // remainder of header follows below, depending on if
                 // web page or XML page is requested
                 // Ajax request - send XML file
                 if (StrContains(HTTP_req, "ajax_inputs")) {
                     // send rest of HTTP header
                     client.println("Content-Type: text/xml");
                     client.println("Connection: keep-alive");
                     client.println();
                     // send XML file containing input states
                     XML_response(client);
                     
                 }
                 else {  // web page request
                     // send rest of HTTP header
                     client.println("Content-Type: text/html");
                     client.println("Connection: keep-alive");
                     client.println();
                     // send web page
                     webFile = SD.open("index.htm");        // open web page file
                     if (webFile) {
                         while(webFile.available()) {
                             client.write(webFile.read()); // send web page to client
                         }
                         webFile.close();
                     }
                 }
                 // display received HTTP request on serial port
                 Serial.print(HTTP_req);
                 // reset buffer index and all buffer elements to 0
                 req_index = 0;
                 StrClear(HTTP_req, REQ_BUF_SZ);
                 break;
             }
             // every line of text received from the client ends with \r\n
             if (c == '\n') {
                 // last character on line of received text
                 // starting new line with next character read
                 currentLineIsBlank = true;
             } 
             else if (c != '\r') {
                 // a text character was received from client
                 currentLineIsBlank = false;
             }
         } // end if (client.available())
     } // end while (client.connected())
     delay(1);      // give the web browser time to receive the data
     client.stop(); // close the connection
 } // end if (client)
}

// send the XML file with switch statuses and analog value
void XML_response(EthernetClient cl){

 uint8_t buf[VW_MAX_MESSAGE_LEN];
 uint8_t buflen = VW_MAX_MESSAGE_LEN;
 
 if (vw_get_message(buf, &buflen)) {
 
 cl.print("<?xml version = \"1.0\" ?>");
 cl.print("<inputs>");
 
 cl.print("<pir1>");
 
 if (buf[0]=='1') {
   Serial.println("ALLARME RICEVUTO DA PIR 1"); 
     cl.print("In Allarme 1");
 }
 
 else if(buf[0]=='2')  {
    Serial.println("PIR 1 TUTTO OK"); 
     cl.print("Non in Allarme");
 }
 
 cl.print("</pir1>");
 cl.print("<pir3>");
 
 if (buf[0]=='3') {
   Serial.println("ALLARME RICEVUTO DA PIR 3"); 
     cl.print("In Allarme 3");
 }
 
 else if(buf[0]=='4')  {
    Serial.println("PIR 3 TUTTO OK"); 
     cl.print("Non in Allarme");
 }
 
 cl.print("</pir3>");
 cl.print("</inputs>");
 }
}



// sets every element of str to 0 (clears array)
void StrClear(char *str, char length)
{
 for (int i = 0; i < length; i++) {
     str[i] = 0;
 }
}

// searches for the string sfind in the string str
// returns 1 if string found
// returns 0 if string not found
char StrContains(char *str, char *sfind)
{
 char found = 0;
 char index = 0;
 char len;

 len = strlen(str);
 
 if (strlen(sfind) > len) {
     return 0;
 }
 while (index < len) {
     if (str[index] == sfind[found]) {
         found++;
         if (strlen(sfind) == found) {
             return 1;
         }
     }
     else {
         found = 0;
     }
     index++;
 }

 return 0;
}

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento se non lo hai già fatto: Regolamento
Qui una serie di link utili, non inerenti al tuo problema:

Il codice devi racchiuderlo nei tag code, vedi sezione 7 del regolamento, spiega bene come fare ( pulsante </> ).
Altrimenti parte del codice può essere visualizzata male o mancare perchè interpretato come attributo del testo stesso.
Infatti dalla strClear il codice diventa in italico e si è perso un pezzo.

... REGOLAMENTO, punto 13, paragrafo "Non fate up!".

Sono passate si e no 5 ore ...

Guglielmo