Bonjour,
je souhaite activer un relais via internet en utilisant une carte Uno R3, un module ESP8266 pour le wifi
pour le moment j'ai réussi à activer le relais via une carte ethernet, et à contrario la connexion à mon réseau via le module ESP8266 fonctionne aussi
j'ai donc besoin de mixer deux programmes, malheureusement j'ai des erreurs probablement à des fonctions mal placées ou autre je nsais pas.
pouvez vous y jeter un oeil svp ?
Merci d'avance
programme relais avec hébergement
#include <SPI.h>
#include <Ethernet.h>
const byte relayPinout = 2; // define relay pinout number
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // set Arduino mac address (must be unique within the private LAN)
byte ip[] = { 192, 168, 0, 60 }; // set Arduino LAN IP address
byte gateway[] = { 192, 168, 0, 1 }; // set LAN gateway IP address
byte subnet[] = { 255, 255, 255, 0 }; // set LAN subnet mask
EthernetServer server(8065); // set HTML server port
String readString =""; // set readString
int outputStatus =0; // set outputStatus
void setup(){
pinMode(relayPinout, OUTPUT); // set pinout as output
digitalWrite(relayPinout, HIGH); // set pinout to HIGH to disable the relay (see note 2 for details)
Ethernet.begin(mac, ip, gateway, subnet); // initialize the Arduino ethernet device
server.begin(); // start listening for clients
} // end of setup()
void loop(){
EthernetClient client = server.available(); // create a client connection
if (client) {
while (client.connected()) {
if (client.available()) {
char c = client.read();
if (readString.length() < 100) { // read char by char HTTP request
readString += c; // store characters to string
}
if (c == '\n') { // if HTTP request has ended
if (readString.indexOf("?relayOn") >0) { // check for on button clic
digitalWrite(relayPinout, LOW); // if true enable the relay (see note 2 for details)
outputStatus = 1;
}
else{
if (readString.indexOf("?relayOff") >0) { // check for off button clic
digitalWrite(relayPinout, HIGH); // if true disable the relay (see note 2 for details)
outputStatus = 0;
}
}
client.println("HTTP/1.1 200 OK"); // send new page
client.println("Content-Type: text/html");
client.println();
client.println("<!DOCTYPE html>");
client.println("<html>");
client.println("<head>");
client.println("<meta name='apple-mobile-web-app-capable' content='yes'>");
client.println("<meta name='apple-mobile-web-app-status-bar-style' content='black-translucent'>");
client.println("<style type='text/css'>");
client.println("body {margin:40px 5px; text-align:center; font-family:'Trebuchet MS',Arial, Helvetica, sans-serif; }");
client.println("h1 {font-size:1.6em; padding-bottom:25px; border-bottom:3px dotted gray; }");
client.println("a {color:white; font-size:1.6em; font-weight:bold; text-decoration:none; padding:5px 10px; margin:15px; }");
client.println("a.button1 {background-color:green;}");
client.println("a.button2 {background-color:firebrick;}");
client.println("a {display:inline-block; width:125px; border:2px solid black; }");
client.println("a {border-radius:10px ; -o-border-radius:10px ; -webkit-border-radius:10px ; -moz-border-radius:10px ; }");
client.println("a.button1:hover {background-color:limegreen} ");
client.println("a.button2:hover {background-color:crimson} ");
client.println("</style>");
client.println("<title>WebRel</title>");
client.println("</head>");
client.println("<body>");
client.print("<h1>IMPRIMANTE ACTUELLEMENT
");
switch (outputStatus) {
case 0:
client.print("A L'ARRET");
break;
case 1:
client.print("EN MARCHE");
break;
}
client.println("</h1>");
client.println("<a href=\"/?relayOn\"\" class='button1'>MARCHE</a>");
client.println("<a href=\"/?relayOff\"\" class='button2'>ARRET</a>");
client.println("</body>");
client.println("</html>");
delay(1); // waiting for a while...
client.stop(); // stop Web client
readString=""; // clear string for next read
}
}
}
}
} // end of loop()
programme activation sans fil auto
#include <SoftwareSerial.h>
SoftwareSerial ESP8266(10, 11);
String NomduReseauWifi = "NUMERICABLE-D522"; // Garder les guillements
String MotDePasse = "huhu"; // Garder les guillements
/****************************************************************/
/* INIT */
/****************************************************************/
void setup()
{
Serial.begin(9600);
ESP8266.begin(9600);
initESP8266();
}
/****************************************************************/
/* BOUCLE INFINIE */
/****************************************************************/
void loop()
{
while(ESP8266.available())
{
Serial.println(ESP8266.readString());
}
}
/****************************************************************/
/* Fonction qui initialise l'ESP8266 */
/****************************************************************/
void initESP8266()
{
Serial.println("**********************************************************");
Serial.println("**************** DEBUT DE L'INITIALISATION ***************");
Serial.println("**********************************************************");
envoieAuESP8266("AT+RST");
recoitDuESP8266(2000);
Serial.println("**********************************************************");
envoieAuESP8266("AT+CWMODE=3");
recoitDuESP8266(5000);
Serial.println("**********************************************************");
envoieAuESP8266("AT+CWJAP=\""+ NomduReseauWifi + "\",\"" + MotDePasse +"\"");
recoitDuESP8266(10000);
Serial.println("**********************************************************");
envoieAuESP8266("AT+CIFSR");
recoitDuESP8266(1000);
Serial.println("**********************************************************");
envoieAuESP8266("AT+CIPMUX=1");
recoitDuESP8266(1000);
Serial.println("**********************************************************");
envoieAuESP8266("AT+CIPSERVER=1,80");
recoitDuESP8266(1000);
Serial.println("**********************************************************");
Serial.println("***************** INITIALISATION TERMINEE ****************");
Serial.println("**********************************************************");
Serial.println("");
}
/****************************************************************/
/* Fonction qui envoie une commande à l'ESP8266 */
/****************************************************************/
void envoieAuESP8266(String commande)
{
ESP8266.println(commande);
}
/****************************************************************/
/*Fonction qui lit et affiche les messages envoyés par l'ESP8266*/
/****************************************************************/
void recoitDuESP8266(const int timeout)
{
String reponse = "";
long int time = millis();
while( (time+timeout) > millis())
{
while(ESP8266.available())
{
char c = ESP8266.read();
reponse+=c;
}
}
Serial.print(reponse);
}