Ceci est le code sur L'ESP qui control les volets
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
#include <ArduinoOTA.h>
#include <Wire.h> >
#include "SSD1306.h"
const char* ssid = "V_________";
const char* password = "D________";
String volet1 ="stop";
String volet2 ="stop";
String volet3 ="stop";
// instanciation de l'ecran
// l'adresse I2C (ici 0x3C) peut être différente en fonction du module que vous utilisez
SSD1306 display(0x3c, 4, 5);
ESP8266WebServer server(80);
void setup(void){
pinMode(16, OUTPUT);
pinMode(14, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
pinMode(2, OUTPUT);
pinMode(15, OUTPUT);
digitalWrite(16, HIGH);
digitalWrite(14, HIGH);
digitalWrite(12, HIGH);
digitalWrite(13, HIGH);
digitalWrite(2, HIGH);
digitalWrite(15, HIGH);
display.init();
display.flipScreenVertically();
display.setFont(ArialMT_Plain_10);
display.setTextAlignment(TEXT_ALIGN_CENTER);
// on demande la connexion au WiFi
WiFi.begin(ssid, password);
// on attend d'etre connecte au WiFi avant de continuer
while (WiFi.status() != WL_CONNECTED) {
delay(100);
display.clear();
// on ecrit le message a l'ecran
display.drawString(64, 22,".");
display.display();
delay(250);
display.clear();
// on ecrit le message a l'ecran
display.drawString(64, 22,"X");
display.display();
}
ArduinoOTA.begin();
ArduinoOTA.onStart([]() {
display.clear();
display.setFont(ArialMT_Plain_10);
display.setTextAlignment(TEXT_ALIGN_CENTER_BOTH);
display.drawString(DISPLAY_WIDTH/2, DISPLAY_HEIGHT/2 - 10, "OTA Update");
display.display();
});
ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {
display.drawProgressBar(4, 32, 120, 8, progress / (total / 100) );
display.display();
});
ArduinoOTA.onEnd([]() {
display.clear();
display.setFont(ArialMT_Plain_10);
display.setTextAlignment(TEXT_ALIGN_CENTER_BOTH);
display.drawString(DISPLAY_WIDTH/2, DISPLAY_HEIGHT/2, "Restart");
display.display();
});
// Align text vertical/horizontal center
display.clear();
display.setTextAlignment(TEXT_ALIGN_CENTER_BOTH);
display.setFont(ArialMT_Plain_10);
display.drawString(DISPLAY_WIDTH/2, DISPLAY_HEIGHT/2, "Ready for OTA:\n" + WiFi.localIP().toString());
display.display();
delay (5000);
// on affiche l'adresse IP qui nous a été attribuee
display.clear();
// on ecrit le message a l'ecran
display.drawString(60, 10,"IP address: " + WiFi.localIP().toString());
display.display();
// on definit ce qui doit etre fait lorsque la route "/" est appelee
server.on("/", [](){
// on recupere le parametre msg dans l'url
String message=server.arg("msg");
if (message == "STATE"){
server.send(200, "text/plain", volet1);
}
if (message == "on1"){
digitalWrite(2, LOW);
digitalWrite(16, HIGH);
volet1 = "1 UP";
}
if (message == "st1"){
digitalWrite(2, HIGH);
digitalWrite(16, HIGH);
volet1 = "1 STOP";
}
if (message == "of1"){
digitalWrite(16, LOW);
digitalWrite(2, HIGH);
volet1 = "1 DOWN";
}
if (message == "off2"){
digitalWrite(12, LOW);
digitalWrite(13, HIGH);
volet2 = "2 DOWN";
}
if (message == "stop2"){
digitalWrite(12, HIGH);
digitalWrite(13, HIGH);
volet2 = "2 STOP";
}
if (message == "on2"){
digitalWrite(13, LOW);
digitalWrite(12, HIGH);
volet2 = "2 UP";
}
if (message == "off3"){
digitalWrite(14, HIGH);
digitalWrite(15, LOW);
volet3 = "3 DOWN";
}
if (message == "stop3"){
digitalWrite(14, HIGH);
digitalWrite(15, HIGH);
volet3 = "3 STOP";
}
if (message == "on3"){
digitalWrite(15, HIGH);
digitalWrite(14, LOW);
volet3 = "3 UP";
}
display.clear();
// on ecrit le message a l'ecran
display.drawString(60, 10,"IP address: " + WiFi.localIP().toString());
display.drawString(60, 30, message );
display.drawString(60, 40, volet1 );
display.drawString(60, 50, volet2 );
display.drawString(60, 60, volet3 );
display.display();
// on repond au client
server.send(200, "text/plain", "#" + message );
});
server.begin();
}
void loop(void){
ArduinoOTA.handle();
server.handleClient();
}
Et ceci le code que j'essaie de faire pour envoyer une commande au 1°
#include <ESP8266WiFi.h>
byte ledPin = 2;
char ssid[] = "V_______"; // SSID of your home WiFi
char pass[] = "D________"; // password of your home WiFi
unsigned long askTimer = 0;
IPAddress server(192,168,0,8); // the fix IP address of the server
WiFiClient client;
void setup() {
Serial.begin(115200); // only for debug
WiFi.begin(ssid, pass); // connects to the WiFi router
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println("Connected to wifi");
Serial.print("Status: "); Serial.println(WiFi.status()); // Network parameters
Serial.print("IP: "); Serial.println(WiFi.localIP());
Serial.print("Subnet: "); Serial.println(WiFi.subnetMask());
Serial.print("Gateway: "); Serial.println(WiFi.gatewayIP());
Serial.print("SSID: "); Serial.println(WiFi.SSID());
Serial.print("Signal: "); Serial.println(WiFi.RSSI());
pinMode(ledPin, OUTPUT);
}
void loop () {
client.connect(server, 80); // Connection to the server
digitalWrite(ledPin, LOW); // to show the communication only (inverted logic)
Serial.println(".");
client.println("/?msg=on1\r"); // sends the message to the server
String answer = client.readStringUntil('\r'); // receives the answer from the sever
Serial.println("from server: " + answer);
client.flush();
digitalWrite(ledPin, HIGH);
delay(20000); // client will trigger the communication after two seconds
}
Merci 