Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
6 Pagine con password
#1
Il progetto è nato come impianto domotico per la casa, miuPanel  è stato utilissimo per creare delle interfacce web facili e veloci, anche se in un primo momento l’HCTML  può far paura, una volta presa la mano tutto diventa più facile. 
Il Panel Builder ha semplificato di molto il tutto. Nello sketch che presento ho tolto tutti i comandi personalizzati per il mio impianto, lasciando delle righe di esempio che possono essere completate a piacimento inserendo degli oggetti. 
Alcune di queste pagine sono state fatte direttamente in HCTML, alcune con l'ausilio del Panel Builder. 
Una volta collegati al pannello si presenta la videata di passord, (pag0) in questo caso ho lasciato tutta la parte dello sketch, pigiando i pulsanti "page + " si passa alla pagina successiva, per ritornare "page - " per uscire "exit".      
Lo sketch è stato testato su Arduino Mega, e tartassato a dovere, sta a voi completarlo inserendo qualunque oggetto tra quelli disponibili.  Buon divertimento.
Code:
 
/*
#  miuPanel
 #  Schetch  per Arduino MEGA (Funziona anche con Arduino UNO, basta cambiare la Serial)
  # 6 Pagine con ingresso a PASSWORD  
   #  Sostituite "DATI per DEMO" con le vostre variabili
    # Aggiungete per ogni pagina gli oggetti che vi servono  
     # Password =  1234
      # Il "COUNTER per AUTO LOGOFF" serve quando una pagina viene lasciata aperta per molto tempo es.
         perdita connessione rimanda automaticamente al login. Variare "alt1" per cambiare il tempo.
        # Se gli oggetti sono delle variabili togliere la ( e la F dopo "Serial1.print(F"
       === BUON DIVERTIMENTO ===       */
       

String Msg1 = "";
int pag1 = 0, ban1a = 0, ban1b = 0, ban1c = 0, ban1d = 0, ban1e = 0, ban1f = 0, ban1g = 0,
   a1 = 0, pa1 = 0, pa2 = 0, pa3 = 0, pa4 = 0, oo1 = 0, alt1 = 0, vv4 = 0;
float tt1 = 0, hh1 = 0, vv2 = 0;


     //  Variabili per DEMO
int aa = 0, bb = 0, cc = 0, dd = 0, ee = 0, ff = 0, gg = 0, ii = 0, ll = 0, mm = 0;


void setup() {

  Serial.begin(115200);
   Serial1.begin(57600);
    pinMode(13, OUTPUT);
}



