Forums

Full Version: Ready ti receive panel definition....
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2
mi capita spesso che ottengo il messaggio in oggetto :
Ready to receive panel definition
Noto che se premo il pulsante di reset il pannello appare ma se perdo la connessione poi non sono a casa per il reset.
Allora ho provato a inserire un contatore e ogni X minuti rifaccio un sendpanel.... ma pare non funziona
Da cosa può dipendere?
Grazie
Mic
(11-14-2017, 08:23 PM)Dok Wrote: [ -> ]http://www.miupanel.com/panel-recovery/?lang=it

Si avevo letto questo e avevo gestito il messaggio $RES..... ma succede sempre
Per questo avevo messo anche un contatore e dopo X minuti richiamavo una sendpanel
puoi postare il codice?
(11-14-2017, 08:38 PM)migreco Wrote: [ -> ]Si avevo letto questo e avevo gestito il messaggio $RES..... ma succede sempre
Per questo avevo messo anche un contatore e dopo X minuti richiamavo una sendpanel

quasi sicuramente hai un delay che non ti permette di ricevere il messaggio $RES correttamente.
Pubblica lo sketch che hai usato con la funzione $RES e lo controlliamo.
(11-14-2017, 09:06 PM)Enzo147 Wrote: [ -> ]quasi sicuramente hai un delay che non ti permette di ricevere il messaggio $RES correttamente.
Pubblica lo sketch che hai usato con la funzione $RES e lo controlliamo.

Code:
/**********************************************************/
int x=1;
int c=0;
int i=0;
int NotificaPush=1;
int ScritturaDB=1;
int d1=0;
int d2=0;

int contatto=7;
String Msg = "";
int lettura=0;
int letturaprecedente=1;

String Orari[4]="";
String OrarioAppo="";
int orariOK=0;

String anno;
String mese;
String giorno;
String ora;
String minuto;
String secondo;
int counter=0;


/*********************************************************/
void setup()
{
 
 pinMode(contatto,INPUT);
 Serial.begin(57600);       // Inizializzazione della porta seriale (57600 è la velocità di comunicazione
 Serial.println("");
 Serial.println("$PING 200");
 
 Serial.print("$P:D!228;/{-r30!228,114*12{T:Porta Aperta;|L1G:0;_T:Porta Chiusa;|L2R:0;}|{^*8L35:0;&L45:0;_T:Aperture;}}//");
 Serial.print("{-r30!228,114*10{M1#F00*14:Nessuna Apertura ;=_^M2#*8:;_^M3#*8:;_^M4#*8:;_M5^#*8:;_M6^#*8:;}}//");
 Serial.println("{-r30!228,114*10{T:Notifica Push;W11:1;/=/T:Scrittura DB;W21:1;/=_^B1%35,10r10#FFF:Reset;}}");

 //Serial.print("$P:D!228;/{-r30!228,114*12{T:Porta Aperta;|L1G:0;_T:Porta Chiusa;|L2R:0;}|{^*8L35:0;&L45:0;_T:Aperture;}}//{-r30!228,114*10{M1#F00*14:Nessuna Apertura ;=_^M2#*8:;_^M3#*8:;_^M4#*8:;_M5^#*8:;_M6^#*8:;}}//{-r30!228,114*10{T:Notifica Push;W11:1;/=/T:Scrittura DB;W21:1;/=_^B1%35,10r10#FFF:Reset;}}");
 
}

