ESP8266 - Application Android

Fichier attaché: 

Commentaires

Portrait de bacquy

Salut,

Encore une super vidéo.

Pour celles et ceux qui veulent en apprendre plus sur Python j'ai trouvé ce cours:

https://openclassrooms.com/courses/apprenez-a-programmer-en-python

Merci Alex pour tes vidéos.

Portrait de Alex

Merci Bacquy!

Je me suis légèrement trompé, c'est pas du python mais du LUA, enfin bref, ça n'a pas beaucoup d'importance pour nous car on n'a pas besoin de l'orientation objet parce que c'est la seule différence.

Merci aussi pour le cours.

Portrait de bacquy

Effectivement je n'ai pas pris le temps de bien regardé... ce n'est pas du Python.

Python reste tout de même très utile pour celles et ceux qui veulent faire communiquer leur arduino à leur PC ou Raspberry Pi

Sinon pour LUA j'ai trouvé ceci.

 

Portrait de bc38

Bonjour,

En suivant la video j'ai réussi à faire fonctionner les leds en local, mais je bloque sur la redirection de port. Dans ma box (alicebox) j'ai plusieurs possibilités udp, tcp... J'ai essayé plusieurs settings mais malheureusement sans succès. Par ailleurs il faut que j'éteigne et rallume ma box pour que les modifications soient prises en compte et cela change l'adresse IP de l'ESP... Je tourne en rond... Existe-t-il d'autres possibilités ? Merci de ton aide.

Bruno

Portrait de Alex

Bonjour,

Malheureusement je ne connais pas d'autre possibilité et je doute qu'il en existe une.

Certains qu'une redirection TCP ne fonctionne pas?

Quelle est votre box?

Portrait de bc38

Finalement et grâce à l'aide du forum j'ai réussi à faire fonctionner des ESP avec des adresses ip différentes et avec ces adresses redirigées chacune sur un port de ma box.

Merci à tous

Portrait de bacquy

il va te falloir deux redirections une UDP et une TCP sur le port 80

Pour ce qui est de ton adresse IP de l'ESP qui change il faut que tu regarde dans ton Alice Box au niveau du DHCP si tu peux configurer une reservation d'adresse IP pour l'adresse MAC de ton ESP (assure toi que cette adresse ip n'est pas déjà utilisée par un autre de tes PCs ou appareils mobile.)

TCP/UDP

Reservation IP sur Alice Box

Bon courage t'y es presque

 

Portrait de cyril

Pas mal! Tu nous a mis l'application android? C'est bien ça? Comment ont fait? On charge l'application depuis app inventor? Ont peut ensuite la modifier?

Portrait de hcfroid

Cette carte est minuscule ! 15mm x25 mm, de quoi réaliser de beau projet

Portrait de julio

Bonjour,

Je n'arrive pas à faire fonctionner les leds en local depuis l'application andoid : Est ce normal après l'adresse IP transmise est 192.168.1.XX  j'ai le message qui suit : init.lua:21 : only once tcp server allowed ?

Portrait de julio

J'ai trouvé ce fichier init.lua qui fonctionne. Il suffit d'appeler l'adresse IP 192.168.1.xx dans le navigateur internet pour faire apparaitre les boutons allumer ou éteindre les leds :

-----------------------------------------------------------------

wifi.setmode(wifi.STATION)
wifi.sta.config("YOUR_NETWORK_NAME","YOUR_NETWORK_PASSWORD")
print(wifi.sta.getip())
led1 = 3
led2 = 4
gpio.mode(led1, gpio.OUTPUT)
gpio.mode(led2, gpio.OUTPUT)
srv=net.createServer(net.TCP)
srv:listen(80,function(conn)
    conn:on("receive", function(client,request)
        local buf = "";
        local _, _, method, path, vars = string.find(request, "([A-Z]+) (.+)?(.+) HTTP");
        if(method == nil)then
            _, _, method, path = string.find(request, "([A-Z]+) (.+) HTTP");
        end
        local _GET = {}
        if (vars ~= nil)then
            for k, v in string.gmatch(vars, "(%w+)=(%w+)&*") do
                _GET[k] = v
            end
        end
        buf = buf.."<h1> ESP8266 Web Server</h1>";
        buf = buf.."<p>GPIO0 <a href=\"?pin=ON1\"><button>ON</button></a>&nbsp;<a href=\"?pin=OFF1\"><button>OFF</button></a></p>";
        buf = buf.."<p>GPIO2 <a href=\"?pin=ON2\"><button>ON</button></a>&nbsp;<a href=\"?pin=OFF2\"><button>OFF</button></a></p>";
        local _on,_off = "",""
        if(_GET.pin == "ON1")then
              gpio.write(led1, gpio.HIGH);
        elseif(_GET.pin == "OFF1")then
              gpio.write(led1, gpio.LOW);
        elseif(_GET.pin == "ON2")then
              gpio.write(led2, gpio.HIGH);
        elseif(_GET.pin == "OFF2")then
              gpio.write(led2, gpio.LOW);
        end
        client:send(buf);
        client:close();
        collectgarbage();
    end)
end)

