Cleaning and optimization

This commit is contained in:
Dmitry Borisenko
2020-11-19 04:14:52 +03:00
parent 4f9763334b
commit 70c34d3d8d
15 changed files with 29 additions and 978 deletions

View File

@@ -30,7 +30,7 @@ public:
String setEventSign = selectFromMarkerToMarker(condition, " ", 1);
String setEventValue = selectFromMarkerToMarker(condition, " ", 2);
if (!isDigitStr(setEventValue)) setEventValue = jsonReadStr(configLiveJson, setEventValue);
if (!isDigitStr(setEventValue)) setEventValue = getValue(setEventValue); //jsonReadStr(configLiveJson , setEventValue);
boolean flag = false;

View File

@@ -72,15 +72,12 @@ enum TimerTask_t { WIFI_SCAN,
WIFI_MQTT_CONNECTION_CHECK,
SENSORS10SEC,
SENSORS30SEC,
TIMER_COUNTDOWN,
TIME,
TIME_SYNC,
STATISTICS,
STATISTICS_WORK,
UPTIME,
UDP,
UDP_DB,
TEST };
SYGNAL};
enum NotAsyncActions {
do_ZERO,

View File

@@ -54,6 +54,7 @@ extern String configSetupJson; //все настройки
extern String configLiveJson; //все данные с датчиков (связан с mqtt)
extern String configStoreJson; //все данные которые должны сохраняться
extern String configOptionJson; //для трансфера
extern String getValue(String& key);
// Mqtt
extern String chipId;

View File

@@ -94,7 +94,7 @@ void csvCmdExecute(String& cmdStr) {
else if (order == F("count-down")) {
sCmd.addCommand(order.c_str(), countDown);
}
sCmd.readStr(buf);
}
cmdStr = deleteBeforeDelimiter(cmdStr, "\n");
@@ -163,3 +163,20 @@ int getKeyNum(String& key, String& keyNumberTable) {
}
return number;
}
String getValue(String& key) {
String live = jsonReadStr(configLiveJson, key);
String store = jsonReadStr(configStoreJson, key);
if (live != nullptr) {
return live;
}
else if (store != nullptr) {
return store;
}
else if (store == nullptr && live == nullptr) {
return "no value";
}
else {
return "data error";
}
}

View File

@@ -5,7 +5,7 @@ AsyncWebSocket ws;
//AsyncEventSource events;
#endif
TickerScheduler ts(TEST + 1);
TickerScheduler ts(SYGNAL + 1);
WiFiClient espClient;
PubSubClient mqtt(espClient);
StringCommand sCmd;

View File

