Сохранение на STM8
This commit is contained in:
@ -181,21 +181,19 @@ function updateSensors(){
|
|||||||
}
|
}
|
||||||
if(obj.volt!=null){
|
if(obj.volt!=null){
|
||||||
document.getElementById("volt_cnt").style.display='table-row';
|
document.getElementById("volt_cnt").style.display='table-row';
|
||||||
let p;
|
let p=(obj.volt-290)/130; //Преобразую в проценты где 2,9 это 0 % а 4.2 это 100%
|
||||||
if(obj.volt==300) p=0;
|
|
||||||
else p=Math.round(((obj.volt-300)/(420-300))*100);
|
|
||||||
if(p<0) p=0;
|
if(p<0) p=0;
|
||||||
if(p>100) p=100;
|
if(p>100) p=100;
|
||||||
document.getElementById("volt").innerHTML=p+"%";
|
document.getElementById("volt").innerHTML=p+"%";
|
||||||
}else{
|
}else{
|
||||||
document.getElementById("volt_cnt").style.display='none';
|
document.getElementById("volt_cnt").style.display='none';
|
||||||
}
|
}
|
||||||
if(obj.tmpr!=null){
|
/*if(obj.tmpr!=null){
|
||||||
document.getElementById("tmpr_cnt").style.display='table-row';
|
document.getElementById("tmpr_cnt").style.display='table-row';
|
||||||
document.getElementById("tmpr").innerHTML=obj.tmpr+"°C";
|
document.getElementById("tmpr").innerHTML=obj.tmpr+"°C";
|
||||||
}else{
|
}else{
|
||||||
document.getElementById("tmpr_cnt").style.display='none';
|
document.getElementById("tmpr_cnt").style.display='none';
|
||||||
}
|
}*/
|
||||||
|
|
||||||
let networks = document.getElementById("networks");
|
let networks = document.getElementById("networks");
|
||||||
delChild(networks);
|
delChild(networks);
|
||||||
@ -281,7 +279,8 @@ window.onload = function () {
|
|||||||
if(g_ticks>0) {
|
if(g_ticks>0) {
|
||||||
updateSensors();
|
updateSensors();
|
||||||
}
|
}
|
||||||
}, 5000);
|
}, 10000);
|
||||||
|
|
||||||
setInterval(function () {
|
setInterval(function () {
|
||||||
if(g_ticks>0) {
|
if(g_ticks>0) {
|
||||||
if(g_ticks!=999) {
|
if(g_ticks!=999) {
|
||||||
@ -351,7 +350,7 @@ window.onload = function () {
|
|||||||
<table style="width: 100%;">
|
<table style="width: 100%;">
|
||||||
<tr style="width: 100%;"><td style="text-align:left;">Протечка:</td><td id="leak" style="width: 50px;text-align:right;white-space: nowrap;">___</td></tr>
|
<tr style="width: 100%;"><td style="text-align:left;">Протечка:</td><td id="leak" style="width: 50px;text-align:right;white-space: nowrap;">___</td></tr>
|
||||||
<tr id="volt_cnt" style="display: none;"><td style="text-align:left; width: 90%;">Заряд аккумулятора:</td><td id="volt" style="width: 50px;text-align:right;">___</td></tr>
|
<tr id="volt_cnt" style="display: none;"><td style="text-align:left; width: 90%;">Заряд аккумулятора:</td><td id="volt" style="width: 50px;text-align:right;">___</td></tr>
|
||||||
<tr id="tmpr_cnt" style="display: none;"><td style="text-align:left; width: 90%;">Температура:</td><td id="tmpr" style="width: 50px;text-align:right;">___</td></tr>
|
<!--tr id="tmpr_cnt" style="display: none;"><td style="text-align:left; width: 90%;">Температура:</td><td id="tmpr" style="width: 50px;text-align:right;">___</td></tr-->
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
|||||||
@ -5,4 +5,4 @@ mqtt_port=1883
|
|||||||
mqtt_fingerprint=32:95:81:45:9C:32:F3:BD:B3:09:63:58:D3:94:AC:19:78:45:3B:15
|
mqtt_fingerprint=32:95:81:45:9C:32:F3:BD:B3:09:63:58:D3:94:AC:19:78:45:3B:15
|
||||||
mqtt_user=xxxxxx
|
mqtt_user=xxxxxx
|
||||||
mqtt_pass=xxxxxx
|
mqtt_pass=xxxxxx
|
||||||
mqtt_topic=home/lights/main
|
mqtt_topic=home/water/main
|
||||||
|
|||||||
166
src/main.cpp
166
src/main.cpp
@ -35,6 +35,7 @@ Bounce bounce = Bounce(); //Для избавления от дребезга к
|
|||||||
|
|
||||||
int blink=LOW; //Для мигания при настройке
|
int blink=LOW; //Для мигания при настройке
|
||||||
int blinkMSec=0; //Для мигания при настройке
|
int blinkMSec=0; //Для мигания при настройке
|
||||||
|
bool blinkEnbl=true; //Разрешено ли гореть(мигать) светодиоду
|
||||||
|
|
||||||
ESP8266WebServer server(80); // Set web server and port number to 80
|
ESP8266WebServer server(80); // Set web server and port number to 80
|
||||||
WiFiClient wifiClient;
|
WiFiClient wifiClient;
|
||||||
@ -51,9 +52,13 @@ DNSServer dnsServer;
|
|||||||
|
|
||||||
//Для входа и выхода из режима настройки WIFI
|
//Для входа и выхода из режима настройки WIFI
|
||||||
#define CNF_TIME 300; //Сколько секунд даётся для настройки оборудования (600=5минут)
|
#define CNF_TIME 300; //Сколько секунд даётся для настройки оборудования (600=5минут)
|
||||||
int g_ticks = CNF_TIME; //Переменная для отсчёта секунд, как дойдёт до нуля то засыпаем
|
int g_ticks_cnf = 0; //Переменная для отсчёта секунд, как дойдёт до нуля то засыпаем
|
||||||
Ticker blinker; //Для подсчёта времени до входа в спящий режим (предполагаю просыпание по кнопке ресет)
|
Ticker blinker; //Для подсчёта времени до входа в спящий режим (предполагаю просыпание по кнопке ресет)
|
||||||
|
|
||||||
|
//Сколько секунд для отправки данных на сервер (после получения показаний сокращаю время)
|
||||||
|
#define SND_TIME 100;
|
||||||
|
int g_ticks_snd = 0;
|
||||||
|
|
||||||
String ssid="Node6";
|
String ssid="Node6";
|
||||||
String pass="isecretk";
|
String pass="isecretk";
|
||||||
|
|
||||||
@ -68,16 +73,18 @@ String mqtt_pass = ""; // Пароль для подключения к серв
|
|||||||
String mqtt_topic = "home/water/main"; /* 1=on, 0=off else toggle*/
|
String mqtt_topic = "home/water/main"; /* 1=on, 0=off else toggle*/
|
||||||
#define LED_QOS 1 //0 - Без подтверждения 1 - С подтверждением 2 - С подтверждением и без возможности двойной отправки
|
#define LED_QOS 1 //0 - Без подтверждения 1 - С подтверждением 2 - С подтверждением и без возможности двойной отправки
|
||||||
|
|
||||||
int time5s=millis(); //Для реконекта каждые 5 секунд
|
int time5s=millis(); //Для реконекта к MQTT каждые 5 секунд
|
||||||
String uuid=""; //Уникальный ID клиента (загружается из файловой системы)
|
String uuid=""; //Уникальный ID клиента (загружается из файловой системы)
|
||||||
|
|
||||||
String g_data; //Для накопления данных с последовательного порта
|
String g_data; //Для накопления данных с последовательного порта
|
||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
int g_cold = -1; //Показание холодной воды
|
int g_cold = -1; //Показание холодной воды c STM8L051
|
||||||
int g_hot = -1; //Показание горячей воды
|
int g_cold_new = -1; //Для записи в контроллер
|
||||||
int g_leak = -1; //Протечка 0 нет 1 есть
|
int g_hot = -1; //Показание горячей воды c STM8L051
|
||||||
int g_volt = -1; //Вольт на акамуляторе
|
int g_hot_new = -1; //Для записи в контроллер
|
||||||
int g_tmpr = -100; //Температура на микроконтроллере
|
int g_leak = -1; //Протечка 0 нет 1 есть c STM8L051
|
||||||
|
int g_volt = -1; //Вольт на акамуляторе c STM8L051
|
||||||
|
int g_tmpr = -100; //Температура на микроконтроллере (на текущем нет температуры) c STM8L051
|
||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
bool configWebServer();
|
bool configWebServer();
|
||||||
void setLampLight(int mode);
|
void setLampLight(int mode);
|
||||||
@ -110,13 +117,17 @@ bool loadConfig()
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
//Save settings from local variables to file system
|
//Save settings from local variables to file system and send to STM8L051
|
||||||
bool saveConfigs()
|
bool saveConfigs()
|
||||||
{
|
{
|
||||||
|
bool result;
|
||||||
File f = LittleFS.open("settings.txt", "w");
|
File f = LittleFS.open("settings.txt", "w");
|
||||||
if (!f) {
|
if (!f) {
|
||||||
Serial.println("Count file open failed on update.");
|
Serial.println("Count file open failed on update.");
|
||||||
|
result=false;
|
||||||
} else {
|
} else {
|
||||||
|
Serial.println("MQTT HOST = "+mqtt_host);
|
||||||
|
|
||||||
f.println("ssid="+ssid);
|
f.println("ssid="+ssid);
|
||||||
f.println("pass="+pass);
|
f.println("pass="+pass);
|
||||||
|
|
||||||
@ -129,14 +140,27 @@ bool saveConfigs()
|
|||||||
f.println("mqtt_pass="+mqtt_pass);
|
f.println("mqtt_pass="+mqtt_pass);
|
||||||
|
|
||||||
f.close();
|
f.close();
|
||||||
|
|
||||||
|
//Отправляю значения горячей и холодной на микроконтроллер
|
||||||
|
if(g_cold_new != -1){
|
||||||
|
Serial.println(addCRC("#c;"+String(g_cold_new)+";"));
|
||||||
|
g_cold_new=-1;
|
||||||
|
}
|
||||||
|
if(g_hot_new){
|
||||||
|
Serial.println(addCRC("#h;"+String(g_hot_new)+";"));
|
||||||
|
g_hot_new=-1;
|
||||||
|
}
|
||||||
|
|
||||||
|
result=true;
|
||||||
}
|
}
|
||||||
return true;
|
return result;
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
//Запрос на получение данных с микроконтроллера
|
//Запрос на получение данных с микроконтроллера, вызывается после пробуждения
|
||||||
//Для дебага написал тестовую программу клторая эиетирует STM8L по последовательному порту: O:\MyDocuments\projects\Workspace_C++Builder\NeptuneW01
|
//Для дебага написал тестовую программу клторая эиетирует STM8L по последовательному порту: O:\MyDocuments\projects\Workspace_C++Builder\NeptuneW01
|
||||||
bool getMode(){
|
bool getMode(){
|
||||||
Serial.println(addCRC("#0;")); //Запрашиваю для какого режима работы включили WIFI
|
Serial.println("REQQQQQQQ");
|
||||||
|
Serial.println(addCRC("#0;")); //Запрашиваю для какого режима работы включили ESP8266
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
@ -146,7 +170,7 @@ bool callSensorsData(){
|
|||||||
Serial.println(addCRC("#2;")); //Запрашиваем '2'=горячая
|
Serial.println(addCRC("#2;")); //Запрашиваем '2'=горячая
|
||||||
Serial.println(addCRC("#3;")); //Запрашиваем '3'=протечки
|
Serial.println(addCRC("#3;")); //Запрашиваем '3'=протечки
|
||||||
Serial.println(addCRC("#4;")); //Запрашиваем '4'=вольт на аккумуляторе
|
Serial.println(addCRC("#4;")); //Запрашиваем '4'=вольт на аккумуляторе
|
||||||
Serial.println(addCRC("#5;")); //Запрашиваем '5'=температура на процессоре
|
//Serial.println(addCRC("#5;")); //Запрашиваем '5'=температура на процессоре
|
||||||
//Уровень WIFI сигнала берём на ESP8266 а не с STM8L051
|
//Уровень WIFI сигнала берём на ESP8266 а не с STM8L051
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -187,12 +211,12 @@ void handleSensors() {
|
|||||||
}
|
}
|
||||||
json += "],";
|
json += "],";
|
||||||
//Количество тиков до перехода в спящий режим
|
//Количество тиков до перехода в спящий режим
|
||||||
json += "\"ticks\":"+String(g_ticks);
|
json += "\"ticks\":"+String(g_ticks_cnf);
|
||||||
|
|
||||||
if(g_cold<0) json += ",\"cold\":null"; else json += ",\"cold\":"+String(g_cold);
|
if(g_cold<0) json += ",\"cold\":null"; else json += ",\"cold\":"+String(g_cold);
|
||||||
if(g_hot<0) json += ",\"hot\":null"; else json += ",\"hot\":"+String(g_hot);
|
if(g_hot<0) json += ",\"hot\":null"; else json += ",\"hot\":"+String(g_hot);
|
||||||
if(g_leak==1) json += ",\"leak\":true"; else if(g_leak==0) json += ",\"leak\":false"; else json += ",\"leak\":null";
|
if(g_leak==1) json += ",\"leak\":true"; else if(g_leak==0) json += ",\"leak\":false"; else json += ",\"leak\":null";
|
||||||
if(g_volt<0) json += ",\"volt\":null"; else json += ",\"volt\":"+String(g_volt);
|
if(g_volt<0) json += ",\"volt\":null"; else json += ",\"volt\":"+String(g_volt);
|
||||||
if(g_tmpr<=-100) json += ",\"tmpr\":null"; else json += ",\"tmpr\":"+String(g_tmpr); // Температура
|
if(g_tmpr<=-100) json += ",\"tmpr\":null"; else json += ",\"tmpr\":"+String(g_tmpr); // Температура
|
||||||
|
|
||||||
json += "}";
|
json += "}";
|
||||||
@ -223,6 +247,7 @@ void handleData(){
|
|||||||
server.send(200, "application/json", json);
|
server.send(200, "application/json", json);
|
||||||
}
|
}
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
|
// Обработка HTML запроса на сохранение настроек
|
||||||
void handleSave(){
|
void handleSave(){
|
||||||
//Serial.println("+++Save+++");
|
//Serial.println("+++Save+++");
|
||||||
if(server.args()>0){
|
if(server.args()>0){
|
||||||
@ -236,10 +261,10 @@ void handleSave(){
|
|||||||
pass=server.arg(i);
|
pass=server.arg(i);
|
||||||
|
|
||||||
if(server.argName(i)=="cold" && server.arg(i)!=""){
|
if(server.argName(i)=="cold" && server.arg(i)!=""){
|
||||||
g_cold=server.arg(i);
|
g_cold_new=server.arg(i).toInt();
|
||||||
}
|
}
|
||||||
if(server.argName(i)=="hot" && server.arg(i)!=""){
|
if(server.argName(i)=="hot" && server.arg(i)!=""){
|
||||||
g_hot=server.arg(i);
|
g_hot_new=server.arg(i).toInt();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(server.argName(i)=="mqtt_protocol")
|
if(server.argName(i)=="mqtt_protocol")
|
||||||
@ -257,6 +282,7 @@ void handleSave(){
|
|||||||
if(server.argName(i)=="mqtt_pass")
|
if(server.argName(i)=="mqtt_pass")
|
||||||
mqtt_pass=server.arg(i);
|
mqtt_pass=server.arg(i);
|
||||||
}
|
}
|
||||||
|
saveConfigs();
|
||||||
}
|
}
|
||||||
server.send(200, "text/html", "ok");
|
server.send(200, "text/html", "ok");
|
||||||
}
|
}
|
||||||
@ -272,7 +298,7 @@ void handleMain() {
|
|||||||
file.close();
|
file.close();
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
Serial.println("File not exists!");
|
Serial.println("File \"index.html\" not exists!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
@ -336,11 +362,11 @@ bool createAP(){
|
|||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
//Отключить программную точку доступа
|
//Отключить программную точку доступа
|
||||||
bool deleteAP(){
|
bool deleteAP(){
|
||||||
Serial.print("softAPdisconnect();");
|
Serial.println("softAPdisconnect();");
|
||||||
dnsServer.stop();
|
dnsServer.stop();
|
||||||
bool result=WiFi.softAPdisconnect(true);
|
bool result=WiFi.softAPdisconnect(true);
|
||||||
//Гашу светодиод
|
//Гашу светодиод
|
||||||
digitalWrite(LED_BUILTIN,HIGH); //LOW
|
//digitalWrite(PIN_LED,HIGH); //LOW
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@ -348,17 +374,36 @@ bool deleteAP(){
|
|||||||
//Функция для подсчёта времени до перехода в спящий режим
|
//Функция для подсчёта времени до перехода в спящий режим
|
||||||
void tick_1s()
|
void tick_1s()
|
||||||
{
|
{
|
||||||
g_ticks--;
|
Serial.println("t");
|
||||||
if(g_ticks==0){ //Переходим в спящий режим
|
|
||||||
Serial.print("Deep sleep!");
|
g_ticks_cnf--;
|
||||||
Serial.print(addCRC("#d;!")); //Отсылаю команду на STM8 чтобы он на CHIP_PU подал низский сигнал для отключения питания
|
if(g_ticks_cnf==0){ //Переходим в спящий режим
|
||||||
|
Serial.print("Deep sleep 1 !");
|
||||||
|
blinkEnbl=false; //Чтобы не мигал
|
||||||
|
digitalWrite(PIN_LED, HIGH); //Пытаюсь выключить светодтод чтобы он не светился при полном засыпании
|
||||||
|
Serial.print(addCRC("#d;")); //Отсылаю команду на STM8 чтобы он на CHIP_PU подал низский сигнал для отключения питания
|
||||||
}
|
}
|
||||||
//Если в течении 2х минут не перешли в режим глубокого сна то переходим в обычный сон
|
|
||||||
if(g_ticks==-600){
|
g_ticks_snd--;
|
||||||
|
if(g_ticks_snd==0) //Начальное значение 0 то сюда не заходит, а заходит только после таймаута
|
||||||
|
{
|
||||||
|
Serial.print("Deep sleep 2 !");
|
||||||
|
blinkEnbl=false; //Чтобы не мигал
|
||||||
|
digitalWrite(PIN_LED, HIGH); //Пытаюсь выключить светодтод чтобы он не светился при полном засыпании
|
||||||
|
Serial.print(addCRC("#d;")); //Отсылаю команду на STM8 чтобы он на CHIP_PU подал низский сигнал для отключения питания
|
||||||
|
}
|
||||||
|
|
||||||
|
//Больше 20 секунд без данных не должно работать
|
||||||
|
//Если не перешли в режим глубокого сна то переходим в обычный сон
|
||||||
|
if(g_ticks_snd<=-20 && g_ticks_cnf<=-20)
|
||||||
|
{
|
||||||
Serial.println("Sleep!");
|
Serial.println("Sleep!");
|
||||||
Serial.print(addCRC("#d;!")); //Повторно отсылаю команду на STM8 чтобы он на CHIP_PU подал низский сигнал для отключения питания
|
blinkEnbl=false; //Чтобы не мигал
|
||||||
|
digitalWrite(PIN_LED, HIGH); //Пытаюсь выключить светодтод чтобы он не светился при полном засыпании
|
||||||
|
Serial.print(addCRC("#d;")); //Повторно отсылаю команду на STM8 чтобы он на CHIP_PU подал низский сигнал для отключения питания
|
||||||
ESP.deepSleep(0);
|
ESP.deepSleep(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
bool configWebServer(){
|
bool configWebServer(){
|
||||||
@ -406,6 +451,7 @@ bool connectToMQTT(){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//Serial.println("EXIT");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
@ -416,7 +462,8 @@ void setup()
|
|||||||
Serial.println("Init led pin");
|
Serial.println("Init led pin");
|
||||||
//Настраиваем светодиод на плате
|
//Настраиваем светодиод на плате
|
||||||
pinMode(PIN_LED, OUTPUT);
|
pinMode(PIN_LED, OUTPUT);
|
||||||
digitalWrite(PIN_LED, HIGH); // Выключаю светодиод
|
//digitalWrite(PIN_LED, HIGH); // Выключаю светодиод
|
||||||
|
digitalWrite(PIN_LED, LOW); //Включаю светодиод
|
||||||
|
|
||||||
//Инициализирую файловую систему
|
//Инициализирую файловую систему
|
||||||
if(LittleFS.begin())
|
if(LittleFS.begin())
|
||||||
@ -477,31 +524,51 @@ void loop(){
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
mqttClient.loop();
|
mqttClient.loop();
|
||||||
|
|
||||||
dnsServer.processNextRequest(); //DNS
|
dnsServer.processNextRequest(); //DNS
|
||||||
server.handleClient(); //Обрабатываем запрос клиента (без этого не берётся IP адресс)
|
server.handleClient(); //Обрабатываем запрос клиента (без этого не берётся IP адресс)
|
||||||
|
*/
|
||||||
|
|
||||||
|
//мигаем светодиодом в зависемости от режима работы
|
||||||
|
//Если в режиме конфигурации каждые 500 миллисекунд меняем цвет зелёного светодиода
|
||||||
if(g_ticks>0){
|
if(g_ticks_cnf>0){
|
||||||
//В режиме конфигурации каждые 500 миллисекунд меняем цвет зелёного светодиода
|
|
||||||
if(millis()-blinkMSec>500){
|
if(millis()-blinkMSec>500){
|
||||||
blink=!blink;
|
if(blinkEnbl){
|
||||||
digitalWrite(LED_BUILTIN,blink);
|
blink=!blink;
|
||||||
|
digitalWrite(PIN_LED,blink);
|
||||||
|
}else{
|
||||||
|
digitalWrite(PIN_LED, HIGH);
|
||||||
|
}
|
||||||
|
|
||||||
blinkMSec=millis();
|
blinkMSec=millis();
|
||||||
}
|
}
|
||||||
}else{
|
}
|
||||||
//Если в нормальном режиме функционирования
|
//Если в режиме отправки каждые 100 миллисекунд меняем цвет зелёного светодиода
|
||||||
//Проверяю соединение с MQTT и если не соединён то пытаюсь подключиться каждые 10 секунд
|
if(g_ticks_snd>0){
|
||||||
if(millis()-time5s>10000){
|
if(millis()-blinkMSec>100){
|
||||||
|
if(blinkEnbl){
|
||||||
|
blink=!blink;
|
||||||
|
digitalWrite(PIN_LED,blink);
|
||||||
|
}else{
|
||||||
|
digitalWrite(PIN_LED, HIGH);
|
||||||
|
}
|
||||||
|
blinkMSec=millis();
|
||||||
|
}
|
||||||
|
//Проверяю соединение с MQTT и если не соединён то пытаюсь подключиться каждые 5 секунд
|
||||||
|
if(millis()-time5s>5000){
|
||||||
if(!mqttClient.connected()) {
|
if(!mqttClient.connected()) {
|
||||||
connectToMQTT();
|
connectToMQTT();
|
||||||
}
|
}
|
||||||
time5s=millis();
|
time5s=millis();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//Если не известно в каком режиме то просто светим
|
||||||
*/
|
if(g_ticks_snd < 0 && g_ticks_cnf < 0){
|
||||||
|
if(blinkEnbl){
|
||||||
|
digitalWrite(PIN_LED, LOW); //Включаю светодиод
|
||||||
|
}else{
|
||||||
|
digitalWrite(PIN_LED, HIGH);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//Блок кода для общения с энергоэфективным микроконтроллером
|
//Блок кода для общения с энергоэфективным микроконтроллером
|
||||||
@ -533,17 +600,20 @@ void loop(){
|
|||||||
String value=CutBeforeFirst(g_data,'!',true); //Если 1 то отправлять данные на сервер если 0 то войти в режим настройки в качестве точки доступа
|
String value=CutBeforeFirst(g_data,'!',true); //Если 1 то отправлять данные на сервер если 0 то войти в режим настройки в качестве точки доступа
|
||||||
Serial.print("value mode = ");
|
Serial.print("value mode = ");
|
||||||
Serial.println(value);
|
Serial.println(value);
|
||||||
if(value=="1"){ //Если разбудили для того чтобы передать данные
|
if(value=="0"){ //Если разбудили для того чтобы передать данные
|
||||||
Serial.println("Send data mode");
|
Serial.println("Send data mode");
|
||||||
if(deleteAP()){
|
deleteAP(); //На всякий случай
|
||||||
connectToWIFIPoint();
|
if(connectToWIFIPoint()){
|
||||||
|
g_ticks_snd = SND_TIME;
|
||||||
|
connectToMQTT();
|
||||||
|
callSensorsData(); //Запрашиваю новые данные датчиков с микроконтроллера
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(value=="0"){ //Если разбудили для того чтобы настроить оборудование
|
if(value=="1"){ //Если разбудили для того чтобы настроить оборудование
|
||||||
Serial.println("Config mode");
|
Serial.println("Config mode");
|
||||||
if(disconnectFromWIFIPoint()){
|
if(disconnectFromWIFIPoint()){
|
||||||
if(createAP()){
|
if(createAP()){
|
||||||
g_ticks = CNF_TIME;
|
g_ticks_cnf = CNF_TIME;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -572,7 +642,7 @@ void loop(){
|
|||||||
Serial.println(value);
|
Serial.println(value);
|
||||||
g_volt=value.toInt();
|
g_volt=value.toInt();
|
||||||
}
|
}
|
||||||
if(cmd=="#5;"){ //'5'=температура
|
if(cmd=="#5;"){ //'5'=температура (в текущем чипе её нет)
|
||||||
String value=CutBeforeFirst(g_data,'!',true);
|
String value=CutBeforeFirst(g_data,'!',true);
|
||||||
Serial.print("value tmrt = ");
|
Serial.print("value tmrt = ");
|
||||||
Serial.println(value);
|
Serial.println(value);
|
||||||
@ -584,7 +654,7 @@ void loop(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Как все данные накопились отправляем их по MQTT на сервер
|
//Как все данные накопились отправляем их по MQTT на сервер
|
||||||
if(WiFi.status() == WL_CONNECTED && g_cold!=-1 && g_hot!=-1 && g_leak!=-1 && g_volt !=-1){
|
if(WiFi.status() == WL_CONNECTED && mqttClient.connected() && g_cold!=-1 && g_hot!=-1 && g_leak!=-1 && g_volt !=-1){
|
||||||
|
|
||||||
String data="{";
|
String data="{";
|
||||||
data+="\"cold\":"+String(g_cold)+","; // Горячая
|
data+="\"cold\":"+String(g_cold)+","; // Горячая
|
||||||
@ -601,7 +671,7 @@ void loop(){
|
|||||||
Serial.println(data);
|
Serial.println(data);
|
||||||
|
|
||||||
//Как отправили данные устанавливаю время ожидания входа в сон на 5 секунд чтобы ESP8266 заснул
|
//Как отправили данные устанавливаю время ожидания входа в сон на 5 секунд чтобы ESP8266 заснул
|
||||||
g_ticks=5;
|
g_ticks_snd=10;
|
||||||
//Очищаю данные
|
//Очищаю данные
|
||||||
g_cold=-1;
|
g_cold=-1;
|
||||||
g_hot=-1;
|
g_hot=-1;
|
||||||
|
|||||||
Reference in New Issue
Block a user