-----------------------------------------------------------------

 

Portrait de brossden

Sicèrement je ne suis pas convaicu du tout de la simplicité qu'apporte de firmware nodemcu il faut utiliser une autre language, un autre logiciel de développement pas très simple selon mon goût et en plus il faut flasher le module ESP8266 qui d'après ce que je vois n'est pas très simple et necessites des bidouillages supplémentaires.
Pour programmer plus simplement ce module ESP8266 je trouve que la libraire qui lui est dédiée et nettement plus simple:

Pour utiliser cette librairie il suffit d'ouvrir Arduino cliquer sur "Fichier" - "Préférences" et dans le champs "Aditionnal Board Manager URLs" rajouter ce lien :
"http://arduino.esp8266.com/stable/package_esp8266com_index.json"

Dans l'onglet "Outils" puis "Type de carte" Puis "Gestionnaire de carte"

Dans Type  selectionnez "TOUT"

enfin chercher ESP8266, en général tout en bas,  selectionnez ce cadre  et cliquez sur "Installer" 

Une fois la mise jour faite Cliquez sur "Fermer"

Ainsi vous pouvez trouver de nouveaux type de carte Esp8266 dont "Generic ESP8266 Module" convient parfaitement au développement sous Arduino classique Vous aurez même de nouveaux exemples d'utilisation de ce module.

Pour vous soumettre le programme équivalent au LUA voici ma solution qui n'est pas forcément la meilleure :

 /*  Le serveur affectera les sorties GPIO0 et GPIO2 selon les requètes du client :
 *    http://server_ip/o0=0 affectera GPIO0 à l'état bas
 *    http://server_ip/o0=1 affectera GPIO0 à l'état haut
 *    http://server_ip/o2=0 affectera GPIO2 à l'état bas
 *    http://server_ip/o2=1 affectera GPIO2 à l'état haut
 *    http://server_ip/?    lecture de l'état des sorties GPIO0 et GPIO2
 *    
 *  L'adresse Ip du module ESP8266 sera envoyée sur la sortie série du module
 *  dès que celui-ci sera connecté
 */

#include <ESP8266WiFi.h>
//Définition des varaibles globales et constantes
 int val0;
 int val2;
 const char* ssid = "Votre SSDI"; // Le nom de votre réseau Wifi
 const char* password = "Votre Clef WEP";

// Creation d'un serveur Web sur le port standard 80

WiFiServer server(80);

void setup() {
  // Création d'un port série à 115200 bauds
  Serial.begin(115200);
  delay(10);
 
  // Affectations des port GPIO0 et GPIO2 en sorties et à l'état bas
  pinMode(0, OUTPUT);
  digitalWrite(0, 0);
 
  pinMode(2, OUTPUT);
  digitalWrite(2, 0);
  // Connection au réseau WiFi
  Serial.println();
  Serial.println();
  Serial.print("Connection au réseau Wifi :");
  Serial.println(ssid);
 
  WiFi.begin(ssid, password);
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(100);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connectee");
 
  // Démarrage du Serveur
  server.begin();
  Serial.println("Serveur demarre");

  // Envoie de l'adresse IP sur le port série
  Serial.println("Adresse Ip du serveur :");
  Serial.println(WiFi.localIP());
  }

