-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsketch_jun07a.ino
159 lines (137 loc) · 3.9 KB
/
sketch_jun07a.ino
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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
/*
* EasyloT sketch tweeked by Barnabybear - original @
* http://iot-playground.com/2-uncategorised/40-esp8266-wifi-relay-switch-arduino-ide
* This sketch demonstrates how to set up a simple HTTP-like server.
* The server will set a GPIO pin depending on the request
* http://server_ip/gpio/0 will set the GPIO2 low,
* http://server_ip/gpio/1 will set the GPIO2 high
* server_ip is the IP address of the ESP8266 module, will be
* printed to Serial when the module is connected.
*/
#include <ESP8266WiFi.h>
const char* ssid = "14L";
const char* password = "19940116";
// Create an instance of the server
// specify the port to listen on as an argument
WiFiServer server(80);
void setup() {
Serial.begin(115200);
delay(10);
// prepare GPIO2
pinMode(2, OUTPUT);
digitalWrite(2, 0);
/* pinMode(3, OUTPUT);
digitalWrite(3, 0);
/*pinMode(4, OUTPUT);
digitalWrite(4, 0);
pinMode(5, OUTPUT);
digitalWrite(5, 0);
pinMode(6, OUTPUT);
digitalWrite(6, 0);
pinMode(7, OUTPUT);
digitalWrite(7, 0);
pinMode(8, OUTPUT);
digitalWrite(8, 0);
pinMode(9, OUTPUT);
digitalWrite(9, 0);
pinMode(10, OUTPUT);
digitalWrite(10, 0);
pinMode(11, OUTPUT);
digitalWrite(11, 0);
pinMode(12, OUTPUT);
digitalWrite(2, 0);
pinMode(13, OUTPUT);
digitalWrite(13, 0);
pinMode(14, OUTPUT);
digitalWrite(14, 0);
pinMode(15, OUTPUT);
digitalWrite(15, 0);
pinMode(16, OUTPUT);
digitalWrite(16, 0);*/
// Connect to WiFi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
// Start the server
server.begin();
Serial.println("Server started @ ");
// Print the IP address & instructions
Serial.println(WiFi.localIP());
Serial.println("To control GPIO, open your web browser.");
Serial.println("To set GPIO 0 high, type:");
Serial.print(WiFi.localIP());
Serial.println("/gpio/1");
Serial.println("To set GPIO 0 low, type:");
Serial.print(WiFi.localIP());
Serial.println("/gpio/0");
Serial.println("To toggle GPIO 0, type:");
Serial.print(WiFi.localIP());
Serial.println("/gpio/0");
}
void loop() {
// Check if a client has connected
WiFiClient client = server.available();
if (!client) {
delay(100);
return;
}
// Commented out by BB as gets stuck in while loop.
// Wait until the client sends some data
//Serial.println("new client");
//while(!client.available()){
// delay(1);
//}
// Read the first line of the request
String req = client.readStringUntil('\r');
Serial.println(req);
client.flush();
// Match the request
int val;
if (req.indexOf("/gpio/0") != -1)
val = 0;
else if (req.indexOf("/gpio/1") != -1)
val = 1;
else if (req.indexOf("/gpio/4") != -1)
val = (!digitalRead(0)); // <<<<< Edit: insert /gpio/3 lines after this line.
else {
Serial.println("invalid request");
client.print("HTTP/1.1 404\r\n");
client.stop();
return;
}
// Set GPIO2 according to the request
digitalWrite(2, val);
/*digitalWrite(3, val);
/* digitalWrite(4, val);
digitalWrite(5, val);
digitalWrite(6, val);
digitalWrite(7, val);
digitalWrite(8, val);
digitalWrite(9, val);
digitalWrite(10, val);
digitalWrite(11, val);
digitalWrite(12, val);
digitalWrite(13, val);
digitalWrite(14, val);
digitalWrite(15, val);
digitalWrite(16, val);*/
client.flush();
// Prepare the response
String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nGPIO is now ";
s += (val)?"high":"low";
s += "</html>\n";
// Send the response to the client
client.print(s);
delay(1);
Serial.println("Client disonnected");
// The client will actually be disconnected
// when the function returns and 'client' object is detroyed
}