void loop() {

 while ((c = Serial.read()) > '\n' ) Msg += (char) c; // leggi i caratteri via seriale e componi il messaggio, fino alla nuova linea '\n'
 if (c == '\n')
 {
   Serial.print("Messaggio");
   Serial.println(Msg);
 delay(50);
 if (Msg=="#W11") { //attiva notifica Push
   NotificaPush=1;
   Serial.print("PUSH");Serial.println(NotificaPush);
 }
 delay(50);
 if (Msg=="#W10") { //disattiva notifica Push
   NotificaPush=0;
   Serial.print("PUSH");Serial.println(NotificaPush);
 }
 delay(50);
 if (Msg=="#W21") { //attiva scrittura DB
   ScritturaDB=1;
   Serial.print("DB");Serial.println(ScritturaDB);
 }
 delay(50);
 if (Msg=="#W20") {  //disattiva scrittura DB
   ScritturaDB=0;
   Serial.print("DB");Serial.println(ScritturaDB);
 }
 delay(50);
 if (Msg.substring(0, 7) == "#:DATE:")
   {
     if (orariOK==1) {
       
     Serial.println(Msg.substring(21, 51));
     
     anno = Msg.substring(21, 25);
     mese = Msg.substring(26, 28);
     giorno = Msg.substring(29, 31);
     ora = Msg.substring(32, 34);
     minuto = Msg.substring(35, 37);
     secondo = Msg.substring(38, 40);
     
     Serial.println(anno);
     Serial.println(mese);
     Serial.println(giorno);
     Serial.println(ora);
     Serial.println(minuto);
     Serial.println(secondo);

     Serial.print("#M1"); Serial.println("Orario Aperture");    

     OrarioAppo="";
     OrarioAppo+= giorno;
     OrarioAppo+= "/";
     OrarioAppo+= mese;
     OrarioAppo+= "/";
     OrarioAppo+= anno;
     OrarioAppo+= " ";
     OrarioAppo+= ora;
     OrarioAppo+= ":";
     OrarioAppo+= minuto;
     OrarioAppo+= ":";
     OrarioAppo+= secondo;

     Orari[4]=Orari[3];
     Orari[3]=Orari[2];
     Orari[2]=Orari[1];
     Orari[1]=Orari[0];
     Orari[0]=OrarioAppo;
     
     Serial.print("#M2"); Serial.println(Orari[0]);
     Serial.print("#M3"); Serial.println(Orari[1]);
     Serial.print("#M4"); Serial.println(Orari[2]);
     Serial.print("#M5"); Serial.println(Orari[3]);
     Serial.print("#M6"); Serial.println(Orari[4]);
     orariOK=0;
     }
   }

  if (Msg.equals("$RES")){ // WiFi Module unwanted RESET >>>>>>> send panel again
     SendPanel();
   }

  if (Msg.equals("#B1P")){ //  RESET >>>>>>> send panel again
     x=1;
     Orari[1]="";
     Orari[2]="";
     Orari[3]="";
     Orari[4]="";
     Orari[0]="";
     lettura=0;
     letturaprecedente=1;
     NotificaPush=1;
     ScritturaDB=1;
     SendPanel();
   }

  Msg = "";

}
 lettura = digitalRead (contatto);
 if (lettura == HIGH) {
   Serial.println("#L20");
   Serial.println("#L11");
   if (letturaprecedente!=lettura) {
       d1=(x/10)%10;
       d2=x%10;
       Serial.println(d1);
       Serial.println(d2);
       Serial.println(x);
       Serial.print("#L3"); Serial.println(d1, DEC);
       Serial.print("#L4"); Serial.println(d2, DEC);
       Serial.println("#C3:S:_da(1);;");
       orariOK=1;
       delay(500);
       Serial.println("");
       
       Serial.print("PUSH");Serial.println(NotificaPush);

       if (NotificaPush==1) {
       Serial.print("$CLOUD SEND:PUSH:Porta Aperta: ");Serial.print(x); Serial.println(" volte");
       delay(500);
       }

       Serial.print("DB");Serial.println(ScritturaDB);
       
       if (ScritturaDB==1) {
       Serial.println("\n$TCP1:CA:xxxxxxxxx.org:80:GET /aperture.php?azione=miupanel HTTP/1.1\\r\\nHost: xxxxxxxx\\r\\n\\r\\n");
       delay(500);
       }

       
       x=x+1;
       letturaprecedente = lettura;
       }
 }
 else {
   Serial.println("#L10");
   Serial.println("#L21");
   delay(500);
   letturaprecedente=lettura;
   }
   counter=counter+1;
   if (counter==10000) {
     SendPanelrefresh();
     counter=0;
    }
 }
 
 //--------------------------------------------------------

void SendPanel(void)
{
 Serial.print("$P:D!228;/{-r30!228,114*12{T:Porta Aperta;|L1G:0;_T:Porta Chiusa;|L2R:0;}|{^*8L35:0;&L45:0;_T:Aperture;}}//");
 Serial.print("{-r30!228,114*10{M1#F00*14:Nessuna Apertura ;=_^M2#*8:;_^M3#*8:;_^M4#*8:;_M5^#*8:;_M6^#*8:;}}//");
 Serial.println("{-r30!228,114*10{T:Notifica Push;W11:1;/=/T:Scrittura DB;W21:1;/=_^B1%35,10r10#FFF:Reset;}}");

}

//--------------------------------------------------------