void loop() {
  // Vérification de la connection d'un client
  WiFiClient client = server.available();
  if (!client) {
    return;
  }
 
  // Attente des datas du client
 
  while(!client.available()){
    delay(10);
  }
 
  // Lecture de la requête du client
  String req = client.readStringUntil('\r');
   
  // Interprétation de la requète
 
  if (req.indexOf("/o0=0") != -1)
    {val0 = 0;}
  if (req.indexOf("/o0=1") != -1)
    {val0 = 1;}
  if (req.indexOf("/o2=0") != -1)
    {val2 = 0;}
  if (req.indexOf("/o2=1") != -1)
    {val2 = 1;}

    // Affectation des variables aux sorties correspondantes
   digitalWrite(2, val2);
   digitalWrite(0, val0);

   //Lecture de l'état des sorties
  if (req.indexOf("/?") != -1)
  {
     val0 == digitalRead(0);
     val2 == digitalRead(2);  
  }

  // Création de la page HTML en réponse à la requête
  String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\n La led0 est ";//nGPIO is now ";
  s += (val0)?"Allumee   ":"Eteinte   ";
  s += " La led2 est ";
  s += (val2)?"Allumee   ":"Eteinte   ";

  // Envoie de la réponse au client
  client.print(s);
  client.flush();
  Serial.println(s);
  delay(1);

  //Déconnection du client
  client.flush();
}
Pour utiliser ce programme j'ai écris un APK que je vous donnerai en téléchargement mais il suffit d'un navigateur pour le commander.

Admettons que l'adresse IP du module ESP8266 soir 192.168.0.22

http://192.168.0.22/?           : pour connaitre l'état des sorties
http://192.168.0.22/o0=0    : pour éteindre la Led sur GPIO0
http://192.168.0.22/o0=1    : pour allumer  la Led sur GPIO0
http://192.168.0.22/o2=0    : pour éteindre la Led sur GPIO2
http://192.168.0.22/o2=1    : pour allumer  la Led sur GPIO2

Il est assez facile de transformer la page de retour avec des boutons sur la page Web de retour pour piloter directement ces sorties

Voilà ma solution mais je ne veux en aucun cas dire que cette solution est meilleure mais juste dans la continuité de la logique Aduino.

Merci encore à ce site et à Alex surtout qui fait un bouleau de fou et super interessant !           

#LedOnOFF

Portrait de Alex

Je suis entièrement d'accord avec toi.

NodeMCU n'est plus la meilleure option.

J'ai une WeMos D1 d'ailleurs et je trouve qu'avec la librarie ESP8266 c'est encore plus simple et plus stable.

Je prévois de faire une vidéo dans le mois d'Avril ou Mai pour faire une application connecté utilisant l'ESP8266 des relais et une caméra IP.

J'utiliserai la librairie ESP8266 et non plus le NodeMCU.

Ca devrait vous plaire je pense.

Portrait de tracolin

Merci pour votre code, ça marche nickel pour moi et je trouve ça bien plus simple aussi.

Par contre ça se plante de temps en temps et j'ai ça en sortie :

Exception (0):
epc1=0x40218be0 epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000000 depc=0x00000000

ctx: sys 
sp: 3ffffda0 end: 3fffffb0 offset: 01a0

>>>stack>>>
3fffff40:  402133c1 3ffe8fb0 3ffe8920 00000001  
3fffff50:  402134a4 3ffe8fb4 3ffe8920 004b683e  
3fffff60:  00000001 401032d2 3ffe8d40 3ffec980  
3fffff70:  4020d67d 40103473 00000000 00000000  
3fffff80:  4020d6c2 3fffdab0 00000000 3fffdcb0  
3fffff90:  3ffe8940 3fffdab0 00000000 3fffdcc0  
3fffffa0:  40000f49 40000f49 3fffdab0 40000f49  
<<<stack<<<

 ets Jan  8 2013,rst cause:2, boot mode:(3,6)

load 0x4010f000, len 1264, room 16 
tail 0
chksum 0x42
csum 0x42
~ld

ça redémarre après... vous avez une idée ?

Portrait de phil

Bonjour, merci pour le partage de votre code. Par contre le lien pour l'apk n'est plus disponible. Serait il possible de le remettre en ligne ? En vous remerciant par avance. Cordialement. :) Phil.

Portrait de brossden

Salut Alex il y a une carte super mais un peu couteuse c'est la LinkIt One elle embarque la Wifi, Le Gps,  le GPRS  le Bluetooth etc .... ! Une carte de fou ! pour 50 euros en cherchant bien !!

