mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-26 22:22:16 +03:00
DHT support
This commit is contained in:
149
Cmd.ino
149
Cmd.ino
@@ -1,9 +1,7 @@
|
|||||||
void CMD_init() {
|
void CMD_init() {
|
||||||
|
|
||||||
|
|
||||||
sCmd.addCommand("button", button);
|
sCmd.addCommand("button", button);
|
||||||
sCmd.addCommand("buttonSet", buttonSet);
|
sCmd.addCommand("buttonSet", buttonSet);
|
||||||
|
|
||||||
sCmd.addCommand("pinSet", pinSet);
|
sCmd.addCommand("pinSet", pinSet);
|
||||||
|
|
||||||
sCmd.addCommand("pwm", pwm);
|
sCmd.addCommand("pwm", pwm);
|
||||||
@@ -12,37 +10,31 @@ void CMD_init() {
|
|||||||
sCmd.addCommand("switch", switch_);
|
sCmd.addCommand("switch", switch_);
|
||||||
|
|
||||||
sCmd.addCommand("analog", analog);
|
sCmd.addCommand("analog", analog);
|
||||||
sCmd.addCommand("ph", ph);
|
|
||||||
sCmd.addCommand("level", level);
|
sCmd.addCommand("level", level);
|
||||||
sCmd.addCommand("dallas", dallas);
|
sCmd.addCommand("dallas", dallas);
|
||||||
|
|
||||||
|
sCmd.addCommand("dhtT", dhtT);
|
||||||
|
sCmd.addCommand("dhtH", dhtH);
|
||||||
|
|
||||||
sCmd.addCommand("logging", logging);
|
sCmd.addCommand("logging", logging);
|
||||||
|
|
||||||
sCmd.addCommand("inputDigit", inputDigit);
|
sCmd.addCommand("inputDigit", inputDigit);
|
||||||
sCmd.addCommand("digitSet", digitSet);
|
sCmd.addCommand("digitSet", digitSet);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
sCmd.addCommand("text", text);
|
sCmd.addCommand("text", text);
|
||||||
sCmd.addCommand("textSet", textSet);
|
sCmd.addCommand("textSet", textSet);
|
||||||
|
|
||||||
// sCmd.addCommand("time", time);
|
|
||||||
// sCmd.addCommand("timeSet", timeSet);
|
|
||||||
|
|
||||||
sCmd.addCommand("timerStart", timerStart);
|
sCmd.addCommand("timerStart", timerStart);
|
||||||
sCmd.addCommand("timerStop", timerStop);
|
sCmd.addCommand("timerStop", timerStop);
|
||||||
|
|
||||||
sCmd.addCommand("mqtt", mqttOrderSend);
|
sCmd.addCommand("mqtt", mqttOrderSend);
|
||||||
sCmd.addCommand("http", httpOrderSend);
|
sCmd.addCommand("http", httpOrderSend);
|
||||||
//!sCmd.addCommand("push", pushControl);
|
sCmd.addCommand("push", pushControl);
|
||||||
|
|
||||||
//handleCMD_ticker();
|
|
||||||
|
|
||||||
|
// sCmd.addCommand("time", time);
|
||||||
|
// sCmd.addCommand("timeSet", timeSet);
|
||||||
|
|
||||||
//======новые виджеты ver2.0=======//
|
//======новые виджеты ver2.0=======//
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
sCmd.addCommand("inputText", inputText);
|
sCmd.addCommand("inputText", inputText);
|
||||||
sCmd.addCommand("inputTextSet", inputTextSet);
|
sCmd.addCommand("inputTextSet", inputTextSet);
|
||||||
|
|
||||||
@@ -54,75 +46,12 @@ void CMD_init() {
|
|||||||
|
|
||||||
sCmd.addCommand("inputDate", inputDate);
|
sCmd.addCommand("inputDate", inputDate);
|
||||||
|
|
||||||
|
|
||||||
//sCmd.addCommand("inputDropdown", inputDropdown);
|
//sCmd.addCommand("inputDropdown", inputDropdown);
|
||||||
|
|
||||||
//=================================//
|
//=================================//
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void inputText() {
|
|
||||||
String number = sCmd.next();
|
|
||||||
String viget_name = sCmd.next();
|
|
||||||
viget_name.replace("#", " ");
|
|
||||||
String page_name = sCmd.next();
|
|
||||||
page_name.replace("#", " ");
|
|
||||||
String start_state = sCmd.next();
|
|
||||||
String page_number = sCmd.next();
|
|
||||||
jsonWrite(configJson, "inputTextSet" + number, start_state);
|
|
||||||
createViget (viget_name, page_name, page_number, "vigets/viget.inputText.json", "inputTextSet" + number);
|
|
||||||
}
|
|
||||||
void inputTextSet() {
|
|
||||||
String number = sCmd.next();
|
|
||||||
String value = sCmd.next();
|
|
||||||
jsonWrite(configJson, "inputTextSet" + number, value);
|
|
||||||
sendSTATUS("inputTextSet" + number, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
void inputTime() {
|
|
||||||
String number = sCmd.next();
|
|
||||||
String viget_name = sCmd.next();
|
|
||||||
viget_name.replace("#", " ");
|
|
||||||
String page_name = sCmd.next();
|
|
||||||
page_name.replace("#", " ");
|
|
||||||
String start_state = sCmd.next();
|
|
||||||
String page_number = sCmd.next();
|
|
||||||
jsonWrite(configJson, "inputTimeSet" + number, start_state);
|
|
||||||
createViget (viget_name, page_name, page_number, "vigets/viget.inputTime.json", "inputTimeSet" + number);
|
|
||||||
}
|
|
||||||
void inputTimeSet() {
|
|
||||||
String number = sCmd.next();
|
|
||||||
String value = sCmd.next();
|
|
||||||
value.replace(":", ".");
|
|
||||||
jsonWrite(configJson, "inputTimeSet" + number, value);
|
|
||||||
value.replace(".", ":");
|
|
||||||
sendSTATUS("inputTimeSet" + number, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void inputDate() {
|
|
||||||
String number = sCmd.next();
|
|
||||||
String viget_name = sCmd.next();
|
|
||||||
viget_name.replace("#", " ");
|
|
||||||
String page_name = sCmd.next();
|
|
||||||
page_name.replace("#", " ");
|
|
||||||
String start_state = sCmd.next();
|
|
||||||
String page_number = sCmd.next();
|
|
||||||
jsonWrite(configJson, "inputDateSet" + number, start_state);
|
|
||||||
createViget (viget_name, page_name, page_number, "vigets/viget.inputDate.json", "inputDateSet" + number);
|
|
||||||
}
|
|
||||||
void inputDateSet() {
|
|
||||||
String number = sCmd.next();
|
|
||||||
String value = sCmd.next();
|
|
||||||
jsonWrite(configJson, "inputDateSet" + number, value);
|
|
||||||
sendSTATUS("inputDateSet" + number, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//==========================================================================================================
|
//==========================================================================================================
|
||||||
//==========================================Модуль кнопок===================================================
|
//==========================================Модуль кнопок===================================================
|
||||||
void button() {
|
void button() {
|
||||||
@@ -310,7 +239,7 @@ void text() {
|
|||||||
String page_name = sCmd.next();
|
String page_name = sCmd.next();
|
||||||
String page_number = sCmd.next();
|
String page_number = sCmd.next();
|
||||||
|
|
||||||
createViget (viget_name, page_name, page_number, "vigets/viget.alertsm.json", "textSet" + number);
|
createViget (viget_name, page_name, page_number, "vigets/viget.anydata.json", "textSet" + number);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -331,6 +260,64 @@ void textSet() {
|
|||||||
sendSTATUS("textSet" + number, text);
|
sendSTATUS("textSet" + number, text);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//====================================================================================================================================================
|
||||||
|
void inputText() {
|
||||||
|
String number = sCmd.next();
|
||||||
|
String viget_name = sCmd.next();
|
||||||
|
viget_name.replace("#", " ");
|
||||||
|
String page_name = sCmd.next();
|
||||||
|
page_name.replace("#", " ");
|
||||||
|
String start_state = sCmd.next();
|
||||||
|
String page_number = sCmd.next();
|
||||||
|
jsonWrite(configJson, "inputTextSet" + number, start_state);
|
||||||
|
createViget (viget_name, page_name, page_number, "vigets/viget.inputText.json", "inputTextSet" + number);
|
||||||
|
}
|
||||||
|
void inputTextSet() {
|
||||||
|
String number = sCmd.next();
|
||||||
|
String value = sCmd.next();
|
||||||
|
jsonWrite(configJson, "inputTextSet" + number, value);
|
||||||
|
sendSTATUS("inputTextSet" + number, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
void inputTime() {
|
||||||
|
String number = sCmd.next();
|
||||||
|
String viget_name = sCmd.next();
|
||||||
|
viget_name.replace("#", " ");
|
||||||
|
String page_name = sCmd.next();
|
||||||
|
page_name.replace("#", " ");
|
||||||
|
String start_state = sCmd.next();
|
||||||
|
String page_number = sCmd.next();
|
||||||
|
jsonWrite(configJson, "inputTimeSet" + number, start_state);
|
||||||
|
createViget (viget_name, page_name, page_number, "vigets/viget.inputTime.json", "inputTimeSet" + number);
|
||||||
|
}
|
||||||
|
void inputTimeSet() {
|
||||||
|
String number = sCmd.next();
|
||||||
|
String value = sCmd.next();
|
||||||
|
value.replace(":", ".");
|
||||||
|
jsonWrite(configJson, "inputTimeSet" + number, value);
|
||||||
|
value.replace(".", ":");
|
||||||
|
sendSTATUS("inputTimeSet" + number, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void inputDate() {
|
||||||
|
String number = sCmd.next();
|
||||||
|
String viget_name = sCmd.next();
|
||||||
|
viget_name.replace("#", " ");
|
||||||
|
String page_name = sCmd.next();
|
||||||
|
page_name.replace("#", " ");
|
||||||
|
String start_state = sCmd.next();
|
||||||
|
String page_number = sCmd.next();
|
||||||
|
jsonWrite(configJson, "inputDateSet" + number, start_state);
|
||||||
|
createViget (viget_name, page_name, page_number, "vigets/viget.inputDate.json", "inputDateSet" + number);
|
||||||
|
}
|
||||||
|
void inputDateSet() {
|
||||||
|
String number = sCmd.next();
|
||||||
|
String value = sCmd.next();
|
||||||
|
jsonWrite(configJson, "inputDateSet" + number, value);
|
||||||
|
sendSTATUS("inputDateSet" + number, value);
|
||||||
|
}
|
||||||
//=================================================Глобальные команды удаленного управления===========================================================
|
//=================================================Глобальные команды удаленного управления===========================================================
|
||||||
|
|
||||||
void mqttOrderSend() {
|
void mqttOrderSend() {
|
||||||
@@ -441,6 +428,8 @@ void createViget (String viget_name, String page_name, String page_number, Stri
|
|||||||
all_vigets += viget + "\r\n";
|
all_vigets += viget + "\r\n";
|
||||||
viget = "";
|
viget = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
void createViget (String viget_name, String page_name, String page_number, String file, String topic, String key, String value) {
|
void createViget (String viget_name, String page_name, String page_number, String file, String topic, String key, String value) {
|
||||||
|
|
||||||
String viget;
|
String viget;
|
||||||
@@ -489,7 +478,7 @@ void createViget (String viget_name, String page_name, String page_number, Stri
|
|||||||
all_vigets += viget + "\r\n";
|
all_vigets += viget + "\r\n";
|
||||||
viget = "";
|
viget = "";
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
String vidgetConfigWrite(String viget, String key, String value) {
|
String vidgetConfigWrite(String viget, String key, String value) {
|
||||||
|
|
||||||
if (viget == "") return "";
|
if (viget == "") return "";
|
||||||
|
|||||||
12
Init.ino
12
Init.ino
@@ -1,6 +1,6 @@
|
|||||||
void All_init() {
|
void All_init() {
|
||||||
|
|
||||||
server.on("/all_modules_init", HTTP_GET, [](AsyncWebServerRequest * request) {
|
server.on("/all_modules_init", HTTP_GET, [](AsyncWebServerRequest * request) {
|
||||||
Device_init();
|
Device_init();
|
||||||
request->send(200, "text/text", "OK"); // отправляем ответ о выполнении
|
request->send(200, "text/text", "OK"); // отправляем ответ о выполнении
|
||||||
});
|
});
|
||||||
@@ -31,15 +31,17 @@ void All_init() {
|
|||||||
|
|
||||||
void Device_init() {
|
void Device_init() {
|
||||||
|
|
||||||
ts.remove(LEVEL);
|
//SENSORS-SECTION
|
||||||
ts.remove(ANALOG_);
|
ts.remove(ANALOG_);
|
||||||
ts.remove(PH);
|
ts.remove(LEVEL);
|
||||||
ts.remove(DALLAS);
|
ts.remove(DALLAS);
|
||||||
|
ts.remove(DHTT);
|
||||||
|
ts.remove(DHTH);
|
||||||
|
//================
|
||||||
|
|
||||||
all_vigets = "";
|
all_vigets = "";
|
||||||
txtExecution("config.all.txt");
|
txtExecution("config.all.txt");
|
||||||
//outcoming_date();
|
//outcoming_date();
|
||||||
|
|
||||||
}
|
}
|
||||||
//-------------------------------сценарии-----------------------------------------------------
|
//-------------------------------сценарии-----------------------------------------------------
|
||||||
|
|
||||||
|
|||||||
166
Sensors.ino
166
Sensors.ino
@@ -1,7 +1,6 @@
|
|||||||
//===============================================================================================================================
|
//===============================================================================================================================
|
||||||
//=========================================Модуль аналогового сенсора============================================================
|
//=========================================Модуль аналогового сенсора============================================================
|
||||||
void analog() {
|
void analog() {
|
||||||
static boolean flag = true;
|
|
||||||
String pin = sCmd.next();
|
String pin = sCmd.next();
|
||||||
String viget_name = sCmd.next();
|
String viget_name = sCmd.next();
|
||||||
String page_name = sCmd.next();
|
String page_name = sCmd.next();
|
||||||
@@ -11,29 +10,26 @@ void analog() {
|
|||||||
String analog_start_out = sCmd.next();
|
String analog_start_out = sCmd.next();
|
||||||
String analog_end_out = sCmd.next();
|
String analog_end_out = sCmd.next();
|
||||||
String page_number = sCmd.next();
|
String page_number = sCmd.next();
|
||||||
|
|
||||||
jsonWrite(optionJson, "analog_start", analog_start);
|
jsonWrite(optionJson, "analog_start", analog_start);
|
||||||
jsonWrite(optionJson, "analog_end", analog_end);
|
jsonWrite(optionJson, "analog_end", analog_end);
|
||||||
jsonWrite(optionJson, "analog_start_out", analog_start_out);
|
jsonWrite(optionJson, "analog_start_out", analog_start_out);
|
||||||
jsonWrite(optionJson, "analog_end_out", analog_end_out);
|
jsonWrite(optionJson, "analog_end_out", analog_end_out);
|
||||||
|
|
||||||
choose_viget_and_create(viget_name, page_name, page_number, type, "analog");
|
choose_viget_and_create(viget_name, page_name, page_number, type, "analog");
|
||||||
|
|
||||||
ts.add(ANALOG_, analog_update_int, [&](void*) {
|
ts.add(ANALOG_, analog_update_int, [&](void*) {
|
||||||
|
|
||||||
static int analog_old;
|
static int analog_old;
|
||||||
|
#ifdef ESP32
|
||||||
int analog_in = analogRead(pin.toInt());
|
int analog_in = analogRead(pin.toInt());
|
||||||
|
#endif
|
||||||
|
#ifdef ESP8266
|
||||||
|
int analog_in = analogRead(A0);
|
||||||
|
#endif
|
||||||
jsonWrite(configJson, "analog_in", analog_in);
|
jsonWrite(configJson, "analog_in", analog_in);
|
||||||
|
|
||||||
int analog = map(analog_in,
|
int analog = map(analog_in,
|
||||||
jsonReadtoInt(optionJson, "analog_start") ,
|
jsonReadtoInt(optionJson, "analog_start") ,
|
||||||
jsonReadtoInt(optionJson, "analog_end"),
|
jsonReadtoInt(optionJson, "analog_end"),
|
||||||
jsonReadtoInt(optionJson, "analog_start_out"),
|
jsonReadtoInt(optionJson, "analog_start_out"),
|
||||||
jsonReadtoInt(optionJson, "analog_end_out"));
|
jsonReadtoInt(optionJson, "analog_end_out"));
|
||||||
|
|
||||||
jsonWrite(configJson, "analog", analog);
|
jsonWrite(configJson, "analog", analog);
|
||||||
|
|
||||||
// if (analog_old != analog) {
|
// if (analog_old != analog) {
|
||||||
eventGen ("analog", "");
|
eventGen ("analog", "");
|
||||||
sendSTATUS("analog", String(analog));
|
sendSTATUS("analog", String(analog));
|
||||||
@@ -41,95 +37,30 @@ void analog() {
|
|||||||
Serial.println("[i] sensor analog send date " + String(analog));
|
Serial.println("[i] sensor analog send date " + String(analog));
|
||||||
}
|
}
|
||||||
// }
|
// }
|
||||||
|
|
||||||
analog_old = analog;
|
analog_old = analog;
|
||||||
}, nullptr, true);
|
}, nullptr, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
//===============================================================================================================================
|
|
||||||
//=========================================Модуль аналогового сенсора============================================================
|
|
||||||
void ph() {
|
|
||||||
|
|
||||||
String viget_name = sCmd.next();
|
|
||||||
String page_name = sCmd.next();
|
|
||||||
String type = sCmd.next();
|
|
||||||
String offset = sCmd.next();
|
|
||||||
String page_number = sCmd.next();
|
|
||||||
|
|
||||||
jsonWrite(optionJson, "ph_offset", offset);
|
|
||||||
|
|
||||||
if (type == "text") createViget (viget_name, page_name, page_number, "vigets/viget.alertsm.json", "ph");
|
|
||||||
if (type == "gauge") createViget (viget_name, page_name, page_number, "vigets/viget.fillgauge.json", "ph");
|
|
||||||
if (type == "gauge2") createViget (viget_name, page_name, page_number, "vigets/viget.gauge.json", "ph");
|
|
||||||
if (type == "termometr") createViget (viget_name, page_name, page_number, "vigets/viget.termometr.json", "ph", "titleString", viget_name);
|
|
||||||
|
|
||||||
|
|
||||||
ts.add(PH, ph_shooting_interval, [&](void*) {
|
|
||||||
|
|
||||||
static float pHValue_old;
|
|
||||||
static int counter;
|
|
||||||
|
|
||||||
float offset = jsonRead(optionJson, "ph_offset").toFloat();
|
|
||||||
|
|
||||||
int analog = analogRead(A0);
|
|
||||||
analog = medianFilter.filtered(analog);
|
|
||||||
float voltage = analog * 3.2 / 1024;
|
|
||||||
float pHValue = 3.5 * voltage + offset;
|
|
||||||
String pHValue_str = String(pHValue);
|
|
||||||
|
|
||||||
pHValue_str = selectToMarkerPlus(pHValue_str, "." , 2);
|
|
||||||
|
|
||||||
counter++;
|
|
||||||
|
|
||||||
if (counter > ph_times_to_send) {
|
|
||||||
counter = 0;
|
|
||||||
|
|
||||||
jsonWrite(configJson, "ph", pHValue_str);
|
|
||||||
|
|
||||||
//if (pHValue_old != pHValue) {
|
|
||||||
|
|
||||||
eventGen ("ph", "");
|
|
||||||
sendSTATUS("ph", pHValue_str);
|
|
||||||
if (client.connected()) {
|
|
||||||
Serial.println("[i] sensor ph send date " + pHValue_str);
|
|
||||||
Serial.println("voltage " + String(voltage));
|
|
||||||
}
|
|
||||||
//}
|
|
||||||
pHValue_old = pHValue;
|
|
||||||
}
|
|
||||||
}, nullptr, true);
|
|
||||||
}
|
|
||||||
//===================================================================================================================================
|
//===================================================================================================================================
|
||||||
//=========================================Модуль измерения уровня в баке============================================================
|
//=========================================Модуль измерения уровня в баке============================================================
|
||||||
void level() {
|
void level() {
|
||||||
|
|
||||||
static boolean flag = true;
|
|
||||||
String viget_name = sCmd.next();
|
String viget_name = sCmd.next();
|
||||||
String page_name = sCmd.next();
|
String page_name = sCmd.next();
|
||||||
String type = sCmd.next();
|
String type = sCmd.next();
|
||||||
String empty_level = sCmd.next();
|
String empty_level = sCmd.next();
|
||||||
String full_level = sCmd.next();
|
String full_level = sCmd.next();
|
||||||
String page_number = sCmd.next();
|
String page_number = sCmd.next();
|
||||||
|
|
||||||
jsonWrite(optionJson, "empty_level", empty_level);
|
jsonWrite(optionJson, "empty_level", empty_level);
|
||||||
jsonWrite(optionJson, "full_level", full_level);
|
jsonWrite(optionJson, "full_level", full_level);
|
||||||
|
|
||||||
pinMode(14, OUTPUT);
|
pinMode(14, OUTPUT);
|
||||||
pinMode(12, INPUT);
|
pinMode(12, INPUT);
|
||||||
|
choose_viget_and_create(viget_name, page_name, page_number, type, "level");
|
||||||
if (type == "text") createViget (viget_name, page_name, page_number, "vigets/viget.alertsm.json", "level");
|
|
||||||
if (type == "gauge") createViget (viget_name, page_name, page_number, "vigets/viget.fillgauge.json", "level");
|
|
||||||
if (type == "gauge2") createViget (viget_name, page_name, page_number, "vigets/viget.gauge.json", "level", "maximum", "100");
|
|
||||||
if (type == "termometr") createViget (viget_name, page_name, page_number, "vigets/viget.termometr.json", "level", "titleString", viget_name);
|
|
||||||
|
|
||||||
ts.add(LEVEL, tank_level_shooting_interval, [&](void*) {
|
ts.add(LEVEL, tank_level_shooting_interval, [&](void*) {
|
||||||
|
|
||||||
long duration_;
|
long duration_;
|
||||||
int distance_cm;
|
int distance_cm;
|
||||||
int level;
|
int level;
|
||||||
static int level_old; //переменная static сохраняет свое значение между вызовами функции
|
static int level_old; //переменная static сохраняет свое значение между вызовами функции
|
||||||
static int counter;
|
static int counter;
|
||||||
|
|
||||||
digitalWrite(14, LOW);
|
digitalWrite(14, LOW);
|
||||||
delayMicroseconds(2);
|
delayMicroseconds(2);
|
||||||
digitalWrite(14, HIGH);
|
digitalWrite(14, HIGH);
|
||||||
@@ -138,21 +69,15 @@ void level() {
|
|||||||
duration_ = pulseIn(12, HIGH, 30000); // 3000 µs = 50cm // 30000 µs = 5 m
|
duration_ = pulseIn(12, HIGH, 30000); // 3000 µs = 50cm // 30000 µs = 5 m
|
||||||
distance_cm = duration_ / 29 / 2;
|
distance_cm = duration_ / 29 / 2;
|
||||||
distance_cm = medianFilter.filtered(distance_cm);//отсечение промахов медианным фильтром
|
distance_cm = medianFilter.filtered(distance_cm);//отсечение промахов медианным фильтром
|
||||||
|
|
||||||
counter++;
|
counter++;
|
||||||
|
|
||||||
if (counter > tank_level_times_to_send) {
|
if (counter > tank_level_times_to_send) {
|
||||||
counter = 0;
|
counter = 0;
|
||||||
jsonWrite(configJson, "level_in", distance_cm);
|
jsonWrite(configJson, "level_in", distance_cm);
|
||||||
|
|
||||||
level = map(distance_cm,
|
level = map(distance_cm,
|
||||||
jsonReadtoInt(optionJson, "empty_level"),
|
jsonReadtoInt(optionJson, "empty_level"),
|
||||||
jsonReadtoInt(optionJson, "full_level"), 0, 100);
|
jsonReadtoInt(optionJson, "full_level"), 0, 100);
|
||||||
|
|
||||||
//jsonWrite(configJson, "level", level);
|
//jsonWrite(configJson, "level", level);
|
||||||
|
|
||||||
//if (level_old != level) {
|
//if (level_old != level) {
|
||||||
|
|
||||||
eventGen ("level", "");
|
eventGen ("level", "");
|
||||||
sendSTATUS("level", String(level));
|
sendSTATUS("level", String(level));
|
||||||
if (client.connected()) {
|
if (client.connected()) {
|
||||||
@@ -167,33 +92,22 @@ void level() {
|
|||||||
//==========================================================================================================================================
|
//==========================================================================================================================================
|
||||||
//=========================================Модуль температурного сенсора ds18b20============================================================
|
//=========================================Модуль температурного сенсора ds18b20============================================================
|
||||||
void dallas() {
|
void dallas() {
|
||||||
|
|
||||||
static boolean flag = true;
|
|
||||||
String pin = sCmd.next();
|
String pin = sCmd.next();
|
||||||
String viget_name = sCmd.next();
|
String viget_name = sCmd.next();
|
||||||
String page_name = sCmd.next();
|
String page_name = sCmd.next();
|
||||||
String type = sCmd.next();
|
String type = sCmd.next();
|
||||||
String page_number = sCmd.next();
|
String page_number = sCmd.next();
|
||||||
|
|
||||||
oneWire = new OneWire((uint8_t) pin.toInt());
|
oneWire = new OneWire((uint8_t) pin.toInt());
|
||||||
sensors.setOneWire(oneWire);
|
sensors.setOneWire(oneWire);
|
||||||
sensors.begin();
|
sensors.begin();
|
||||||
sensors.setResolution(12);
|
sensors.setResolution(12);
|
||||||
|
choose_viget_and_create(viget_name, page_name, page_number, type, "dallas");
|
||||||
if (type == "text") createViget (viget_name, page_name, page_number, "vigets/viget.alertsm.json", "dallas");
|
|
||||||
if (type == "gauge") createViget (viget_name, page_name, page_number, "vigets/viget.fillgauge.json", "dallas");
|
|
||||||
if (type == "gauge2") createViget (viget_name, page_name, page_number, "vigets/viget.gauge.json", "dallas");
|
|
||||||
if (type == "termometr") createViget (viget_name, page_name, page_number, "vigets/viget.termometr.json", "dallas", "titleString", viget_name);
|
|
||||||
|
|
||||||
ts.add(DALLAS, temp_update_int, [&](void*) {
|
ts.add(DALLAS, temp_update_int, [&](void*) {
|
||||||
|
|
||||||
float temp = 0;
|
float temp = 0;
|
||||||
static float temp_old;
|
static float temp_old;
|
||||||
sensors.requestTemperatures();
|
sensors.requestTemperatures();
|
||||||
temp = sensors.getTempCByIndex(0);
|
temp = sensors.getTempCByIndex(0);
|
||||||
|
|
||||||
jsonWrite(configJson, "dallas", String(temp));
|
jsonWrite(configJson, "dallas", String(temp));
|
||||||
|
|
||||||
//if (temp_old != temp) {
|
//if (temp_old != temp) {
|
||||||
eventGen ("dallas", "");
|
eventGen ("dallas", "");
|
||||||
sendSTATUS("dallas", String(temp));
|
sendSTATUS("dallas", String(temp));
|
||||||
@@ -201,17 +115,71 @@ void dallas() {
|
|||||||
Serial.println("[i] sensor dallas send date " + String(temp));
|
Serial.println("[i] sensor dallas send date " + String(temp));
|
||||||
}
|
}
|
||||||
//}
|
//}
|
||||||
|
|
||||||
temp_old = temp;
|
temp_old = temp;
|
||||||
}, nullptr, true);
|
}, nullptr, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//======================================================================================================================
|
||||||
|
//=========================================Модуль сенсоров DHT==========================================================
|
||||||
|
void dhtT() {
|
||||||
|
String pin = sCmd.next();
|
||||||
|
String viget_name = sCmd.next();
|
||||||
|
String page_name = sCmd.next();
|
||||||
|
String type = sCmd.next();
|
||||||
|
String page_number = sCmd.next();
|
||||||
|
dht.setup(pin.toInt());
|
||||||
|
choose_viget_and_create(viget_name, page_name, page_number, type, "dhtT");
|
||||||
|
ts.add(DHTT, dhtT_update_int, [&](void*) {
|
||||||
|
int value = 0;
|
||||||
|
static int value_old;
|
||||||
|
value = dht.getTemperature();
|
||||||
|
jsonWrite(configJson, "dhtT", String(value));
|
||||||
|
//if (value_old != value) {
|
||||||
|
eventGen ("dhtT", "");
|
||||||
|
sendSTATUS("dhtT", String(value));
|
||||||
|
if (client.connected()) {
|
||||||
|
Serial.println("[i] sensor dhtT send date " + String(value));
|
||||||
|
}
|
||||||
|
//}
|
||||||
|
value_old = value;
|
||||||
|
}, nullptr, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void dhtH() {
|
||||||
|
String pin = sCmd.next();
|
||||||
|
String viget_name = sCmd.next();
|
||||||
|
String page_name = sCmd.next();
|
||||||
|
String type = sCmd.next();
|
||||||
|
String page_number = sCmd.next();
|
||||||
|
dht.setup(pin.toInt());
|
||||||
|
choose_viget_and_create(viget_name, page_name, page_number, type, "dhtH");
|
||||||
|
ts.add(DHTH, dhtH_update_int, [&](void*) {
|
||||||
|
int value = 0;
|
||||||
|
static int value_old;
|
||||||
|
value = dht.getHumidity();
|
||||||
|
jsonWrite(configJson, "dhtH", String(value));
|
||||||
|
//if (value_old != value) {
|
||||||
|
eventGen ("dhtH", "");
|
||||||
|
sendSTATUS("dhtH", String(value));
|
||||||
|
if (client.connected()) {
|
||||||
|
Serial.println("[i] sensor dhtH send date " + String(value));
|
||||||
|
}
|
||||||
|
//}
|
||||||
|
value_old = value;
|
||||||
|
}, nullptr, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void choose_viget_and_create(String viget_name, String page_name, String page_number, String type, String topik) {
|
void choose_viget_and_create(String viget_name, String page_name, String page_number, String type, String topik) {
|
||||||
|
|
||||||
|
if (type == "any-data") createViget (viget_name, page_name, page_number, "vigets/viget.anydata.json", topik);
|
||||||
if (type == "progress-line") createViget (viget_name, page_name, page_number, "vigets/viget.progressL.json", topik);
|
if (type == "progress-line") createViget (viget_name, page_name, page_number, "vigets/viget.progressL.json", topik);
|
||||||
if (type == "progress-round") createViget (viget_name, page_name, page_number,"vigets/viget.progressR.json", topik);
|
if (type == "progress-round") createViget (viget_name, page_name, page_number, "vigets/viget.progressR.json", topik);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
//======================================================================================================================
|
//======================================================================================================================
|
||||||
//===============================================Логирование============================================================
|
//===============================================Логирование============================================================
|
||||||
@@ -232,12 +200,12 @@ void logging() {
|
|||||||
if (sensor_name == "level") jsonWrite(optionJson, "level_logging_count", maxCount);
|
if (sensor_name == "level") jsonWrite(optionJson, "level_logging_count", maxCount);
|
||||||
if (sensor_name == "dallas") jsonWrite(optionJson, "dallas_logging_count", maxCount);
|
if (sensor_name == "dallas") jsonWrite(optionJson, "dallas_logging_count", maxCount);
|
||||||
if (sensor_name == "ph") jsonWrite(optionJson, "ph_logging_count", maxCount);
|
if (sensor_name == "ph") jsonWrite(optionJson, "ph_logging_count", maxCount);
|
||||||
|
/*
|
||||||
if (sensor_name == "analog") createViget (viget_name, page_name, page_number, "vigets/viget.chart.json", "loganalog", "maxCount", maxCount);
|
if (sensor_name == "analog") createViget (viget_name, page_name, page_number, "vigets/viget.chart.json", "loganalog", "maxCount", maxCount);
|
||||||
if (sensor_name == "level") createViget (viget_name, page_name, page_number, "vigets/viget.chart.json", "loglevel", "maxCount", maxCount);
|
if (sensor_name == "level") createViget (viget_name, page_name, page_number, "vigets/viget.chart.json", "loglevel", "maxCount", maxCount);
|
||||||
if (sensor_name == "dallas") createViget (viget_name, page_name, page_number, "vigets/viget.chart.json", "logdallas", "maxCount", maxCount);
|
if (sensor_name == "dallas") createViget (viget_name, page_name, page_number, "vigets/viget.chart.json", "logdallas", "maxCount", maxCount);
|
||||||
if (sensor_name == "ph") createViget (viget_name, page_name, page_number, "vigets/viget.chart.json", "logph", "maxCount", maxCount);
|
if (sensor_name == "ph") createViget (viget_name, page_name, page_number, "vigets/viget.chart.json", "logph", "maxCount", maxCount);
|
||||||
|
*/
|
||||||
if (sensor_name == "analog") {
|
if (sensor_name == "analog") {
|
||||||
flagLoggingAnalog = true;
|
flagLoggingAnalog = true;
|
||||||
ts.remove(ANALOG_LOG);
|
ts.remove(ANALOG_LOG);
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
void Web_server_init() {
|
void Web_server_init() {
|
||||||
|
|
||||||
//========================================OTA============================================
|
//========================================OTA============================================
|
||||||
#ifdef OTA_enable
|
#ifdef OTA_enable
|
||||||
//Send OTA events to the browser
|
//Send OTA events to the browser
|
||||||
ArduinoOTA.onStart([]() {
|
ArduinoOTA.onStart([]() {
|
||||||
@@ -28,14 +28,14 @@ void Web_server_init() {
|
|||||||
|
|
||||||
ArduinoOTA.begin();
|
ArduinoOTA.begin();
|
||||||
#endif
|
#endif
|
||||||
//========================================MDNS============================================
|
//========================================MDNS============================================
|
||||||
#ifdef MDNS_enable
|
#ifdef MDNS_enable
|
||||||
MDNS.addService("http", "tcp", 80);
|
MDNS.addService("http", "tcp", 80);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//SPIFFS.begin();
|
//SPIFFS.begin();
|
||||||
|
|
||||||
//========================================WS============================================
|
//========================================WS============================================
|
||||||
#ifdef WS_enable
|
#ifdef WS_enable
|
||||||
ws.onEvent(onWsEvent);
|
ws.onEvent(onWsEvent);
|
||||||
server.addHandler(&ws);
|
server.addHandler(&ws);
|
||||||
@@ -46,12 +46,12 @@ void Web_server_init() {
|
|||||||
|
|
||||||
server.addHandler(&events);
|
server.addHandler(&events);
|
||||||
#endif
|
#endif
|
||||||
//======================================================================================
|
//======================================================================================
|
||||||
|
|
||||||
#ifdef ESP32
|
#ifdef ESP32
|
||||||
server.addHandler(new SPIFFSEditor(SPIFFS, http_username, http_password));
|
server.addHandler(new SPIFFSEditor(SPIFFS, jsonRead(configSetup, "web_login").c_str(), jsonRead(configSetup, "web_pass").c_str()));
|
||||||
#elif defined(ESP8266)
|
#elif defined(ESP8266)
|
||||||
server.addHandler(new SPIFFSEditor(http_username, http_password));
|
server.addHandler(new SPIFFSEditor(jsonRead(configSetup, "web_login").c_str(), jsonRead(configSetup, "web_pass").c_str()));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
server.on("/heap", HTTP_GET, [](AsyncWebServerRequest * request) {
|
server.on("/heap", HTTP_GET, [](AsyncWebServerRequest * request) {
|
||||||
@@ -64,7 +64,7 @@ void Web_server_init() {
|
|||||||
server.serveStatic("/", SPIFFS, "/favicon.ico").setCacheControl("max-age=31536000");
|
server.serveStatic("/", SPIFFS, "/favicon.ico").setCacheControl("max-age=31536000");
|
||||||
|
|
||||||
server.serveStatic("/", SPIFFS, "/").setDefaultFile("index.htm")
|
server.serveStatic("/", SPIFFS, "/").setDefaultFile("index.htm")
|
||||||
.setAuthentication(http_username, http_password);
|
.setAuthentication(jsonRead(configSetup, "web_login").c_str(), jsonRead(configSetup, "web_pass").c_str());
|
||||||
|
|
||||||
|
|
||||||
server.onNotFound([](AsyncWebServerRequest * request) {
|
server.onNotFound([](AsyncWebServerRequest * request) {
|
||||||
@@ -145,7 +145,7 @@ void Web_server_init() {
|
|||||||
request->send(200, "application/json", configSetup);
|
request->send(200, "application/json", configSetup);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
//========================================WS=========================================================================================
|
//========================================WS=========================================================================================
|
||||||
#ifdef WS_enable
|
#ifdef WS_enable
|
||||||
void onWsEvent(AsyncWebSocket * server, AsyncWebSocketClient * client, AwsEventType type, void * arg, uint8_t *data, size_t len) {
|
void onWsEvent(AsyncWebSocket * server, AsyncWebSocketClient * client, AwsEventType type, void * arg, uint8_t *data, size_t len) {
|
||||||
if (type == WS_EVT_CONNECT) {
|
if (type == WS_EVT_CONNECT) {
|
||||||
|
|||||||
22
WiFi.ino
22
WiFi.ino
@@ -23,6 +23,26 @@ void WIFI_init() {
|
|||||||
request->send(200, "text/text", "OK"); // отправляем ответ о выполнении
|
request->send(200, "text/text", "OK"); // отправляем ответ о выполнении
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// --------------------Получаем логин и пароль для web со страницы
|
||||||
|
server.on("/web", HTTP_GET, [](AsyncWebServerRequest * request) {
|
||||||
|
if (request->hasArg("web_login")) {
|
||||||
|
jsonWrite(configSetup, "web_login", request->getParam("web_login")->value());
|
||||||
|
}
|
||||||
|
if (request->hasArg("web_pass")) {
|
||||||
|
jsonWrite(configSetup, "web_pass", request->getParam("web_pass")->value());
|
||||||
|
}
|
||||||
|
saveConfig(); // Функция сохранения данных во Flash
|
||||||
|
//Web_server_init();
|
||||||
|
request->send(200, "text/text", "OK"); // отправляем ответ о выполнении
|
||||||
|
});
|
||||||
|
|
||||||
|
server.on("/restart", HTTP_GET, [](AsyncWebServerRequest * request) {
|
||||||
|
if (request->hasArg("device")) {
|
||||||
|
if (request->getParam("device")->value() == "ok") ESP.restart();
|
||||||
|
}
|
||||||
|
request->send(200, "text/text", "OK"); // отправляем ответ о выполнении
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
// Попытка подключения к точке доступа
|
// Попытка подключения к точке доступа
|
||||||
|
|
||||||
@@ -86,7 +106,7 @@ bool StartAPMode() {
|
|||||||
Serial.println(myIP);
|
Serial.println(myIP);
|
||||||
|
|
||||||
if (jsonReadtoInt(optionJson, "pass_status") != 1) {
|
if (jsonReadtoInt(optionJson, "pass_status") != 1) {
|
||||||
ts.add(ROUTER_SEARCHING, 30 * 1000, [&](void*) {
|
ts.add(ROUTER_SEARCHING, 10 * 1000, [&](void*) {
|
||||||
Serial.println("->try find router");
|
Serial.println("->try find router");
|
||||||
if (RouterFind(jsonRead(configSetup, "ssid"))) {
|
if (RouterFind(jsonRead(configSetup, "ssid"))) {
|
||||||
ts.remove(ROUTER_SEARCHING);
|
ts.remove(ROUTER_SEARCHING);
|
||||||
|
|||||||
@@ -1,8 +1,20 @@
|
|||||||
button 1 na Включить#все Освещение 0 1
|
button 1 na Включить#все Реле 0 1
|
||||||
button 2 13 Прихожая Освещение 0 2
|
button 2 13 Прихожая Реле 0 2
|
||||||
button 3 14 Кухня Освещение 0 3
|
button 3 14 Кухня Реле 0 3
|
||||||
pwm 1 3 Яркость#коредор: Освещение 1023 4
|
pwm 1 3 Яркость#коредор: Реле 1023 4
|
||||||
pwm 2 4 Яркость#ванная: Освещение 510 5
|
pwm 2 4 Яркость#ванная: Реле 510 5
|
||||||
analog 0 Аналоговый#вход,#% Датчики progress-round 1 1024 1 1024 6
|
//analog 0 Аналоговый#вход,#% Датчики progress-line 1 1024 1 1024 6
|
||||||
button 4 na вкл:#>10,##выкл:#<10 Датчики 0 7
|
//dallas 2 Водонагреватель,#t°C Датчики any-data 7
|
||||||
inputDigit digit1 введите#число Датчики 10 8
|
dhtT 2 Температура#DHT,#t°C Датчики any-data 8
|
||||||
|
dhtH 2 Влажность#DHT,#% Датчики any-data 9
|
||||||
|
//level Вода#в#баке,#% Датчики any-data 125 20 10
|
||||||
|
button 4 na вкл:#>10,##выкл:#<10 Датчики 0 11
|
||||||
|
inputDigit digit1 При#скольки#включить? Датчики 10 12
|
||||||
|
button 5 na Вкл#обратный#таймер Таймеры 0 13
|
||||||
|
inputDigit digit2 Через#сколько#секунд#включить? Таймеры 5 14
|
||||||
|
button 6 5 Включится#по#таймеру Таймеры 0 15
|
||||||
|
switch 1 0 20
|
||||||
|
textSet 1 неопределено
|
||||||
|
text 1 Квартира Двери 22
|
||||||
|
button 7 scenario Вкл#выкл#все#сценарии Сценарии 1 23
|
||||||
|
button 8 line1,line2, Вкл#выкл#выбранные#сценарии Сценарии 1 24
|
||||||
@@ -1 +1 @@
|
|||||||
{"SSDP":"MODULES","chipID":"4039078204","ssidAP":"WiFi","passwordAP":"","ssid":"rise","password":"hostel3333","timezone":3,"mqttServer":"m12.cloudmqtt.com","mqttPort":14053,"mqttUser":"lbscvzuj","mqttPass":"bLxlveOgaF8F","scenario":"1","timers":"0","pushingbox_id":"v670C4F8A2581A11"}
|
{"SSDP":"MODULES","chipID":"905542-1458415","ssidAP":"WiFi","passwordAP":"","ssid":"rise","password":"hostel3333","timezone":3,"mqttServer":"m12.cloudmqtt.com","mqttPort":14053,"mqttUser":"lbscvzuj","mqttPass":"bLxlveOgaF8F","scenario":"1","timers":"0","pushingbox_id":"v7C133E426B0C69E","web_login":"admin","web_pass":"admin"}
|
||||||
@@ -13,4 +13,16 @@ buttonSet 4 1
|
|||||||
end
|
end
|
||||||
analog < digit1
|
analog < digit1
|
||||||
buttonSet 4 0
|
buttonSet 4 0
|
||||||
|
end
|
||||||
|
button5 = 1
|
||||||
|
timerStart 1 digit2 sec
|
||||||
|
end
|
||||||
|
timer1 = 0
|
||||||
|
buttonSet 6 1
|
||||||
|
end
|
||||||
|
switch1 = 1
|
||||||
|
textSet 1 закрыто
|
||||||
|
end
|
||||||
|
switch1 = 0
|
||||||
|
textSet 1 открыто
|
||||||
end
|
end
|
||||||
@@ -62,65 +62,18 @@
|
|||||||
"class": "btn btn-block btn-success",
|
"class": "btn btn-block btn-success",
|
||||||
"action": "ssid?ssid=[[ssid]]&password=[[ssidPass]]"
|
"action": "ssid?ssid=[[ssid]]&password=[[ssidPass]]"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "hr"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "h2",
|
|
||||||
"title": "Временная зона GMT"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "input",
|
|
||||||
"title": "{{LangSpace}}",
|
|
||||||
"name":"timeZone",
|
|
||||||
"state": "{{timezone}}",
|
|
||||||
"pattern": "[0-9-]{1,3}"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "button",
|
|
||||||
"module":"",
|
|
||||||
"title": "Сохранить",
|
|
||||||
"class": "btn btn-block btn-success",
|
|
||||||
"action": "timeZone?timeZone=[[timeZone]]"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "link",
|
|
||||||
"title": "Автоопределение зоны",
|
|
||||||
"action": "javascript:set_time_zone(this);",
|
|
||||||
"class": "btn btn-block btn-primary"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "time",
|
|
||||||
"name":"times1",
|
|
||||||
"title": "На устройстве сейчас",
|
|
||||||
"state":"{{time}}"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "button",
|
|
||||||
"response":"[[times1]]",
|
|
||||||
"title": "Синхронизировать",
|
|
||||||
"class": "btn btn-block btn-primary",
|
|
||||||
"action": "Time"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "hr"
|
"type": "hr"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "h2",
|
"type": "h2",
|
||||||
"title": "Точка доступа"
|
"title": "Точка доступа"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"type": "text",
|
|
||||||
"title": "После того как устройство подключается к роутеру, его Wi-Fi исчезнет.",
|
|
||||||
"class": "alert alert-warning",
|
|
||||||
"style": "width:45%;float:right;"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"type": "input",
|
"type": "input",
|
||||||
"title": "Имя WI-FI сети",
|
"title": "Имя WI-FI сети",
|
||||||
"name":"ssidap",
|
"name":"ssidap",
|
||||||
"state": "{{ssidAP}}",
|
"state": "{{ssidAP}}",
|
||||||
"style": "width:50%;display:inline",
|
|
||||||
"pattern": ".{1,20}"
|
"pattern": ".{1,20}"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -128,19 +81,41 @@
|
|||||||
"title": "Пароль",
|
"title": "Пароль",
|
||||||
"name":"ssidApPass",
|
"name":"ssidApPass",
|
||||||
"state": "{{passwordAP}}",
|
"state": "{{passwordAP}}",
|
||||||
"style": "width:50%;display:inline",
|
|
||||||
"pattern": ".{8,20}"
|
"pattern": ".{8,20}"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "button",
|
"type": "button",
|
||||||
"title": "Сохранить",
|
"title": "Сохранить",
|
||||||
"action": "ssidap?ssidAP=[[ssidap]]&passwordAP=[[ssidApPass]]",
|
"action": "ssidap?ssidAP=[[ssidap]]&passwordAP=[[ssidApPass]]",
|
||||||
"class": "btn btn-block btn-success",
|
"class": "btn btn-block btn-success"
|
||||||
"style": "width:50%;display:inline"
|
},
|
||||||
|
{
|
||||||
|
"type": "hr"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "hr"
|
"type": "h2",
|
||||||
},
|
"title": "Логин и пароль web interface"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "input",
|
||||||
|
"title": "Логин",
|
||||||
|
"name":"web-login",
|
||||||
|
"state": "{{web_login}}",
|
||||||
|
"pattern": ".{1,20}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "password",
|
||||||
|
"title": "Пароль",
|
||||||
|
"name":"web-pass",
|
||||||
|
"state": "{{web_pass}}",
|
||||||
|
"pattern": ".{1,20}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "button",
|
||||||
|
"title": "Сохранить",
|
||||||
|
"action": "web?web_login=[[web-login]]&web_pass=[[web-pass]]",
|
||||||
|
"class": "btn btn-block btn-success"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "hr"
|
"type": "hr"
|
||||||
},
|
},
|
||||||
|
|||||||
5
data/vigets/viget.anydata.json
Normal file
5
data/vigets/viget.anydata.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"widget" : "anydata",
|
||||||
|
"after" : "",
|
||||||
|
"icon" : ""
|
||||||
|
}
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
{
|
{
|
||||||
"widget" : "input",
|
"widget" : "input",
|
||||||
"size" : "small",
|
"color" : "blue",
|
||||||
"color" : "orange",
|
|
||||||
"type" : "number"
|
"type" : "number"
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"widget" : "toggle",
|
"widget" : "toggle",
|
||||||
"icon" : "sunny",
|
"icon" : "",
|
||||||
"iconOff" : "moon"
|
"iconOff" : ""
|
||||||
}
|
}
|
||||||
@@ -5,7 +5,6 @@ void setup() {
|
|||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
Serial.setDebugOutput(true);
|
Serial.setDebugOutput(true);
|
||||||
Serial.println("--------------started----------------");
|
Serial.println("--------------started----------------");
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
SPIFFS.begin();
|
SPIFFS.begin();
|
||||||
configSetup = readFile("config.json", 4096);
|
configSetup = readFile("config.json", 4096);
|
||||||
@@ -47,25 +46,28 @@ void setup() {
|
|||||||
MQTT_init();
|
MQTT_init();
|
||||||
Serial.println("[V] MQTT_init");
|
Serial.println("[V] MQTT_init");
|
||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
|
Push_init();
|
||||||
|
Serial.println("[V] Push_init");
|
||||||
|
|
||||||
|
|
||||||
getMemoryLoad("[i] After loading");
|
getMemoryLoad("[i] After loading");
|
||||||
|
|
||||||
|
|
||||||
ts.add(TEST, 1000, [&](void*) {
|
// ts.add(TEST, 1000, [&](void*) {
|
||||||
|
|
||||||
//getMemoryLoad("[i] Periodic check");
|
//getMemoryLoad("[i] Periodic check");
|
||||||
|
|
||||||
}, nullptr, true);
|
// }, nullptr, true);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void loop() {
|
void loop() {
|
||||||
|
|
||||||
#ifdef OTA_enable
|
|
||||||
ArduinoOTA.handle();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef WS_enable
|
#ifdef OTA_enable
|
||||||
|
ArduinoOTA.handle();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef WS_enable
|
||||||
ws.cleanupClients();
|
ws.cleanupClients();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
8
main.ino
8
main.ino
@@ -271,9 +271,11 @@ void getMemoryLoad(String text) {
|
|||||||
int memory_load = memory_used * 100 / all_memory;
|
int memory_load = memory_used * 100 / all_memory;
|
||||||
if (memory_load > 65) Serial.print("Attention!!! too match memory used!!!");
|
if (memory_load > 65) Serial.print("Attention!!! too match memory used!!!");
|
||||||
Serial.print(text + " memory used:");
|
Serial.print(text + " memory used:");
|
||||||
Serial.println(String(memory_load) + "%");
|
Serial.print(String(memory_load) + "%; ");
|
||||||
|
Serial.print("memory remain:");
|
||||||
|
Serial.println(String(memory_remain) + " k bytes");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//esp32 full memory = 362868
|
//esp32 full memory = 362868 k bytes
|
||||||
//esp8266 full memory = 53312
|
//esp8266 full memory = 53312 k bytes
|
||||||
|
|||||||
58
push_pushingbox.ino
Normal file
58
push_pushingbox.ino
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
void Push_init() {
|
||||||
|
server.on("/pushingboxDate", HTTP_GET, [](AsyncWebServerRequest * request) {
|
||||||
|
|
||||||
|
if (request->hasArg("pushingbox_id")) {
|
||||||
|
jsonWrite(configSetup, "pushingbox_id", request->getParam("pushingbox_id")->value());
|
||||||
|
}
|
||||||
|
|
||||||
|
saveConfig();
|
||||||
|
|
||||||
|
request->send(200, "text/text", "ok"); // отправляем ответ о выполнении
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void pushControl() {
|
||||||
|
|
||||||
|
String title = sCmd.next();
|
||||||
|
title.replace("#", " ");
|
||||||
|
String body = sCmd.next();
|
||||||
|
body.replace("#", " ");
|
||||||
|
|
||||||
|
static String body_old;
|
||||||
|
|
||||||
|
const char* logServer = "api.pushingbox.com";
|
||||||
|
String deviceId = jsonRead(configSetup, "pushingbox_id");
|
||||||
|
|
||||||
|
Serial.println("- starting client");
|
||||||
|
|
||||||
|
WiFiClient client;
|
||||||
|
|
||||||
|
Serial.println("- connecting to pushing server: " + String(logServer));
|
||||||
|
if (client.connect(logServer, 80)) {
|
||||||
|
Serial.println("- succesfully connected");
|
||||||
|
|
||||||
|
String postStr = "devid=";
|
||||||
|
postStr += String(deviceId);
|
||||||
|
|
||||||
|
postStr += "&title=";
|
||||||
|
postStr += String(title);
|
||||||
|
|
||||||
|
postStr += "&body=";
|
||||||
|
postStr += String(body);
|
||||||
|
|
||||||
|
postStr += "\r\n\r\n";
|
||||||
|
|
||||||
|
Serial.println("- sending data...");
|
||||||
|
|
||||||
|
client.print("POST /pushingbox HTTP/1.1\n");
|
||||||
|
client.print("Host: api.pushingbox.com\n");
|
||||||
|
client.print("Connection: close\n");
|
||||||
|
client.print("Content-Type: application/x-www-form-urlencoded\n");
|
||||||
|
client.print("Content-Length: ");
|
||||||
|
client.print(postStr.length());
|
||||||
|
client.print("\n\n");
|
||||||
|
client.print(postStr);
|
||||||
|
}
|
||||||
|
client.stop();
|
||||||
|
Serial.println("- stopping the client");
|
||||||
|
}
|
||||||
23
set.h
23
set.h
@@ -35,7 +35,7 @@ AsyncEventSource events("/events");
|
|||||||
#include "time.h"
|
#include "time.h"
|
||||||
#include <TickerScheduler.h>
|
#include <TickerScheduler.h>
|
||||||
TickerScheduler ts(30);
|
TickerScheduler ts(30);
|
||||||
enum { ROUTER_SEARCHING, WIFI_MQTT_CONNECTION_CHECK, LEVEL, ANALOG_, PH, DALLAS, ANALOG_LOG, LEVEL_LOG, DALLAS_LOG, PH_LOG, CMD , TIMER_COUNTDOWN, TIMERS, TEST};
|
enum { ROUTER_SEARCHING, WIFI_MQTT_CONNECTION_CHECK, LEVEL, ANALOG_, DALLAS, DHTT, DHTH, ANALOG_LOG, LEVEL_LOG, DALLAS_LOG, PH_LOG, CMD , TIMER_COUNTDOWN, TIMERS, TEST};
|
||||||
|
|
||||||
//ssl//#include "dependencies/WiFiClientSecure/WiFiClientSecure.h" //using older WiFiClientSecure
|
//ssl//#include "dependencies/WiFiClientSecure/WiFiClientSecure.h" //using older WiFiClientSecure
|
||||||
#include <PubSubClient.h>
|
#include <PubSubClient.h>
|
||||||
@@ -58,9 +58,15 @@ GMedian medianFilter;
|
|||||||
#include <DallasTemperature.h>
|
#include <DallasTemperature.h>
|
||||||
OneWire *oneWire;
|
OneWire *oneWire;
|
||||||
DallasTemperature sensors;
|
DallasTemperature sensors;
|
||||||
|
//----------------------------------------------------------------
|
||||||
|
#include <DHT.h> //https://github.com/markruys/arduino-DHT
|
||||||
|
DHT dht;
|
||||||
|
//----------------------------------------------------------------
|
||||||
|
#include "Adafruit_Si7021.h" //https://github.com/adafruit/Adafruit_Si7021
|
||||||
|
Adafruit_Si7021 sensor_Si7021 = Adafruit_Si7021();
|
||||||
//-----------------------------------------------------------------
|
//-----------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
//#define OTA_enable
|
//#define OTA_enable
|
||||||
//-----------------------------------------------------------------
|
//-----------------------------------------------------------------
|
||||||
//#define MDNS_enable
|
//#define MDNS_enable
|
||||||
@@ -68,9 +74,7 @@ DallasTemperature sensors;
|
|||||||
//#define WS_enable
|
//#define WS_enable
|
||||||
//-----------------------------------------------------------------
|
//-----------------------------------------------------------------
|
||||||
|
|
||||||
|
#define wifi_mqtt_reconnecting 20000
|
||||||
|
|
||||||
#define wifi_mqtt_reconnecting 60000
|
|
||||||
//-----------------------------------------------------------------
|
//-----------------------------------------------------------------
|
||||||
#define analog_update_int 5000
|
#define analog_update_int 5000
|
||||||
//-----------------------------------------------------------------
|
//-----------------------------------------------------------------
|
||||||
@@ -82,11 +86,12 @@ DallasTemperature sensors;
|
|||||||
#define tank_level_shooting_interval 500 //интервал выстрела датчика
|
#define tank_level_shooting_interval 500 //интервал выстрела датчика
|
||||||
#define tank_level_times_to_send 20 //после скольки выстрелов делать отправку данных
|
#define tank_level_times_to_send 20 //после скольки выстрелов делать отправку данных
|
||||||
//-----------------------------------------------------------------
|
//-----------------------------------------------------------------
|
||||||
|
#define dhtT_update_int 5000
|
||||||
|
#define dhtH_update_int 5000
|
||||||
|
//-----------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
const char* hostName = "esp-async";
|
const char* hostName = "esp-async";
|
||||||
const char* http_username = "admin";
|
|
||||||
const char* http_password = "admin";
|
|
||||||
|
|
||||||
String configSetup = "{}";
|
String configSetup = "{}";
|
||||||
String configJson = "{}";
|
String configJson = "{}";
|
||||||
@@ -96,7 +101,7 @@ String chipID = "";
|
|||||||
String prefix = "/IoTmanager";
|
String prefix = "/IoTmanager";
|
||||||
String prex;
|
String prex;
|
||||||
String ids;
|
String ids;
|
||||||
//boolean busy;
|
//boolean busy;
|
||||||
String all_vigets = "";
|
String all_vigets = "";
|
||||||
String scenario;
|
String scenario;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user