void SendPanelrefresh(void)
{
 Serial.print("$P:D!228;/{-r30!228,114*12{T:Porta Aperta;|L1G:0;_T:Porta Chiusa;|L2R:0;}|{^*8L35:0;&L45:0;_T:Aperture;}}//");
 Serial.print("{-r30!228,114*10{M1#F00*14:Nessuna Apertura ;=_^M2#*8:;_^M3#*8:;_^M4#*8:;_M5^#*8:;_M6^#*8:;}}//");
 Serial.println("{-r30!228,114*10{T:Notifica Push;W11:1;/=/T:Scrittura DB;W21:1;/=_^B1%35,10r10#FFF:Reset;}}");
     
     Serial.print("quanto vale x=");Serial.println(x);
     if (x>1)   {
       Serial.print("#M1"); Serial.println("Orario Aperture");
     }
     Serial.print("#M2"); Serial.println(Orari[0]);
     Serial.print("#M3"); Serial.println(Orari[1]);
     Serial.print("#M4"); Serial.println(Orari[2]);
     Serial.print("#M5"); Serial.println(Orari[3]);
     Serial.print("#M6"); Serial.println(Orari[4]);
     Serial.print("#L3"); Serial.println(d1, DEC);
     Serial.print("#L4"); Serial.println(d2, DEC);
     if (lettura == HIGH) {
         Serial.println("#L20");
         Serial.println("#L11");
         }
     else {
       Serial.println("#L10");
       Serial.println("#L21");
     }

}
eccolo....
(11-14-2017, 09:15 PM)migreco Wrote: [ -> ]
Code:
/**********************************************************/
int x=1;
int c=0;
int i=0;
int NotificaPush=1;
int ScritturaDB=1;
int d1=0;
int d2=0;

int contatto=7;
String Msg = "";
int lettura=0;
int letturaprecedente=1;

String Orari[4]="";
String OrarioAppo="";
int orariOK=0;

String anno;
String mese;
String giorno;
String ora;
String minuto;
String secondo;
int counter=0;


/*********************************************************/
void setup()
{
 
 pinMode(contatto,INPUT);
 Serial.begin(57600);       // Inizializzazione della porta seriale (57600 è la velocità di comunicazione
 Serial.println("");
 Serial.println("$PING 200");
 
 Serial.print("$P:D!228;/{-r30!228,114*12{T:Porta Aperta;|L1G:0;_T:Porta Chiusa;|L2R:0;}|{^*8L35:0;&L45:0;_T:Aperture;}}//");
 Serial.print("{-r30!228,114*10{M1#F00*14:Nessuna Apertura ;=_^M2#*8:;_^M3#*8:;_^M4#*8:;_M5^#*8:;_M6^#*8:;}}//");
 Serial.println("{-r30!228,114*10{T:Notifica Push;W11:1;/=/T:Scrittura DB;W21:1;/=_^B1%35,10r10#FFF:Reset;}}");

 //Serial.print("$P:D!228;/{-r30!228,114*12{T:Porta Aperta;|L1G:0;_T:Porta Chiusa;|L2R:0;}|{^*8L35:0;&L45:0;_T:Aperture;}}//{-r30!228,114*10{M1#F00*14:Nessuna Apertura ;=_^M2#*8:;_^M3#*8:;_^M4#*8:;_M5^#*8:;_M6^#*8:;}}//{-r30!228,114*10{T:Notifica Push;W11:1;/=/T:Scrittura DB;W21:1;/=_^B1%35,10r10#FFF:Reset;}}");
 
}