Denis Brossier

Portrait de Alex

Salut Denis,

Effectivement elle a l'air très cool cette carte mais elle est pas donnée.

Je vais attendre que les chinois la copient! :)

Portrait de Philippec66

Bonjour,

je suis bloqué avec ma carte "Adafruit HUZZAH ESP8266 Breakout" Node MCU 0.9.5 build 20150318 lua 5.1.4 , j'ai essayé la solution de brossden ci dessus avec un Arduino, j'ai une erreur espcomm_sync failed, impossible de trouvé une solution

j'ai essayé Esplorer tel que proposé plus haut, cela à fonctionné, mais voulant modifier un peu le satané code lua le module est entré dans une boucle de boot sans fin impossible de le reprogrammer?

Avez vous une idée?

Merci de votre aide

Philippe

Portrait de sridi.khalifa

#include <SoftwareSerial.h>

#include <espduino.h>

#include <rest.h>

SoftwareSerial espPort(10, 11);

ESP esp(&espPort, &Serial, 9);

REST rest(&esp);

boolean wifiConnected = false;

const int relay1 =  2;

const int relay2 =  3;

const int relay3 =  4;

const int relay4 =  5;

boolean data1 = false;

boolean data2 = false;

boolean data3 = false;

boolean data4 = false;

int loop_count = 0;

char response[266];

char buff[64];

String strId,strData,strCode;

String strData_Last1,strData_Last2,strData_Last3,strData_Last4;

void(* resetFunc) (void) = 0;

 void clearBuffer(void) {

       for (int i = 0;i<266;i++ ) {

         response[i]=0;

       }

}

void wifiCb(void* response)

{

  uint32_t status;

  RESPONSE res(response);

  if(res.getArgc() == 1) {

    res.popArgs((uint8_t*)&status, 4);

    if(status == STATION_GOT_IP) {

      Serial.println("TERHUBUNG KE WIFI");

    

      wifiConnected = true;

    } else {

      wifiConnected = false;

    }

   

  }

}

void setup() {

  pinMode(relay1, OUTPUT);

  pinMode(relay2, OUTPUT);

  pinMode(relay3, OUTPUT);

  pinMode(relay4, OUTPUT);

  digitalWrite(relay1,HIGH);

  digitalWrite(relay2,HIGH);

  digitalWrite(relay3,HIGH);

  digitalWrite(relay4,HIGH);

  Serial.begin(9600);

  espPort.begin(19200);

  esp.enable();

  delay(500);

  esp.reset();

  delay(500);

  while(!esp.ready());

  Serial.println("ARDUINO: Setup client");

  if(!rest.begin("api.thingspeak.com")) {

    Serial.println("ARDUINO: Gagal Setup client");

    while(1);

  }

  Serial.println("ARDUINO: Menghubungkan dengan Wifi");

  esp.wifiCb.attach(&wifiCb);

  esp.wifiConnect("Andy182 Network","waipigratis");

  Serial.println("ARDUINO: System sudah siap!");

}

