Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <ESP8266WiFi.h>
- #include <WiFiClient.h>
- #include <ESP8266WebServer.h>
- #include <OneWire.h>
- #include <DallasTemperature.h>
- #include <EEPROM.h>
- #define ONE_WIRE_BUS 2
- #define rebTime 86400000
- #define senTime 360000
- #define resetButton 13
- OneWire oneWire(ONE_WIRE_BUS);
- DallasTemperature sensors(&oneWire);
- double t1 = 0;
- double t2 = 0;
- double t3 = 0;
- long int sendTime = 0;
- long int rebootTime = 0;
- struct ewifi {
- bool ap;
- char STAssid[17];
- char STApass[17];
- } wifiSettings;
- ESP8266WebServer server(80);
- void readSettings() {
- byte sizeSettings = sizeof(wifiSettings);
- byte eeprom_data_tmp[sizeSettings];
- EEPROM.begin(sizeSettings);
- for (int i = 0; i < sizeSettings; i++)
- {
- eeprom_data_tmp[i] = EEPROM.read(i);
- }
- memcpy(&wifiSettings, eeprom_data_tmp, sizeof(sizeSettings));
- }
- void writeSettings() {
- byte sizeSettings = sizeof(wifiSettings);
- byte eeprom_data_tmp[sizeSettings];
- EEPROM.begin(sizeSettings);
- memcpy(eeprom_data_tmp, &wifiSettings, sizeSettings);
- for (int i = 0; i < sizeSettings; i++)
- {
- EEPROM.write(i, eeprom_data_tmp[i]);
- }
- EEPROM.commit();
- }
- //void reboot() {
- // delay(2000);
- // ESP.reset();
- // delay(5000);
- //}
- void getTemp() {
- sensors.requestTemperatures();
- t1 = sensors.getTempCByIndex(0);
- t2 = sensors.getTempCByIndex(1);
- t3 = sensors.getTempCByIndex(2);
- }
- void mainPage() {
- getTemp();
- String page = "<html> <head> <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" /><title>Умная теплица</title></head><body style=\"width:100%\"><center>";
- page += "<br><br><h1>Текущая температура</h1><br>Верхний уровень 2,5 метра: <b>";
- page += t2;
- page += "°C </b> <br> Средний уровень 1 метр: <b>";
- page += t3;
- page += "°C </b> <br> Нижний уровень грунт: <b>";
- page += t1;
- page += "°C </b> <br><br>";
- page += "<a href=\"/settings\">Настройки</a></center></body></html>";
- server.send(200, "text/html", page);
- }
- void settingsPage() {
- if (server.args() > 0 & server.argName(0) == "ssid" & server.argName(1) == "pass") {
- server.arg(0).toCharArray(wifiSettings.STAssid, sizeof(server.arg(0)));
- server.arg(0).toCharArray(wifiSettings.STApass, sizeof(server.arg(1)));
- wifiSettings.ap = false;
- writeSettings();
- // reboot();
- }
- String page = "<html> <head> <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" /><title>Умная теплица : настройки</title></head><body style=\"width:100%\"><center>";
- page += "<form action=\"/settings\" method=\"POST\"><br><br>Настроки wifi<br><br>";
- page += "<table><tr><td>Имя сети:</td><td><input type=\"text\" size=\"20\" name=\"ssid\" style=\"width:119px\"></td>";
- page += "<table><tr><td>Пароль:</td><td><input type=\"password\" size=\"20\" name=\"pass\" style=\"width:119px\"></td>";
- page += "</tr><tr><td colspan=\"2\"><input type=\"submit\" value=\"Сохранить и перезагрузить\" style=\"width:180px\">";
- page += "</td></tr></table></form><br> Мак адресс устройства: " + WiFi.macAddress() + "</center></body></html>";
- server.send(200, "text/html", page);
- }
- boolean sendTemp() {
- WiFiClient client;
- String buf = "#" + WiFi.macAddress() + "\r\n";
- buf += "#T1#" + String(t2) + "#\r\n";
- buf += "#T2#" + String(t3) + "#\r\n";
- buf += "#T3#" + String(t1) + "#\r\n";
- buf += "##\r\n";
- if (!client.connect("narodmon.ru", 8283)) {
- return false;
- } else
- {
- client.print(buf);
- while (client.available()) {
- String line = client.readStringUntil('\r');
- }
- }
- return true;
- }
- void setup() {
- delay(1000);
- readSettings();
- pinMode(resetButton, INPUT);
- if (wifiSettings.ap) {
- WiFi.mode(WIFI_AP);
- WiFi.softAP("Teplica", "1q2w3e4r"); // ap
- // writeSettings();
- } else {
- WiFi.mode(WIFI_STA);
- WiFi.begin ("Dom51", "mk51mk51" ); // clint
- // IPAddress ip(192, 168, 0, 3);
- // IPAddress gateway(192, 168, 0, 1);
- // IPAddress subnet(255, 255, 255, 0);
- // WiFi.config(ip, gateway, subnet);
- }
- server.on("/", mainPage);
- server.on("/settings", settingsPage);
- server.begin();
- sensors.begin();
- }
- void loop() {
- server.handleClient();
- // if (millis() - rebootTime >= rebTime) reboot(); // REBOOT
- if (millis() - sendTime >= senTime)
- {
- getTemp();
- sendTemp();
- sendTime = millis();
- }
- if (digitalRead(resetButton)) {
- delay(100);
- wifiSettings.ap = true;
- writeSettings();
- // reboot();
- }
- }
Add Comment
Please, Sign In to add comment