Advertisement
Guest User

Untitled

a guest
Oct 19th, 2017
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.51 KB | None | 0 0
  1. #include <ESP8266WiFi.h>
  2. #include <ESP8266WebServer.h>
  3. #include <WiFiClient.h>
  4. #include <OneWire.h>
  5. #include <DallasTemperature.h>
  6.  
  7.  
  8. //------------------------------------------
  9. //DS18B20
  10. #define ONE_WIRE_BUS D3 //Pin to which is attached a temperature sensor
  11. #define ONE_WIRE_MAX_DEV 15 //The maximum number of devices
  12.  
  13. OneWire oneWire(ONE_WIRE_BUS);
  14. DallasTemperature DS18B20(&oneWire);
  15. int numberOfDevices; //Number of temperature devices found
  16. DeviceAddress devAddr[ONE_WIRE_MAX_DEV]; //An array device temperature sensors
  17. float tempDev[ONE_WIRE_MAX_DEV]; //Saving the last measurement of temperature
  18. float tempDevLast[ONE_WIRE_MAX_DEV]; //Previous temperature measurement
  19. long lastTemp; //The last measurement
  20. const int durationTemp = 5000; //The frequency of temperature measurement
  21.  
  22. //------------------------------------------
  23. //WIFI
  24. const char* ssid = "Uszanowanko";
  25. const char* password = "hehe";
  26.  
  27. //------------------------------------------
  28. //HTTP
  29. ESP8266WebServer server(80);
  30.  
  31. //------------------------------------------
  32. //Convert device id to String
  33. String GetAddressToString(DeviceAddress deviceAddress){
  34. String str = "";
  35. for (uint8_t i = 0; i < 8; i++){
  36. if( deviceAddress[i] < 16 ) str += String(0, HEX);
  37. str += String(deviceAddress[i], HEX);
  38. }
  39. return str;
  40. }
  41.  
  42. //Setting the temperature sensor
  43. void SetupDS18B20(){
  44. DS18B20.begin();
  45.  
  46. Serial.print("Parasite power is: ");
  47. if( DS18B20.isParasitePowerMode() ){
  48. Serial.println("ON");
  49. }else{
  50. Serial.println("OFF");
  51. }
  52.  
  53. numberOfDevices = DS18B20.getDeviceCount();
  54. Serial.print( "Device count: " );
  55. Serial.println( numberOfDevices );
  56.  
  57. lastTemp = millis();
  58. DS18B20.requestTemperatures();
  59.  
  60. // Loop through each device, print out address
  61. for(int i=0;i<numberOfDevices; i++){
  62. // Search the wire for address
  63. if( DS18B20.getAddress(devAddr[i], i) ){
  64. //devAddr[i] = tempDeviceAddress;
  65. Serial.print("Found device ");
  66. Serial.print(i, DEC);
  67. Serial.print(" with address: " + GetAddressToString(devAddr[i]));
  68. Serial.println();
  69. }else{
  70. Serial.print("Found ghost device at ");
  71. Serial.print(i, DEC);
  72. Serial.print(" but could not detect address. Check power and cabling");
  73. }
  74.  
  75. //Get resolution of DS18b20
  76. Serial.print("Resolution: ");
  77. Serial.print(DS18B20.getResolution( devAddr[i] ));
  78. Serial.println();
  79.  
  80. //Read temperature from DS18b20
  81. float tempC = DS18B20.getTempC( devAddr[i] );
  82. Serial.print("Temp C: ");
  83. Serial.println(tempC);
  84. }
  85. }
  86.  
  87. //Loop measuring the temperature
  88. void TempLoop(long now){
  89. if( now - lastTemp > durationTemp ){ //Take a measurement at a fixed time (durationTemp = 5000ms, 5s)
  90. for(int i=0; i<numberOfDevices; i++){
  91. float tempC = DS18B20.getTempC( devAddr[i] ); //Measuring temperature in Celsius
  92. tempDev[i] = tempC; //Save the measured value to the array
  93. }
  94. DS18B20.setWaitForConversion(false); //No waiting for measurement
  95. DS18B20.requestTemperatures(); //Initiate the temperature measurement
  96. lastTemp = millis(); //Remember the last time measurement
  97. }
  98. }
  99.  
  100. //------------------------------------------
  101. void HandleRoot(){
  102. String message = "Number of devices: ";
  103. message += numberOfDevices;
  104. message += "\r\n<br>";
  105. char temperatureString[6];
  106.  
  107. message += "<table border='1'>\r\n";
  108. message += "<tr><td>Device id</td><td>Temperature</td></tr>\r\n";
  109. for(int i=0;i<numberOfDevices;i++){
  110. dtostrf(tempDev[i], 2, 2, temperatureString);
  111. Serial.print( "Sending temperature: " );
  112. Serial.println( temperatureString );
  113.  
  114. message += "<tr><td>";
  115. message += GetAddressToString( devAddr[i] );
  116. message += "</td>\r\n";
  117. message += "<td>";
  118. message += temperatureString;
  119. message += "</td></tr>\r\n";
  120. message += "\r\n";
  121. }
  122. message += "</table>\r\n";
  123. message += "<br><br>";
  124. message += "<a href=\"/LEDON\"\"><button>Turn On </button></a>";
  125. message += "<a href=\"/LEDOFF\"\"><button>Turn Off </button></a><br />";
  126.  
  127. server.send(200, "text/html", message );
  128. }
  129.  
  130. void HandleNotFound(){
  131. String message = "File Not Found\n\n";
  132. message += "URI: ";
  133. message += server.uri();
  134. message += "\nMethod: ";
  135. message += (server.method() == HTTP_GET)?"GET":"POST";
  136. message += "\nArguments: ";
  137. message += server.args();
  138. message += "\n";
  139. for (uint8_t i=0; i<server.args(); i++){
  140. message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
  141. }
  142. server.send(404, "text/html", message);
  143. }
  144.  
  145. void handleLedOff(){
  146. digitalWrite(LED_BUILTIN, LOW);
  147. HandleRoot();
  148. }
  149.  
  150.  
  151. void handleLedOn(){
  152. digitalWrite(LED_BUILTIN, HIGH);
  153. HandleRoot();
  154. }
  155.  
  156.  
  157. //------------------------------------------
  158. void setup() {
  159. //Setup Serial port speed
  160. Serial.begin(115200);
  161.  
  162. //Setup WIFI
  163. WiFi.begin(ssid, password);
  164. Serial.println("");
  165.  
  166. //Wait for WIFI connection
  167. while (WiFi.status() != WL_CONNECTED) {
  168. delay(500);
  169. Serial.print(".");
  170. }
  171. Serial.println("");
  172. Serial.print("Connected to ");
  173. Serial.println(ssid);
  174. Serial.print("IP address: ");
  175. Serial.println(WiFi.localIP());
  176.  
  177. server.on("/", HandleRoot);
  178. server.on("/LEDON", handleLedOn);
  179. server.on("/LEDOFF", handleLedOff);
  180. server.onNotFound( HandleNotFound );
  181. server.begin();
  182. Serial.println("HTTP server started at ip " + WiFi.localIP().toString() );
  183.  
  184. //Setup DS18b20 temperature sensor
  185. SetupDS18B20();
  186.  
  187. }
  188.  
  189. void loop() {
  190. long t = millis();
  191.  
  192. server.handleClient();
  193. TempLoop( t );
  194. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement