Les projets
Fournisseurs
Webmaster - Infos
Lettre d'information
Pour avoir des nouvelles de ce site, inscrivez-vous à notre Newsletter.
w4nZC4
Recopier le code :
Abonné
( personne )
Snif !!!
Visites

   visiteurs

   visiteur en ligne

Le Programme doit lire la température et faire une requête PATCH sur le fichier foc.php sur le serveur.

Contrairement a la requête GET de la commande d'une LED, la requête PATCH ne peut pas simplement lire une donnée dans le fichier light.json mais doit modifier le fichier data.json (le fichier light.json n'est plus utilisé et est remplacé par le fichier data.json)

Le fichier foc.php effectuera la modification des données dans le fichier data.json sur le serveur.

REMARQUE :

Le programme utilise la sortie série pour visualiser les échanges avec le serveur mais ces échanges série peuvent ne pas être utilisés si la carte ESP8266 n'est plus connecté à l'ordinateur mais est alimentée en autonome (2 piles de 1,5V)

/*
Nom du programme patch_sur_serveur.php
Materiel :
-Carte ESP8266 Lolin
-capteur de température LM35 sur A0
Les étapes du code :
dans le setup
connexion Wifi
dans la boucle loop
lecture en local de la valeur du capteur
connexion au serveur
si la température a changée 
PATCH sur le serveur de la valeur lue
attente de 5 secondes
créé le 20 Fevrier 2017
Ce code est en CC0 1.0 Universal
*/
#include <Arduino.h>
#include <ESP8266WiFi.h>
#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 String nelsonName = "gerard13007";
const char* ssid = ".......";
const char* password = ".......";
const char* domaine =".......";
const char* ressource ="/..../foc.php/";

float Vout=0;
float T=0;
float oldT=0;
float pot=0;

void setup() {
pinMode(D4,OUTPUT);
// on souhaite communiquer avec l'ordinateur
Serial.begin(9600);
Serial.setDebugOutput(true);

Serial.println("Nelson v0.3 PATCH starting...");

for(uint8_t t = 4; t > 0; t--) {
Serial.printf("[SETUP] WAIT %d...\n", t);
Serial.flush();
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;
  
  // lecture de la température
  analogRead(A0);
  delay(10);
  Vout=analogRead(A0);
  Vout=Vout * 3.3 /1023.0;
  T = (Vout -0.5)*87.0;// normalement * 100
  Serial.print("Temp");
  char myChar = 233;//caractère "é" pour la liaison série
  Serial.print(myChar);
  Serial.print("rature = ");
  Serial.println(T);
  
  if(T!=oldT){
  // si la température a changée, connexion serveur PATCH pour ecrire la valeur
  digitalWrite(D4, LOW);// pour signaler le PUCH
  Serial.println("[HTTP] begin...");
  String uri = ressource;//-----------modif
  http.begin(domaine, 80, uri);//----------------modif
  Serial.println("[HTTP] PATCH...");
  String payload = "{\"température\":";
  payload = payload + T;
  payload = payload +  "}";
  Serial.print("[HTTP] PATCH... payload:");
  Serial.println(payload);
  // démarrer la connexion et envoyer les entêtes HTTP
  http.addHeader("Content-type", "application/json");
  int httpCode = http.sendRequest("PATCH", (uint8_t *) payload.c_str(), payload.length());
  // httpCode sera négatif si on rencontre une erreur
  if(httpCode > 0) {
    // les entêtes HTTP ont été envoyés et
    Serial.printf("[HTTP] PATCH... code: %d\n", httpCode);
    // si le serveur répond par OK
    if(httpCode == HTTP_CODE_OK)
      Serial.println("[HTTP] PATCH... OK!");
   }// Fin du if(httpCode > 0)
  else
    Serial.printf("[HTTP] PATCH... failed, error: %s\n", http.errorToString(httpCode).c_str());
  http.end();
  digitalWrite(D4, HIGH);// D4 off
  }//fin du if T!=oldT
}// Fin du if((WiFiMulti.run()
else Serial.println("problème WiFi");
oldT=T;
delay(5000); // attente de 5 secondes pour une nouvelle requete

}// Fin du Loop


Date de création : 03/03/2017 @ 17:26
Catégorie : Les projets - Projet 2
Page lue 6292 fois


Réactions à cet article

Personne n'a encore laissé de commentaire.
Soyez donc le premier !

Préférences

Se reconnecter :
Votre nom (ou pseudo) :
Votre mot de passe
w4nZC4
Recopier le code :


  Nombre de membres 5 membres
Connectés :
( personne )
Snif !!!
Recherche
Recherche
Calendrier
Nouvelles des Amis