@@ -33,7 +33,6 @@ void loadConfig() {
void all_init() {
Device_init();
loadScenario();
Timer_countdown_init();
}
void Device_init() {

View File

@@ -1,334 +0,0 @@
//#include "BufferExecute.h"
//
//#include "BufferExecute.h"
//#include "Class/NotAsync.h"
//#include "Cmd.h"
//#include "Global.h"
//#include "Module/Terminal.h"
//#include "Servo/Servos.h"
//
//#include "items/vSensorDallas.h"
//
//Terminal *term = nullptr;
//
//boolean but[NUM_BUTTONS];
//Bounce *buttons = new Bounce[NUM_BUTTONS];
//
//#ifdef ESP8266
//SoftwareSerial *mySerial = nullptr;
//#else
//HardwareSerial *mySerial = nullptr;
//#endif
//
//void getData();
//
//void cmd_init() {
//sCmd.addCommand("button-out", buttonOut);
//sCmd.addCommand("pwm-out", pwmOut);
//sCmd.addCommand("button-in", buttonIn);
//sCmd.addCommand("input-digit", input);
//sCmd.addCommand("input-time", inputTime);
//sCmd.addCommand("output-text", textOut);
//sCmd.addCommand("analog-adc", analogAdc);
//sCmd.addCommand("ultrasonic-cm", ultrasonicCm);
//sCmd.addCommand("dallas-temp", dallas);
//sCmd.addCommand("dht-temp", dhtTemp);
//sCmd.addCommand("dht-hum", dhtHum);
//sCmd.addCommand("bme280-temp", bme280Temp);
//sCmd.addCommand("bme280-hum", bme280Hum);
//sCmd.addCommand("bme280-press", bme280Press);
//sCmd.addCommand("bmp280-temp", bmp280Temp);
//sCmd.addCommand("bmp280-press", bmp280Press);
//sCmd.addCommand("modbus", modbus);
//sCmd.addCommand("uptime", sysUptime);
//sCmd.addCommand("logging", logging);
//sCmd.addCommand("impuls-out", impuls);
//}
// sCmd.addCommand("timerStart", timerStart_);
// sCmd.addCommand("timerStop", timerStop_);
//#ifdef DHT_ENABLED
// sCmd.addCommand("dhtT", dhtT);
// sCmd.addCommand("dhtH", dhtH);
// sCmd.addCommand("dhtPerception", dhtP);
// sCmd.addCommand("dhtComfort", dhtC);
// sCmd.addCommand("dhtDewpoint", dhtD);
//#endif
//#ifdef BMP_ENABLED
// sCmd.addCommand("bmp280T", bmp280T);
// sCmd.addCommand("bmp280P", bmp280P);
//#endif
//
//#ifdef BME_ENABLED
// sCmd.addCommand("bme280T", bme280T);
// sCmd.addCommand("bme280P", bme280P);
// sCmd.addCommand("bme280H", bme280H);
// sCmd.addCommand("bme280A", bme280A);
//#endif
//
//#ifdef STEPPER_ENABLED
// sCmd.addCommand("stepper", stepper);
// sCmd.addCommand("stepperSet", stepperSet);
//#endif
//
//#ifdef SERVO_ENABLED
// sCmd.addCommand("servo", servo_);
// sCmd.addCommand("servoSet", servoSet);
//#endif
//
//#ifdef SERIAL_ENABLED
// sCmd.addCommand("serialBegin", serialBegin);
// sCmd.addCommand("serialWrite", serialWrite);
// sCmd.addCommand("getData", getData);
//#endif
//
//#ifdef LOGGING_ENABLED
// sCmd.addCommand("logging", logging);
//#endif
//
// sCmd.addCommand("mqtt", mqttOrderSend);
// sCmd.addCommand("http", httpOrderSend);
//
//#ifdef PUSH_ENABLED
// sCmd.addCommand("push", pushControl);
//#endif
//
// sCmd.addCommand("firmwareUpdate", firmwareUpdate);
// sCmd.addCommand("firmwareVersion", firmwareVersion);
//void text() {
// String number = sCmd.next();
// String widget_name = sCmd.next();
// String page_name = sCmd.next();
// String page_number = sCmd.next();
//
// createWidget(widget_name, page_name, page_number, "anydata", "text" + number);
//}
//
//void textSet() {
// String number = sCmd.next();
// String text = sCmd.next();
// text.replace("_", " ");
//
// if (text.indexOf("-time") >= 0) {
// text.replace("-time", "");
// text.replace("#", " ");
// text = text + " " + timeNow->getDateTimeDotFormated();
// }
//
// jsonWriteStr(configLiveJson, "text" + number, text);
// publishStatus("text" + number, text);
//}
//=====================================================================================================================================
////=========================================Модуль шагового мотора======================================================================
//#ifdef STEPPER_ENABLED
////stepper 1 12 13
//void stepper() {
// String stepper_number = sCmd.next();
// String pin_step = sCmd.next();
// String pin_dir = sCmd.next();
//
// jsonWriteStr(configOptionJson, "stepper" + stepper_number, pin_step + " " + pin_dir);
// pinMode(pin_step.toInt(), OUTPUT);
// pinMode(pin_dir.toInt(), OUTPUT);
//}
//
////stepperSet 1 100 5
//void stepperSet() {
// String stepper_number = sCmd.next();
// String steps = sCmd.next();
// jsonWriteStr(configOptionJson, "steps" + stepper_number, steps);
// String stepper_speed = sCmd.next();
// String pin_step = selectToMarker(jsonReadStr(configOptionJson, "stepper" + stepper_number), " ");
// String pin_dir = deleteBeforeDelimiter(jsonReadStr(configOptionJson, "stepper" + stepper_number), " ");
// Serial.println(pin_step);
// Serial.println(pin_dir);
// if (steps.toInt() > 0) digitalWrite(pin_dir.toInt(), HIGH);
// if (steps.toInt() < 0) digitalWrite(pin_dir.toInt(), LOW);
// if (stepper_number == "1") {
// ts.add(
// STEPPER1, stepper_speed.toInt(), [&](void *) {
// int steps_int = abs(jsonReadInt(configOptionJson, "steps1") * 2);
// static int count;
// count++;
// String pin_step = selectToMarker(jsonReadStr(configOptionJson, "stepper1"), " ");
// digitalWrite(pin_step.toInt(), !digitalRead(pin_step.toInt()));
// yield();
// if (count > steps_int) {
// digitalWrite(pin_step.toInt(), LOW);
// ts.remove(STEPPER1);
// count = 0;
// }
// },
// nullptr, true);
// }
// if (stepper_number == "2") {
// ts.add(
// STEPPER2, stepper_speed.toInt(), [&](void *) {
// int steps_int = abs(jsonReadInt(configOptionJson, "steps2") * 2);
// static int count;
// count++;
// String pin_step = selectToMarker(jsonReadStr(configOptionJson, "stepper2"), " ");
// digitalWrite(pin_step.toInt(), !digitalRead(pin_step.toInt()));
// yield();
// if (count > steps_int) {
// digitalWrite(pin_step.toInt(), LOW);
// ts.remove(STEPPER2);
// count = 0;
// }
// },
// nullptr, true);
// }
//}
//#endif
////====================================================================================================================================================
////=================================================================Сервоприводы=======================================================================
//#ifdef SERVO_ENABLED
////servo 1 13 50 Мой#сервопривод Сервоприводы 0 100 0 180 2
//void servo_() {
// String number = sCmd.next();
// uint8_t pin = String(sCmd.next()).toInt();
// int value = String(sCmd.next()).toInt();
//
// String widget = sCmd.next();
// String page = sCmd.next();
//
// int min_value = String(sCmd.next()).toInt();
// int max_value = String(sCmd.next()).toInt();
// int min_deg = String(sCmd.next()).toInt();
// int max_deg = String(sCmd.next()).toInt();
//
// String pageNumber = sCmd.next();
//
// jsonWriteStr(configOptionJson, "servo_pin" + number, String(pin, DEC));
//
// value = map(value, min_value, max_value, min_deg, max_deg);
//
// Servo *servo = myServo.create(number.toInt(), pin);
// servo->write(value);
//#ifdef ESP32
// myServo1.attach(servo_pin.toInt(), 500, 2400);
// myServo1.write(start_state_int);
//#endif
//
// jsonWriteInt(configOptionJson, "s_min_val" + number, min_value);
// jsonWriteInt(configOptionJson, "s_max_val" + number, max_value);
// jsonWriteInt(configOptionJson, "s_min_deg" + number, min_deg);
// jsonWriteInt(configOptionJson, "s_max_deg" + number, max_deg);
//
// jsonWriteInt(configLiveJson, "servo" + number, value);
//
// createWidgetParam(widget, page, pageNumber, "range", "servo" + number, "min", String(min_value), "max", String(max_value), "k", "1");
//}
//
//void servoSet() {
// String number = sCmd.next();
// int value = String(sCmd.next()).toInt();
//
// value = map(value,
// jsonReadInt(configOptionJson, "s_min_val" + number),
// jsonReadInt(configOptionJson, "s_max_val" + number),
// jsonReadInt(configOptionJson, "s_min_deg" + number),
// jsonReadInt(configOptionJson, "s_max_deg" + number));
//
// Servo *servo = myServo.get(number.toInt());
// if (servo) {
// servo->write(value);
// }
//
// eventGen2("servo", number);
// jsonWriteInt(configLiveJson, "servo" + number, value);
// publishStatus("servo" + number, String(value, DEC));
//}
//#endif
////====================================================================================================================================================
////=============================================================Модуль сериал порта=======================================================================
//
//#ifdef SERIAL_ENABLED
//void serialBegin() {
// String s_speed = sCmd.next();
// String rxPin = sCmd.next();
// String txPin = sCmd.next();
//
// if (mySerial) {
// delete mySerial;
// }
//
//#ifdef ESP8266
// mySerial = new SoftwareSerial(rxPin.toInt(), txPin.toInt());
// mySerial->begin(s_speed.toInt());
//#else
// mySerial = new HardwareSerial(2);
// mySerial->begin(rxPin.toInt(), txPin.toInt());
//#endif
//
// term = new Terminal(mySerial);
// term->setEOL(LF);
// term->enableColors(false);
// term->enableControlCodes(false);
// term->enableEcho(false);
// term->setOnReadLine([](const char *str) {
// String line = String(str);
// loopCmdAdd(line);
// });
//}
//
//void getData() {
// String param = sCmd.next();
// String res = param.length() ? jsonReadStr(configLiveJson, param) : configLiveJson;
// if (term) {
// term->println(res.c_str());
// }
//}
//
//void serialWrite() {
// String payload = sCmd.next();
// if (term) {
// term->println(payload.c_str());
// }
//}
//#endif
////====================================================================================================================================================
////=================================================Глобальные команды удаленного управления===========================================================
//
//void mqttOrderSend() {
// String id = sCmd.next();
// String order = sCmd.next();
//
// String all_line = jsonReadStr(configSetupJson, "mqttPrefix") + "/" + id + "/order";
// mqtt.publish(all_line.c_str(), order.c_str(), false);
//}
//
//void httpOrderSend() {
// String ip = sCmd.next();
// String order = sCmd.next();
// order.replace("_", "%20");
// String url = "http://" + ip + "/cmd?command=" + order;
// getURL(url);
//}
//
//void firmwareUpdate() {
// myNotAsyncActions->make(do_UPGRADE);
//}
//
//void firmwareVersion() {
// String widget = sCmd.next();
// String page = sCmd.next();
// String pageNumber = sCmd.next();
//
// jsonWriteStr(configLiveJson, "firmver", FIRMWARE_VERSION);
// createWidget(widget, page, pageNumber, "anydata", "firmver");
//}

View File

@@ -1,75 +0,0 @@
#include "MqttDiscovery.h"
namespace Discovery {
static const char json_is_defined[] = "is_defined";
static const char jsonId[] = "id";
static const char jsonBatt[] = "batt";
static const char jsonLux[] = "lux";
static const char jsonPres[] = "pres";
static const char jsonFer[] = "fer";
static const char jsonMoi[] = "moi";
static const char jsonHum[] = "hum";
static const char jsonTemp[] = "tem";
static const char jsonStep[] = "steps";
static const char jsonWeight[] = "weight";
static const char jsonPresence[] = "presence";
static const char jsonAltim[] = "altim";
static const char jsonAltif[] = "altift";
static const char jsonTempf[] = "tempf";
static const char jsonMsg[] = "message";
static const char jsonVal[] = "value";
static const char jsonVolt[] = "volt";
static const char jsonCurrent[] = "current";
static const char jsonPower[] = "power";
static const char jsonGpio[] = "gpio";
static const char jsonFtcd[] = "ftcd";
static const char jsonWm2[] = "wattsm2";
static const char jsonAdc[] = "adc";
static const char jsonPa[] = "pa";
const String getValueJson(const char* str) {
char buf[32];
sprintf(buf, "{{ value_json.%s }}", str);
return buf;
}
void createDiscovery(
const char* type, const char* name, const char* clazz,
const char* value_template, const char* payload_on, const char* payload_off,
const char* maasure_unit, int off_delay, const char* has_payload, const char* no_payload,
const char* avail_topi, const char* cmd_topic, const char* state_topic, bool child) {
//const char* unique_id = getUniqueId(name).c_str();
}
void createADC(const char* name) {
createDiscovery(
"Type", "Name", "Clazz",
"Value", "Payload", "NoPayload",
"Measure", 0, "HasPayload", "NoPayload",
"", "", "", false);
}
void createSwitch(const char* name) {
createDiscovery(
"Type", "Name", "Clazz",
"Value", "Payload", "NoPayload",
"Measure", 0, "HasPayload", "NoPayload",
"", "", "", false);
}
// component,
// type,
// name,
// availability topic,
// device class,
// value template, payload on, payload off, unit of measurement
const char* BMEsensor[6][8] = {
{"sensor", "tempc", "bme", "temperature", "", "", "°C"}, //jsonTemp
{"sensor", "tempf", "bme", "temperature", "", "", "°F"}, //jsonTempf
{"sensor", "pa", "bme", "", "", "", "hPa"}, //jsonPa
{"sensor", "hum", "bme", "humidity", "", "", "%"}, // jsonHum
{"sensor", "altim", "bme", "", "", "", "m"}, //jsonAltim
{"sensor", "altift", "bme", "", "", "", "ft"} // jsonAltif
};
} // namespace Discovery

View File

@@ -1,60 +0,0 @@
#include "Global.h"
void Push_init() {
server.on("/pushingboxDate", HTTP_GET, [](AsyncWebServerRequest* request) {
if (request->hasArg("pushingbox_id")) {
jsonWriteStr(configSetupJson, "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 = jsonReadStr(configSetupJson, "pushingbox_id");
//Serial.println("- starting client");
WiFiClient client_push;
//Serial.println("- connecting to pushing server: " + String(logServer));
if (!client_push.connect(logServer, 80)) {
//Serial.println("- not connected");
} else {
//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_push.print(F("POST /pushingbox HTTP/1.1\n"));
client_push.print(F("Host: api.pushingbox.com\n"));
client_push.print(F("Connection: close\n"));
client_push.print(F("Content-Type: application/x-www-form-urlencoded\n"));
client_push.print(F("Content-Length: "));
client_push.print(postStr.length());
client_push.print("\n\n");
client_push.print(postStr);
}
client_push.stop();
//Serial.println("- stopping the client");
}

View File

@@ -1,405 +0,0 @@
//#include "Cmd.h"
//#include "Global.h"
//GMedian<10, int> medianFilter;
//
//Adafruit_BMP280 bmp;
//Adafruit_Sensor *bmp_temp = bmp.getTemperatureSensor();
//Adafruit_Sensor *bmp_pressure = bmp.getPressureSensor();
//
//Adafruit_BME280 bme;
//Adafruit_Sensor *bme_temp = bme.getTemperatureSensor();
//Adafruit_Sensor *bme_pressure = bme.getPressureSensor();
//Adafruit_Sensor *bme_humidity = bme.getHumiditySensor();
///const String perceptionStr(byte value);
///const String comfortStr(ComfortState value);
//void bmp280T_reading();
////=========================================================================================================================================
////=========================================Модуль сенсоров DHT=============================================================================
//#ifdef DHT_ENABLED
////dhtT t 2 dht11 Температура#DHT,#t°C Датчики any-data 1
//void dhtT() {
// String value_name = sCmd.next();
// String pin = sCmd.next();
// String sensor_type = sCmd.next();
// String widget_name = sCmd.next();
// String page_name = sCmd.next();
// String type = sCmd.next();
// String page_number = sCmd.next();
// //dhtT_value_name = value_name;
// if (sensor_type == "dht11") {
// dht.setup(pin.toInt(), DHTesp::DHT11);
// }
// if (sensor_type == "dht22") {
// dht.setup(pin.toInt(), DHTesp::DHT22);
// }
// createWidgetByType(widget_name, page_name, page_number, type, value_name);
// //sensors_reading_map[4] = 1;
//}
//
//void dhtT_reading() {
// float value = 0;
// static int counter;
// if (dht.getStatus() != 0 && counter < 5) {
// // publishStatus(dhtT_value_name, String(dht.getStatusString()));
// counter++;
// } else {
// counter = 0;
// value = dht.getTemperature();
// if (String(value) != "nan") {
// //eventGen2(dhtT_value_name, "");
// //jsonWriteStr(configLiveJson, dhtT_value_name, String(value));
// // publishStatus(dhtT_value_name, String(value));
// //SerialPrint("I", "Sensor", "'" + dhtT_value_name + "' data: " + String(value));
// }
// }
//}
//
////dhtH h 2 dht11 Влажность#DHT,#t°C Датчики any-data 1
//void dhtH() {
// String value_name = sCmd.next();
// String pin = sCmd.next();
// String sensor_type = sCmd.next();
// String widget_name = sCmd.next();
// String page_name = sCmd.next();
// String type = sCmd.next();
// String page_number = sCmd.next();
// //dhtH_value_name = value_name;
// if (sensor_type == "dht11") {
// dht.setup(pin.toInt(), DHTesp::DHT11);
// }
// if (sensor_type == "dht22") {
// dht.setup(pin.toInt(), DHTesp::DHT22);
// }
// createWidgetByType(widget_name, page_name, page_number, type, value_name);
// //sensors_reading_map[5] = 1;
//}
//
//void dhtH_reading() {
// float value = 0;
// static int counter;
// if (dht.getStatus() != 0 && counter < 5) {
// // publishStatus(dhtH_value_name, String(dht.getStatusString()));
// counter++;
// } else {
// counter = 0;
// value = dht.getHumidity();
// if (String(value) != "nan") {
// //eventGen2(dhtH_value_name, "");
// //jsonWriteStr(configLiveJson, dhtH_value_name, String(value));
// // publishStatus(dhtH_value_name, String(value));
// //SerialPrint("I", "Sensor", "'" + dhtH_value_name + "' data: " + String(value));
// }
// }
//}
//
////dhtPerception Восприятие: Датчики 4
//void dhtP() {
// String widget_name = sCmd.next();
// String page_name = sCmd.next();
// String page_number = sCmd.next();
// createWidgetByType(widget_name, page_name, page_number, "any-data", "dhtPerception");
// //sensors_reading_map[6] = 1;
//}
//
//void dhtP_reading() {
// byte value;
// if (dht.getStatus() != 0) {
// publishStatus("dhtPerception", String(dht.getStatusString()));
// } else {
// //value = dht.computePerception(jsonReadStr(configLiveJson, dhtT_value_name).toFloat(), jsonReadStr(configLiveJson, dhtH_value_name).toFloat(), false);
// String final_line = perceptionStr(value);
// jsonWriteStr(configLiveJson, "dhtPerception", final_line);
// eventGen2("dhtPerception", "");
// publishStatus("dhtPerception", final_line);
// if (mqtt.connected()) {
// SerialPrint("I", "Sensor", "'dhtPerception' data: " + final_line);
// }
// }
//}
//
////dhtComfort Степень#комфорта: Датчики 3
//void dhtC() {
// String widget_name = sCmd.next();
// String page_name = sCmd.next();
// String page_number = sCmd.next();
// createWidgetByType(widget_name, page_name, page_number, "anydata", "dhtComfort");
// //sensors_reading_map[7] = 1;
//}
//
//void dhtC_reading() {
// ComfortState cf;
// if (dht.getStatus() != 0) {
// publishStatus("dhtComfort", String(dht.getStatusString()));
// } else {
// //dht.getComfortRatio(cf, jsonReadStr(configLiveJson, dhtT_value_name).toFloat(), jsonReadStr(configLiveJson, dhtH_value_name).toFloat(), false);
// String final_line = comfortStr(cf);
// jsonWriteStr(configLiveJson, "dhtComfort", final_line);
// eventGen2("dhtComfort", "");
// publishStatus("dhtComfort", final_line);
// SerialPrint("I", "Sensor", "'dhtComfort' send date " + final_line);
// }
//}
//
//const String perceptionStr(byte value) {
// String res;
// switch (value) {
// case 0:
// res = F("Сухой воздух");
// break;
// case 1:
// res = F("Комфортно");
// break;
// case 2:
// res = F("Уютно");
// break;
// case 3:
// res = F("Хорошо");
// break;
// case 4:
// res = F("Неудобно");
// break;
// case 5:
// res = F("Довольно неудобно");
// break;
// case 6:
// res = F("Очень неудобно");
// break;
// case 7:
// res = F("Невыносимо");
// default:
// res = F("Unknown");
// break;
// }
// return res;
//}
//
//const String comfortStr(ComfortState value) {
// String res;
// switch (value) {
// case Comfort_OK:
// res = F("Отлично");
// break;
// case Comfort_TooHot:
// res = F("Очень жарко");
// break;
// case Comfort_TooCold:
// res = F("Очень холодно");
// break;
// case Comfort_TooDry:
// res = F("Очень сухо");
// break;
// case Comfort_TooHumid:
// res = F("Очень влажно");
// break;
// case Comfort_HotAndHumid:
// res = F("Жарко и влажно");
// break;
// case Comfort_HotAndDry:
// res = F("Жарко и сухо");
// break;
// case Comfort_ColdAndHumid:
// res = F("Холодно и влажно");
// break;
// case Comfort_ColdAndDry:
// res = F("Холодно и сухо");
// break;
// default:
// res = F("Неизвестно");
// break;
// };
// return res;
//}
//
////dhtDewpoint Точка#росы: Датчики 5
//void dhtD() {
// String widget_name = sCmd.next();
// String page_name = sCmd.next();
// String page_number = sCmd.next();
// createWidgetByType(widget_name, page_name, page_number, "anydata", "dhtDewpoint");
// //sensors_reading_map[8] = 1;
//}
//
//void dhtD_reading() {
// float value;
// if (dht.getStatus() != 0) {
// publishStatus("dhtDewpoint", String(dht.getStatusString()));
// } else {
// //value = dht.computeDewPoint(jsonReadStr(configLiveJson, dhtT_value_name).toFloat(), jsonReadStr(configLiveJson, dhtH_value_name).toFloat(), false);
// jsonWriteInt(configLiveJson, "dhtDewpoint", value);
// eventGen2("dhtDewpoint", "");
// publishStatus("dhtDewpoint", String(value));
// SerialPrint("I", "Sensor", "'dhtDewpoint' data: " + String(value));
// }
//}
//#endif
//=========================================i2c bus esp8266 scl-4 sda-5 ====================================================================
//=========================================================================================================================================
//=========================================Модуль сенсоров bmp280==========================================================================
////bmp280T temp1 0x76 Температура#bmp280 Датчики any-data 1
//void bmp280T() {
// String value_name = sCmd.next();
// String address = sCmd.next();
// String widget_name = sCmd.next();
// String page_name = sCmd.next();
// String type = sCmd.next();
// String page_number = sCmd.next();
// //bmp280T_value_name = value_name;
// createWidgetByType(widget_name, page_name, page_number, type, value_name);
// bmp.begin(hexStringToUint8(address));
// bmp.setSampling(Adafruit_BMP280::MODE_NORMAL, /* Operating Mode. */
// Adafruit_BMP280::SAMPLING_X2, /* Temp. oversampling */
// Adafruit_BMP280::SAMPLING_X16, /* Pressure oversampling */
// Adafruit_BMP280::FILTER_X16, /* Filtering. */
// Adafruit_BMP280::STANDBY_MS_500); /* Standby time. */
// //bmp_temp->printSensorDetails();
// //sensors_reading_map[9] = 1;
//}
//
//void bmp280T_reading() {
// float value = 0;
// sensors_event_t temp_event;
// bmp_temp->getEvent(&temp_event);
// value = temp_event.temperature;
// //jsonWriteStr(configLiveJson, bmp280T_value_name, String(value));
// //eventGen2(bmp280T_value_name, "");
// // publishStatus(bmp280T_value_name, String(value));
// //SerialPrint("I", "Sensor", "'" + bmp280T_value_name + "' data: " + String(value));
//}
//
////bmp280P press1 0x76 Давление#bmp280 Датчики any-data 2
//void bmp280P() {
// String value_name = sCmd.next();
// String address = sCmd.next();
// String widget_name = sCmd.next();
// String page_name = sCmd.next();
// String type = sCmd.next();
// String page_number = sCmd.next();
// //bmp280P_value_name = value_name;
// createWidgetByType(widget_name, page_name, page_number, type, value_name);
// bmp.begin(hexStringToUint8(address));
// bmp.setSampling(Adafruit_BMP280::MODE_NORMAL, /* Operating Mode. */
// Adafruit_BMP280::SAMPLING_X2, /* Temp. oversampling */
// Adafruit_BMP280::SAMPLING_X16, /* Pressure oversampling */
// Adafruit_BMP280::FILTER_X16, /* Filtering. */
// Adafruit_BMP280::STANDBY_MS_500); /* Standby time. */
// //bmp_temp->printSensorDetails();
// //sensors_reading_map[10] = 1;
//}
//
//void bmp280P_reading() {
// float value = 0;
// sensors_event_t pressure_event;
// bmp_pressure->getEvent(&pressure_event);
// value = pressure_event.pressure;
// value = value / 1.333224;
// //jsonWriteStr(configLiveJson, bmp280P_value_name, String(value));
// //eventGen2(bmp280P_value_name, "");
// // publishStatus(bmp280P_value_name, String(value));
// //SerialPrint("I", "Sensor", "'" + bmp280P_value_name + "' data: " + String(value));
//}
//
////=========================================================================================================================================
////=============================================Модуль сенсоров bme280======================================================================
////bme280T temp1 0x76 Температура#bmp280 Датчики any-data 1
//void bme280T() {
// String value_name = sCmd.next();
// String address = sCmd.next();
// String widget_name = sCmd.next();
// String page_name = sCmd.next();
// String type = sCmd.next();
// String page_number = sCmd.next();
// //bme280T_value_name = value_name;
// //createWidgetByType(widget_name, page_name, page_number, type, value_name);
// //bme.begin(hexStringToUint8(address));
// //sensors_reading_map[11] = 1;
//}
//
//void bme280T_reading() {
// float value = 0;
// value = bme.readTemperature();
// //jsonWriteStr(configLiveJson, bme280T_value_name, String(value));
// //eventGen2(bme280T_value_name, "");
// // publishStatus(bme280T_value_name, String(value));
// //SerialPrint("I", "Sensor", "'" + bme280T_value_name + "' data: " + String(value));
//}
//
////bme280P pres1 0x76 Давление#bmp280 Датчики any-data 1
//void bme280P() {
// String value_name = sCmd.next();
// String address = sCmd.next();
// String widget_name = sCmd.next();
// String page_name = sCmd.next();
// String type = sCmd.next();
// String page_number = sCmd.next();
// //bme280P_value_name = value_name;
// //createWidgetByType(widget_name, page_name, page_number, type, value_name);
// //bme.begin(hexStringToUint8(address));
// //sensors_reading_map[12] = 1;
//}
//
//void bme280P_reading() {
// float value = 0;
// value = bme.readPressure();
// value = value / 1.333224 / 100;
// //jsonWriteStr(configLiveJson, bme280P_value_name, String(value));
// //eventGen2(bme280P_value_name, "");
// // publishStatus(bme280P_value_name, String(value));
// //SerialPrint("I", "Sensor", "'" + bme280P_value_name + "' data: " + String(value));
//}
//
////bme280H hum1 0x76 Влажность#bmp280 Датчики any-data 1
//void bme280H() {
// String value_name = sCmd.next();
// String address = sCmd.next();
// String widget_name = sCmd.next();
// String page_name = sCmd.next();
// String type = sCmd.next();
// String page_number = sCmd.next();
// //bme280H_value_name = value_name;
// createWidgetByType(widget_name, page_name, page_number, type, value_name);
// bme.begin(hexStringToUint8(address));
// //sensors_reading_map[13] = 1;
//}
//
//void bme280H_reading() {
// float value = 0;
// value = bme.readHumidity();
// //jsonWriteStr(configLiveJson, bme280H_value_name, String(value));
// //eventGen2(bme280H_value_name, "");
// // publishStatus(bme280H_value_name, String(value));
// //SerialPrint("I", "Sensor", "'" + bme280H_value_name + "' data: " + String(value));
//}
//
////bme280A altit1 0x76 Высота#bmp280 Датчики any-data 1
//void bme280A() {
// String value_name = sCmd.next();
// String address = sCmd.next();
// String widget_name = sCmd.next();
// String page_name = sCmd.next();
// String type = sCmd.next();
// String page_number = sCmd.next();
// //bme280A_value_name = value_name;
// createWidgetByType(widget_name, page_name, page_number, type, value_name);
// bme.begin(hexStringToUint8(address));
// //sensors_reading_map[14] = 1;
//}
//
//void bme280A_reading() {
// float value = bme.readAltitude(1013.25);
// //jsonWriteStr(configLiveJson, bme280A_value_name, String(value, 2));
//
// //eventGen2(bme280A_value_name, "");
//
// // publishStatus(bme280A_value_name, String(value));
//
// //SerialPrint("I", "Sensor", "'" + bme280A_value_name + "' data: " + String(value));
//}

View File

@@ -52,7 +52,7 @@ void telegramMsgParse(String msg) {
}
else if (msg.indexOf("get") != -1) {
msg = deleteBeforeDelimiter(msg, "_");
myBot->sendMessage(jsonReadInt(configSetupJson, "chatId"), jsonReadStr(configLiveJson, msg));
myBot->sendMessage(jsonReadInt(configSetupJson, "chatId"), getValue(msg)); //jsonReadStr(configLiveJson , msg));
SerialPrint("<-", "Telegram", "chat ID: " + String(jsonReadInt(configSetupJson, "chatId")) + ", msg: " + String(msg));
}
else if (msg.indexOf("all") != -1) {
@@ -99,7 +99,7 @@ String returnListOfParams() {
count++;
if (count > 1) {
String id = selectFromMarkerToMarker(buf, ";", 2);
String value = jsonReadStr(configLiveJson, id);
String value = getValue(id); //jsonReadStr(configLiveJson , id);
String page = selectFromMarkerToMarker(buf, ";", 4);
page.replace("#", " ");
String name = selectFromMarkerToMarker(buf, ";", 5);

View File

@@ -1,91 +0,0 @@
#include "Global.h"
//================================================================================================================
//=========================================Таймеры=================================================================
void Timer_countdown_init() {
ts.add(
TIMER_COUNTDOWN, 1000, [&](void*) {
String old_line = jsonReadStr(configOptionJson, "timers");
if (old_line != "") {
//Serial.println(old_line);
int i = 0;
do {
String timer = selectFromMarkerToMarker(old_line, ",", i);
//Serial.print("timer no " + String(i) + ": ");
//Serial.println(timer);
if (timer == "not found" || timer == "") return;
int number = selectToMarker(timer, ":").toInt();
int time = readTimer(number);
if (time == 0) {
delTimer(String(number));
jsonWriteStr(configLiveJson, "timer" + String(number), "0");
eventGen2("timer", String(number));
} else {
time--;
addTimer(String(number), String(time));
}
i++;
} while (i <= 9);
}
},
nullptr, true);
}
void timerStart_() {
String number = sCmd.next();
String period_of_time = sCmd.next();
String type = sCmd.next();
if (period_of_time.indexOf("digit") != -1) {
//period_of_time = add_set(period_of_time);
period_of_time = jsonReadStr(configLiveJson, period_of_time);
}
if (type == "sec") period_of_time = period_of_time;
if (type == "min") period_of_time = String(period_of_time.toInt() * 60);
if (type == "hours") period_of_time = String(period_of_time.toInt() * 60 * 60);
addTimer(number, period_of_time);
jsonWriteStr(configLiveJson, "timer" + number, "1");
}
void addTimer(String number, String time) {
String tmp = jsonReadStr(configOptionJson, "timers"); //1:60,2:120,
String new_timer = number + ":" + time;
int psn1 = tmp.indexOf(number + ":"); //0 ищем позицию таймера который надо заменить
if (psn1 != -1) { //если он есть
int psn2 = tmp.indexOf(",", psn1); //4 от этой позиции находим позицию запятой
String timer = tmp.substring(psn1, psn2); //1:60 выделяем таймер который надо заменить
///tmp.replace(timer, new_timer); //заменяем таймер на новый (во всей стороке)
tmp.replace(timer + ",", "");
tmp += new_timer + ",";
} else { //если его нет
tmp += new_timer + ",";
}
jsonWriteStr(configOptionJson, "timers", tmp);
//Serial.println("ura");
}
void timerStop_() {
String number = sCmd.next();
delTimer(number);
}
void delTimer(String number) {
String tmp = jsonReadStr(configOptionJson, "timers"); //1:60,2:120,
int psn1 = tmp.indexOf(number + ":"); //0 ищем позицию таймера который надо удалить
if (psn1 != -1) { //если он есть
int psn2 = tmp.indexOf(",", psn1); //4 от этой позиции находим позицию запятой
String timer = tmp.substring(psn1, psn2) + ","; //1:60, выделяем таймер который надо удалить
tmp.replace(timer, ""); //удаляем таймер
jsonWriteStr(configOptionJson, "timers", tmp);
}
}
int readTimer(int number) {
String tmp = jsonReadStr(configOptionJson, "timers"); //1:60,2:120,
int psn1 = tmp.indexOf(String(number) + ":"); //0 ищем позицию таймера который надо прочитать
String timer;
if (psn1 != -1) { //если он есть
int psn2 = tmp.indexOf(",", psn1); //4 от этой позиции находим позицию запятой
timer = tmp.substring(psn1, psn2); //1:60 выделяем таймер который надо прочитать
timer = deleteBeforeDelimiter(timer, ":");
}
return timer.toInt();
}

View File

@@ -62,7 +62,7 @@ void countDown() {
void countDownExecute() {
String key = sCmd.order();
String countDownPeriod = sCmd.next();
int number = getKeyNum(key, countDown_KeyList);
if (myCountDown != nullptr) {

View File

@@ -20,7 +20,7 @@ void LoggingClass::loop() {
difference = currentMillis - prevMillis;
if (difference >= _period) {
prevMillis = millis();
addNewDelOldData("logs/" + _key + ".txt", _maxPoints, jsonReadStr(configLiveJson, _loggingValueKey));
addNewDelOldData("logs/" + _key + ".txt", _maxPoints, getValue(_loggingValueKey)); //jsonReadStr(configLiveJson , _loggingValueKey));
}
}

View File

@@ -98,7 +98,7 @@ void setup() {
//esp_log_level_set("esp_littlefs", ESP_LOG_NONE);
ts.add(
TEST, 1000 * 60, [&](void*) {
SYGNAL, 1000 * 60, [&](void*) {
SerialPrint("I", "System", printMemoryStatus());
switch (RSSIquality()) {
case 0:
@@ -126,6 +126,8 @@ void setup() {
},
nullptr, true);
just_load = false;
initialized = true;
}