From eea82a7edbf90f8632dc42e9143e1a921c55da36 Mon Sep 17 00:00:00 2001 From: Dmitry Borisenko <49808844+DmitryBorisenko33@users.noreply.github.com> Date: Thu, 3 Sep 2020 23:29:34 +0300 Subject: [PATCH] Var changes --- data/config.json | 4 +- data/items/dallas-tmp.txt | 1 + data/items/ultrasonic-cm.txt | 1 + data/set.device.json | 4 +- include/Consts.h | 2 + include/Global.h | 82 ++----------- include/SSDP.h | 5 +- include/items/ButtonOutClass.h | 22 ++-- include/items/SensorDallasClass.h | 46 ++++++++ include/items/SensorUltrasonicClass.h | 18 ++- include/items/itemsGlobal.h | 5 +- src/Cmd.cpp | 4 +- src/Global.cpp | 52 +-------- src/Init.cpp | 36 +++--- src/SSDP.cpp | 4 +- src/Sensors.cpp | 160 ++++++++++---------------- src/items/ButtonInClass.cpp | 2 +- src/items/ButtonOutClass.cpp | 16 +-- src/items/InputDigitClass.cpp | 2 +- src/items/InputTimeClass.cpp | 2 +- src/items/OutputTextClass.cpp | 2 +- src/items/PwmOutClass.cpp | 2 +- src/items/SensorAnalogClass.cpp | 2 +- src/items/SensorDallasClass.cpp | 20 ++++ src/items/SensorUltrasonicClass.cpp | 91 +-------------- src/main.cpp | 6 +- 26 files changed, 217 insertions(+), 374 deletions(-) create mode 100644 data/items/dallas-tmp.txt create mode 100644 data/items/ultrasonic-cm.txt create mode 100644 include/items/SensorDallasClass.h create mode 100644 src/items/SensorDallasClass.cpp diff --git a/data/config.json b/data/config.json index 34c25c56..7aa21254 100644 --- a/data/config.json +++ b/data/config.json @@ -3,8 +3,8 @@ "chipID": "", "apssid": "IoTmanager", "appass": "", - "routerssid": "rise", - "routerpass": "hostel3333", + "routerssid": "VOLODYA", + "routerpass": "BELCHENKO", "timezone": 2, "ntp": "pool.ntp.org", "mqttServer": "91.204.228.124", diff --git a/data/items/dallas-tmp.txt b/data/items/dallas-tmp.txt new file mode 100644 index 00000000..a710b34d --- /dev/null +++ b/data/items/dallas-tmp.txt @@ -0,0 +1 @@ +dallas-temp;id;anydata;Сенсоры;Температура;order;pin;c[1] \ No newline at end of file diff --git a/data/items/ultrasonic-cm.txt b/data/items/ultrasonic-cm.txt new file mode 100644 index 00000000..c666305f --- /dev/null +++ b/data/items/ultrasonic-cm.txt @@ -0,0 +1 @@ +ultrasonic-cm;id;anydata;Сенсоры;Расстояние;order;pin[12,13];map[1,100,1,100];c[1] \ No newline at end of file diff --git a/data/set.device.json b/data/set.device.json index c8ad7722..42a32fb7 100644 --- a/data/set.device.json +++ b/data/set.device.json @@ -62,7 +62,9 @@ "/set?addItem=input-digit": "5.Окно ввода цифровых значений", "/set?addItem=input-time": "6.Окно ввода времени", "/set?addItem=output-text": "7.Окно вывода любого текста, предупреждения, цифры", - "/set?addItem=analog-adc": "8.Аналоговый сенсор" + "/set?addItem=analog-adc": "8.Аналоговый датчик, чтение аналогового входа", + "/set?addItem=dallas-tmp": "9.Датчик температуры (ds18b20)", + "/set?addItem=ultrasonic-cm": "10.Ультрозвуковой датчик расстояния (JSN-SR04T, HC-SR04, HY-SRF05)" } }, { diff --git a/include/Consts.h b/include/Consts.h index cf398039..5c2b9da0 100644 --- a/include/Consts.h +++ b/include/Consts.h @@ -7,6 +7,7 @@ #define LED_PIN 2 #define FLASH_4MB true + #define MQTT_RECONNECT_INTERVAL 20000 #define TELEMETRY_UPDATE_INTERVAL 7200000 @@ -29,6 +30,7 @@ //#define WEBSOCKET_ENABLED //#define LAYOUT_IN_RAM //#define UDP_ENABLED +//#define SSDP /* * Sensor diff --git a/include/Global.h b/include/Global.h index 4911fdb2..f9c829b2 100644 --- a/include/Global.h +++ b/include/Global.h @@ -1,14 +1,11 @@ #pragma once - -/* -* Libraries -*/ +//===================Libraries=================================================================================================================================================== #include #include #include "ESP32.h" #include "ESP8266.h" -// + #include "Consts.h" #include "Errors.h" #include "GyverFilters.h" @@ -23,8 +20,6 @@ #include "Utils\PrintMessage.h" #include "Utils\WiFiUtils.h" -//=========ПОДКЛЮЧЕНИЕ ОБЩИХ БИБЛИОТЕК=============== - #include #include #include @@ -45,31 +40,18 @@ extern AsyncWebSocket ws; #endif extern Clock* timeNow; - extern TickerScheduler ts; - - - extern WiFiClient espClient; - extern PubSubClient mqtt; - extern StringCommand sCmd; - extern AsyncWebServer server; - extern DallasTemperature sensors; - extern OneWire *oneWire; - extern boolean but[NUM_BUTTONS]; - extern Bounce* buttons; -/* -* Global vars -*/ +//Global vars extern boolean just_load; // Json @@ -80,82 +62,34 @@ extern String configOptionJson; //для трансфера // Mqtt extern String chipId; extern String prex; - extern String all_widgets; - extern String scenario; //orders and events extern String orderBuf; extern String eventBuf; - extern String itemsFile; extern String itemsLine; // Sensors extern String sensorReadingMap; - - - - -extern String analog_value_names_list; -extern int enter_to_analog_counter; - -extern String dallas_value_name; -extern int enter_to_dallas_counter; - -extern String levelPr_value_name; -extern String ultrasonicCm_value_name; - -extern String dhtT_value_name; -extern String dhtH_value_name; - -extern String bmp280T_value_name; -extern String bmp280P_value_name; - -extern String bme280T_value_name; -extern String bme280P_value_name; -extern String bme280H_value_name; -extern String bme280A_value_name; +extern int8_t dallasEnterCounter; extern String logging_value_names_list; extern int enter_to_logging_counter; - extern int scenario_line_status[40]; - extern String lastVersion; -extern boolean checkUpdatesFlag; -extern boolean updateFlag; -extern boolean mqttParamsChanged; -extern boolean udp_data_parse; -extern boolean mqtt_send_settings_to_udp; -extern boolean delElementFlag; -extern boolean getJsonListFromCsvFlag; -extern String csvFile; -extern int colum; - -/* -* Запрос на скарнирование шины -*/ +//Запрос на скарнирование шины extern boolean busScanFlag; -/* -* Запрос на сканирование шины, указание какую -*/ -extern BusScanner_t busToScan; +//Запрос на сканирование шины, указание какую +extern BusScanner_t busToScan; extern boolean fsCheckFlag; -extern int sensors_reading_map[15]; - -/* -* Global functions -*/ - - - +//Global functions // Logging extern void logging(); extern void deleteOldDate(String filename, size_t max_lines, String date_to_add); diff --git a/include/SSDP.h b/include/SSDP.h index 12b6f6e1..110b765b 100644 --- a/include/SSDP.h +++ b/include/SSDP.h @@ -1,6 +1,7 @@ #pragma once +#ifdef SSDP #include - extern void SsdpInit(); extern String xmlNode(String tags, String data); -extern String decToHex(uint32_t decValue, byte desiredStringLength); \ No newline at end of file +extern String decToHex(uint32_t decValue, byte desiredStringLength); +#endif \ No newline at end of file diff --git a/include/items/ButtonOutClass.h b/include/items/ButtonOutClass.h index 042a849f..4a891573 100644 --- a/include/items/ButtonOutClass.h +++ b/include/items/ButtonOutClass.h @@ -1,5 +1,6 @@ #pragma once #include + #include "Class/LineParsing.h" #include "Global.h" @@ -7,28 +8,25 @@ class ButtonOutClass : public LineParsing { public: ButtonOutClass() : LineParsing(){}; - void pinModeSet() { + void init() { if (_pin != "") { pinMode(_pin.toInt(), OUTPUT); } + jsonWriteStr(configOptionJson, _key + "_pin", _pin); + jsonWriteStr(configOptionJson, _key + "_inv", _inv); } void pinStateSetDefault() { - if (_inv == "" && _state != "") { - pinChange(_key, _pin, _state, true); - } + pinChange(_key, _state); } - void pinStateSetInvDefault() { - if (_inv != "" && _state != "") { - pinChange(_key, _pin, _state, false); - } - } - void pinChange(String key, String pin, String state, bool rev) { + void pinChange(String key, String state) { + String pin = jsonReadStr(configOptionJson, key + "_pin"); + String inv = jsonReadStr(configOptionJson, key + "_inv"); int pinInt = pin.toInt(); - int stateInt; - if (rev) { + + if (inv == "") { digitalWrite(pinInt, state.toInt()); } else { digitalWrite(pinInt, !state.toInt()); diff --git a/include/items/SensorDallasClass.h b/include/items/SensorDallasClass.h new file mode 100644 index 00000000..b9f537f4 --- /dev/null +++ b/include/items/SensorDallasClass.h @@ -0,0 +1,46 @@ +#pragma once +#include + +#include "Class/LineParsing.h" +#include "Global.h" +#include "items/SensorConvertingClass.h" + +class SensorDallasClass : public SensorConvertingClass { + public: + SensorDallasClass() : SensorConvertingClass(){}; + + void SensorDallasInit() { + oneWire = new OneWire((uint8_t)_pin.toInt()); + sensors.setOneWire(oneWire); + sensors.begin(); + sensors.setResolution(48); + + sensorReadingMap += _key + ","; + dallasEnterCounter++; + + jsonWriteInt(configOptionJson, _key + "_num", dallasEnterCounter); + jsonWriteStr(configOptionJson, _key + "_map", _map); + jsonWriteStr(configOptionJson, _key + "_с", _c); + } + + void SensorDallasRead(String key) { + float value; + byte num = sensors.getDS18Count(); + sensors.requestTemperatures(); + + int cnt = jsonReadInt(configOptionJson, key + "_num"); + + for (byte i = 0; i < num; i++) { + if (i == cnt) { + value = sensors.getTempCByIndex(i); + //value = this->mapping(key, value); + float valueFl = this->correction(key, value); + eventGen(key, ""); + jsonWriteStr(configLiveJson, key, String(valueFl)); + MqttClient::publishStatus(key, String(valueFl)); + Serial.println("[I] sensor '" + key + "' data: " + String(valueFl)); + } + } + } +}; +extern SensorDallasClass mySensorDallas; \ No newline at end of file diff --git a/include/items/SensorUltrasonicClass.h b/include/items/SensorUltrasonicClass.h index 130f9068..bd49cc44 100644 --- a/include/items/SensorUltrasonicClass.h +++ b/include/items/SensorUltrasonicClass.h @@ -2,16 +2,25 @@ #include #include "Class/LineParsing.h" -#include "items/SensorConvertingClass.h" #include "Global.h" +#include "items/SensorConvertingClass.h" class SensorUltrasonic : public SensorConvertingClass { public: SensorUltrasonic() : SensorConvertingClass(){}; + void init() { + sensorReadingMap += _key + ","; + String trig = selectFromMarkerToMarker(_pin, ",", 0); + String echo = selectFromMarkerToMarker(_pin, ",", 1); + jsonWriteStr(configOptionJson, _key + "_trig", trig); + jsonWriteStr(configOptionJson, _key + "_echo", echo); + jsonWriteStr(configOptionJson, _key + "_map", _map); + jsonWriteStr(configOptionJson, _key + "_с", _c); + } - int SensorUltrasonicRead(String key, String pin) { - int trig = selectFromMarkerToMarker(pin, ",", 0).toInt(); - int echo = selectFromMarkerToMarker(pin, ",", 1).toInt(); + void SensorUltrasonicRead(String key) { + int trig = jsonReadStr(configOptionJson, key + "_trig").toInt(); + int echo = jsonReadStr(configOptionJson, key + "_echo").toInt(); int value; digitalWrite(trig, LOW); @@ -28,7 +37,6 @@ class SensorUltrasonic : public SensorConvertingClass { jsonWriteStr(configLiveJson, key, String(valueFl)); MqttClient::publishStatus(key, String(valueFl)); Serial.println("[I] sensor '" + key + "' data: " + String(valueFl)); - return value; } }; extern SensorUltrasonic mySensorUltrasonic; \ No newline at end of file diff --git a/include/items/itemsGlobal.h b/include/items/itemsGlobal.h index 20813b56..3fedfc5d 100644 --- a/include/items/itemsGlobal.h +++ b/include/items/itemsGlobal.h @@ -22,4 +22,7 @@ extern void analogAdc(); extern void analogReading(); extern void ultrasonicCm(); -extern void ultrasonicReading(); \ No newline at end of file +extern void ultrasonicReading(); + +extern void dallasTemp(); +extern void dallasReading(); \ No newline at end of file diff --git a/src/Cmd.cpp b/src/Cmd.cpp index eeea2695..7e5b5912 100644 --- a/src/Cmd.cpp +++ b/src/Cmd.cpp @@ -1,5 +1,5 @@ #include "Cmd.h" -#include "items/itemsGlobal.h" +#include "items/ItemsGlobal.h" #include "Class/NotAsinc.h" #include "Global.h" #include "Module/Terminal.h" @@ -31,7 +31,7 @@ void cmd_init() { sCmd.addCommand("analog-adc", analogAdc); sCmd.addCommand("ultrasonicCm", ultrasonicCm); - + sCmd.addCommand("dallas-temp", dallasTemp); diff --git a/src/Global.cpp b/src/Global.cpp index 5298c961..045114f1 100644 --- a/src/Global.cpp +++ b/src/Global.cpp @@ -4,21 +4,13 @@ AsyncWebSocket ws; //AsyncEventSource events; #endif - Clock* timeNow; - TickerScheduler ts(TEST + 1); - WiFiClient espClient; - PubSubClient mqtt(espClient); - StringCommand sCmd; - AsyncWebServer server(80); - OneWire *oneWire; - DallasTemperature sensors; /* @@ -35,9 +27,7 @@ String configOptionJson = "{}"; // Mqtt String chipId = ""; String prex = ""; - String all_widgets = ""; - String scenario = ""; //orders and events @@ -48,57 +38,19 @@ String itemsFile = ""; String itemsLine = ""; // Sensors +int8_t dallasEnterCounter = -1; String sensorReadingMap; - - - - - -String analog_value_names_list; -int enter_to_analog_counter; - -String dallas_value_name; -int enter_to_dallas_counter; - -String levelPr_value_name; -String ultrasonicCm_value_name; - -String dhtT_value_name; -String dhtH_value_name; - -String bmp280T_value_name; -String bmp280P_value_name; - -String bme280T_value_name; -String bme280P_value_name; -String bme280H_value_name; -String bme280A_value_name; - -int sensors_reading_map[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - // Logging String logging_value_names_list; int enter_to_logging_counter; // Scenario int scenario_line_status[] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; - String lastVersion = ""; - -// Async actions -boolean checkUpdatesFlag = false; -boolean updateFlag = false; - -boolean mqttParamsChanged = false; -boolean udp_data_parse = false; -boolean mqtt_send_settings_to_udp = false; - BusScanner_t busToScan; + boolean busScanFlag = false; boolean fsCheckFlag = false; boolean delElementFlag = false; -boolean getJsonListFromCsvFlag = false; -String csvFile = ""; -int colum; \ No newline at end of file diff --git a/src/Init.cpp b/src/Init.cpp index bbaa6f60..f2f54098 100644 --- a/src/Init.cpp +++ b/src/Init.cpp @@ -37,25 +37,25 @@ void Device_init() { enter_to_logging_counter = LOG1 - 1; - analog_value_names_list = ""; - enter_to_analog_counter = 0; - dallas_value_name = ""; - enter_to_dallas_counter = 0; - levelPr_value_name = ""; - ultrasonicCm_value_name = ""; - dhtT_value_name = ""; - dhtH_value_name = ""; - bmp280T_value_name = ""; - bmp280P_value_name = ""; - bme280T_value_name = ""; - bme280P_value_name = ""; - bme280H_value_name = ""; - bme280A_value_name = ""; + //analog_value_names_list = ""; + //enter_to_analog_counter = 0; + //dallas_value_name = ""; + //enter_to_dallas_counter = 0; + //levelPr_value_name = ""; + //ultrasonicCm_value_name = ""; + //dhtT_value_name = ""; + //dhtH_value_name = ""; + //bmp280T_value_name = ""; + //bmp280P_value_name = ""; + //bme280T_value_name = ""; + //bme280P_value_name = ""; + //bme280H_value_name = ""; + //bme280A_value_name = ""; - int array_sz = sizeof(sensors_reading_map) / sizeof(sensors_reading_map[0]); - for (int i = 0; i < array_sz; i++) { - sensors_reading_map[i] = 0; - } + //int array_sz = sizeof(sensors_reading_map) / sizeof(sensors_reading_map[0]); + //for (int i = 0; i < array_sz; i++) { + // sensors_reading_map[i] = 0; + //} for (int i = LOG1; i <= LOG5; i++) { ts.remove(i); diff --git a/src/SSDP.cpp b/src/SSDP.cpp index 0b044e4b..3f0d4544 100644 --- a/src/SSDP.cpp +++ b/src/SSDP.cpp @@ -1,3 +1,4 @@ +#ifdef SSDP #ifdef ESP8266 #include #endif @@ -52,4 +53,5 @@ String decToHex(uint32_t decValue, byte desiredStringLength) { String hexString = String(decValue, HEX); while (hexString.length() < desiredStringLength) hexString = "0" + hexString; return hexString; -} \ No newline at end of file +} +#endif \ No newline at end of file diff --git a/src/Sensors.cpp b/src/Sensors.cpp index 9b0c5adb..ae6da4c0 100644 --- a/src/Sensors.cpp +++ b/src/Sensors.cpp @@ -33,46 +33,6 @@ void sensorsInit() { - -//========================================================================================================================================= -//=========================================Модуль температурного сенсора ds18b20=========================================================== -#ifdef DALLAS_ENABLED -//dallas temp1 2 1 Температура Датчики anydata 1 -//dallas temp2 2 2 Температура Датчики anydata 2 -void dallas() { - String value_name = sCmd.next(); - String pin = sCmd.next(); - String address = sCmd.next(); - jsonWriteStr(configOptionJson, value_name + "_ds", address); - String widget_name = sCmd.next(); - String page_name = sCmd.next(); - String type = sCmd.next(); - String page_number = sCmd.next(); - oneWire = new OneWire((uint8_t)pin.toInt()); - sensors.setOneWire(oneWire); - sensors.begin(); - sensors.setResolution(12); - dallas_value_name += value_name + ";"; - createWidgetByType(widget_name, page_name, page_number, type, value_name); - sensors_reading_map[3] = 1; -} - -void dallas_reading() { - float temp = 0; - byte num = sensors.getDS18Count(); - String dallas_value_name_tmp_buf = dallas_value_name; - sensors.requestTemperatures(); - for (byte i = 0; i < num; i++) { - temp = sensors.getTempCByIndex(i); - String buf = selectToMarker(dallas_value_name_tmp_buf, ";"); - dallas_value_name_tmp_buf = deleteBeforeDelimiter(dallas_value_name_tmp_buf, ";"); - jsonWriteStr(configLiveJson, buf, String(temp)); - eventGen(buf, ""); - MqttClient::publishStatus(buf, String(temp)); - Serial.println("[I] sensor '" + buf + "' send date " + String(temp)); - } -} -#endif //========================================================================================================================================= //=========================================Модуль сенсоров DHT============================================================================= #ifdef DHT_ENABLED @@ -85,7 +45,7 @@ void dhtT() { String page_name = sCmd.next(); String type = sCmd.next(); String page_number = sCmd.next(); - dhtT_value_name = value_name; + //dhtT_value_name = value_name; if (sensor_type == "dht11") { dht.setup(pin.toInt(), DHTesp::DHT11); } @@ -93,23 +53,23 @@ void dhtT() { dht.setup(pin.toInt(), DHTesp::DHT22); } createWidgetByType(widget_name, page_name, page_number, type, value_name); - sensors_reading_map[4] = 1; + //sensors_reading_map[4] = 1; } void dhtT_reading() { float value = 0; static int counter; if (dht.getStatus() != 0 && counter < 5) { - MqttClient::publishStatus(dhtT_value_name, String(dht.getStatusString())); + //MqttClient::publishStatus(dhtT_value_name, String(dht.getStatusString())); counter++; } else { counter = 0; value = dht.getTemperature(); if (String(value) != "nan") { - eventGen(dhtT_value_name, ""); - jsonWriteStr(configLiveJson, dhtT_value_name, String(value)); - MqttClient::publishStatus(dhtT_value_name, String(value)); - Serial.println("[I] sensor '" + dhtT_value_name + "' data: " + String(value)); + //eventGen(dhtT_value_name, ""); + //jsonWriteStr(configLiveJson, dhtT_value_name, String(value)); + //MqttClient::publishStatus(dhtT_value_name, String(value)); + //Serial.println("[I] sensor '" + dhtT_value_name + "' data: " + String(value)); } } } @@ -123,7 +83,7 @@ void dhtH() { String page_name = sCmd.next(); String type = sCmd.next(); String page_number = sCmd.next(); - dhtH_value_name = value_name; + //dhtH_value_name = value_name; if (sensor_type == "dht11") { dht.setup(pin.toInt(), DHTesp::DHT11); } @@ -131,23 +91,23 @@ void dhtH() { dht.setup(pin.toInt(), DHTesp::DHT22); } createWidgetByType(widget_name, page_name, page_number, type, value_name); - sensors_reading_map[5] = 1; + //sensors_reading_map[5] = 1; } void dhtH_reading() { float value = 0; static int counter; if (dht.getStatus() != 0 && counter < 5) { - MqttClient::publishStatus(dhtH_value_name, String(dht.getStatusString())); + //MqttClient::publishStatus(dhtH_value_name, String(dht.getStatusString())); counter++; } else { counter = 0; value = dht.getHumidity(); if (String(value) != "nan") { - eventGen(dhtH_value_name, ""); - jsonWriteStr(configLiveJson, dhtH_value_name, String(value)); - MqttClient::publishStatus(dhtH_value_name, String(value)); - Serial.println("[I] sensor '" + dhtH_value_name + "' data: " + String(value)); + //eventGen(dhtH_value_name, ""); + //jsonWriteStr(configLiveJson, dhtH_value_name, String(value)); + //MqttClient::publishStatus(dhtH_value_name, String(value)); + //Serial.println("[I] sensor '" + dhtH_value_name + "' data: " + String(value)); } } } @@ -158,7 +118,7 @@ void dhtP() { 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; + //sensors_reading_map[6] = 1; } void dhtP_reading() { @@ -166,7 +126,7 @@ void dhtP_reading() { if (dht.getStatus() != 0) { MqttClient::publishStatus("dhtPerception", String(dht.getStatusString())); } else { - value = dht.computePerception(jsonReadStr(configLiveJson, dhtT_value_name).toFloat(), jsonReadStr(configLiveJson, dhtH_value_name).toFloat(), false); + //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); eventGen("dhtPerception", ""); @@ -183,7 +143,7 @@ void dhtC() { String page_name = sCmd.next(); String page_number = sCmd.next(); createWidgetByType(widget_name, page_name, page_number, "anydata", "dhtComfort"); - sensors_reading_map[7] = 1; + //sensors_reading_map[7] = 1; } void dhtC_reading() { @@ -191,7 +151,7 @@ void dhtC_reading() { if (dht.getStatus() != 0) { MqttClient::publishStatus("dhtComfort", String(dht.getStatusString())); } else { - dht.getComfortRatio(cf, jsonReadStr(configLiveJson, dhtT_value_name).toFloat(), jsonReadStr(configLiveJson, dhtH_value_name).toFloat(), false); + //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); eventGen("dhtComfort", ""); @@ -276,7 +236,7 @@ void dhtD() { String page_name = sCmd.next(); String page_number = sCmd.next(); createWidgetByType(widget_name, page_name, page_number, "anydata", "dhtDewpoint"); - sensors_reading_map[8] = 1; + //sensors_reading_map[8] = 1; } void dhtD_reading() { @@ -284,7 +244,7 @@ void dhtD_reading() { if (dht.getStatus() != 0) { MqttClient::publishStatus("dhtDewpoint", String(dht.getStatusString())); } else { - value = dht.computeDewPoint(jsonReadStr(configLiveJson, dhtT_value_name).toFloat(), jsonReadStr(configLiveJson, dhtH_value_name).toFloat(), false); + //value = dht.computeDewPoint(jsonReadStr(configLiveJson, dhtT_value_name).toFloat(), jsonReadStr(configLiveJson, dhtH_value_name).toFloat(), false); jsonWriteInt(configLiveJson, "dhtDewpoint", value); eventGen("dhtDewpoint", ""); MqttClient::publishStatus("dhtDewpoint", String(value)); @@ -304,7 +264,7 @@ void bmp280T() { String page_name = sCmd.next(); String type = sCmd.next(); String page_number = sCmd.next(); - bmp280T_value_name = value_name; + //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. */ @@ -313,7 +273,7 @@ void bmp280T() { Adafruit_BMP280::FILTER_X16, /* Filtering. */ Adafruit_BMP280::STANDBY_MS_500); /* Standby time. */ //bmp_temp->printSensorDetails(); - sensors_reading_map[9] = 1; + //sensors_reading_map[9] = 1; } void bmp280T_reading() { @@ -321,10 +281,10 @@ void bmp280T_reading() { sensors_event_t temp_event; bmp_temp->getEvent(&temp_event); value = temp_event.temperature; - jsonWriteStr(configLiveJson, bmp280T_value_name, String(value)); - eventGen(bmp280T_value_name, ""); - MqttClient::publishStatus(bmp280T_value_name, String(value)); - Serial.println("[I] sensor '" + bmp280T_value_name + "' data: " + String(value)); + //jsonWriteStr(configLiveJson, bmp280T_value_name, String(value)); + //eventGen(bmp280T_value_name, ""); + //MqttClient::publishStatus(bmp280T_value_name, String(value)); + //Serial.println("[I] sensor '" + bmp280T_value_name + "' data: " + String(value)); } //bmp280P press1 0x76 Давление#bmp280 Датчики any-data 2 @@ -335,7 +295,7 @@ void bmp280P() { String page_name = sCmd.next(); String type = sCmd.next(); String page_number = sCmd.next(); - bmp280P_value_name = value_name; + //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. */ @@ -344,7 +304,7 @@ void bmp280P() { Adafruit_BMP280::FILTER_X16, /* Filtering. */ Adafruit_BMP280::STANDBY_MS_500); /* Standby time. */ //bmp_temp->printSensorDetails(); - sensors_reading_map[10] = 1; + //sensors_reading_map[10] = 1; } void bmp280P_reading() { @@ -353,10 +313,10 @@ void bmp280P_reading() { bmp_pressure->getEvent(&pressure_event); value = pressure_event.pressure; value = value / 1.333224; - jsonWriteStr(configLiveJson, bmp280P_value_name, String(value)); - eventGen(bmp280P_value_name, ""); - MqttClient::publishStatus(bmp280P_value_name, String(value)); - Serial.println("[I] sensor '" + bmp280P_value_name + "' data: " + String(value)); + //jsonWriteStr(configLiveJson, bmp280P_value_name, String(value)); + //eventGen(bmp280P_value_name, ""); + //MqttClient::publishStatus(bmp280P_value_name, String(value)); + //Serial.println("[I] sensor '" + bmp280P_value_name + "' data: " + String(value)); } //========================================================================================================================================= @@ -369,19 +329,19 @@ void bme280T() { 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; + //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)); - eventGen(bme280T_value_name, ""); - MqttClient::publishStatus(bme280T_value_name, String(value)); - Serial.println("[I] sensor '" + bme280T_value_name + "' data: " + String(value)); + //jsonWriteStr(configLiveJson, bme280T_value_name, String(value)); + //eventGen(bme280T_value_name, ""); + //MqttClient::publishStatus(bme280T_value_name, String(value)); + //Serial.println("[I] sensor '" + bme280T_value_name + "' data: " + String(value)); } //bme280P pres1 0x76 Давление#bmp280 Датчики any-data 1 @@ -392,20 +352,20 @@ void bme280P() { 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; + //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)); - eventGen(bme280P_value_name, ""); - MqttClient::publishStatus(bme280P_value_name, String(value)); - Serial.println("[I] sensor '" + bme280P_value_name + "' data: " + String(value)); + //jsonWriteStr(configLiveJson, bme280P_value_name, String(value)); + //eventGen(bme280P_value_name, ""); + //MqttClient::publishStatus(bme280P_value_name, String(value)); + //Serial.println("[I] sensor '" + bme280P_value_name + "' data: " + String(value)); } //bme280H hum1 0x76 Влажность#bmp280 Датчики any-data 1 @@ -416,19 +376,19 @@ void bme280H() { String page_name = sCmd.next(); String type = sCmd.next(); String page_number = sCmd.next(); - bme280H_value_name = value_name; + //bme280H_value_name = value_name; createWidgetByType(widget_name, page_name, page_number, type, value_name); bme.begin(hexStringToUint8(address)); - sensors_reading_map[13] = 1; + //sensors_reading_map[13] = 1; } void bme280H_reading() { float value = 0; value = bme.readHumidity(); - jsonWriteStr(configLiveJson, bme280H_value_name, String(value)); - eventGen(bme280H_value_name, ""); - MqttClient::publishStatus(bme280H_value_name, String(value)); - Serial.println("[I] sensor '" + bme280H_value_name + "' data: " + String(value)); + //jsonWriteStr(configLiveJson, bme280H_value_name, String(value)); + //eventGen(bme280H_value_name, ""); + //MqttClient::publishStatus(bme280H_value_name, String(value)); + //Serial.println("[I] sensor '" + bme280H_value_name + "' data: " + String(value)); } //bme280A altit1 0x76 Высота#bmp280 Датчики any-data 1 @@ -439,19 +399,19 @@ void bme280A() { String page_name = sCmd.next(); String type = sCmd.next(); String page_number = sCmd.next(); - bme280A_value_name = value_name; + //bme280A_value_name = value_name; createWidgetByType(widget_name, page_name, page_number, type, value_name); bme.begin(hexStringToUint8(address)); - sensors_reading_map[14] = 1; + //sensors_reading_map[14] = 1; } void bme280A_reading() { float value = bme.readAltitude(1013.25); - jsonWriteStr(configLiveJson, bme280A_value_name, String(value, 2)); + //jsonWriteStr(configLiveJson, bme280A_value_name, String(value, 2)); - eventGen(bme280A_value_name, ""); + //eventGen(bme280A_value_name, ""); - MqttClient::publishStatus(bme280A_value_name, String(value)); + //MqttClient::publishStatus(bme280A_value_name, String(value)); - Serial.println("[I] sensor '" + bme280A_value_name + "' data: " + String(value)); + //Serial.println("[I] sensor '" + bme280A_value_name + "' data: " + String(value)); } diff --git a/src/items/ButtonInClass.cpp b/src/items/ButtonInClass.cpp index 5528c607..d8b7270e 100644 --- a/src/items/ButtonInClass.cpp +++ b/src/items/ButtonInClass.cpp @@ -1,4 +1,4 @@ -#include "items/itemsGlobal.h" +#include "items/ItemsGlobal.h" #include "items/ButtonInClass.h" //==========================================Модуль физических кнопок======================================== //button-in switch1 toggle Кнопки Свет 1 pin[2] db[20] diff --git a/src/items/ButtonOutClass.cpp b/src/items/ButtonOutClass.cpp index 84add954..e78f86ab 100644 --- a/src/items/ButtonOutClass.cpp +++ b/src/items/ButtonOutClass.cpp @@ -1,5 +1,6 @@ -#include "items/itemsGlobal.h" #include "items/ButtonOutClass.h" + +#include "items/ItemsGlobal.h" //==========================================Модуль кнопок=================================================== //button-out light toggle Кнопки Свет 1 pin[12] inv[1] st[1] //========================================================================================================== @@ -10,22 +11,13 @@ void buttonOut() { String pin = myButtonOut.gpin(); String inv = myButtonOut.ginv(); sCmd.addCommand(key.c_str(), buttonOutSet); - jsonWriteStr(configOptionJson, key + "_pin", pin); - jsonWriteStr(configOptionJson, key + "_inv", inv); - myButtonOut.pinModeSet(); + myButtonOut.init(); myButtonOut.pinStateSetDefault(); - myButtonOut.pinStateSetInvDefault(); myButtonOut.clear(); } void buttonOutSet() { String key = sCmd.order(); String state = sCmd.next(); - String pin = jsonReadStr(configOptionJson, key + "_pin"); - String inv = jsonReadStr(configOptionJson, key + "_inv"); - if (inv == "") { - myButtonOut.pinChange(key, pin, state, true); - } else { - myButtonOut.pinChange(key, pin, state, false); - } + myButtonOut.pinChange(key, state); } diff --git a/src/items/InputDigitClass.cpp b/src/items/InputDigitClass.cpp index 346129ab..4a83ba4f 100644 --- a/src/items/InputDigitClass.cpp +++ b/src/items/InputDigitClass.cpp @@ -1,4 +1,4 @@ -#include "items/itemsGlobal.h" +#include "items/ItemsGlobal.h" #include "items/InputClass.h" //==========================================Модуль ввода цифровых значений================================== //input-digit digit1 inputDigit Ввод Введите.цифру 4 st[60] diff --git a/src/items/InputTimeClass.cpp b/src/items/InputTimeClass.cpp index 03f2c1fd..7be81be8 100644 --- a/src/items/InputTimeClass.cpp +++ b/src/items/InputTimeClass.cpp @@ -1,4 +1,4 @@ -#include "items/itemsGlobal.h" +#include "items/ItemsGlobal.h" #include "items/InputClass.h" //==========================================Модуль ввода времени============================================ //input-time time1 inputTime Ввод Введите.время 4 st[10-00-00] diff --git a/src/items/OutputTextClass.cpp b/src/items/OutputTextClass.cpp index 33795205..d25fb8ef 100644 --- a/src/items/OutputTextClass.cpp +++ b/src/items/OutputTextClass.cpp @@ -1,4 +1,4 @@ -#include "items/itemsGlobal.h" +#include "items/ItemsGlobal.h" #include "items/OutputTextClass.h" //===============================================Модуль вывода текста============================================ //output-text;id;anydata;Вывод;Сигнализация;order;st[Обнаружено.движение] diff --git a/src/items/PwmOutClass.cpp b/src/items/PwmOutClass.cpp index db176d5c..606aff33 100644 --- a/src/items/PwmOutClass.cpp +++ b/src/items/PwmOutClass.cpp @@ -1,4 +1,4 @@ -#include "items/itemsGlobal.h" +#include "items/ItemsGlobal.h" #include "items/PwmOutClass.h" //==========================================Модуль управления ШИМ=================================================== //pwm-out volume range Кнопки Свет 1 pin[12] st[500] diff --git a/src/items/SensorAnalogClass.cpp b/src/items/SensorAnalogClass.cpp index 91c10d21..8f750db3 100644 --- a/src/items/SensorAnalogClass.cpp +++ b/src/items/SensorAnalogClass.cpp @@ -1,4 +1,4 @@ -#include "items/itemsGlobal.h" +#include "items/ItemsGlobal.h" #include "items/SensorAnalogClass.h" #ifdef ANALOG_ENABLED //==============================================Модуль аналогового сенсора=========================================================================================== diff --git a/src/items/SensorDallasClass.cpp b/src/items/SensorDallasClass.cpp new file mode 100644 index 00000000..fa0d7681 --- /dev/null +++ b/src/items/SensorDallasClass.cpp @@ -0,0 +1,20 @@ +#include "items/ItemsGlobal.h" +#include "items/SensorDallasClass.h" +//#ifdef SensorDallasEnabled +//=========================================Модуль ультрозвукового дальномера================================================================== +//dallas-temp;id;anydata;Сенсоры;Температура;order;pin;c[1] +//========================================================================================================================================= +SensorDallasClass mySensorDallas; +void dallasTemp() { + mySensorDallas.update(); + String key = mySensorDallas.gkey(); + sCmd.addCommand(key.c_str(), dallasReading); + mySensorDallas.SensorDallasInit(); + mySensorDallas.clear(); +} + +void dallasReading() { + String key = sCmd.order(); + mySensorDallas.SensorDallasRead(key); +} +//#endif \ No newline at end of file diff --git a/src/items/SensorUltrasonicClass.cpp b/src/items/SensorUltrasonicClass.cpp index c849ecc8..02d5456e 100644 --- a/src/items/SensorUltrasonicClass.cpp +++ b/src/items/SensorUltrasonicClass.cpp @@ -1,6 +1,6 @@ -#include "items/itemsGlobal.h" +#include "items/ItemsGlobal.h" #include "items/SensorUltrasonicClass.h" -//#ifdef LEVEL_ENABLED +//#ifdef SensorUltrasonicEnabled //=========================================Модуль ультрозвукового дальномера================================================================== //ultrasonic-cm;id;anydata;Сенсоры;Расстояние;order;pin[12,13];map[1,100,1,100];c[1] //========================================================================================================================================= @@ -9,94 +9,13 @@ void ultrasonicCm() { mySensorUltrasonic.update(); String key = mySensorUltrasonic.gkey(); String pin = mySensorUltrasonic.gpin(); - String trig = selectFromMarkerToMarker(pin, ",", 0); - String echo = selectFromMarkerToMarker(pin, ",", 1); sCmd.addCommand(key.c_str(), ultrasonicReading); - sensorReadingMap += key + ","; - jsonWriteStr(configOptionJson, key + "_trig", trig); - jsonWriteStr(configOptionJson, key + "_echo", echo); - jsonWriteStr(configOptionJson, key + "_map", mySensorUltrasonic.gmap()); - jsonWriteStr(configOptionJson, key + "_с", mySensorUltrasonic.gc()); + mySensorUltrasonic.init(); mySensorUltrasonic.clear(); } void ultrasonicReading() { String key = sCmd.order(); - String trig = jsonReadStr(configOptionJson, key + "_trig"); - String echo = jsonReadStr(configOptionJson, key + "_echo"); - String pin = trig + "," + echo; - mySensorUltrasonic.SensorUltrasonicRead(key, pin); + mySensorUltrasonic.SensorUltrasonicRead(key); } -//#endif - -//void levelPr() { -// String value_name = sCmd.next(); -// String trig = sCmd.next(); -// String echo = sCmd.next(); -// String widget_name = sCmd.next(); -// String page_name = sCmd.next(); -// String type = sCmd.next(); -// String empty_level = sCmd.next(); -// String full_level = sCmd.next(); -// String page_number = sCmd.next(); -// levelPr_value_name = value_name; -// jsonWriteStr(configOptionJson, "e_lev", empty_level); -// jsonWriteStr(configOptionJson, "f_lev", full_level); -// jsonWriteStr(configOptionJson, "trig", trig); -// jsonWriteStr(configOptionJson, "echo", echo); -// pinMode(trig.toInt(), OUTPUT); -// pinMode(echo.toInt(), INPUT); -// createWidgetByType(widget_name, page_name, page_number, type, value_name); -// sensors_reading_map[0] = 1; -//} -////ultrasonicCm cm 14 12 Дистанция,#см Датчики fillgauge 1 -//void ultrasonicCm() { -// String value_name = sCmd.next(); -// String trig = sCmd.next(); -// String echo = sCmd.next(); -// String widget_name = sCmd.next(); -// String page_name = sCmd.next(); -// String type = sCmd.next(); -// String empty_level = sCmd.next(); -// String full_level = sCmd.next(); -// String page_number = sCmd.next(); -// ultrasonicCm_value_name = value_name; -// jsonWriteStr(configOptionJson, "trig", trig); -// jsonWriteStr(configOptionJson, "echo", echo); -// pinMode(trig.toInt(), OUTPUT); -// pinMode(echo.toInt(), INPUT); -// createWidgetByType(widget_name, page_name, page_number, type, value_name); -// sensors_reading_map[0] = 1; -//} -// -//void ultrasonic_reading() { -// long duration_; -// int distance_cm; -// int level; -// static int counter; -// int trig = jsonReadInt(configOptionJson, "trig"); -// int echo = jsonReadInt(configOptionJson, "echo"); -// distance_cm = medianFilter.filtered(distance_cm); //отсечение промахов медианным фильтром -// counter++; -// if (counter > TANK_LEVEL_SAMPLES) { -// counter = 0; -// level = map(distance_cm, -// jsonReadInt(configOptionJson, "e_lev"), -// jsonReadInt(configOptionJson, "f_lev"), 0, 100); -// -// jsonWriteInt(configLiveJson, levelPr_value_name, level); -// eventGen(levelPr_value_name, ""); -// -// MqttClient::publishStatus(levelPr_value_name, String(level)); -// -// Serial.println("[I] sensor '" + levelPr_value_name + "' data: " + String(level)); -// -// jsonWriteInt(configLiveJson, ultrasonicCm_value_name, distance_cm); -// eventGen(ultrasonicCm_value_name, ""); -// -// MqttClient::publishStatus(ultrasonicCm_value_name, String(distance_cm)); -// -// Serial.println("[I] sensor '" + ultrasonicCm_value_name + "' data: " + String(distance_cm)); -// } -//} -// \ No newline at end of file +//#endif \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index d4f1dc53..1a7c31b0 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,15 +1,16 @@ #include + #include "Class/CallBackTest.h" #include "Class/NotAsinc.h" #include "Class/ScenarioClass.h" -#include "items/ButtonInClass.h" #include "Cmd.h" #include "Global.h" #include "Init.h" #include "ItemsList.h" #include "Utils/Timings.h" #include "Utils\WebUtils.h" +#include "items/ButtonInClass.h" void not_async_actions(); @@ -72,9 +73,10 @@ void setup() { pm.info("Broadcast UDP"); udpInit(); #endif - +#ifdef SSDP pm.info("Ssdp Init"); SsdpInit(); +#endif ts.add( TEST, 1000 * 60, [&](void*) {