add led blink

This commit is contained in:
Dmitry Borisenko
2020-06-12 15:34:30 +02:00
parent be5bd3ede4
commit 83d1531267
28 changed files with 157 additions and 73 deletions

View File

@@ -15,12 +15,11 @@ void do_upgrade_url() {
upgrade_url = false; upgrade_url = false;
#ifdef ESP32 #ifdef ESP32
last_version = getURL("http://91.204.228.124:1100/update/esp32/version.txt"); last_version = getURL("http://91.204.228.124:1100/update/esp32/version.txt");
jsonWriteStr(configSetupJson, "last_version", last_version);
#endif #endif
#ifdef ESP8266 #ifdef ESP8266
last_version = getURL("http://91.204.228.124:1100/update/esp8266/version.txt"); last_version = getURL("http://91.204.228.124:1100/update/esp8266/version.txt");
jsonWriteStr(configSetupJson, "last_version", last_version);
#endif #endif
jsonWriteStr(configSetupJson, "last_version", last_version);
} }
} }
@@ -66,7 +65,7 @@ void upgrade_firmware() {
#endif #endif
if (ret == HTTP_UPDATE_OK) { if (ret == HTTP_UPDATE_OK) {
Serial.println("BUILD upgrade done!"); Serial.println("BUILD upgrade done!");
Serial.println("Restart ESP...."); Serial.println("Restart ESP....");
ESP.restart(); ESP.restart();

136
Web.ino
View File

@@ -51,34 +51,42 @@ void web_init() {
writeFile("firmware.s.txt", readFile("configs/11-analog.s.txt", 2048)); writeFile("firmware.s.txt", readFile("configs/11-analog.s.txt", 2048));
} }
if (value == "12") { if (value == "12") {
writeFile("firmware.c.txt", readFile("configs/12-dallas.c.txt", 2048)); writeFile("firmware.c.txt", readFile("configs/12-bmp280.c.txt", 2048));
writeFile("firmware.s.txt", readFile("configs/12-dallas.s.txt", 2048)); writeFile("firmware.s.txt", readFile("configs/12-bmp280.s.txt", 2048));
} }
if (value == "13") { if (value == "13") {
writeFile("firmware.c.txt", readFile("configs/13-termostat.c.txt", 2048)); writeFile("firmware.c.txt", readFile("configs/13-bme280.c.txt", 2048));
writeFile("firmware.s.txt", readFile("configs/13-termostat.s.txt", 2048)); writeFile("firmware.s.txt", readFile("configs/13-bme280.s.txt", 2048));
} }
if (value == "14") { if (value == "14") {
writeFile("firmware.c.txt", readFile("configs/14-level.c.txt", 2048)); writeFile("firmware.c.txt", readFile("configs/14-dallas.c.txt", 2048));
writeFile("firmware.s.txt", readFile("configs/14-level.s.txt", 2048)); writeFile("firmware.s.txt", readFile("configs/14-dallas.s.txt", 2048));
} }
if (value == "15") { if (value == "15") {
writeFile("firmware.c.txt", readFile("configs/15-moution.c.txt", 2048)); writeFile("firmware.c.txt", readFile("configs/15-termostat.c.txt", 2048));
writeFile("firmware.s.txt", readFile("configs/15-moution.s.txt", 2048)); writeFile("firmware.s.txt", readFile("configs/15-termostat.s.txt", 2048));
} }
if (value == "16") { if (value == "16") {
writeFile("firmware.c.txt", readFile("configs/16-moution.c.txt", 2048)); writeFile("firmware.c.txt", readFile("configs/16-level.c.txt", 2048));
writeFile("firmware.s.txt", readFile("configs/16-moution.s.txt", 2048)); writeFile("firmware.s.txt", readFile("configs/16-level.s.txt", 2048));
} }
if (value == "17") { if (value == "17") {
writeFile("firmware.c.txt", readFile("configs/17-stepper.c.txt", 2048)); writeFile("firmware.c.txt", readFile("configs/17-moution.c.txt", 2048));
writeFile("firmware.s.txt", readFile("configs/17-stepper.s.txt", 2048)); writeFile("firmware.s.txt", readFile("configs/17-moution.s.txt", 2048));
} }
if (value == "18") { if (value == "18") {
writeFile("firmware.c.txt", readFile("configs/18-servo.c.txt", 2048)); writeFile("firmware.c.txt", readFile("configs/18-moution.c.txt", 2048));
writeFile("firmware.s.txt", readFile("configs/18-servo.s.txt", 2048)); writeFile("firmware.s.txt", readFile("configs/18-moution.s.txt", 2048));
} }
if (value == "19") { if (value == "19") {
writeFile("firmware.c.txt", readFile("configs/19-stepper.c.txt", 2048));
writeFile("firmware.s.txt", readFile("configs/19-stepper.s.txt", 2048));
}
if (value == "20") {
writeFile("firmware.c.txt", readFile("configs/20-servo.c.txt", 2048));
writeFile("firmware.s.txt", readFile("configs/20-servo.s.txt", 2048));
}
if (value == "21") {
writeFile("firmware.c.txt", readFile("configs/firmware.c.txt", 2048)); writeFile("firmware.c.txt", readFile("configs/firmware.c.txt", 2048));
writeFile("firmware.s.txt", readFile("configs/firmware.s.txt", 2048)); writeFile("firmware.s.txt", readFile("configs/firmware.s.txt", 2048));
} }
@@ -112,11 +120,12 @@ void web_init() {
request->send(200, "text/text", "OK"); request->send(200, "text/text", "OK");
} }
//-------------------------------------------------------------------------------- //--------------------------------------------------------------------------------
if (request->hasArg("cleanlog")) {
#ifdef logging_enable #ifdef logging_enable
if (request->hasArg("cleanlog")) {
clean_log_date(); clean_log_date();
#endif request->send(200, "text/text", "OK");
} }
#endif
//==============================udp settings============================================= //==============================udp settings=============================================
if (request->hasArg("udponoff")) { if (request->hasArg("udponoff")) {
value = request->getParam("udponoff")->value(); value = request->getParam("udponoff")->value();
@@ -199,6 +208,19 @@ void web_init() {
if (request->getParam("device")->value() == "ok") ESP.restart(); if (request->getParam("device")->value() == "ok") ESP.restart();
request->send(200, "text/text", "OK"); request->send(200, "text/text", "OK");
} }
//--------------------------------------------------------------------------------
if (request->hasArg("blink")) {
value = request->getParam("blink")->value();
if (value == "0") {
jsonWriteStr(configSetupJson, "blink", value);
saveConfig();
}
if (value == "1") {
jsonWriteStr(configSetupJson, "blink", value);
saveConfig();
}
request->send(200, "text/text", "OK");
}
//==============================mqtt settings============================================= //==============================mqtt settings=============================================
if (request->hasArg("mqttServer")) { if (request->hasArg("mqttServer")) {
jsonWriteStr(configSetupJson, "mqttServer", request->getParam("mqttServer")->value()); jsonWriteStr(configSetupJson, "mqttServer", request->getParam("mqttServer")->value());
@@ -247,9 +269,9 @@ void web_init() {
#ifdef push_enable #ifdef push_enable
if (request->hasArg("pushingboxid")) { if (request->hasArg("pushingboxid")) {
jsonWriteStr(configSetupJson, "pushingboxid", request->getParam("pushingboxid")->value()); jsonWriteStr(configSetupJson, "pushingboxid", request->getParam("pushingboxid")->value());
saveConfig();
request->send(200, "text/text", "ok");
} }
saveConfig();
request->send(200, "text/text", "ok");
#endif #endif
//==============================utilities settings============================================= //==============================utilities settings=============================================
if (request->hasArg("itoc")) { if (request->hasArg("itoc")) {
@@ -263,35 +285,65 @@ void web_init() {
Serial.print("[i] Last firmware version: "); Serial.print("[i] Last firmware version: ");
Serial.println(last_version); Serial.println(last_version);
String tmp = "{}"; String tmp = "{}";
if (WiFi.status() == WL_CONNECTED) { int case_of_update;
if (mb_4_of_memory) {
if (last_version != "") { if (WiFi.status() != WL_CONNECTED) last_version = "nowifi";
if (last_version != "error") { if (!mb_4_of_memory) last_version = "less";
if (last_version == firmware_version) {
jsonWriteStr(tmp, "title", "<button class=\"close\" onclick=\"toggle('my-block')\">×</button>Последняя версия прошивки уже установлена."); if (last_version == firmware_version) case_of_update = 1;
jsonWriteStr(tmp, "class", "pop-up"); if (last_version != firmware_version) case_of_update = 2;
} else { if (last_version == "error") case_of_update = 3;
jsonWriteStr(tmp, "title", "<button class=\"close\" onclick=\"toggle('my-block')\">×</button>Имеется новая версия прошивки<a href=\"#\" class=\"btn btn-block btn-danger\" onclick=\"send_request(this, '/upgrade');setTimeout(function(){ location.href='/'; }, 120000);html('my-block','<span class=loader></span>Идет обновление прошивки, после обновления страница перезагрузится автоматически...')\">Установить</a>"); if (last_version == "") case_of_update = 4;
jsonWriteStr(tmp, "class", "pop-up"); if (last_version == "less") case_of_update = 5;
} if (last_version == "nowifi") case_of_update = 6;
} else { if (last_version == "notsupported") case_of_update = 7;
jsonWriteStr(tmp, "title", "<button class=\"close\" onclick=\"toggle('my-block')\">×</button>Ошибка... Cервер не найден. Попробуйте позже...");
jsonWriteStr(tmp, "class", "pop-up"); switch (case_of_update) {
} case 1: {
} else { jsonWriteStr(tmp, "title", "<button class=\"close\" onclick=\"toggle('my-block')\">×</button>Последняя версия прошивки уже установлена.");
jsonWriteStr(tmp, "title", "<button class=\"close\" onclick=\"toggle('my-block')\">×</button>Нажмите на кнопку \"обновить прошивку\" повторно...");
jsonWriteStr(tmp, "class", "pop-up"); jsonWriteStr(tmp, "class", "pop-up");
} }
} else { break;
jsonWriteStr(tmp, "title", "<button class=\"close\" onclick=\"toggle('my-block')\">×</button>Обновление по воздуху не поддерживается, модуль имеет меньше 4 мб памяти...");
jsonWriteStr(tmp, "class", "pop-up"); case 2: {
} jsonWriteStr(tmp, "title", "<button class=\"close\" onclick=\"toggle('my-block')\">×</button>Имеется новая версия прошивки<a href=\"#\" class=\"btn btn-block btn-danger\" onclick=\"send_request(this, '/upgrade');setTimeout(function(){ location.href='/'; }, 120000);html('my-block','<span class=loader></span>Идет обновление прошивки, после обновления страница перезагрузится автоматически...')\">Установить</a>");
} else { jsonWriteStr(tmp, "class", "pop-up");
jsonWriteStr(tmp, "title", "<button class=\"close\" onclick=\"toggle('my-block')\">×</button>Устройство не подключен к роутеру..."); }
jsonWriteStr(tmp, "class", "pop-up"); break;
case 3: {
jsonWriteStr(tmp, "title", "<button class=\"close\" onclick=\"toggle('my-block')\">×</button>Ошибка... Cервер не найден. Попробуйте позже...");
jsonWriteStr(tmp, "class", "pop-up");
}
break;
case 4: {
jsonWriteStr(tmp, "title", "<button class=\"close\" onclick=\"toggle('my-block')\">×</button>Нажмите на кнопку \"обновить прошивку\" повторно...");
jsonWriteStr(tmp, "class", "pop-up");
break;
}
case 5: {
jsonWriteStr(tmp, "title", "<button class=\"close\" onclick=\"toggle('my-block')\">×</button>Обновление по воздуху не поддерживается, модуль имеет меньше 4 мб памяти...");
jsonWriteStr(tmp, "class", "pop-up");
break;
}
case 6: {
jsonWriteStr(tmp, "title", "<button class=\"close\" onclick=\"toggle('my-block')\">×</button>Устройство не подключено к роутеру...");
jsonWriteStr(tmp, "class", "pop-up");
break;
}
case 7: {
jsonWriteStr(tmp, "title", "<button class=\"close\" onclick=\"toggle('my-block')\">×</button>Обновление на новую версию возможно только через usb...");
jsonWriteStr(tmp, "class", "pop-up");
break;
}
} }
request->send(200, "text/text", tmp); request->send(200, "text/text", tmp);
}); });
server.on("/upgrade", HTTP_GET, [](AsyncWebServerRequest * request) { server.on("/upgrade", HTTP_GET, [](AsyncWebServerRequest * request) {
upgrade = true; upgrade = true;
String tmp = "{}"; String tmp = "{}";

View File

@@ -19,8 +19,7 @@ void ROUTER_Connecting() {
} }
// Делаем проверку подключения до тех пор пока счетчик tries // Делаем проверку подключения до тех пор пока счетчик tries
// не станет равен нулю или не получим подключение // не станет равен нулю или не получим подключение
while (--tries && WiFi.status() != WL_CONNECTED) while (--tries && WiFi.status() != WL_CONNECTED) {
{
if (WiFi.status() == WL_CONNECT_FAILED) { if (WiFi.status() == WL_CONNECT_FAILED) {
Serial.println("[E] password is not correct"); Serial.println("[E] password is not correct");
tries = 1; tries = 1;

View File

@@ -16,5 +16,6 @@
"pushingboxid": "v7C133E426B0C69E", "pushingboxid": "v7C133E426B0C69E",
"weblogin": "admin", "weblogin": "admin",
"webpass": "admin", "webpass": "admin",
"udponoff": "1" "udponoff": "1",
"blink":"1"
} }

View File

@@ -0,0 +1,6 @@
bmp280T temp1 0x76 Температура#bmp280 Датчики any-data 1
bmp280P press1 0x76 Давление#bmp280 Датчики any-data 2
logging temp1 1 100 Температура Датчики 3
logging press1 1 100 Давление Датчики 4
//Чтение и логгирование датчика bmp280. Датчик подключается к шине i2c (esp8266 - gpio 5, 4)

View File

@@ -0,0 +1,9 @@
bme280T temp1 0x76 Температура#bmp280 Датчики any-data 1
bme280P pres1 0x76 Давление#bmp280 Датчики any-data 2
bme280H hum1 0x76 Влажность#bmp280 Датчики any-data 3
bme280A altit1 0x76 Высота#bmp280 Датчики any-data 4
logging temp1 1 100 Температура Датчики 5
logging press1 1 100 Давление Датчики 6
logging hum1 1 100 Влажность Датчики 7
//Чтение и логгирование датчика bme280. Датчик подключается к шине i2c (esp8266 - gpio 5, 4)

View File

@@ -0,0 +1 @@

View File

@@ -0,0 +1 @@

View File

@@ -25,6 +25,7 @@
"SetWiFiWarn2":"После того как вы введете логин пароль от вашего wifi роутера необходимо нажать кнопку сохранить, а затем обязательно нажать кнопку <b>перезагрузить устройство</b> внизу этой страницы", "SetWiFiWarn2":"После того как вы введете логин пароль от вашего wifi роутера необходимо нажать кнопку сохранить, а затем обязательно нажать кнопку <b>перезагрузить устройство</b> внизу этой страницы",
"SetWiFiWarn3":"Устройство постоянно сканирует сеть на наличие wifi. Если роутер отключен, то устройство автоматически перейдет в режим точки доступа. Когда wifi появится устройство автоматически подключится к роутеру снова, и выключит точку доступа", "SetWiFiWarn3":"Устройство постоянно сканирует сеть на наличие wifi. Если роутер отключен, то устройство автоматически перейдет в режим точки доступа. Когда wifi появится устройство автоматически подключится к роутеру снова, и выключит точку доступа",
"SetWiFiWarn4":"После изменения поля <b>NTP сервер</b> необходимо перезагрузить устройство", "SetWiFiWarn4":"После изменения поля <b>NTP сервер</b> необходимо перезагрузить устройство",
"SetWiFiWarn5":"Светодиод статуса подключения показывает четыре состояния подключения: <br><b>1. мигает редко</b> - идет подключение к wifi <br><b>2. мигает часто</b> - идет подключение к серверу mqtt <br><b>3. горит постоянно</b> - модуль в режиме точки доступа, <br><b>4. не горит</b> - модуль подключен к wifi и к mqtt. <br>Светодиод подключен к gpio2. Если галочка стоит - то использовать этот пин нельзя",
"SetMQTTServerName":"Имя сервера:", "SetMQTTServerName":"Имя сервера:",
"SetMQTTPort":"Номер порта:", "SetMQTTPort":"Номер порта:",

View File

@@ -63,17 +63,19 @@
"/set?preset=6": "6.Вкл. выкл. нескольких удаленных реле кнопкой в приложении (нужно указать Device ID)", "/set?preset=6": "6.Вкл. выкл. нескольких удаленных реле кнопкой в приложении (нужно указать Device ID)",
"/set?preset=7": "7.Вкл. выкл. нескольких удаленных реле физической кнопкой (нужно указать Device ID)", "/set?preset=7": "7.Вкл. выкл. нескольких удаленных реле физической кнопкой (нужно указать Device ID)",
"/set?preset=8": "8.Широтно импульсная модуляция", "/set?preset=8": "8.Широтно импульсная модуляция",
"/set?preset=9": "9.Сенсор DHT11 и логгирование", "/set?preset=9": "9.Сенсор DHT11 (темп, влажность) и логгирование",
"/set?preset=10": "10.Сенсор DHT22, DHT33, DHT44, AM2302, RHT03 и логгирование", "/set?preset=10": "10.Сенсор DHT22, DHT33, DHT44, AM2302, RHT03 (темп, влажность) и логгирование",
"/set?preset=11": "11.Аналоговый сенсор и логгирование", "/set?preset=11": "11.Аналоговый сенсор и логгирование",
"/set?preset=12": "12.Сенсор DS18B20 и логгирование", "/set?preset=12": "12.Cенсор bmp280 (темп, давление) и логгирование",
"/set?preset=13": "13.Термостат на DS18B20 с переключением в ручной режим и логгированием", "/set?preset=13": "13.Cенсор bme280 (темп, давление, влажность, высота) и логгирование",
"/set?preset=14": "14.Контроль уровня в баке на сенсорах: JSN-SR04T, HC-SR04, HY-SRF05 и логгирование (управление насосом)", "/set?preset=14": "12.Сенсор DS18B20 (темп) и логгирование",
"/set?preset=15": "15.Датчик движения включающий свет", "/set?preset=15": "13.Термостат на DS18B20 с переключением в ручной режим и логгированием",
"/set?preset=16": "16.Охранный датчик движения", "/set?preset=16": "14.Котроль уровня в баке (датчик расстояния) на сенсорах: JSN-SR04T, HC-SR04, HY-SRF05 и логгирование",
"/set?preset=17": "17.Система управления шаговыми двигателями на основе драйвера A4988 (открытие закрытие штор)", "/set?preset=17": "15.Датчик движения включающий свет",
"/set?preset=18": "18.Система управления сервоприводами", "/set?preset=18": "16.Охранный датчик движения",
"/set?preset=19": "Настройки по умолчанию" "/set?preset=19": "17.Система управления шаговыми двигателями на основе драйвера A4988 (открытие закрытие штор)",
"/set?preset=20": "18.Система управления сервоприводами",
"/set?preset=21": "Настройки по умолчанию"
} }
}, },
{ {

View File

@@ -73,6 +73,20 @@
{ {
"type": "hr" "type": "hr"
}, },
{
"type": "checkbox",
"name": "blink",
"title": "Включить светодиод статуса подключения",
"action": "/set?blink=[[blink]]",
"state": "{{blink}}"
},
{
"type": "text",
"title": "<div style='margin-top:10px;margin-bottom:10px;'><font color='black'><p style='border: 1px solid #DCDCDC; border-radius: 3px; background-color: #F5F5F5; padding: 10px;'>{{SetWiFiWarn5}}</p></font></div>"
},
{
"type": "hr"
},
{ {
"type": "h3", "type": "h3",
"title": "{{SetWiFiAccessPoint}}" "title": "{{SetWiFiAccessPoint}}"

View File

@@ -368,17 +368,19 @@ void sendCONFIG(String topik, String widgetConfig, String key, String date) {
void led_blink(String satus) { void led_blink(String satus) {
#ifdef ESP8266 #ifdef ESP8266
#ifdef blink_pin #ifdef blink_pin
pinMode(blink_pin, OUTPUT); if (jsonReadStr(configSetupJson, "blink") == "1") {
if (satus == "off") { pinMode(blink_pin, OUTPUT);
noTone(blink_pin); if (satus == "off") {
digitalWrite(blink_pin, HIGH); noTone(blink_pin);
digitalWrite(blink_pin, HIGH);
}
if (satus == "on") {
noTone(blink_pin);
digitalWrite(blink_pin, LOW);
}
if (satus == "slow") tone(blink_pin, 1);
if (satus == "fast") tone(blink_pin, 20);
} }
if (satus == "on") {
noTone(blink_pin);
digitalWrite(blink_pin, LOW);
}
if (satus == "slow") tone(blink_pin, 1);
if (satus == "fast") tone(blink_pin, 20);
#endif #endif
#endif #endif
} }

View File

@@ -19,8 +19,6 @@ void MQTT_init() {
}, nullptr, true); }, nullptr, true);
} }
void do_mqtt_connection() { void do_mqtt_connection() {
if (mqtt_connection) { if (mqtt_connection) {
mqtt_connection = false; mqtt_connection = false;

5
set.h
View File

@@ -1,9 +1,8 @@
/******************************************************************* /*******************************************************************
**********************FIRMWARE SETTINGS**************************** **********************FIRMWARE SETTINGS****************************
******************************************************************/ ******************************************************************/
//dev String firmware_version = "2.3.4";
String firmware_version = "2.3.3"; boolean mb_4_of_memory = false;
boolean mb_4_of_memory = true;
//#define OTA_enable //#define OTA_enable
//#define MDNS_enable //#define MDNS_enable
//#define WS_enable //#define WS_enable