void loop() {

 while ((c = Serial.read()) > '\n' ) Msg += (char) c; // leggi i caratteri via seriale e componi il messaggio, fino alla nuova linea '\n'
 if (c == '\n')
 {
   Serial.print("Messaggio");
   Serial.println(Msg);
 delay(50);
 if (Msg=="#W11") { //attiva notifica Push
   NotificaPush=1;
   Serial.print("PUSH");Serial.println(NotificaPush);
 }
 delay(50);
 if (Msg=="#W10") { //disattiva notifica Push
   NotificaPush=0;
   Serial.print("PUSH");Serial.println(NotificaPush);
 }
 delay(50);
 if (Msg=="#W21") { //attiva scrittura DB
   ScritturaDB=1;
   Serial.print("DB");Serial.println(ScritturaDB);
 }
 delay(50);
 if (Msg=="#W20") {  //disattiva scrittura DB
   ScritturaDB=0;
   Serial.print("DB");Serial.println(ScritturaDB);
 }
 delay(50);
 if (Msg.substring(0, 7) == "#:DATE:")
   {
     if (orariOK==1) {
       
     Serial.println(Msg.substring(21, 51));
     
     anno = Msg.substring(21, 25);
     mese = Msg.substring(26, 28);
     giorno = Msg.substring(29, 31);
     ora = Msg.substring(32, 34);
     minuto = Msg.substring(35, 37);
     secondo = Msg.substring(38, 40);
     
     Serial.println(anno);
     Serial.println(mese);
     Serial.println(giorno);
     Serial.println(ora);
     Serial.println(minuto);
     Serial.println(secondo);

     Serial.print("#M1"); Serial.println("Orario Aperture");    

     OrarioAppo="";
     OrarioAppo+= giorno;
     OrarioAppo+= "/";
     OrarioAppo+= mese;
     OrarioAppo+= "/";
     OrarioAppo+= anno;
     OrarioAppo+= " ";
     OrarioAppo+= ora;
     OrarioAppo+= ":";
     OrarioAppo+= minuto;
     OrarioAppo+= ":";
     OrarioAppo+= secondo;

     Orari[4]=Orari[3];
     Orari[3]=Orari[2];
     Orari[2]=Orari[1];
     Orari[1]=Orari[0];
     Orari[0]=OrarioAppo;
     
     Serial.print("#M2"); Serial.println(Orari[0]);
     Serial.print("#M3"); Serial.println(Orari[1]);
     Serial.print("#M4"); Serial.println(Orari[2]);
     Serial.print("#M5"); Serial.println(Orari[3]);
     Serial.print("#M6"); Serial.println(Orari[4]);
     orariOK=0;
     }
   }

  if (Msg.equals("$RES")){ // WiFi Module unwanted RESET >>>>>>> send panel again
     SendPanel();
   }

  if (Msg.equals("#B1P")){ //  RESET >>>>>>> send panel again
     x=1;
     Orari[1]="";
     Orari[2]="";
     Orari[3]="";
     Orari[4]="";
     Orari[0]="";
     lettura=0;
     letturaprecedente=1;
     NotificaPush=1;
     ScritturaDB=1;
     SendPanel();
   }

  Msg = "";

}
 lettura = digitalRead (contatto);
 if (lettura == HIGH) {
   Serial.println("#L20");
   Serial.println("#L11");
   if (letturaprecedente!=lettura) {
       d1=(x/10)%10;
       d2=x%10;
       Serial.println(d1);
       Serial.println(d2);
       Serial.println(x);
       Serial.print("#L3"); Serial.println(d1, DEC);
       Serial.print("#L4"); Serial.println(d2, DEC);
       Serial.println("#C3:S:_da(1);;");
       orariOK=1;
       delay(500);
       Serial.println("");
       
       Serial.print("PUSH");Serial.println(NotificaPush);

       if (NotificaPush==1) {
       Serial.print("$CLOUD SEND:PUSH:Porta Aperta: ");Serial.print(x); Serial.println(" volte");
       delay(500);
       }

       Serial.print("DB");Serial.println(ScritturaDB);
       
       if (ScritturaDB==1) {
       Serial.println("\n$TCP1:CA:xxxxxxxxx.org:80:GET /aperture.php?azione=miupanel HTTP/1.1\\r\\nHost: xxxxxxxx\\r\\n\\r\\n");
       delay(500);
       }

       
       x=x+1;
       letturaprecedente = lettura;
       }
 }
 else {
   Serial.println("#L10");
   Serial.println("#L21");
   delay(500);
   letturaprecedente=lettura;
   }
   counter=counter+1;
   if (counter==10000) {
     SendPanelrefresh();
     counter=0;
    }
 }
 
 //--------------------------------------------------------

void SendPanel(void)
{
 Serial.print("$P:D!228;/{-r30!228,114*12{T:Porta Aperta;|L1G:0;_T:Porta Chiusa;|L2R:0;}|{^*8L35:0;&L45:0;_T:Aperture;}}//");
 Serial.print("{-r30!228,114*10{M1#F00*14:Nessuna Apertura ;=_^M2#*8:;_^M3#*8:;_^M4#*8:;_M5^#*8:;_M6^#*8:;}}//");
 Serial.println("{-r30!228,114*10{T:Notifica Push;W11:1;/=/T:Scrittura DB;W21:1;/=_^B1%35,10r10#FFF:Reset;}}");

}

//--------------------------------------------------------

void SendPanelrefresh(void)
{
 Serial.print("$P:D!228;/{-r30!228,114*12{T:Porta Aperta;|L1G:0;_T:Porta Chiusa;|L2R:0;}|{^*8L35:0;&L45:0;_T:Aperture;}}//");
 Serial.print("{-r30!228,114*10{M1#F00*14:Nessuna Apertura ;=_^M2#*8:;_^M3#*8:;_^M4#*8:;_M5^#*8:;_M6^#*8:;}}//");
 Serial.println("{-r30!228,114*10{T:Notifica Push;W11:1;/=/T:Scrittura DB;W21:1;/=_^B1%35,10r10#FFF:Reset;}}");
     
     Serial.print("quanto vale x=");Serial.println(x);
     if (x>1)   {
       Serial.print("#M1"); Serial.println("Orario Aperture");
     }
     Serial.print("#M2"); Serial.println(Orari[0]);
     Serial.print("#M3"); Serial.println(Orari[1]);
     Serial.print("#M4"); Serial.println(Orari[2]);
     Serial.print("#M5"); Serial.println(Orari[3]);
     Serial.print("#M6"); Serial.println(Orari[4]);
     Serial.print("#L3"); Serial.println(d1, DEC);
     Serial.print("#L4"); Serial.println(d2, DEC);
     if (lettura == HIGH) {
         Serial.println("#L20");
         Serial.println("#L11");
         }
     else {
       Serial.println("#L10");
       Serial.println("#L21");
     }

}
eccolo....
il primo errore è che non hai dichiarato il sendpanel nel setup adesso controllo il resto
(11-14-2017, 09:23 PM)Enzo147 Wrote: [ -> ]il primo errore è che non hai dichiarato il sendpanel nel setup adesso controllo il resto

