Projet 2
Projet 3
visiteurs
visiteurs en ligne
Ce programme doit être adapté en fonction de votre environnement :
/*
Nom du programme :ledMA1.ino
Contrôle d'une LED à partir d'un serveur (Host/nelson.php)
Récuperation la valeur (on ou off par un GET sur Host/light.json)
Le montage :
* LED interne broche 2 (ou D4)
* REMARQUE la LED interne fonction en complémentaire
REMARQUE :
Ne pas oblier de remplier les valeurs pour :
ssid : "Livebox-2012"
password : "AZERTY"
domaine :"monsite.fr"
ressource : "/repertoire/light.json"
créé le 2 juin 2016
par Gérard IoT
Ce code est en CC0 1.0 Universal
*/
#include <ESP8266WiFiMulti.h>
#include <ESP8266HTTPClient.h>
ESP8266WiFiMulti WiFiMulti;
// déclaration d'une variable payload dont on va se servir pour
// l'envoie et la réception de nos messages
String payload;
// initialisation des constantes spécifiques à votre installation
const char* ssid = ".....................";
const char* password = ".......................";
const char* domaine = "............................";
const char* ressource = "...........light.json";
void setup() {
// on souhaite communiquer avec l'ordinateur
pinMode(D4, OUTPUT);
for(uint8_t t = 4; t > 0; t--) {
delay(1000);
}
// on se connecte au Wifi
WiFiMulti.addAP(ssid, password);
}
void loop() {
// on regarde si on est bien connecté au point d'accès wifi
if((WiFiMulti.run() == WL_CONNECTED)) {
// création d'un objet appelé http réutilisable et sorti du moule HTTPClient
HTTPClient http;
// connexion serveur GET pour lire les données enregistrées sur light.json
String uri = ressource ;
http.begin(domaine, 80, uri);
http.addHeader("Content-type", "application/json");
int httpCode = http.GET();
// httpCode sera négatif si on rencontre une erreur
if(httpCode > 0) {
// le serveur répond à la requette par OK
if(httpCode == HTTP_CODE_OK) {
// alors on récupère la réponse sous forme de chaîne de caractères
String payload = http.getString();
int start = payload.indexOf("light\":");
int end = payload.indexOf('\"', start + 11 );
String positionString = "";
for (int i= start + 9; i < end; i++)
positionString += payload.charAt(i);
// gestion de la LED
if (positionString == "on") digitalWrite(D4, LOW);
if (positionString == "off") digitalWrite(D4, HIGH);
}// Fin if(httpCode == HTTP_CODE_OK)
}// Fin if(httpCode > 0)
else
http.end();
// Fin d'interrogation du serveur
delay (5000);
}// Fin du if((WiFiMulti.run()
}// Fin du Loop