webDht11Thingspeak
unknown
plain_text
3 years ago
4.0 kB
18
Indexable
Never
#include <ESP8266WiFi.h> #include <ESP8266WebServer.h> #include "DHT.h" // Uncomment one of the lines below for whatever DHT sensor type you're using! #define DHTTYPE DHT11 // DHT 11 //#define DHTTYPE DHT21 // DHT 21 (AM2301) //#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321 /*Put your SSID & Password*/ const char* ssid = "wifi名字aaa"; // Enter SSID here const char* password = "wifi密碼bbb"; //Enter Password here ESP8266WebServer server(80); // DHT Sensor uint8_t DHTPin = D6; // Initialize DHT sensor. DHT dht(DHTPin, DHTTYPE); float Temperature; float Humidity; //thingspeak #define HOST "api.thingspeak.com" // ThingSpeak IP Address: 184.106.153.149 #define PORT 80 const char* resource = "/update?api_key="; String APIKEY = "ccc"; //寫入需要的Write API Key void setup() { Serial.begin(9600); delay(100); pinMode(DHTPin, INPUT); dht.begin(); Serial.println("Connecting to "); Serial.println(ssid); //connect to your local wi-fi network WiFi.begin(ssid, password); //check wi-fi is connected to wi-fi network while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected..!"); Serial.print("Got IP: "); Serial.println(WiFi.localIP()); server.on("/", handle_OnConnect); server.onNotFound(handle_NotFound); server.begin(); Serial.println("HTTP server started"); } void loop() { server.handleClient(); updateDHT22(); } void handle_OnConnect() { Temperature = dht.readTemperature(); // Gets the values of the temperature Humidity = dht.readHumidity(); // Gets the values of the humidity server.send(200, "text/html", SendHTML(Temperature,Humidity)); } void handle_NotFound(){ server.send(404, "text/plain", "Not found"); } String SendHTML(float Temperaturestat,float Humiditystat){ String ptr = "<!DOCTYPE html> <html>\n"; ptr +="<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=no\">\n"; ptr +="<meta charset='utf-8'>\n"; ptr +="<meta http-equiv = 'refresh' content = '1'>\n"; ptr +="<title>ESP8266 Weather Report</title>\n"; ptr +="<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}\n"; ptr +="body{margin-top: 50px;} h1 {color: #444444;margin: 50px auto 30px;}\n"; ptr +="p {font-size: 24px;color: #444444;margin-bottom: 10px;}\n"; ptr +="</style>\n"; ptr +="</head>\n"; ptr +="<body>\n"; ptr +="<div id=\"webpage\">\n"; ptr +="<h1>ESP8266 NodeMCU Weather Report</h1>\n"; ptr +="<p>Temperature: "; ptr +=Temperaturestat; ptr +="°C</p>"; ptr +="<p>Humidity: "; ptr +=Humiditystat; ptr +="%</p>"; ptr +="</div>\n"; ptr +="</body>\n"; ptr +="</html>\n"; return ptr; } void updateDHT22() { // 設定 ESP8266 作為 Client 端 WiFiClient client; if( !client.connect( HOST, PORT ) ) { Serial.println( "connection failed" ); return; } else { // 準備上傳到 ThingSpeak IoT Server 的資料 // 已經預先設定好 ThingSpeak IoT Channel 的欄位 // field1:溫度;field2:濕度 client.print(String("GET ") + resource + APIKEY + "&field1=" + dht.readTemperature() + "&field2=" + dht.readHumidity() + " HTTP/1.1\r\n" + "Host: " + HOST + "\r\n" + "Connection: close\r\n\r\n"); int timeout = 5 * 10; // 5 seconds while(!!!client.available() && (timeout-- > 0)){ delay(100); } if(!client.available()) { Serial.println("No response, going back to sleep"); } while(client.available()){ Serial.write(client.read()); } Serial.println("\nclosing connection"); client.stop(); } }