Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur le langage C !

Modérateur : Jérémy

WIFI3-Click ESP8266 sur Clicker2 18F87J50
paulfjujo
Avatar de l’utilisateur
Maître
Maître
Messages : 3261
Âge : 75
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#11 Message par paulfjujo » dim. 22 mai 2016 20:34

bonsoir,


J'ai finalement trouvé mon bug sur la detection de "no change"
suite commande AT+CWMODE=3 ...
je commence à bien saisir le fonctionnement de la State Machine ...
je posterais bientot le code avec le maximum d' "explicages ".

Par contre ce n'est toujours pas la fiablité attendue..
decrochement de la page web
suite à retours de message du genre :
"link not"
"wrong syntax"
"busy inet ..."

En cliquant sur "ACTUALISER" d ela page web, celle ci se reactive à nouveau, et est rafraichie.

oops c'est pas gagné !
il doit y avoir un systeme de synchronisme qui m'echappe .
Les exemples trouvés sur le web sont trop simplistes .. :furieux:

je m'aide ,mais le ciel ne m'aide pas .. on m'aurait menti !

exmple de dialogue
[*]20:08:58.468> Envoi data -> pageWeb:
20:08:58.468> GET /
20:08:58.468> buf=1219
20:08:58.531> AT+CIPSEND=0,1219
20:08:58.531>
> <html><meta http-equiv="Content-Type"content="text/html; charset=iso-8859-1"><meta http-equiv="refresh"
content="10;url=http://192.168.0.103"><head><title>test ESP8266 serveur</title></head><body bgcolor="#FFFFFF"><h2
align="center"><font size="6" color="#0066FF"> Test Wifi3 avec clicker2 PIC18F87J50</font></h2><form action=""
method="get" name="paulo "><table width="200" border="2" align="center" cellpadding="2" cellspacing="3"><tr><td
colspan=3 bgcolor=#000000><marquee behavior=alternate direction=left scrollamount=10><font color=#00FF33>
Paulfjujo.free.fr </font></marquee></td></tr><td width="200">Led 1</td><td bgcolor=#FF0000><center><input name="Led1"
width="200" type="submit" value="D4on"/></center></td><td bgcolor=#00FF00><center><input name="Led1" width="200"
type="submit" value="D4off"/></center></td></tr> <tr> <td width="200">Led 2</td><td bgcolor=#FF0000><center><input
name="Led2" width="200" type="submit" value="E4on"/></center></td><td bgcolor=#00FF00><center><input name="Led2"
width="200" type="submit" value="E4off"/></center></td></tr><tr><td width="200">Volt </td><td colspan=2>2.91
V</td></tr><tr><td 20:08:59.218> width="200">Count</td><td colspan=2>65524 </td></tr></table></form></body></html>
20:08:59.281>
20:08:59.281> SEND OK
20:09:00.218> AT+CIPCLOSE=0
20:09:00.218>
20:09:00.281> Link
20:09:00.281>
20:09:00.281> +IPD,1,335:GET /favicon.ico HTTP/1.1
20:09:00.281> Host: 192.168.0.103
20:09:00.281> Connection: keep-alive
20:09:00.359> User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/44.0.2403.155 Safari/537.36
20:09:00.359> Accept: */*
20:09:00.359> Referer: http://192.168.0.103/
20:09:00.406> Accept-Encoding: gzip, deflate, sdch
20:09:00.406> Accept-Language: fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4
20:09:00.406>
20:09:00.406>
20:09:00.406> OK
20:09:00.484> EA1 = 2.91 Volts
20:09:00.484> Counts = 65525
20:09:00.484>
20:09:00.484> OK
20:09:08.468>
20:09:08.468> ID=
20:09:08.593> Envoi data -> pageWeb:
20:09:08.593> GET /favicon.ico
20:09:08.593> buf=1219
20:09:08.593> AT+CIPSEND=0,1219
20:09:08.593>
20:09:08.593> link is not
<html><meta http-equiv="Content-Type"content="text/html; charset=iso-8859-1"><meta http-equiv="refresh"
content="10;url=http://192.168.0.103"><head><title>test ESP8266 serveur</title></head><body bgcolor="#FFFFFF"><h2
align="center"><font size="6" color="#0066FF"> Test Wifi3 avec clicker2 PIC18F87J50</font></h2><form action=""
method="get" name="paulo "><table width="200" border="2" align="center" cellpadding="2" cellspacing="3"><tr><td
colspan=3 bgcolor=#000000><marquee behavior=alternate direction=left scrollamount=10><font color=#00FF33>
Paulfjujo.free.fr </font></marquee></td></tr><td width="200">Led 1</td><td bgcolor=#FF0000><center><input name="Led1"
width="200" type="submit" value="D4on"/></center></td><td bgcolor=#00FF00><center><input name="Led1" width="200"
type="submit" value="D4off"/></center></td></tr> <tr> <td width="200">Led 2</td><td bgcolor=#FF0000><center><input
name="Led2" width="200" type="submit" value="E4on"/></center></td><td bgcolor=#00FF00><center><input name="Led2"
width="200" type="submit" value="E4off"/></center></td></tr><tr><td width="200">Volt 20:09:09.343> </td><td
colspan=2>2.91 V</td></tr><tr><td width="200">Count</td><td colspan=2>65525 </td></tr></table></form></body></html>
20:09:09.343>
20:09:09.343> wrong syntax
20:09:09.343>
20:09:09.343> ERROR
20:09:10.218> Link
Aide toi, le ciel ou FantasPic t'aidera

WIFI3-Click ESP8266 sur Clicker2 18F87J50
Jérémy
Administrateur du site
Administrateur du site
Messages : 2750
Âge : 46
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#12 Message par Jérémy » dim. 22 mai 2016 20:39

Je m'attendais à quelque chose de plus simple. J'espère avoir très vite affaire à cette petite bete, mais si tu as du mal, je pense que j'ai pas fini de ramer. Lol

En tout cas,c'est du bon boulot
C'est en faisant des erreurs, que l'on apprend le mieux !!!

WIFI3-Click ESP8266 sur Clicker2 18F87J50
sylvain54
Avatar de l’utilisateur
Amateur
Amateur
Messages : 194
Âge : 53
Enregistré en : août 2015
Localisation : Dans l'est de la France

#13 Message par sylvain54 » lun. 23 mai 2016 09:14

Salut,

la seule erreur que j'ai de temps en temps (quand j'upload trop vite mes datas) c'est ''busy inet'' . Mais de mon coté, je ne surcharge pas l'ESP d'une page web étant donné qu'elle est gérée par mon NAS. Peut être que tu lui en demandes de trop :?: :?:

++

WIFI3-Click ESP8266 sur Clicker2 18F87J50
paulfjujo
Avatar de l’utilisateur
Maître
Maître
Messages : 3261
Âge : 75
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#14 Message par paulfjujo » lun. 23 mai 2016 18:52

bonjour,

Je ne m'attendais pas à recevoir autant d'info..
depuis que j'ai rajouté l'echo sur terminal du retour ESP8266 ..
l'utilisation de la "state machine" filtrant enormement les reponses possiibles.

Peut être que tu lui en demandes de trop


En fait c'est là que je ne sais pas trop ou sont les limites de cette bestiole ?
la boucle du MCU PIC tourne à 7,5 secondes (via timer0 interrupt)
le rafraichissement de la page web est initialisé sur 10 secondesss

Code : Tout sélectionner

<meta http-equiv="refresh" content="10;


dans ce cas on est asynchrone entre MCU et page web

je me demande s'il ne faut pas que je cale la boucle MCU
sur la reception specifique de

Code : Tout sélectionner

+IPD,1,335:GET /favicon.ico HTTP/1.1

qui correspondrait au refresh .. si je ne me trompe pas ?

As-tu un avis la-dessus ?

En attendant, je vais tester cela ..
rajout du test etat "favicon" dans la state machine
pour envoyer la mise à jour page web 1 ou 2 secondes apres.
A suivre...

Attention!! En ramant à deux, on devrait avancer plus vite ,non ?
Aide toi, le ciel ou FantasPic t'aidera

WIFI3-Click ESP8266 sur Clicker2 18F87J50
sylvain54
Avatar de l’utilisateur
Amateur
Amateur
Messages : 194
Âge : 53
Enregistré en : août 2015
Localisation : Dans l'est de la France

#15 Message par sylvain54 » lun. 23 mai 2016 22:12

Bonsoir Paul,

Pour le moment, je ne t'ai pas trop aider je trouve :sad:

As tu quelques éléments supplémentaires à me communiquer pour que je puisse mettre en œuvre mon ESP dans une configuration similaire à la tienne?

Pour la favicon, je n'ai pas d'idée sur la chose (la favicon, c'est l'icône qui est à droite de ton adresse sous joomla normalement. Je ne sais pas si on peut caler un rafraichissement dessus)

L'idéal serait de ne rafraîchir ta page uniquement si quelque chose a changé pour ne pas surcharger la bête.

A ++

WIFI3-Click ESP8266 sur Clicker2 18F87J50
paulfjujo
Avatar de l’utilisateur
Maître
Maître
Messages : 3261
Âge : 75
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#16 Message par paulfjujo » mar. 24 mai 2016 10:30

bonjour,


sylvain54 a écrit :..
As tu quelques éléments supplémentaires à me communiquer pour que je puisse mettre en œuvre mon ESP dans une configuration similaire à la tienne?


voila la plus rescente version de mon projet
18F87J50_ESP8266_server_160523.zip



Machine d'etat (state machine) , un des points critique du programme
l'interrupt sur reception d'un char (RX UART2) lance la state machine
qui agit en fonction de ce contenu. ... à développer.

Code : Tout sélectionner



// state machine  for Reading the data from UART in the interuppt routine
void esp8266_read_message()
{
    char esp_tmp;
    esp_tmp = UART_Rd_Ptr();    // Get received byte
    // echo sur terminal
    TXREG1=esp_tmp;
    // Process reception through state machine
    // words "OK" ,"ready","ERROR","FAIL","no change","+IPD" ,"CLOSED"
    switch (esp_state)
    {
      case 0: {
                esp_response = -1;                   // Clear response
                if (esp_tmp == 'O') //  // We have 'O', it could be "OK"
                  esp_state = 1;   // Expecting 'K'

                else if (esp_tmp == 'E') // // We have 'E', it could be "ERROR"
                  esp_state = 10;   // Expecting 'R'

                else if (esp_tmp == 'r') // // We have 'r', it could be "ready"
                  esp_state = 20;  // Expecting 'e'

                else if(esp_tmp == 'F') //// We have 'F', it could be "FAIL"
                  esp_state = 30;  // Expecting 'A'
         
            
// rajout No change
            // 19:11:18.078> Step 2  Setting Station & AP mode =3.  AT+CWMODE=3
            //19:11:18.078>
            // 19:11:19.078> no change

                 else if(esp_tmp == 'n') //// We have 'n', it could be "no change"
                  esp_state = 40;  // Expecting 'o'

               else if (esp_tmp == '+') // // We have '+', it could be "+IPD"
                  esp_state = 100;  // Expecting 'I'
                  
             
//  else if(esp_tmp=='>')      // caractere pour permettre l'envoi de la page Web
             //     {
             //      esp_response=ESP_SUP;
             //      esp_state =0;
             //      }
                    
                break
;
              }

      case 1: {
                if (esp_tmp == 'K') // We have 'K', it could be "OK"
                {
                  esp_response = ESP_OK;// We have "OK" response
                  esp_state = 2;// Expecting CR+LF
                }
                else
                  esp_state 
= 0;  // reset operation
                break;
              }

      case 10: {
                if (esp_tmp == 'R') // We have 'R', it could be "ERROR"
                  esp_state = 11;
                else
                  esp_state 
= 0;
                break;
               }

      case 11: {
                if (esp_tmp == 'R') // We have 'R', it could be "ERROR"
                  esp_state = 12;
                else
                  esp_state 
= 0;
                break;
              }

      case 12: {
                if (esp_tmp == 'O') // We have 'O', it could be "ERROR"
                  esp_state = 13;
                else
                  esp_state 
= 0;
                break;
              }

      case 13: {
                if (esp_tmp == 'R') // We have 'R', it could be "ERROR"
                {
                  esp_response = ESP_ERROR;             // ERROR
                  esp_state = 2;
                }
                else
                  esp_state 
= 0;
                break;
               }

      case 20: {
                if (esp_tmp == 'e') // We have 'e', it could be "ready"
                  esp_state = 21;
                else
                  esp_state 
= 0;
                break;
              }

      case 21: {
                if (esp_tmp == 'a')// We have 'a', it could be "ready"
                  esp_state = 22;
                else
                  esp_state 
= 0;
                break;
               }

      case 22: {
                if (esp_tmp == 'd')// We have 'd', it could be "ready"
                  esp_state = 23;
                else
                  esp_state 
= 0;
                break;
               }


      case 23: {
                if (esp_tmp == 'y') // We have 'y', it could be "ready"
                  {
                  esp_response = ESP_READY;              // READY
                  esp_state = 2;
                 }
                else
                  esp_state 
= 0;
                break;
               }
     
      case 30
: {
                if (esp_tmp == 'A') // // We have 'A', it could be "FAIL"
                  esp_state = 31;
                else
                  esp_state 
= 0;
                break;
               }

      case 31: {
                if (esp_tmp == 'I')
                  esp_state = 32;
                else
                  esp_state 
= 0;
                break;
              }

      case 32: {
                if (esp_tmp == 'L') // We have 'L', it could be "FAIL"
                {
                  esp_response = ESP_FAIL;              // FAIL
                  esp_state = 2;
                }
                else
                  esp_state 
= 0;
                break;
              }

        // it could be "no change"
        
          case 40
: {
                if (esp_tmp == 'o') // We have 'o', it could be "no change"
                  esp_state = 41;
                else
                  esp_state 
= 0;
                break;
               }

          case 41: {
                if (esp_tmp == ' ')
                  esp_state = 42;
                else
                  esp_state 
= 0;
                break;
              }
          case 42: {
                if (esp_tmp == 'c')
                  esp_state = 43;
                else
                  esp_state 
= 0;
                break;
              }
           case 43: {
                if (esp_tmp == 'h')
                  esp_state = 44;
                else
                  esp_state 
= 0;
                break;
              }
           case 44: {
                if (esp_tmp == 'a')
                  esp_state = 45;
                else
                  esp_state 
= 0;
                break;
              }
            case 45: {
                if (esp_tmp == 'n')
                  esp_state = 46;
                else
                  esp_state 
= 0;
                break;
              }
            case 46: {
                if (esp_tmp == 'g')
                  esp_state = 47;
                else
                  esp_state 
= 0;
                break;
              }
          case 47: {
                if (esp_tmp == 'e')
                 {
                  esp_response = ESP_no_change;
                  esp_state = 2;
                  }
                   else
                  esp_state 
= 0;
                break;
              }

      // ----   traitement reponse à commamde via page Web ---------------
      case 100 : {   // We have 'I', it could be "+IPD"

                  if(esp_tmp == 'I')esp_state = 101;

                  else esp_state = 0;
                  break;
                }

      case 101 : {  // We have 'P', it could be "+IPD"
                  if(esp_tmp == 'P')esp_state = 102;

                  else esp_state = 0;
                  break;
                }
      case 102 : {  // We have 'D', it could be "+IPD"
                  if(esp_tmp == 'D')esp_state = 103;

                  else esp_state = 0;
                  break;
                }
      case 103 : {  // wait to read id the first
                  if(esp_tmp == ',' )
                   {
                    esp_state=104;
                   }

                  else esp_state=0;
                  break;
                }
      case 104 : {  // read id .
                   if(esp_tmp>='0' && esp_tmp<='5')
                    {
                     esp8266_id=esp_tmp-'0';
                     esp_state=105;
                    }
                  else esp_state=0;
                  break;
                }

       case 105 : {
       
            
           
// on s'attend à recevoir t une commande de LED1 ou LED2 , ON ou OFF 
           // +IPD,2,435:GET /?Led1=D4on HTTP/1.1
            // mais AUSSI  d'autres messages !!!
            // +IPD,2,435:GET / HTTP/1.1
            // +IPD,1,335:GET /favicon.ico HTTP/1.1
            // donc ...  partie à developper davantage, à ameliorer 
   
                  if
(esp_tmp !=':' )     // attente du :  avant le GET
                   {
                    esp_state=105;

                   }

                  else
                    
{
                    // :GET /?dev1=D4on HTTP/1.1
                     // le : permet de definir l'origine 0 de la table
                     esp_i=0;
                     esp8266_received_data[0]=0; // reset esp8266_received_data for store new data
                     esp_DataReady_received=0;  // reset flag for compelete received data
                     esp_state=106;

                    }
                  break;
                }

      case 106 : { 
                  
// isolation reponse apres l'apparition du :
                  //:GET /?dev1=D4on HTTP/1.1
                  // 1234567890123456
                  // attente de la fin du GET , soit le H de HTTP
                  // ... à ameliorer 
                  if(esp_tmp !='H'  ) // wait until read 'H' from word "HTTP"
                   {
                    esp_i++;  // on se place de suite apres le :
                    if(esp_i>esp8266_rec_max)   // 16 cars
                      {
                        esp_i=esp8266_rec_max;
                       }
                     else
                     
{
                      // tant qu'on ne rencontre pas le H de HTTP   et Nb <16
                      // on continue à stoker les caracteres suivants
                       esp8266_received_data[esp_i-1] = esp_tmp;
                     }
                   }
                  else
                      
{ 

                         
// on a rencontré le H
                         //  donc commande reçu completement
                         // on retrouve alors dans la table
                         //  GET /?Led1=D4on
                         // ou autre chose !!!
                         esp_DataReady_received=1;
                         // on met un Zero fin de string à la place du H
                         // sinon on part en cacahuète pour la suite du traitement!
                         esp8266_received_data[esp_i ]=0; //cloture du string
                         // la pertie utile se trouvera 6 carcateres plus loin que le debut
                         // GET /?Led1=D4on
                         // 123456
                         //       Led1=D4on
                         esp_state=0;
                      }
                   break;
                 }
      case 2: {

                if (esp_tmp == 13)esp_state = 3;
                else  esp_state = 0;
                break;
              }

      case 3: {
                if (esp_tmp == 10)
                {
                  esp_response_rcvd = 1;
                  esp_responseID = esp_response;
                 esp_state = 0;
                }
               else esp_state = 0;
                break;
             }

      default: {
                esp_state = 0;
                break;
              }
    }
 }
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Aide toi, le ciel ou FantasPic t'aidera

WIFI3-Click ESP8266 sur Clicker2 18F87J50
sylvain54
Avatar de l’utilisateur
Amateur
Amateur
Messages : 194
Âge : 53
Enregistré en : août 2015
Localisation : Dans l'est de la France

#17 Message par sylvain54 » mar. 24 mai 2016 15:12

Bonjour Paul,

Ok, je vais mettre ça en place et voir ce que cela donne. Je fais bien de prendre un PIC18F45K22 de mon côté, il a deux uart, cela me fera moins de travail de portage.

A ++


Retourner vers « Langage C »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 7 invités