diff --git a/include/Class/ScenarioClass3.h b/include/Class/ScenarioClass3.h index f49dcea4..70782092 100644 --- a/include/Class/ScenarioClass3.h +++ b/include/Class/ScenarioClass3.h @@ -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; diff --git a/include/Consts.h b/include/Consts.h index 6fed021f..5a99eae0 100644 --- a/include/Consts.h +++ b/include/Consts.h @@ -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, diff --git a/include/Global.h b/include/Global.h index 86bc8f3a..6fd81b67 100644 --- a/include/Global.h +++ b/include/Global.h @@ -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; diff --git a/src/BufferExecute.cpp b/src/BufferExecute.cpp index 7b3d20b0..5a36c915 100644 --- a/src/BufferExecute.cpp +++ b/src/BufferExecute.cpp @@ -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"; + } +} diff --git a/src/Global.cpp b/src/Global.cpp index b7df47ec..5b5318f3 100644 --- a/src/Global.cpp +++ b/src/Global.cpp @@ -5,7 +5,7 @@ AsyncWebSocket ws; //AsyncEventSource events; #endif -TickerScheduler ts(TEST + 1); +TickerScheduler ts(SYGNAL + 1); WiFiClient espClient; PubSubClient mqtt(espClient); StringCommand sCmd; diff --git a/src/Init.cpp b/src/Init.cpp index 9e57f92a..afd5af33 100644 --- a/src/Init.cpp +++ b/src/Init.cpp @@ -33,7 +33,6 @@ void loadConfig() { void all_init() { Device_init(); loadScenario(); - Timer_countdown_init(); } void Device_init() { diff --git a/src/ItemsCmd.cpp b/src/ItemsCmd.cpp deleted file mode 100644 index cbac328a..00000000 --- a/src/ItemsCmd.cpp +++ /dev/null @@ -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"); -//} diff --git a/src/MqttDiscovery.cpp b/src/MqttDiscovery.cpp deleted file mode 100644 index 7ccd0bc1..00000000 --- a/src/MqttDiscovery.cpp +++ /dev/null @@ -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 diff --git a/src/PushingBox.cpp b/src/PushingBox.cpp deleted file mode 100644 index 5c2f91e4..00000000 --- a/src/PushingBox.cpp +++ /dev/null @@ -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"); -} diff --git a/src/Sensors.cpp b/src/Sensors.cpp deleted file mode 100644 index 4b657757..00000000 --- a/src/Sensors.cpp +++ /dev/null @@ -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)); -//} diff --git a/src/Telegram.cpp b/src/Telegram.cpp index a26ca23e..bd478505 100644 --- a/src/Telegram.cpp +++ b/src/Telegram.cpp @@ -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); diff --git a/src/Timers.cpp b/src/Timers.cpp deleted file mode 100644 index b45ab7b6..00000000 --- a/src/Timers.cpp +++ /dev/null @@ -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(); -} \ No newline at end of file diff --git a/src/items/vCountDown.cpp b/src/items/vCountDown.cpp index 118f7b3a..58effe32 100644 --- a/src/items/vCountDown.cpp +++ b/src/items/vCountDown.cpp @@ -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) { diff --git a/src/items/vLogging.cpp b/src/items/vLogging.cpp index 95d1bef5..f7d2db7c 100644 --- a/src/items/vLogging.cpp +++ b/src/items/vLogging.cpp @@ -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)); } } diff --git a/src/main.cpp b/src/main.cpp index 4337dc23..6acb6bba 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -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; }