void loop() {

loop_start: 

  esp.process(); 

  if(wifiConnected) {  

   

    char str_field1[6] , str_field2[6] , str_field3[6] , str_field4[6];

          

      sprintf(buff, "/channels/97834/fields/1/last");

      Serial.println(buff);

          

      rest.get((const char*)buff);

      if(rest.getResponse(response, 266) == HTTP_STATUS_OK){

                             

            strId = "";

            strData = "";

            strCode = ""; 

            getData();               

                

          if (strData == "1" || strData == "1.0" || strData == "1.00" ){

            digitalWrite(relay1,LOW);

            data1 = true;

          }

          

          if (strData == "0" || strData == "-1" || strData == "0.1" || strData == "0.10"){

            digitalWrite(relay1,HIGH);

            data1 = false;

          }

      } 

     else{ 

       hardReset();

       resetFunc();

     }

    

      delay(10000); 

      sprintf(buff, "/channels/97834/fields/2/last");

      Serial.println(buff);

          

      rest.get((const char*)buff);

      if(rest.getResponse(response, 266) == HTTP_STATUS_OK){

        

        strId = "";  strData = "";  strCode = ""; 

        getData();

     

     

      if (strData == "1" || strData == "1.0" || strData == "1.00"){

        digitalWrite(relay2,LOW);

        data2 = true;       

      }

      

      if (strData == "0" || strData == "-1" || strData == "0.1" || strData == "0.10"){

        digitalWrite(relay2,HIGH);

        data2 = false;     

      }    

      }

      else{ 

         hardReset();

         resetFunc();

         clearBuffer(); 

         goto loop_start;  

      

     }   

      delay(10000); 

      sprintf(buff, "/channels/97834/fields/3/last");

      Serial.println(buff);

          

      rest.get((const char*)buff);

      if(rest.getResponse(response, 266) == HTTP_STATUS_OK){

        

        strId = "";  strData = "";  strCode = ""; 

        getData();                                                // GET DATA

     

     

      if (strData == "1" || strData == "1.0" || strData == "1.00"){

        digitalWrite(relay3,LOW);

        data3 = true;       

      }

      

      if (strData == "0" || strData == "-1" || strData == "0.1" || strData == "0.10"){

        digitalWrite(relay3,HIGH);

        data3 = false;      

      }    

      }

      else{ 

         hardReset();

         resetFunc();

         clearBuffer(); 

         goto loop_start;  

      

     }

     delay(10000); 

      sprintf(buff, "/channels/97834/fields/4/last");              // field x last Data

      Serial.println(buff);

          

      rest.get((const char*)buff);

      if(rest.getResponse(response, 266) == HTTP_STATUS_OK){

        

        strId = "";  strData = "";  strCode = ""; 

        getData();                                                // GET DATA

     

     

      if (strData == "1" || strData == "1.0" || strData == "1.00"){

        digitalWrite(relay4,LOW);

        data4 = true;       

      }

      

      if (strData == "0" || strData == "-1" || strData == "0.1" || strData == "0.10"){

        digitalWrite(relay4,HIGH);

        data4 = false;     

      }    

      }

      else{ 

         hardReset();

         resetFunc();

         clearBuffer(); 

         goto loop_start;  

      

     }

    

      delay(10000);     

      loop_count++;

      Serial.println("LOOP : ");

      Serial.println(loop_count);

     

      if(loop_count == 6 ){

        loop_count = 0;

     

      if(data1) {      

           dtostrf(1, 1, 1, str_field1);    

      }else{

         dtostrf(0.1, 2, 1, str_field1);   

      }

      if(data2) {

           dtostrf(1, 1, 1, str_field2);

      }else{

         dtostrf(0.1, 2, 1, str_field2);  

      }

      if(data3) {

           dtostrf(1, 1, 1, str_field3);

      }else{

         dtostrf(0.1, 2, 1, str_field3);  

      }

      if(data4) {

           dtostrf(1, 1, 1, str_field4);

      }else{

         dtostrf(0.1, 2, 1, str_field4);  

      }

       

          sprintf(buff, "//update?key=IDVGM020AD2OIZJZ&field1=%s&field2=%s&field3=%s&field4=%s",str_field1,str_field2,str_field3,str_field4);

          Serial.println(buff);

          

          rest.get((const char*)buff);

          Serial.println("ARDUINO: Mengirim data terbaru");

          if(rest.getResponse(response, 266) == HTTP_STATUS_OK){

            Serial.println("ARDUINO: Berhasil GET Data");

            strId = "";  strData = "";  strCode = ""; 

            getData();

          }

      delay(5000);

      }

  }

  else{

  }

}

void getData(){

   int i=0,j=0,k=0;

    

         for (i = 0; i < 10; i++){        

       

          if((response[i] == '\r') || (response[i] == '\n')) {

          }

          else{         

             strId += response[i];      

          }

         

          if (response[i] == '\n'){

               i++;        

               break;

          }                   

        }

       

        Serial.println("");

        Serial.print("ID : ");

        Serial.print(strId);

          

         for (j = i; j < (i+20); j++){

         

          if((response[j] == '\r') || (response[j] == '\n')) {

          }

          else{         

             strData += response[j];      

          }

         

          if (response[j] == '\n'){

                j++;     

                break;

          }                    

        }

       

        Serial.println("");

        Serial.print("Data : ");

        Serial.print(strData);

         for (k = j; k < (j+10); k++){       

             

          if((response[k] == '\r') || (response[k] == '\n')) {

          }

          else{         

             strCode += response[k];      

          }

         

          if (response[k] == '\n'){                      

                break;

          }                    

        }

        Serial.println("");

        Serial.print("Code : ");

        Serial.print(strCode);     

        Serial.println("");       

      }

  boolean hardReset() {

  String tmpData;

}