void loop() {



                                       //   PAGINA 0 - Password di ingresso

    Msg1 = "";                                  

  if(pag1 == 0) {   // passwd

      if((pag1 == 0)&&(ban1a == 0)) {


  Serial1.print(F("$P:D!FFFg14w;S1*.*16%25,18r15!FFF,AAAh5,000,15;K2:{%20^I1.?%25;_T:?;}$#00F{%100,y10^!DDDT#00F*28#000:uPanel CONTROL;}/18T*25#0FF:Please insert password;//"));
   Serial1.println("{%40,y5^!DDDT#00F*20#000*10T: ;MA:;}//15{#0FF%80^-p20r20g2|B1s1:1;|B2s1:2;|B3s1:3;_|B4s1:4;|B5s1:5;|B6s1:6;_|B7s1:7;|B8s1:8;|B9s1:9;_|BAs1:*;|B0s1:0;|BBs1:#;}");
         ban1a = 1;  //  Serve per non stampare ad ogni ciclo il pannello ed evita sfarfallamenti
    }    
    if(pag1 == 0) {  
       
 delay(8);

    while ((a1 = Serial1.read()) > '\n') Msg1 += (char) a1;
     if (a1 == '\n')  {
                       
      if(Msg1.equals("#B1P")) { pa1 = 1; oo1 = oo1 +1; }  //  Prima cifra ok= 1
       if(Msg1.equals("#B2P")) { pa2 = 1;  oo1 = oo1 +1; }  // Seconda cifra ok = 2
        if(Msg1.equals("#B3P")) { pa3 = 1;  oo1 = oo1 +1; }   // Terza cifra ok = 3
         if(Msg1.equals("#B4P")) { pa4 = 1;  oo1 = oo1 +1; }    // Quarta cifra ok = 4
          if(Msg1.equals("#B5P")) { pa1 = 0; pa2 = 0; pa3 = 0; pa4 = 0; oo1 = oo1 +1; }  // Cifra errata
           if(Msg1.equals("#B6P")) { pa1 = 0; pa2 = 0; pa3 = 0; pa4 = 0; oo1 = oo1 +1; }  // Cifra errata
            if(Msg1.equals("#B7P")) { pa1 = 0; pa2 = 0; pa3 = 0; pa4 = 0; oo1 = oo1 +1; }  // Cifra errata
             if(Msg1.equals("#B8P")) { pa1 = 0; pa2 = 0; pa3 = 0; pa4 = 0; oo1 = oo1 +1; }  // Cifra errata
              if(Msg1.equals("#B9P")) { pa1 = 0; pa2 = 0; pa3 = 0; pa4 = 0; oo1 = oo1 +1; }  // Cifra errata
               if(Msg1.equals("#B0P")) { pa1 = 0; pa2 = 0; pa3 = 0; pa4 = 0; oo1 = oo1 +1; }  // Cifra errata
                if(Msg1.equals("#BAP")) { pa1 = 0; pa2 = 0; pa3 = 0; pa4 = 0; oo1 = oo1 +1; }  // Cifra errata
                 if(Msg1.equals("#BBP")) { pa1 = 0; pa2 = 0; pa3 = 0; pa4 = 0; oo1 = 0; }  //  # per Cancellazione

             
       if(oo1 == 0) {Serial1.print(F("#MA"));  Serial1.println(F(" ")); }
        if(oo1 == 1) {Serial1.print(F("#MA"));  Serial1.println(F(" O")); }
         if(oo1 == 2) {Serial1.print(F("#MA"));  Serial1.println(F(" O O")); }
          if(oo1 == 3) {Serial1.print(F("#MA"));  Serial1.println(F(" O O O")); }
           if(oo1 == 4) {Serial1.print(F("#MA"));  Serial1.println(F(" O O O O")); }
            if(oo1 == 5) {Serial1.print(F("#MA"));  Serial1.println(F(" O O O O O")); }
             if(oo1 == 6) {Serial1.print(F("#MA"));  Serial1.println(F(" O O O O O O")); }
              if(oo1 == 7) {Serial1.print(F("#MA"));  Serial1.println(F(" O O O O O O O")); }
               if(oo1 == 8) {Serial1.print(F("#MA"));  Serial1.println(F(" O O O O O O O O")); }
                if(oo1 == 9) {Serial1.print(F("#MA"));  Serial1.println(F(" O O O O O O O O O")); }
                 if(oo1 == 10){Serial1.print(F("#MA"));  Serial1.println(F(" ")); pa1 = 0; pa2 = 0; pa3 = 0; pa4 = 0; oo1 = 0; }
                 if((pa1 == 1) && (pa2 == 1) && (pa3 == 1) && (pa4 == 1) && (oo1 == 4)) { pag1 = 1; ban1b = 1; pa1 = 0; pa2 = 0; pa3 = 0; pa4 = 0; oo1 = 0;}
                  // Se tutte le condizioni dell' if sono soddisfatte manda alla pagina 1                  
      }            
    }
            Msg1 = "";
  }
           

                           //   PAGINA 1

    if((pag1 == 1)&&(ban1b == 1)) {
     
    Serial1.print(F("$P:D!FFFg14w;S1*.*16%25,18r15!FFF,AAAh5,000,15;K2:{%20^I1.?%25;_T:?;}$#FFF{%100,16r16^!DDDT#00F*30#000:PAGINA 1;}"));
     Serial1.print(F("{{%35,16r16^!888B1%36,36r80!0F0:OnOff;|*10/LA2NG:0:LED 1;}|"));
      Serial1.print(F("{%35,16r16^!888B3%36,36r80!0F0:OnOff;|*10/LB2N:0:LED 2;}_"));
    //   Serial1.print("{^%45|B1%99!F44,822r20#FFF*20#000:BUTTON1;}_");   //  Button 1  "#B1P"
     //   Serial1.print("{^%45|B3%99!F44,822r20#FFF*20#000:BUTTON3;}_");   //  Button 3  "#B1P"
      //   Serial1.print(F("  Inserire oggetto        "));
       //   Serial1.print(F("  Inserire oggetto        "));
        //   Serial1.print(F("  Inserire oggetto        "));
         //   Serial1.print(F("  Inserire oggetto        "));
          //   Serial1.print(F("  Inserire oggetto        "));
           //   Serial1.print(F("  Inserire oggetto        "));
            //   Serial1.print(F("  Inserire oggetto        "));            
                 Serial1.print("{^%45|B8%99!F44,822r20#FFF*20#000:PAGE+;}_");  // Button page +
                  Serial1.println("{^%45|BG%99!F44,822r20#FFF*20#000:EXIT;}}");  // Button exit

         ban1b = 0;  //  Serve per non stampare ad ogni ciclo il pannello ed evita sfarfallamenti
    }
   
    if(pag1 == 1) {
     
 delay(8);


    while ((a1 = Serial1.read()) > '\n') Msg1 += (char) a1;     //   RICEZIONE COMANDI
     if (a1 == '\n')  {

               if (Msg1.substring(0,4).equals("#BGP")) { pag1 = 0; ban1a = 0;}  // Exit / Passwd    # rimanda al login
                 if (Msg1.substring(0,4).equals("#B8P")) { pag1 = 2; ban1c = 1; alt1 = 0;}  // Page +  #  incrementa di 1 il numero pagina    
     }
         
    //    if (Msg1.equals("#B1P")) {   inserire il vostro comando   }    
     //    if (Msg1.equals("#B3P")) {  inserire il vostro comando    }    


                           //  ACCENSIONE LED sul pannello

              aa = 1; bb = 0;   //  Dati per DEMO
                 
                  if(aa == 1) { Serial1.println(F("#LA1")); }
                   if(aa == 0) { Serial1.println(F("#LA0")); }
                    if(bb == 1) { Serial1.println(F("#LB1")); }
                     if(bb == 0) { Serial1.println(F("#LB0")); }


                                //      COUNTER per auto LOGOFF   rimanda alla pagina 0                                        
                                         alt1 = alt1 + 1;
                                          if(alt1 == 10000) { pag1 = 0; ban1a = 0; alt1 = 0; }          
                     
                       Msg1 = "";
    }
                       

           if((pag1 == 2)&&(ban1c == 1)) {      //    PAGINA 2    
 
 Serial1.print(F("$P:D!FFFg10w;S1*.*10%10,10r10!FFF,AAAh5,000,10;K2:{%10^I1.?%10;_T:?;}$#FFF{%85,10r10^!DDDT#00F*20#000:PAGINA 2;}"));
  Serial1.print(F("{/{%100,1!88F,228}/}"));
   Serial1.print(F("{{D!228;|T*15;|*13^/LA2N:0:LedA;|*13^/LB2N:0:Led2;|*13^/LC2N:0:LedC;|*13^/LE2N:0:LedE;}"));
  //  Serial1.print(F("         "));
   //  Serial1.print(F("         "));
    //  Serial1.print(F("         "));
       Serial1.print(F("{/{%100,1!88F,228}/}"));
        Serial1.print("{^%99|BE%99!F44,822r20#FFF*25#000:PAGE +;}_");
         Serial1.println("{^%99|BB%99!F44,822r20#FFF*25#000:PAGE -;}_{^%99|BH%99!F44,822r20#FFF*25#000:EXIT;}}");       //  EXIT - LOGOFF
 
   ban1c = 0;  //  Serve per non stampare ad ogni ciclo il pannello ed evita sfarfallamenti
   
      }
           
   delay(8);  

   if(pag1 == 2) {
                     
     while ((a1 = Serial1.read()) > '\n') Msg1 += (char) a1;
      if (a1 == '\n')  {

         if (Msg1.substring(0,4).equals("#BEP")) { pag1 = 3; ban1d = 1; alt1 = 0;}  // Page +
          if (Msg1.substring(0,4).equals("#BBP")) { pag1 = 1; ban1b = 1; alt1 = 0;}    // Page -
           if (Msg1.substring(0,4).equals("#BHP")) { pag1 = 0; ban1a = 0;}  // Exit / Passwd
   }

                         // ACCENSIONE LED sul pannello

         cc = 1; dd = 2; ee = 3; ff = 1;   //  DATI per DEMO              
   
             if(cc == 1) { Serial1.println(F("#LA1")); }  
              if(cc == 2) { Serial1.println(F("#LA3")); }  
               if(cc == 3) { Serial1.println(F("#LA2")); }
                if(dd == 1) { Serial1.println(F("#LB1")); }  
                 if(dd == 2) { Serial1.println(F("#LB3")); }  
                  if(dd == 3) { Serial1.println(F("#LB2")); }
                   if(ee == 1) { Serial1.println(F("#LC1")); }  
                    if(ee == 2) { Serial1.println(F("#LC3")); }  
                     if(ee == 3) { Serial1.println(F("#LC2")); }
                      if(ff == 1) { Serial1.println(F("#LE1")); }  
                       if(ff == 2) { Serial1.println(F("#LE3")); }  
                        if(ff == 3) { Serial1.println(F("#LE2")); }

                         
                                   alt1 = alt1 + 1;                 //  COUNTER per AUTO LOGOFF
                                    if(alt1 == 10000) { pag1 = 0; ban1a = 0; alt1 = 0; }
                       

   Msg1 = "";
   
 }

   if((pag1 == 3)&&(ban1d == 1)) {   // PAGINA 3

          Serial1.print(F("$P:D!FFFg10w;S1*.*10%10,10r10!FFF,AAAh5,000,10;K2:{%10^I1.?%10;_T:?;}$#FFF{%85,10r10^!DDDT#00F*20#000:PAGINA 3;}"));
           Serial1.print(F("{{D!228;|T*15;|*13^/LA2N:0:LedA;|*13^/LB2N:0:LedB;|*13^/LC2N:0:LedC;|*13^/LD2N:0:LedD;}_"));
            Serial1.print(F("{D!228;|T*15;_T*15:;|T*15;}_"));
            //  Serial1.print(F("         "));
             //  Serial1.print(F("         "));
             //  Serial1.print(F("         "));
               Serial1.print("{^%99|B1%99!F44,822r20#FFF*23#000:PAGE+;}_");  //  PAGE +
                Serial1.println("{^%99|B3%99!F44,822r20#FFF*23#000:PAGE-;}_{^%99|B4%99!F44,822r20#FFF*23#000:EXIT;}");  // PAGE - & EXIT
             
              ban1d = 0; //  Serve per non stampare ad ogni ciclo il pannello ed evita sfarfallamenti
             
   }
   delay(8);

   if(pag1 == 3) {

     
      while ((a1 = Serial1.read()) > '\n') Msg1 += (char) a1;
      if (a1 == '\n')  {

           if (Msg1.substring(0,4).equals("#B1P")) { pag1 = 4; ban1e = 1; alt1 = 0;} // Page +
            if (Msg1.substring(0,4).equals("#B3P")) { pag1 = 2; ban1c = 1; alt1 = 0;}  // Page -
             if (Msg1.substring(0,4).equals("#B4P")) { pag1 = 0; ban1a = 0;}             // Exit / Passwd

      }

                              //  ACCENSIONE LED sul pannello

          gg = 1; ii = 2; ll = 3; mm = 1;    
                             
             if(gg == 1) { Serial1.println(F("#LA1")); }  
              if(gg == 2) { Serial1.println(F("#LA3")); }  
               if(gg == 3) { Serial1.println(F("#LA2")); }
                if(ii == 1) { Serial1.println(F("#LB1")); }  
                 if(ii == 2) { Serial1.println(F("#LB3")); }  
                  if(ii == 3) { Serial1.println(F("#LB2")); }
                   if(ll == 1) { Serial1.println(F("#LC1")); }    
                    if(ll == 2) { Serial1.println(F("#LC3")); }    
                     if(ll == 3) { Serial1.println(F("#LC2")); }
                      if(mm == 1) { Serial1.println(F("#LD1")); }  
                       if(mm == 2) { Serial1.println(F("#LD3")); }  
                        if(mm == 3) { Serial1.println(F("#LD2")); }


                                   alt1 = alt1 + 1;       //  COUNTER AUTO LOGOFF
                                    if(alt1 == 10000) { pag1 = 0; ban1a = 0; alt1 = 0; }
                       
      Msg1 = "";
   }

     if((pag1 == 4)&&(ban1e == 1)) {   // PAGINA 4

             Serial1.print(F("$P:D!FFFg14w;S1*.*16%25,18r15!FFF,AAAh5,000,15;K2:{%20^I1.?%25;_T:?;}$#FFF{%100,16r16^!DDDT#00F*28#000:PAGINA 4;}"));
              Serial1.print(F("{/{%100,1!88F,228}/}"));
               Serial1.print("{{*16T:--Esterno- T: ;M1:;|*10T:--H : ;M2:;}_");
                Serial1.print(F("{/{%100,1!88F,228}/}"));
        //       Serial1.print("            ");
         //       Serial1.print("            ");
          //       Serial1.print("            ");
           //       Serial1.print("            ");
            //       Serial1.print("            ");
                    Serial1.print("{^%99|B4%99!F44,822r20#FFF*24#000:PAGE+;}_");
                     Serial1.println("{^%99|B2%99!F44,822r20#FFF*24#000:PAGE-;}_{^%99|B3%99!F44,822r20#FFF*24#000:EXIT;}}");

                 ban1e = 0;  //  Serve per non stampare ad ogni ciclo il pannello ed evita sfarfallamenti
                 
     }
     
    delay(8);

      if(pag1 == 4) {

                                  //  STAMPA dati

                      tt1 = 22;  hh1 = 75;  //  Creazione dati per DEMO

                    Serial1.print("#M1"); Serial1.print(tt1); Serial1.println(" C");  // Esterno
                     Serial1.print("#M2"); Serial1.print(hh1); Serial1.println(" %"); // Esterno


          while ((a1 = Serial1.read()) > '\n') Msg1 += (char) a1;
           if (a1 == '\n')  {

         if (Msg1.substring(0,4).equals("#B3P")) { pag1 = 0; ban1a = 0;}            // Exit / Passwd
          if (Msg1.substring(0,4).equals("#B4P")) { pag1 = 5; ban1f = 1; alt1 = 0;}  // Page +
           if (Msg1.substring(0,4).equals("#B2P")) { pag1 = 3; ban1d = 1; alt1 = 0;}  // Page -
      }

                   alt1 = alt1 + 1;              //  COUNTER per AUTO LOGOFF
                    if(alt1 == 10000) { pag1 = 0; ban1a = 0; alt1 = 0; }
                       
      Msg1 = "";
             
      }


     
     if((pag1 == 5)&&(ban1f == 1)) {   // PAGINA 5

       Serial1.print(F("$P:{{D!FFFg14w;S1*.*16%25,18r15!FFF,AAAh5,000,15;K2:{%20^I1.?%25;_T:?;}$#FFF{%100,16r16^!DDDT#00F*20#000:PAGINA 5;}/"));
    //    Serial1.print("             ");
     //    Serial1.print("             ");
      //    Serial1.print("             ");
           Serial1.print("{z1@29,y22a0,0,0%,,0.7,0.7^A3G%60:5.18:5.19:180::-607.500:3.375;_tnM1d0,-14*15#F00:000;_T*12d0,-43:Volt rete;}");    
            Serial1.print("{z1@10,y74B3#000!F20%80,12*20r20:PAGE +;}");         //  PAGE +
             Serial1.println("{z1@10,y82B2#000!F20%80,12*20r20:PAGE -;}{z1@10,y90B4#000!F20%80,12*20r20:EXIT;}");   //  PAGE _  &  EXIT
             
           ban1f = 0;   //  Serve per non stampare ad ogni ciclo il pannello ed evita sfarfallamenti        
     }

     delay(8);

            if(pag1 == 5) {

                 vv4 = 223;  //  Dato per DEMO

                  Serial1.print("#M1"); Serial1.println(vv4); // Serial1.println(" V");   // Tensione rete
                  Serial1.print("#A3:"); Serial1.println(vv4);


                  while ((a1 = Serial1.read()) > '\n') Msg1 += (char) a1;
                   if (a1 == '\n')  {


        if (Msg1.substring(0,4).equals("#B4P")) { pag1 = 0; ban1a = 0; }           // Exit / Passwd
         if (Msg1.substring(0,4).equals("#B3P")) { pag1 = 6; ban1g = 1; alt1 = 0;}  // Page +
          if (Msg1.substring(0,4).equals("#B2P")) { pag1 = 4; ban1e = 1; alt1 = 0;}  // Page -

             }

                         alt1 = alt1 + 1;         //  COUNTER per AUTO LOGOFF
                          if(alt1 == 10000) { pag1 = 0; ban1a = 0; alt1 = 0; }

           Msg1 = "";
        }
           

    if((pag1 == 6)&&(ban1g == 1)) {   // PAGINA 6

       Serial1.print(F("$P:{{D!FFFg14w;S1*.*16%25,18r15!FFF,AAAh5,000,15;K2:{%20^I1.?%25;_T:?;}$#FFF{%100,16r16^!DDDT#00F*20#000:PAGINA 6;}/"));
        Serial1.print("{{z1@29,y22a0,0,0%,,0.7,0.7^A0G%60:5.18:5.19:18::-337.500:33.750;_tnM0d0,-14*15#F00:000;_T*12d0,-43:V Batteria;}");
     //    Serial1.print("{z1@52,y12a0,0,0%,,0.7,0.7^A1G%60:5.18:5.19:0::-0.000:27.000;_tnM1d0,-14*15#F00:0;_T*12d0,-43:A Consumo;}");
      //    Serial1.print("{z1@5,y42a0,0,0%,,0.7,0.7^A2G%60:5.18:5.19:0::-0.000:27.000;_tnM2d0,-14*15#F00:0;_T*12d0,-43:Amp CHG;}");
       //    Serial1.print("{z1@52,y42a0,0,0%,,0.7,0.7^A3G%60:5.18:5.19:0::-0.000:27.000;_tnM3d0,-14*15#F00:0;_T*12d0,-43:Amp FTV;}");
            Serial1.println("{z1@10,y78B2#000!F20%80,12*20r20:PAGE -;}{z1@10,y88B4#000!F20%80,12*20r20:EXIT;}}");  //  PAGE -  &  EXIT

           ban1g = 0; //  Serve per non stampare ad ogni ciclo il pannello ed evita sfarfallamenti
           
     }

     delay(8);

            if(pag1 == 6) {

                  vv2 = 13.8;   //  DATI per DEMO

                 Serial1.print("#M0"); Serial1.println(vv2); // Serial1.println(" V");   // Batt Volt
                  Serial1.print("#A0:"); Serial1.println(vv2);


                  while ((a1 = Serial1.read()) > '\n') Msg1 += (char) a1;
                   if (a1 == '\n')  {


        if (Msg1.substring(0,4).equals("#B4P")) { pag1 = 0; ban1a = 0; }           // Exit / Passwd
         if (Msg1.substring(0,4).equals("#B2P")) { pag1 = 5; ban1f = 1; alt1 = 0;}  // Page -
     }

                         alt1 = alt1 + 1;    //  COUNTER per AUTO LOGOFF
                          if(alt1 == 10000) { pag1 = 0; ban1a = 0; alt1 = 0; }

           Msg1 = "";
       
         }    
         
       }
                   


Attached Files
.pdf   Pagine.pdf (Size: 1.52 MB / Downloads: 19)
Reply


Messages In This Thread
6 Pagine con password - by moonjack - 04-09-2018, 12:42 PM

Forum Jump:


Users browsing this thread: 1 Guest(s)