Bonjour,
Sur une Wemos D1 mini v2, et dans le cadre d'une domotisation, je simule l'appui sur le bouton de la télécommande de mes volets (il ne sont pas domotisables et fonctionnent par télécommande).
Le schéma se trouve ici : https://circuits.io/circuits/3831607-telecommande-volets-bubendorf
Par contre je ne comprends pas pourquoi mon programme s'exécute 10 fois de suite lorsque je le teste avec des leds.
Voici le croquis en cause :
/*
Date : 16/01/2017
Description : Pilotage LED avec un browser WEB
Source : Exemple IDE Arduino
*/
#include <ESP8266WiFi.h>
int tempo = 250; // durée d'appui sur la touche télécommande
String s;
int val;
int up = 5; // broche pour ouvrir --> sur Wemos à brancher sur D1
int down = 4; // broche pour fermer --> sur Wemos à brancher sur D2
// Nom et mot de passe du réseau WIFI
const char* ssid = "Livebox-XXXX";
const char* password = "XXXXXXXXXXXXXXXXXXXXXXXXXX";
// Creation d un serveur qui ecoute sur le port 80
WiFiServer server(80);
// ----------------- SETUP ---------------------------------
void setup() {
Serial.begin(115200);
delay(10);
// Declaration port "down" en sortie
pinMode(down, OUTPUT);
digitalWrite(down, 0);
// Declaration port "up" en sortie
pinMode(up, OUTPUT);
digitalWrite(up, 0);
// Connection au réseau WiFi
Serial.print("Connection a ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(250);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi OK");
// demarrage du serveur
server.begin();
Serial.println("Server OK");
// Adresse IP locale attribuee
Serial.println(WiFi.localIP());
} // ------------------- fin du Setup
// ----------------- LOOP ----------------------------
void loop() {
// Un client est-il connecte ?
WiFiClient client = server.available();
if (!client) {
return;
}
// Attente donnees envoyees par un client
Serial.println("Nouveau client");
while (!client.available()) {
delay(1);
}
// Lecture premiere ligne de la requete
String req = client.readStringUntil('\r');
client.flush();
// Decodage de la requete recue
int val;
//------------------------------- FERMER -------------------------------------------------
if (req.indexOf("/FERMER") != -1) {
Serial.println("Demande fermeture volet");
// Positionnement port "down"
digitalWrite(down, 1); // Début appui pour fermeture volet
delay(tempo); // durée d'appui sur télécommande
digitalWrite(down, 0); // Fin appui pour fermeture volet
client.flush();
}
//------------------------------- OUVRIR -------------------------------------------------
else if (req.indexOf("/OUVRIR") != -1) {
Serial.println("Demande ouverture volet");
// Positionnement port "up"
digitalWrite(up, 1); // Début appui pour ouverture volet
delay(tempo); // durée d'appui sur télécommande
digitalWrite(up, 0); // Fin appui pour ouverture volet
client.flush();
}
//------------------------------- ERREUR -------------------------------------------------
else {
Serial.println("Requete invalide");
client.stop();
return;
}
//-----------------------------------------------------------------------------------------
/*Envoi de la reponse au client
client.print(s);
delay(1);
Serial.println("Client deconnecte");
*/
} // --------------------- Fin du Loop
Merci par avance de votre aide.