j'utilise ce code pour commander 4 relai par smartphone et elle fonctionne pas sur  arduino uno   

aider moi svp

Portrait de sridi.khalifa

#include <SoftwareSerial.h>

#include <espduino.h>

#include <rest.h>

SoftwareSerial espPort(10, 11);

ESP esp(&espPort, &Serial, 9);

REST rest(&esp);

boolean wifiConnected = false;

const int relay1 =  2;

const int relay2 =  3;

const int relay3 =  4;

const int relay4 =  5;

boolean data1 = false;

boolean data2 = false;

boolean data3 = false;

boolean data4 = false;

int loop_count = 0;

char response[266];

char buff[64];

String strId,strData,strCode;

String strData_Last1,strData_Last2,strData_Last3,strData_Last4;

void(* resetFunc) (void) = 0;

 void clearBuffer(void) {

       for (int i = 0;i<266;i++ ) {

         response[i]=0;

       }

}

void wifiCb(void* response)

{

  uint32_t status;

  RESPONSE res(response);

  if(res.getArgc() == 1) {

    res.popArgs((uint8_t*)&status, 4);

    if(status == STATION_GOT_IP) {

      Serial.println("TERHUBUNG KE WIFI");

    

      wifiConnected = true;

    } else {

      wifiConnected = false;

    }

   

  }

}

void setup() {

  pinMode(relay1, OUTPUT);

  pinMode(relay2, OUTPUT);

  pinMode(relay3, OUTPUT);

  pinMode(relay4, OUTPUT);

  digitalWrite(relay1,HIGH);

  digitalWrite(relay2,HIGH);

  digitalWrite(relay3,HIGH);

  digitalWrite(relay4,HIGH);

  Serial.begin(9600);

  espPort.begin(19200);

  esp.enable();

  delay(500);

  esp.reset();

  delay(500);

  while(!esp.ready());

  Serial.println("ARDUINO: Setup client");

  if(!rest.begin("api.thingspeak.com")) {

    Serial.println("ARDUINO: Gagal Setup client");

    while(1);

  }

  Serial.println("ARDUINO: Menghubungkan dengan Wifi");

  esp.wifiCb.attach(&wifiCb);

  esp.wifiConnect("Andy182 Network","waipigratis");

  Serial.println("ARDUINO: System sudah siap!");

}

