// Library
#include <ESP8266WiFi.h>
#include <WiFiManager.h>
#include <EEPROM.h>
#define Sensor_Pin 13 // нога для подключения реле термостата
#define Service_Pin 14 // нога для смены времени сна в режиме отладки
int Termostat_1 = 0; // перменная состояния термостата
int saved_termostat = 0; // переменная в энергонезависимой памяти
int Sleep_time = 0;
const char* host = "192.168.1.211"; // IP Нашего хоста
const int service_sleepTime = 10; // время сна в сервис режиме в секундах
const int normal_sleepTime = 18000; // время сна в нормальном режиме в секундах
void setup()
{
Serial.begin(115200); // Настраиваем вывод отладки
pinMode(Sensor_Pin, INPUT); // GPIO 13 на вход
pinMode(Service_Pin, INPUT); // GPIO 14 на вход
Serial.println("");
Serial.println("Read sensor_pin");
Termostat_1 = digitalRead(Sensor_Pin);
Serial.println("Read service_pin");
Sleep_time = digitalRead(Service_Pin);
if (Sleep_time == 0)
{
Sleep_time = service_sleepTime;
Serial.println("ESP in service sleep mode");
}
else
{
Sleep_time = normal_sleepTime;
Serial.println("ESP in normal sleep mode");
}
//delay(1000);
Serial.print("Termostat_1 = ");
Serial.println(Termostat_1);
//delay(1000);
Serial.println("reed eeprom");
EEPROM.begin(4);
saved_termostat = EEPROM.read(0);
//delay(1000);
Serial.print("eeprom = ");
Serial.println(saved_termostat);
//delay(1000);
if (saved_termostat == Termostat_1)
{
Serial.println("No change");
//delay(1000);
Serial.println("ESP8266 in sleep mode");
ESP.deepSleep(Sleep_time * 1000000);
}
saved_termostat = Termostat_1;
EEPROM.begin(4);
EEPROM.write(0,saved_termostat);
EEPROM.end();
//Включаем WiFiManager
WiFiManager wifiManager;
//IPAddress _ip = IPAddress(192, 168, 1, 112);
// IPAddress _gw = IPAddress(192, 168, 1, 1);
// IPAddress _sn = IPAddress(255, 255, 255, 0);
// wifiManager.setSTAStaticIPConfig(_ip, _gw, _sn);
//Если не удалось подключиться клиентом запускаем режим AP
// доступ к настройкам по адресу
http://192.168.4.1
wifiManager.autoConnect("ServiceAP_Sensor_1");
//если подключение к точке доступа произошло сообщаем
Serial.println("connected...yeey
");
delay(100);
// Use WiFiClient class to create TCP connections
WiFiClient client;
const int httpPort = 80;
if (!client.connect(host, httpPort)) {
Serial.println("connection failed");
return;
}
// Termostat_1 = digitalRead(Sensor_Pin);
client.print(String("/gpio_1/") + Termostat_1);
delay(10);
// Read all the lines of the reply from server and print them to Serial
while(client.available()){
String line = client.readStringUntil('\r');
Serial.print(line);
}
Serial.println();
Serial.println("closing connection");
delay(1000);
// Sleep
Serial.println("ESP8266 in sleep mode");
ESP.deepSleep(Sleep_time * 1000000);
}
void loop()
{
}