lukbe

NodeMCU_DHT22_Thingspeak_Arduino_IDE

Jan 20th, 2016
250
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.01 KB | None | 0 0
  1. #include <ESP8266WiFi.h>
  2. #include "DHT.h"
  3.  
  4.  
  5. #define AP_SSID "xxxxx"
  6. #define AP_PASSWORD "xxxxxx"
  7.  
  8.  
  9. #define API_KEY "xxxxx"
  10. #define REPORT_INTERVAL 60 // in sec
  11.  
  12.  
  13. #define THINGSPEAK_CLOUD_ADDRESS "api.thingspeak.com"
  14. #define THINGSPEAK_CLOUD_PORT 80
  15.  
  16.  
  17.  
  18. #define DHT22_PIN 13 // DHT22 pin
  19.  
  20.  
  21. float oldTemp;
  22. float oldHum;
  23.  
  24. DHT dht;
  25.  
  26.  
  27. void setup() {
  28. Serial.begin(115200);
  29.  
  30. wifiConnect();
  31.  
  32. Serial.println();
  33. Serial.println("Status\tHumidity (%)\tTemperature (C)\t(F)");
  34.  
  35. dht.setup(DHT22_PIN); // data pin 2
  36.  
  37. oldTemp = -1;
  38. oldHum = -1;
  39. }
  40.  
  41. void loop() {
  42. delay(dht.getMinimumSamplingPeriod());
  43.  
  44. float hum = dht.getHumidity();
  45. float temp = dht.getTemperature();
  46.  
  47. Serial.print(dht.getStatusString());
  48. Serial.print("\t");
  49. Serial.print(hum, 1);
  50. Serial.print("\t\t");
  51. Serial.print(temp, 1);
  52. Serial.print("\t\t");
  53. Serial.println(dht.toFahrenheit(temp), 1);
  54.  
  55. if (temp != oldTemp)
  56. {
  57. sendTeperature(temp);
  58. oldTemp = temp;
  59. }
  60.  
  61. if (hum != oldHum)
  62. {
  63. sendHumidity(hum);
  64. oldHum = hum;
  65. }
  66.  
  67. int cnt = REPORT_INTERVAL;
  68.  
  69. while(cnt--)
  70. delay(1000);
  71. }
  72.  
  73. void wifiConnect()
  74. {
  75. Serial.print("Connecting to AP");
  76. WiFi.begin(AP_SSID, AP_PASSWORD);
  77. while (WiFi.status() != WL_CONNECTED) {
  78. delay(1000);
  79. Serial.print(".");
  80. }
  81.  
  82. Serial.println("");
  83. Serial.println("WiFi connected");
  84. }
  85.  
  86. void sendTeperature(float temp)
  87. {
  88. WiFiClient client;
  89.  
  90. while(!client.connect(THINGSPEAK_CLOUD_ADDRESS, THINGSPEAK_CLOUD_PORT)) {
  91. Serial.println("connection failed");
  92. wifiConnect();
  93. }
  94.  
  95. String url = "";
  96.  
  97. url += "/update?api_key="+ String(API_KEY) + "&field2="+String(temp);
  98.  
  99. Serial.print("POST data to URL: ");
  100. Serial.println(url);
  101.  
  102. client.print(String("POST ") + url + " HTTP/1.1\r\n" +
  103. "Host: " + String(THINGSPEAK_CLOUD_ADDRESS) + "\r\n" +
  104. "Connection: close\r\n" +
  105. "Content-Length: 0\r\n" +
  106. "\r\n");
  107.  
  108. delay(100);
  109. while(client.available()){
  110. String line = client.readStringUntil('\r');
  111. Serial.print(line);
  112. }
  113.  
  114. Serial.println();
  115. Serial.println("Connection closed");
  116. }
  117.  
  118. void sendHumidity(float hum)
  119. {
  120. WiFiClient client;
  121.  
  122. while(!client.connect(THINGSPEAK_CLOUD_ADDRESS, THINGSPEAK_CLOUD_PORT)) {
  123. Serial.println("connection failed");
  124. wifiConnect();
  125. }
  126.  
  127. String url = "";
  128.  
  129. url += "/update?api_key="+ String(API_KEY) + "&field1="+String(hum);
  130.  
  131. Serial.print("POST data to URL: ");
  132. Serial.println(url);
  133.  
  134. client.print(String("POST ") + url + " HTTP/1.1\r\n" +
  135. "Host: " + String(THINGSPEAK_CLOUD_ADDRESS) + "\r\n" +
  136. "Connection: close\r\n" +
  137. "Content-Length: 0\r\n" +
  138. "\r\n");
  139.  
  140. delay(100);
  141. while(client.available()){
  142. String line = client.readStringUntil('\r');
  143. Serial.print(line);
  144. }
  145.  
  146. Serial.println();
  147. Serial.println("Connection closed");
  148. }
Advertisement
Add Comment
Please, Sign In to add comment