void loop() {

loop_start: 

  esp.process(); 

  if(wifiConnected) {  

   

    char str_field1[6] , str_field2[6] , str_field3[6] , str_field4[6];

          

      sprintf(buff, "/channels/97834/fields/1/last");

      Serial.println(buff);

          

      rest.get((const char*)buff);

      if(rest.getResponse(response, 266) == HTTP_STATUS_OK){

                             

            strId = "";

            strData = "";

            strCode = ""; 

            getData();               

                

          if (strData == "1" || strData == "1.0" || strData == "1.00" ){

            digitalWrite(relay1,LOW);

            data1 = true;

          }

          

          if (strData == "0" || strData == "-1" || strData == "0.1" || strData == "0.10"){

            digitalWrite(relay1,HIGH);

            data1 = false;

          }

      } 

     else{ 

       hardReset();

       resetFunc();

     }

    

      delay(10000); 

      sprintf(buff, "/channels/97834/fields/2/last");

      Serial.println(buff);

          

      rest.get((const char*)buff);

      if(rest.getResponse(response, 266) == HTTP_STATUS_OK){

        

        strId = "";  strData = "";  strCode = ""; 

        getData();

     

     

      if (strData == "1" || strData == "1.0" || strData == "1.00"){

        digitalWrite(relay2,LOW);

        data2 = true;       

      }

      

      if (strData == "0" || strData == "-1" || strData == "0.1" || strData == "0.10"){

        digitalWrite(relay2,HIGH);

        data2 = false;     

      }    

      }

      else{ 

         hardReset();

         resetFunc();

         clearBuffer(); 

         goto loop_start;  

      

     }   

      delay(10000); 

      sprintf(buff, "/channels/97834/fields/3/last");

      Serial.println(buff);

          

      rest.get((const char*)buff);

      if(rest.getResponse(response, 266) == HTTP_STATUS_OK){

        

        strId = "";  strData = "";  strCode = ""; 

        getData();                                                // GET DATA

     

     

      if (strData == "1" || strData == "1.0" || strData == "1.00"){

        digitalWrite(relay3,LOW);

        data3 = true;       

      }

      

      if (strData == "0" || strData == "-1" || strData == "0.1" || strData == "0.10"){

        digitalWrite(relay3,HIGH);

        data3 = false;      

      }    

      }

      else{ 

         hardReset();

         resetFunc();

         clearBuffer(); 

         goto loop_start;  

      

     }

     delay(10000); 

      sprintf(buff, "/channels/97834/fields/4/last");              // field x last Data

      Serial.println(buff);

          

      rest.get((const char*)buff);

      if(rest.getResponse(response, 266) == HTTP_STATUS_OK){

        

        strId = "";  strData = "";  strCode = ""; 

        getData();                                                // GET DATA

     

     

      if (strData == "1" || strData == "1.0" || strData == "1.00"){

        digitalWrite(relay4,LOW);

        data4 = true;       

      }

      

      if (strData == "0" || strData == "-1" || strData == "0.1" || strData == "0.10"){

        digitalWrite(relay4,HIGH);

        data4 = false;     

      }    

      }

      else{ 

         hardReset();

         resetFunc();

         clearBuffer(); 

         goto loop_start;  

      

     }

    

      delay(10000);     

      loop_count++;

      Serial.println("LOOP : ");

      Serial.println(loop_count);

     

      if(loop_count == 6 ){

        loop_count = 0;

     

      if(data1) {      

           dtostrf(1, 1, 1, str_field1);    

      }else{

         dtostrf(0.1, 2, 1, str_field1);   

      }

      if(data2) {

           dtostrf(1, 1, 1, str_field2);

      }else{

         dtostrf(0.1, 2, 1, str_field2);  

      }

      if(data3) {

           dtostrf(1, 1, 1, str_field3);

      }else{

         dtostrf(0.1, 2, 1, str_field3);  

      }

      if(data4) {

           dtostrf(1, 1, 1, str_field4);

      }else{

         dtostrf(0.1, 2, 1, str_field4);  

      }

       

          sprintf(buff, "//update?key=IDVGM020AD2OIZJZ&field1=%s&field2=%s&field3=%s&field4=%s",str_field1,str_field2,str_field3,str_field4);

          Serial.println(buff);

          

          rest.get((const char*)buff);

          Serial.println("ARDUINO: Mengirim data terbaru");

          if(rest.getResponse(response, 266) == HTTP_STATUS_OK){

            Serial.println("ARDUINO: Berhasil GET Data");

            strId = "";  strData = "";  strCode = ""; 

            getData();

          }

      delay(5000);

      }

  }

  else{

  }

}

void getData(){

   int i=0,j=0,k=0;

    

         for (i = 0; i < 10; i++){        

       

          if((response[i] == '\r') || (response[i] == '\n')) {

          }

          else{         

             strId += response[i];      

          }

         

          if (response[i] == '\n'){

               i++;        

               break;

          }                   

        }

       

        Serial.println("");

        Serial.print("ID : ");

        Serial.print(strId);

          

         for (j = i; j < (i+20); j++){

         

          if((response[j] == '\r') || (response[j] == '\n')) {

          }

          else{         

             strData += response[j];      

          }

         

          if (response[j] == '\n'){

                j++;     

                break;

          }                    

        }

       

        Serial.println("");

        Serial.print("Data : ");

        Serial.print(strData);

         for (k = j; k < (j+10); k++){       

             

          if((response[k] == '\r') || (response[k] == '\n')) {

          }

          else{         

             strCode += response[k];      

          }

         

          if (response[k] == '\n'){                      

                break;

          }                    

        }

        Serial.println("");

        Serial.print("Code : ");

        Serial.print(strCode);     

        Serial.println("");       

      }

  boolean hardReset() {

  String tmpData;

}

j'utilise ce code pour commander 4 relai par smartphone et elle fonctionne pas sur  arduino uno   

aider moi svp

Portrait de brossden

Je me suis rendu compte que je n'avais pas expliqué toute la procédure, c'est chose faite, vous pouvez retourner sur le post d'origine, je l'ai modifié l'important est en Gras !

Bonne programmation

J'ai fait une petite vidéo pour ceux qui ont envie de simplicité

http://mesclou.free.fr/Arduino/Esp8266.mp4

Le texte à rajouter dans "Préférence est :

http://arduino.esp8266.com/stable/package_esp8266com_index.json

Portrait de Croisette

Après 2 jours à m’arracher les cheveux, j'ai enfin réussi à faire marcher l'ESP. Par contre, j'ai un problème, l'APK fourni sur ton site ne fonctionne pas. Je rentre bien l'adresse ip de l'ESP mais rien ne se passe en appuiant sur les bouton.Est ce normal après l'adresse IP transmise est 192.168.1.XX ?

Portrait de Croisette

Après 2 jours à m’arracher les cheveux, j'ai enfin réussi à faire marcher l'ESP. Par contre, j'ai un problème, l'APK fourni sur ton site ne fonctionne pas. Je rentre bien l'adresse ip de l'ESP mais rien ne se passe en appuiant sur les bouton.Est ce normal après l'adresse IP transmise est 192.168.1.XX ?

Portrait de kex

bonjour 

je souhaiterai savoir comment on fait pour remettre le esp8266 en mode normal (utiliser les commandes AT) apres avoir flacher l'esp8266

cordialement 

Portrait de bc38

Bonjour Alex et amis du forum,

Après quelques temps de stand by, je reviens vers la programmation de l'ESP8266 et je rencontre des problèmes à savoir:

1) je réussi à chaque fois à flasher en NodeMcu

2) la première fois que j'ouvre esplorer tout se passe bien, reset de l'esp = ok, téléversement = ok, test du programme ok.

3) voulant faire une modification du programme lua je reprends la procédure et là systématiquement le reset de l'esp ne fonctionne plus, au lieu de la phrase en clair "NodeMCU..... lua: cannot open init.lua", j'ai une suite de caractères sans signification.

J'ai essayé avec plusieurs esp et toutes réagissent de la même manière, comme si la manip détruisait la carte; cependant comme je l'ai mentionné plus haut le (re)flashage fonctionne toujours !!! D'autre part ces esp programmées en mode arduino ide, fonctionnent parfaitement ? Où fais-je une erreur ?

Néanmoins j'ai vu la nouvelle carte Wemos qui me semble intéressante et que je vais commander.

Merci de vos réponses.

Cordialement

Bruno

Portrait de L&#039;ami René

Bonjour,

Comme je n'ai pas de téléphone intelligent ni de tablette Andoïd, est-ce qu'il serait possible de transposer cet exemple de vidéo, mais entre Node MCU V3 ESP-12E avec puce WiFi ESP8266 et UART CP2101 (ou similaire) et un ordinateur (sous Linux) de bureau ou un ordinateur portable standard.

Advenant que oui, alors un très grand merci d'avance !

Portrait de samuel55800

Bonjour à vous tous, je suis nouveau donc d'abord les présentations : je me prénome Samuel, je suis étudiant ingénieur à l'Enim de Metz. Je suis actuellement en stage et je m'affronte à un problème : lorsque je souhaite lancer ESPlorer, un message d'erreur s'affiche : Could not find the main class : ESPlorer.ESPlorer. Program will exit. Pourrie vous m'aider à me débloquer la dessus ?

Cordialement, 

Samuel

Portrait de FroZen KaWa

Yop,

Mais du coup comment faire pour communiqué entre Arduino et ESP ? en gros j'ai un capteur sur mon arduino qui doit quand détection envoyé une info sur Serveur Web via l'Esp et inversement changer des variable sur mon Arduino depuis une requete Web Merci d'avance cordlmt

Portrait de karim bouzanaach

Bonjour 
Tout d'abord j'aimerai vous remercier pour vos cours,
Juste une petite remarque : dans le vidéo démonstratif de ce cours vous n'avez pas montré le fin de programme d'application android, j'ai besoin de voir le reste SVP

Merci 

Portrait de karim bouzanaach

Bonjour 
Tout d'abord j'aimerai vous remercier pour vos cours,
Juste une petite remarque : dans le vidéo démonstratif de ce cours vous n'avez pas montré le fin de programme d'application android, j'ai besoin de voir le reste SVP

Merci 

Portrait de philb

peut on utiliser un node mcu et ide arduino

par avance merci