T_F

Temper monitor

T_F
Aug 4th, 2020
395
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.37 KB | None | 0 0
  1. #include <ESP8266WiFi.h>
  2. #include <WiFiClient.h>
  3. #include <ESP8266WebServer.h>
  4. #include <OneWire.h>
  5. #include <DallasTemperature.h>
  6. #include <EEPROM.h>
  7.  
  8. #define ONE_WIRE_BUS 2
  9.  
  10. #define rebTime 86400000
  11. #define senTime 360000
  12.  
  13. #define resetButton 13
  14.  
  15. OneWire oneWire(ONE_WIRE_BUS);
  16. DallasTemperature sensors(&oneWire);
  17.  
  18. double t1 = 0;
  19. double t2 = 0;
  20. double t3 = 0;
  21.  
  22. long int sendTime = 0;
  23. long int rebootTime = 0;
  24.  
  25. struct ewifi {
  26. bool ap;
  27. char STAssid[17];
  28. char STApass[17];
  29. } wifiSettings;
  30.  
  31. ESP8266WebServer server(80);
  32.  
  33. void readSettings() {
  34. byte sizeSettings = sizeof(wifiSettings);
  35. byte eeprom_data_tmp[sizeSettings];
  36. EEPROM.begin(sizeSettings);
  37. for (int i = 0; i < sizeSettings; i++)
  38. {
  39. eeprom_data_tmp[i] = EEPROM.read(i);
  40. }
  41. memcpy(&wifiSettings, eeprom_data_tmp, sizeof(sizeSettings));
  42. }
  43. void writeSettings() {
  44. byte sizeSettings = sizeof(wifiSettings);
  45. byte eeprom_data_tmp[sizeSettings];
  46. EEPROM.begin(sizeSettings);
  47. memcpy(eeprom_data_tmp, &wifiSettings, sizeSettings);
  48. for (int i = 0; i < sizeSettings; i++)
  49. {
  50. EEPROM.write(i, eeprom_data_tmp[i]);
  51. }
  52. EEPROM.commit();
  53. }
  54. //void reboot() {
  55. // delay(2000);
  56. // ESP.reset();
  57. // delay(5000);
  58. //}
  59. void getTemp() {
  60. sensors.requestTemperatures();
  61. t1 = sensors.getTempCByIndex(0);
  62. t2 = sensors.getTempCByIndex(1);
  63. t3 = sensors.getTempCByIndex(2);
  64. }
  65.  
  66. void mainPage() {
  67. getTemp();
  68. String page = "<html> <head> <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" /><title>Умная теплица</title></head><body style=\"width:100%\"><center>";
  69. page += "<br><br><h1>Текущая температура</h1><br>Верхний уровень 2,5 метра: <b>";
  70. page += t2;
  71. page += "°C </b> <br> Средний уровень 1 метр: <b>";
  72. page += t3;
  73. page += "°C </b> <br> Нижний уровень грунт: <b>";
  74. page += t1;
  75. page += "°C </b> <br><br>";
  76. page += "<a href=\"/settings\">Настройки</a></center></body></html>";
  77. server.send(200, "text/html", page);
  78. }
  79.  
  80. void settingsPage() {
  81. if (server.args() > 0 & server.argName(0) == "ssid" & server.argName(1) == "pass") {
  82. server.arg(0).toCharArray(wifiSettings.STAssid, sizeof(server.arg(0)));
  83. server.arg(0).toCharArray(wifiSettings.STApass, sizeof(server.arg(1)));
  84. wifiSettings.ap = false;
  85. writeSettings();
  86. // reboot();
  87. }
  88. String page = "<html> <head> <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" /><title>Умная теплица : настройки</title></head><body style=\"width:100%\"><center>";
  89. page += "<form action=\"/settings\" method=\"POST\"><br><br>Настроки wifi<br><br>";
  90. page += "<table><tr><td>Имя сети:</td><td><input type=\"text\" size=\"20\" name=\"ssid\" style=\"width:119px\"></td>";
  91. page += "<table><tr><td>Пароль:</td><td><input type=\"password\" size=\"20\" name=\"pass\" style=\"width:119px\"></td>";
  92. page += "</tr><tr><td colspan=\"2\"><input type=\"submit\" value=\"Сохранить и перезагрузить\" style=\"width:180px\">";
  93. page += "</td></tr></table></form><br> Мак адресс устройства: " + WiFi.macAddress() + "</center></body></html>";
  94. server.send(200, "text/html", page);
  95. }
  96.  
  97. boolean sendTemp() {
  98. WiFiClient client;
  99. String buf = "#" + WiFi.macAddress() + "\r\n";
  100. buf += "#T1#" + String(t2) + "#\r\n";
  101. buf += "#T2#" + String(t3) + "#\r\n";
  102. buf += "#T3#" + String(t1) + "#\r\n";
  103. buf += "##\r\n";
  104.  
  105. if (!client.connect("narodmon.ru", 8283)) {
  106. return false;
  107. } else
  108. {
  109. client.print(buf);
  110. while (client.available()) {
  111. String line = client.readStringUntil('\r');
  112. }
  113. }
  114. return true;
  115. }
  116. void setup() {
  117. delay(1000);
  118. readSettings();
  119. pinMode(resetButton, INPUT);
  120. if (wifiSettings.ap) {
  121. WiFi.mode(WIFI_AP);
  122. WiFi.softAP("Teplica", "1q2w3e4r"); // ap
  123. // writeSettings();
  124. } else {
  125. WiFi.mode(WIFI_STA);
  126. WiFi.begin ("Dom51", "mk51mk51" ); // clint
  127.  
  128. // IPAddress ip(192, 168, 0, 3);
  129. // IPAddress gateway(192, 168, 0, 1);
  130. // IPAddress subnet(255, 255, 255, 0);
  131.  
  132. // WiFi.config(ip, gateway, subnet);
  133. }
  134.  
  135. server.on("/", mainPage);
  136. server.on("/settings", settingsPage);
  137. server.begin();
  138. sensors.begin();
  139. }
  140.  
  141. void loop() {
  142.  
  143. server.handleClient();
  144.  
  145. // if (millis() - rebootTime >= rebTime) reboot(); // REBOOT
  146.  
  147. if (millis() - sendTime >= senTime)
  148. {
  149. getTemp();
  150. sendTemp();
  151. sendTime = millis();
  152. }
  153. if (digitalRead(resetButton)) {
  154. delay(100);
  155. wifiSettings.ap = true;
  156. writeSettings();
  157. // reboot();
  158. }
  159. }
Add Comment
Please, Sign In to add comment