Confused
ok corretto 
ma in compilazione non lo segnala?

e tolti quei delay di 50...
(11-14-2017, 09:32 PM)migreco Wrote: [ -> ]Confused
ok corretto 
ma in compilazione non lo segnala?

e tolti quei delay di 50...

rispondo prima alla domanda ma in compilazione non lo segnala:
non te lo segnala perchè in realtà nel tuo sketch hai creato la funzione sendpanel ,avendo quindi creato quella funzione, non c'è più bisogno che ricrei i serial print per costruire il tuo pannello, ma ti basterà semplicemente richiamare la funzione sendpanel.
Tornando al tuo problema, non sono tanto i delay a rallentare la tua seriale ma bensi' il fatto che fai stampare in continuazione nel loop i messaggi L10 L21 tenendo cosi' la seriale occupata e non avendo il tempo di captare il messaggio $RES .
Inoltre c'era più di un errore nello sketch mancava la dichiarazione int c; nel loop prima del while ((c = Serial.read()) e poi dopo if (lettura !=letturaprecedente) devi dichiarare subito letturaprecedente = lettura;
Ti allego lo sketch semicorretto in modo tale che aprendo il monitor seriale di arduino  puoi vedere che se scolleghi e riccoleghi il modulo, viene stampato il pannello correttamente e l'app lo riceve. 
A parer mio puoi benissimo evitare di crere la funzione che ogni tot minuti ti reinvia il pannello perchè la funzione $RES di miupanel viene inviata ad arduino in automatico al verificarsi di cali di tensione o quant'altro.
Adesso dovresti riuscire a fare le tue ultime correzzioni tranquillamente!!!
Buon lavoro e buona serata
Enzo
Code:
/**********************************************************/
int x=1;
int c=0;
int i=0;
int NotificaPush=1;
int ScritturaDB=1;
int d1=0;
int d2=0;

int contatto=7;
int lettura=0;
int letturaprecedente=0;//corretto

String Orari[4]="";
String OrarioAppo="";
int orariOK=0;

String anno;
String mese;
String giorno;
String ora;
String minuto;
String secondo;
int counter=0;


/*********************************************************/
void setup()
{
Serial.begin(57600);// Inizializzazione della porta seriale (57600 è la velocità di comunicazione
delay(3000);// Let uPanel start
Serial.println("$PING 200");
pinMode(contatto,INPUT);
SendPanel(); //avevi dimenticato di metterlo
}

String Msg; //corretto

void loop() {
int c;// avevi dimenticato di metterlo
while ((c = Serial.read()) > '\n' ) Msg += (char) c; // leggi i caratteri via seriale e componi il messaggio, fino alla nuova linea '\n'
if (c == '\n')
{
 // Serial.print("Messaggio");
 // Serial.println(Msg);
if (Msg.equals("$RES")){ // WiFi Module unwanted RESET >>>>>>> send panel again
    SendPanel();
  }
 
else if (Msg.equals("#W11")) { //attiva notifica Push
  NotificaPush=1;
  Serial.print("PUSH");Serial.println(NotificaPush);
}

else if (Msg.equals("#W10")) { //disattiva notifica Push
  NotificaPush=0;
  Serial.print("PUSH");Serial.println(NotificaPush);
}

else if (Msg.equals("#W21")) { //attiva scrittura DB
  ScritturaDB=1;
  Serial.print("DB");Serial.println(ScritturaDB);
}

else if (Msg.equals("#W20")) {  //disattiva scrittura DB
  ScritturaDB=0;
  Serial.print("DB");Serial.println(ScritturaDB);
}

else if (Msg.substring(0, 7) == "#:DATE:")
  {
    if (orariOK==1) {
     
    Serial.println(Msg.substring(21, 51));
   
    anno = Msg.substring(21, 25);
    mese = Msg.substring(26, 28);
    giorno = Msg.substring(29, 31);
    ora = Msg.substring(32, 34);
    minuto = Msg.substring(35, 37);
    secondo = Msg.substring(38, 40);
   
    Serial.println(anno);
    Serial.println(mese);
    Serial.println(giorno);
    Serial.println(ora);
    Serial.println(minuto);
    Serial.println(secondo);

    Serial.print("#M1"); Serial.println("Orario Aperture");    

    OrarioAppo="";
    OrarioAppo+= giorno;
    OrarioAppo+= "/";
    OrarioAppo+= mese;
    OrarioAppo+= "/";
    OrarioAppo+= anno;
    OrarioAppo+= " ";
    OrarioAppo+= ora;
    OrarioAppo+= ":";
    OrarioAppo+= minuto;
    OrarioAppo+= ":";
    OrarioAppo+= secondo;

    Orari[4]=Orari[3];
    Orari[3]=Orari[2];
    Orari[2]=Orari[1];
    Orari[1]=Orari[0];
    Orari[0]=OrarioAppo;
   
    Serial.print("#M2"); Serial.println(Orari[0]);
    Serial.print("#M3"); Serial.println(Orari[1]);
    Serial.print("#M4"); Serial.println(Orari[2]);
    Serial.print("#M5"); Serial.println(Orari[3]);
    Serial.print("#M6"); Serial.println(Orari[4]);
    orariOK=0;
    }
  }

 

else if (Msg.equals("#B1P")){ //  RESET >>>>>>> send panel again
    x=1;
    Orari[1]="";
    Orari[2]="";
    Orari[3]="";
    Orari[4]="";
    Orari[0]="";
    lettura=0;
    letturaprecedente=1;
    NotificaPush=1;
    ScritturaDB=1;
    SendPanel();
  }

 Msg = "";

}
lettura = digitalRead (contatto);
//if (lettura == HIGH) {
  //Serial.println("#L20");
  //Serial.println("#L11");
  if (lettura !=letturaprecedente) {
   letturaprecedente = lettura;// avevi dimenticato di inserirlo
      d1=(x/10)%10;
      d2=x%10;
      Serial.println(d1);
      Serial.println(d2);
      Serial.println(x);
      Serial.print("#L3"); Serial.println(d1, DEC);
      Serial.print("#L4"); Serial.println(d2, DEC);
      Serial.println("#C3:S:_da(1);;");
      orariOK=1;
      delay(500);
      Serial.println("");
     
      Serial.print("PUSH");Serial.println(NotificaPush);

      if (NotificaPush==1) {
      Serial.print("$CLOUD SEND:PUSH:Porta Aperta: ");Serial.print(x); Serial.println(" volte");
      delay(500);
      }

      Serial.print("DB");Serial.println(ScritturaDB);
     
      if (ScritturaDB==1) {
      Serial.println("\n$TCP1:CA:xxxxxxxxx.org:80:GET /aperture.php?azione=miupanel HTTP/1.1\\r\\nHost: xxxxxxxx\\r\\n\\r\\n");
      delay(500);
      }

     
      x=x+1;
      lettura = letturaprecedente;
      }
}
/* else  {
  //Serial.println("#L10");
  //Serial.println("#L21");
  delay(500);
  lettura=letturaprecedente;
  }
  counter=counter+1;
  if (counter==10000) {
    SendPanelrefresh();
    counter=0;
   }
}*/

//--------------------------------------------------------

void SendPanel(void)
{

Serial.print("$P:D!228;/{-r30!228,114*12{T:Porta Aperta;|L1G:0;_T:Porta Chiusa;|L2R:0;}|{^*8L35:0;&L45:0;_T:Aperture;}}//");
Serial.print("{-r30!228,114*10{M1#F00*14:Nessuna Apertura ;=_^M2#*8:;_^M3#*8:;_^M4#*8:;_M5^#*8:;_M6^#*8:;}}//");
Serial.println("{-r30!228,114*10{T:Notifica Push;W11:1;/=/T:Scrittura DB;W21:1;/=_^B1%35,10r10#FFF:Reset;}}");

}

//--------------------------------------------------------

