Bonjour,
J'ai tenté de résoudre le problème suivant :
Sur un module ESP8266 je détecte l'ouverture ou la fermeture sur deux contacts et j'envoie le résultat sur le réseau WIFI.
Sur le second module je lis le message envoyé du premier module et j'affiche par diode l'état des contacts (ouvert ou fermé).
J'ai programmé les deux ESP8266 en m'inspirant d'exemples et le résultat n'est pas toujours conforme.
Je pense que mes programmes ne sont pas au top et je vous les proposes à votre analyse.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96 #include <ESP8266WiFi.h> int pinGPIO16 = 16; //To control LED wifi connecte int pinGPIO05 = 5; //la porte 1 est fermée int pinGPIO04 = 4; //la porte 2 est fermée IPAddress ip(192 , 168 , 1 ,30); IPAddress gateway(192 , 168 , 1 , 1); IPAddress subnet(255 , 255 , 255 , 0); WiFiServer server (80); void setup() { Serial.begin(115200); Serial.println(); WiFi.config(ip,gateway,subnet); WiFi.begin("Livebox-b", "xxxxx"); Serial.print("Connecting"); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(); Serial.print("Connected, IP address: "); Serial.println(WiFi.localIP()); pinMode(pinGPIO16, OUTPUT); pinMode(pinGPIO05, OUTPUT); pinMode(pinGPIO04, OUTPUT); digitalWrite(pinGPIO16, HIGH); digitalWrite(pinGPIO05, LOW); digitalWrite(pinGPIO04, LOW); server.begin(); Serial.println("Serveur demarrer !"); } void loop() { WiFiClient client = server.available(); if (client) { if (client.connected()) { String request = client.readStringUntil('\r'); Serial.println(request); int porte1 = request[7]; int porte2 = request[15]; Serial.println(porte1); Serial.println(porte2); if (porte1 ==48) { digitalWrite(pinGPIO05, HIGH); Serial.println("05 high"); } else { digitalWrite(pinGPIO05, LOW); Serial.println("05 low"); } if (porte2 ==48) { digitalWrite(pinGPIO04, HIGH); } else { digitalWrite(pinGPIO04, LOW); } client.flush(); } else { digitalWrite(pinGPIO04, LOW); digitalWrite(pinGPIO05, LOW); Serial.println("client non connecté"); } } client.stop(); }Je vous remercie par avance de m'apporter votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114 #include <ESP8266WiFi.h> int pinGPIO16 = 16; //To control LED wifi connecte int pinGPIO14 = 14; //To contact porte int pinGPIO12 = 12; //To contact porte 2 int pinGPIO5 = 5; //La porte 1 est fermée int pinGPIO4 = 4; //La porte 2 est fermée int val1 = 0; int val2 = 0; String chaine; WiFiClient client; IPAddress ip(192 , 168 , 1 , 31); IPAddress server(192 , 168 , 1 ,30); IPAddress gateway(192 , 168 , 1 , 1); IPAddress subnet(255 , 255 , 255 , 0); void setup() { Serial.begin(115200); Serial.println(); WiFi.config(ip,gateway,subnet); WiFi.begin("Livebox-b", "xxxxx"); Serial.print("Connecting"); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(); Serial.print("Connected, IP address: "); Serial.println(WiFi.localIP()); pinMode(pinGPIO16, OUTPUT); pinMode(pinGPIO5, OUTPUT); pinMode(pinGPIO4, OUTPUT); pinMode(pinGPIO14, INPUT); pinMode(pinGPIO12, INPUT); digitalWrite(pinGPIO16, HIGH); digitalWrite(pinGPIO5, LOW); digitalWrite(pinGPIO4, LOW); } void testporte1() { pinMode(pinGPIO14, INPUT); val1 = digitalRead(pinGPIO14); if (val1 == 1) { Serial.print("porte 1 ouverte : "); Serial.println(val1); digitalWrite(pinGPIO5, LOW); } if (val1 == 0) { Serial.print("porte 1 fermée : "); Serial.println(val1); digitalWrite(pinGPIO5, HIGH); } } void testporte2() { pinMode(pinGPIO12, INPUT); val2 = digitalRead(pinGPIO12); if (val2 == 1) { Serial.print("porte 2 ouverte : "); Serial.println(val2); digitalWrite(pinGPIO4, LOW); } if (val2 == 0) { Serial.print("porte 2 fermée : "); Serial.println(val2); digitalWrite(pinGPIO4, HIGH); } } void cnxserveur() { client.connect(server,80); if (client.connect(server, 80)) { Serial.println("connected"); chaine = "porte1 "; chaine += val1; chaine += "porte2 "; chaine += val2; chaine += "\r"; client.println(chaine); client.println(); } else { Serial.println("connection failed"); } } void loop() { delay(2000); testporte1(); testporte2(); cnxserveur(); }
Cordialement
Partager