void SendPanelrefresh(void)
{
 
Serial.print("$P:D!228;/{-r30!228,114*12{T:Porta Aperta;|L1G:0;_T:Porta Chiusa;|L2R:0;}|{^*8L35:0;&L45:0;_T:Aperture;}}//");
Serial.print("{-r30!228,114*10{M1#F00*14:Nessuna Apertura ;=_^M2#*8:;_^M3#*8:;_^M4#*8:;_M5^#*8:;_M6^#*8:;}}//");
Serial.println("{-r30!228,114*10{T:Notifica Push;W11:1;/=/T:Scrittura DB;W21:1;/=_^B1%35,10r10#FFF:Reset;}}");
   
    Serial.print("quanto vale x=");Serial.println(x);
    if (x>1)   {
      Serial.print("#M1"); Serial.println("Orario Aperture");
    }
    Serial.print("#M2"); Serial.println(Orari[0]);
    Serial.print("#M3"); Serial.println(Orari[1]);
    Serial.print("#M4"); Serial.println(Orari[2]);
    Serial.print("#M5"); Serial.println(Orari[3]);
    Serial.print("#M6"); Serial.println(Orari[4]);
    Serial.print("#L3"); Serial.println(d1, DEC);
    Serial.print("#L4"); Serial.println(d2, DEC);
    if (lettura == HIGH) {
        Serial.println("#L20");
        Serial.println("#L11");
        }
    else {
      Serial.println("#L10");
      Serial.println("#L21");
    }

}
(11-14-2017, 10:55 PM)O Enzo147 Wrote: [ -> ]rispondo prima alla domanda ma in compilazione non lo segnala:
non te lo segnala perchè in realtà nel tuo sketch hai creato la funzione sendpanel ,avendo quindi creato quella funzione, non c'è più bisogno che ricrei i serial print per costruire il tuo pannello, ma ti basterà semplicemente richiamare la funzione sendpanel.
Tornando al tuo problema, non sono tanto i delay a rallentare la tua seriale ma bensi' il fatto che fai stampare in continuazione nel loop i messaggi L10 L21 tenendo cosi' la seriale occupata e non avendo il tempo di captare il messaggio $RES .
Inoltre c'era più di un errore nello sketch mancava la dichiarazione int c; nel loop prima del while ((c = Serial.read()) e poi dopo if (lettura !=letturaprecedente) devi dichiarare subito letturaprecedente = lettura;
Ti allego lo sketch semicorretto in modo tale che aprendo il monitor seriale di arduino  puoi vedere che se scolleghi e riccoleghi il modulo, viene stampato il pannello correttamente e l'app lo riceve. 
A parer mio puoi benissimo evitare di crere la funzione che ogni tot minuti ti reinvia il pannello perchè la funzione $RES di miupanel viene inviata ad arduino in automatico al verificarsi di cali di tensione o quant'altro.
Adesso dovresti riuscire a fare le tue ultime correzzioni tranquillamente!!!
Buon lavoro e buona serata
Enzo
Code:
/**********************************************************/
int x=1;
int c=0;
int i=0;
int NotificaPush=1;
int ScritturaDB=1;
int d1=0;
int d2=0;

int contatto=7;
int lettura=0;
int letturaprecedente=0;//corretto

String Orari[4]="";
String OrarioAppo="";
int orariOK=0;

String anno;
String mese;
String giorno;
String ora;
String minuto;
String secondo;
int counter=0;


/*********************************************************/
void setup()
{
Serial.begin(57600);// Inizializzazione della porta seriale (57600 è la velocità di comunicazione
delay(3000);// Let uPanel start
Serial.println("$PING 200");
pinMode(contatto,INPUT);
SendPanel(); //avevi dimenticato di metterlo
}

String Msg; //corretto

void loop() {
int c;// avevi dimenticato di metterlo
while ((c = Serial.read()) > '\n' ) Msg += (char) c; // leggi i caratteri via seriale e componi il messaggio, fino alla nuova linea '\n'
if (c == '\n')
{
 // Serial.print("Messaggio");
 // Serial.println(Msg);
if (Msg.equals("$RES")){ // WiFi Module unwanted RESET >>>>>>> send panel again
    SendPanel();
  }
 
else if (Msg.equals("#W11")) { //attiva notifica Push
  NotificaPush=1;
  Serial.print("PUSH");Serial.println(NotificaPush);
}

else if (Msg.equals("#W10")) { //disattiva notifica Push
  NotificaPush=0;
  Serial.print("PUSH");Serial.println(NotificaPush);
}

else if (Msg.equals("#W21")) { //attiva scrittura DB
  ScritturaDB=1;
  Serial.print("DB");Serial.println(ScritturaDB);
}

else if (Msg.equals("#W20")) {  //disattiva scrittura DB
  ScritturaDB=0;
  Serial.print("DB");Serial.println(ScritturaDB);
}

else if (Msg.substring(0, 7) == "#:DATE:")
  {
    if (orariOK==1) {
     
    Serial.println(Msg.substring(21, 51));
   
    anno = Msg.substring(21, 25);
    mese = Msg.substring(26, 28);
    giorno = Msg.substring(29, 31);
    ora = Msg.substring(32, 34);
    minuto = Msg.substring(35, 37);
    secondo = Msg.substring(38, 40);
   
    Serial.println(anno);
    Serial.println(mese);
    Serial.println(giorno);
    Serial.println(ora);
    Serial.println(minuto);
    Serial.println(secondo);

    Serial.print("#M1"); Serial.println("Orario Aperture");    

    OrarioAppo="";
    OrarioAppo+= giorno;
    OrarioAppo+= "/";
    OrarioAppo+= mese;
    OrarioAppo+= "/";
    OrarioAppo+= anno;
    OrarioAppo+= " ";
    OrarioAppo+= ora;
    OrarioAppo+= ":";
    OrarioAppo+= minuto;
    OrarioAppo+= ":";
    OrarioAppo+= secondo;

    Orari[4]=Orari[3];
    Orari[3]=Orari[2];
    Orari[2]=Orari[1];
    Orari[1]=Orari[0];
    Orari[0]=OrarioAppo;
   
    Serial.print("#M2"); Serial.println(Orari[0]);
    Serial.print("#M3"); Serial.println(Orari[1]);
    Serial.print("#M4"); Serial.println(Orari[2]);
    Serial.print("#M5"); Serial.println(Orari[3]);
    Serial.print("#M6"); Serial.println(Orari[4]);
    orariOK=0;
    }
  }

 

else if (Msg.equals("#B1P")){ //  RESET >>>>>>> send panel again
    x=1;
    Orari[1]="";
    Orari[2]="";
    Orari[3]="";
    Orari[4]="";
    Orari[0]="";
    lettura=0;
    letturaprecedente=1;
    NotificaPush=1;
    ScritturaDB=1;
    SendPanel();
  }

 Msg = "";

}
lettura = digitalRead (contatto);
//if (lettura == HIGH) {
  //Serial.println("#L20");
  //Serial.println("#L11");
  if (lettura !=letturaprecedente) {
   letturaprecedente = lettura;// avevi dimenticato di inserirlo
      d1=(x/10)%10;
      d2=x%10;
      Serial.println(d1);
      Serial.println(d2);
      Serial.println(x);
      Serial.print("#L3"); Serial.println(d1, DEC);
      Serial.print("#L4"); Serial.println(d2, DEC);
      Serial.println("#C3:S:_da(1);;");
      orariOK=1;
      delay(500);
      Serial.println("");
     
      Serial.print("PUSH");Serial.println(NotificaPush);

      if (NotificaPush==1) {
      Serial.print("$CLOUD SEND:PUSH:Porta Aperta: ");Serial.print(x); Serial.println(" volte");
      delay(500);
      }

      Serial.print("DB");Serial.println(ScritturaDB);
     
      if (ScritturaDB==1) {
      Serial.println("\n$TCP1:CA:xxxxxxxxx.org:80:GET /aperture.php?azione=miupanel HTTP/1.1\\r\\nHost: xxxxxxxx\\r\\n\\r\\n");
      delay(500);
      }

     
      x=x+1;
      lettura = letturaprecedente;
      }
}
/* else  {
  //Serial.println("#L10");
  //Serial.println("#L21");
  delay(500);
  lettura=letturaprecedente;
  }
  counter=counter+1;
  if (counter==10000) {
    SendPanelrefresh();
    counter=0;
   }
}*/

//--------------------------------------------------------

void SendPanel(void)
{

Serial.print("$P:D!228;/{-r30!228,114*12{T:Porta Aperta;|L1G:0;_T:Porta Chiusa;|L2R:0;}|{^*8L35:0;&L45:0;_T:Aperture;}}//");
Serial.print("{-r30!228,114*10{M1#F00*14:Nessuna Apertura ;=_^M2#*8:;_^M3#*8:;_^M4#*8:;_M5^#*8:;_M6^#*8:;}}//");
Serial.println("{-r30!228,114*10{T:Notifica Push;W11:1;/=/T:Scrittura DB;W21:1;/=_^B1%35,10r10#FFF:Reset;}}");

}

//--------------------------------------------------------

void SendPanelrefresh(void)
{
 
Serial.print("$P:D!228;/{-r30!228,114*12{T:Porta Aperta;|L1G:0;_T:Porta Chiusa;|L2R:0;}|{^*8L35:0;&L45:0;_T:Aperture;}}//");
Serial.print("{-r30!228,114*10{M1#F00*14:Nessuna Apertura ;=_^M2#*8:;_^M3#*8:;_^M4#*8:;_M5^#*8:;_M6^#*8:;}}//");
Serial.println("{-r30!228,114*10{T:Notifica Push;W11:1;/=/T:Scrittura DB;W21:1;/=_^B1%35,10r10#FFF:Reset;}}");
   
    Serial.print("quanto vale x=");Serial.println(x);
    if (x>1)   {
      Serial.print("#M1"); Serial.println("Orario Aperture");
    }
    Serial.print("#M2"); Serial.println(Orari[0]);
    Serial.print("#M3"); Serial.println(Orari[1]);
    Serial.print("#M4"); Serial.println(Orari[2]);
    Serial.print("#M5"); Serial.println(Orari[3]);
    Serial.print("#M6"); Serial.println(Orari[4]);
    Serial.print("#L3"); Serial.println(d1, DEC);
    Serial.print("#L4"); Serial.println(d2, DEC);
    if (lettura == HIGH) {
        Serial.println("#L20");
        Serial.println("#L11");
        }
    else {
      Serial.println("#L10");
      Serial.println("#L21");
    }

}
Ok grazie infinite.... ti aggiorno
Mic
Pages: 1 2