From bf75e9f4b733358a1c26bdfdc537dc26001d1f4c Mon Sep 17 00:00:00 2001 From: Dmitry Borisenko <49808844+DmitryBorisenko33@users.noreply.github.com> Date: Wed, 20 May 2020 02:16:23 +0200 Subject: [PATCH] some changes --- Cmd.ino | 114 ++++++++---------- Init.ino | 4 +- Logging.ino | 2 + Sensors.ino | 29 ++++- WiFi.ino | 5 + ...2-esp8266_iot-manager_modules_firmware.ino | 9 +- main.ino | 25 ++-- mqtt.ino | 22 ++-- push_pushingbox.ino | 2 + set.h | 39 +++++- udp.ino | 9 ++ 11 files changed, 162 insertions(+), 98 deletions(-) diff --git a/Cmd.ino b/Cmd.ino index 596cdfcd..3fbf0f27 100644 --- a/Cmd.ino +++ b/Cmd.ino @@ -12,34 +12,53 @@ void CMD_init() { sCmd.addCommand("switch", switch_); +#ifdef analog_enable sCmd.addCommand("analog", analog); +#endif +#ifdef level_enable sCmd.addCommand("level", level); +#endif +#ifdef dallas_enable sCmd.addCommand("dallas", dallas); - +#endif +#ifdef dht_enable sCmd.addCommand("dhtT", dhtT); sCmd.addCommand("dhtH", dhtH); sCmd.addCommand("dhtPerception", dhtP); sCmd.addCommand("dhtComfort", dhtC); sCmd.addCommand("dhtDewpoint", dhtD); +#endif +#ifdef bmp_enable sCmd.addCommand("bmp280T", bmp280T); sCmd.addCommand("bmp280P", bmp280P); +#endif +#ifdef bme_enable sCmd.addCommand("bme280T", bme280T); sCmd.addCommand("bme280P", bme280P); sCmd.addCommand("bme280H", bme280H); sCmd.addCommand("bme280A", bme280A); +#endif +#ifdef stepper_enable sCmd.addCommand("stepper", stepper); sCmd.addCommand("stepperSet", stepperSet); +#endif +#ifdef servo_enable sCmd.addCommand("servo", servo_); sCmd.addCommand("servoSet", servoSet); +#endif +#ifdef serial_enable sCmd.addCommand("serialBegin", serialBegin); sCmd.addCommand("serialWrite", serialWrite); +#endif +#ifdef logging_enable sCmd.addCommand("logging", logging); +#endif sCmd.addCommand("inputDigit", inputDigit); sCmd.addCommand("digitSet", digitSet); @@ -53,10 +72,15 @@ void CMD_init() { sCmd.addCommand("text", text); sCmd.addCommand("textSet", textSet); - sCmd.addCommand("mqtt", mqttOrderSend); sCmd.addCommand("http", httpOrderSend); + +#ifdef push_enable sCmd.addCommand("push", pushControl); +#endif + + sCmd.addCommand("update", update_firmware); + sCmd.addCommand("firmware", firmware); handle_time_init(); @@ -323,10 +347,9 @@ void textSet() { jsonWriteStr(configJson, "text" + number, text); sendSTATUS("text" + number, text); } - //===================================================================================================================================== //=========================================Модуль шагового мотора====================================================================== - +#ifdef stepper_enable //stepper 1 12 13 void stepper() { String stepper_number = sCmd.next(); @@ -381,7 +404,10 @@ void stepperSet() { }, nullptr, true); } } - +#endif +//==================================================================================================================================================== +//=================================================================Сервоприводы======================================================================= +#ifdef servo_enable //servo 1 13 50 Мой#сервопривод Сервоприводы 0 100 0 180 2 void servo_() { String servo_number = sCmd.next(); @@ -472,7 +498,10 @@ void servoSet() { jsonWriteStr(configJson, "servo" + servo_number, servo_state); sendSTATUS("servo" + servo_number, servo_state); } - +#endif +//==================================================================================================================================================== +//===================================================================================serial=========================================================== +#ifdef serial_enable void serialBegin() { //String s_speed = sCmd.next(); //String rxPin = sCmd.next(); @@ -482,68 +511,11 @@ void serialBegin() { } void serialWrite() { - //String text = sCmd.next(); - //mySerial.println(text); + //String text = sCmd.next(); + //mySerial.println(text); } +#endif //==================================================================================================================================================== -/* - void inputText() { - String number = sCmd.next(); - String widget_name = sCmd.next(); - widget_name.replace("#", " "); - String page_name = sCmd.next(); - page_name.replace("#", " "); - String start_state = sCmd.next(); - String page_number = sCmd.next(); - jsonWriteStr(configJson, "inputText" + number, start_state); - createWidget (widget_name, page_name, page_number, "widgets/widget.inputText.json", "inputText" + number); - } - void inputTextSet() { - String number = sCmd.next(); - String value = sCmd.next(); - jsonWriteStr(configJson, "inputText" + number, value); - sendSTATUS("inputText" + number, value); - } - - void inputTime() { - String number = sCmd.next(); - String widget_name = sCmd.next(); - widget_name.replace("#", " "); - String page_name = sCmd.next(); - page_name.replace("#", " "); - String start_state = sCmd.next(); - String page_number = sCmd.next(); - jsonWriteStr(configJson, "inputTime" + number, start_state); - createWidget (widget_name, page_name, page_number, "widgets/widget.inputTime.json", "inputTime" + number); - } - void inputTimeSet() { - String number = sCmd.next(); - String value = sCmd.next(); - value.replace(":", "."); - jsonWriteStr(configJson, "inputTime" + number, value); - value.replace(".", ":"); - sendSTATUS("inputTime" + number, value); - } - - - void inputDate() { - String number = sCmd.next(); - String widget_name = sCmd.next(); - widget_name.replace("#", " "); - String page_name = sCmd.next(); - page_name.replace("#", " "); - String start_state = sCmd.next(); - String page_number = sCmd.next(); - jsonWriteStr(configJson, "inputDate" + number, start_state); - createWidget (widget_name, page_name, page_number, "widgets/widget.inputDate.json", "inputDate" + number); - } - void inputDateSet() { - String number = sCmd.next(); - String value = sCmd.next(); - jsonWriteStr(configJson, "inputDate" + number, value); - sendSTATUS("inputDate" + number, value); - } -*/ //=================================================Глобальные команды удаленного управления=========================================================== void mqttOrderSend() { @@ -567,7 +539,17 @@ void httpOrderSend() { getURL(url); } +void update_firmware() { + upgrade = true; +} +void firmware() { + String widget_name = sCmd.next(); + String page_name = sCmd.next(); + String page_number = sCmd.next(); + jsonWriteStr(configJson, "firm1", firmware_version); + choose_widget_and_create(widget_name, page_name, page_number, "any-data", "firm1"); +} //============================================================================================================================== //============================выполнение команд (в лупе) по очереди из строки order============================================= diff --git a/Init.ino b/Init.ino index e4d986e0..43fdfd7c 100644 --- a/Init.ino +++ b/Init.ino @@ -22,7 +22,9 @@ void All_init() { request->send(200, "text/text", "OK"); } if (value == "3") { +#ifdef logging_enable clean_log_date(); +#endif request->send(200, "text/text", "OK"); } if (value == "4") { @@ -47,7 +49,7 @@ void Device_init() { enter_to_logging_counter = LOG1 - 1; analog_value_names_list = ""; - enter_to_analog_counter = 0; + enter_to_analog_counter = 0; level_value_name = ""; diff --git a/Logging.ino b/Logging.ino index 331e9949..31a199bd 100644 --- a/Logging.ino +++ b/Logging.ino @@ -1,3 +1,4 @@ +#ifdef logging_enable //===============================================Логирование============================================================ //logging temp1 1 10 Температура Датчики 2 void logging() { @@ -149,3 +150,4 @@ void clean_log_date() { } all_line = ""; } +#endif diff --git a/Sensors.ino b/Sensors.ino index 6f1cb8fb..91ce6dcf 100644 --- a/Sensors.ino +++ b/Sensors.ino @@ -3,36 +3,48 @@ void sensors_init() { static int counter; counter++; +#ifdef level_enable if (sensors_reading_map[0] == 1) level_reading(); +#endif if (counter > 10) { counter = 0; +#ifdef analog_enable if (sensors_reading_map[1] == 1) analog_reading1(); if (sensors_reading_map[2] == 1) analog_reading2(); +#endif +#ifdef dallas_enable if (sensors_reading_map[3] == 1) dallas_reading(); +#endif +#ifdef dht_enable if (sensors_reading_map[4] == 1) dhtT_reading(); if (sensors_reading_map[5] == 1) dhtH_reading(); if (sensors_reading_map[6] == 1) dhtP_reading(); if (sensors_reading_map[7] == 1) dhtC_reading(); if (sensors_reading_map[8] == 1) dhtD_reading(); +#endif +#ifdef bmp_enable if (sensors_reading_map[9] == 1) bmp280T_rading(); if (sensors_reading_map[10] == 1) bmp280P_reading(); +#endif +#ifdef bme_enable if (sensors_reading_map[11] == 1) bme280T_reading(); if (sensors_reading_map[12] == 1) bme280P_reading(); if (sensors_reading_map[13] == 1) bme280H_reading(); if (sensors_reading_map[14] == 1) bme280A_reading(); +#endif } }, nullptr, true); } //========================================================================================================================================= //=========================================Модуль измерения уровня в баке================================================================== - +#ifdef level_enable //level L 14 12 Вода#в#баке,#% Датчики fill-gauge 125 20 1 void level() { String value_name = sCmd.next(); @@ -82,9 +94,10 @@ void level_reading() { Serial.println("[i] sensor '" + level_value_name + "' data: " + String(level)); } } - +#endif //========================================================================================================================================= //=========================================Модуль аналогового сенсора====================================================================== +#ifdef analog_enable //analog adc 0 Аналоговый#вход,#% Датчики any-data 1 1023 1 100 1 void analog() { String value_name = sCmd.next(); @@ -149,9 +162,10 @@ void analog_reading2() { sendSTATUS(value_name, String(analog)); Serial.println("[i] sensor '" + value_name + "' data: " + String(analog)); } - +#endif //========================================================================================================================================= //=========================================Модуль температурного сенсора ds18b20=========================================================== +#ifdef dallas_enable void dallas() { String value_name = sCmd.next(); String pin = sCmd.next(); @@ -177,9 +191,10 @@ void dallas_reading() { sendSTATUS("dallas", String(temp)); Serial.println("[i] sensor 'dallas' send date " + String(temp)); } - +#endif //========================================================================================================================================= //=========================================Модуль сенсоров DHT============================================================================= +#ifdef dht_enable //dhtT t 2 dht11 Температура#DHT,#t°C Датчики any-data 1 void dhtT() { String value_name = sCmd.next(); @@ -375,9 +390,11 @@ void dhtD_reading() { Serial.println("[i] sensor 'dhtDewpoint' data: " + String(value)); } } +#endif //=========================================i2c bus esp8266 scl-4 sda-5 ==================================================================== //========================================================================================================================================= //=========================================Модуль сенсоров bmp280========================================================================== +#ifdef bmp_enable //bmp280T temp1 0x76 Температура#bmp280 Датчики any-data 1 void bmp280T() { String value_name = sCmd.next(); @@ -440,9 +457,10 @@ void bmp280P_reading() { sendSTATUS(bmp280P_value_name, String(value)); Serial.println("[i] sensor '" + bmp280P_value_name + "' data: " + String(value)); } - +#endif //========================================================================================================================================= //=============================================Модуль сенсоров bme280====================================================================== +#ifdef bme_enable //bme280T temp1 0x76 Температура#bmp280 Датчики any-data 1 void bme280T() { String value_name = sCmd.next(); @@ -534,3 +552,4 @@ void bme280A_reading() { sendSTATUS(bme280A_value_name, String(value)); Serial.println("[i] sensor '" + bme280A_value_name + "' data: " + String(value)); } +#endif diff --git a/WiFi.ino b/WiFi.ino index c21dc3d2..1e3b714e 100644 --- a/WiFi.ino +++ b/WiFi.ino @@ -47,6 +47,8 @@ void WIFI_init() { void ROUTER_Connecting() { + led_blink("slow"); + WiFi.mode(WIFI_STA); byte tries = 20; @@ -92,6 +94,8 @@ void ROUTER_Connecting() { Serial.print(WiFi.localIP()); Serial.println(""); jsonWriteStr(configJson, "ip", WiFi.localIP().toString()); + + led_blink("off"); //add_dev_in_list("dev.txt", chipID, WiFi.localIP().toString()); @@ -108,6 +112,7 @@ bool StartAPMode() { String _passwordAP = jsonRead(configSetup, "passwordAP"); WiFi.softAP(_ssidAP.c_str(), _passwordAP.c_str()); IPAddress myIP = WiFi.softAPIP(); + led_blink("on"); Serial.print("AP IP address: "); Serial.println(myIP); jsonWriteStr(configJson, "ip", myIP.toString()); diff --git a/esp32-esp8266_iot-manager_modules_firmware.ino b/esp32-esp8266_iot-manager_modules_firmware.ino index 41cc4abd..005f0a38 100644 --- a/esp32-esp8266_iot-manager_modules_firmware.ino +++ b/esp32-esp8266_iot-manager_modules_firmware.ino @@ -32,11 +32,15 @@ void setup() { Time_Init(); Serial.println("[V] Time_Init"); //-------------------------------------------------------------- +#ifdef push_enable Push_init(); Serial.println("[V] Push_init"); +#endif //-------------------------------------------------------------- +#ifdef UDP_enable UDP_init(); Serial.println("[V] UDP_init"); +#endif //-------------------------------------------------------------- @@ -69,8 +73,9 @@ void loop() { handleCMD_loop(); handleButton(); handleScenario(); +#ifdef UDP_enable handleUdp(); - +#endif ts.update(); } @@ -78,7 +83,9 @@ void not_async_actions() { do_mqtt_connection(); do_upgrade_url(); do_upgrade(); +#ifdef UDP_enable do_udp_data_parse(); do_mqtt_send_settings_to_udp(); +#endif do_i2c_scanning(); } diff --git a/main.ino b/main.ino index 3f9f9677..7ec09d7b 100644 --- a/main.ino +++ b/main.ino @@ -340,20 +340,23 @@ uint16_t hexStringToUint16(String hex) { } } //============================================================================================================= -#ifdef led_status -void led_blink(int pin, int fq, String blink_satus) { - - pinMode(pin, OUTPUT); - - if (blink_satus == "on") tone(pin, fq); - if (blink_satus == "off") { - - noTone(pin); - digitalWrite(pin, HIGH); +void led_blink(String satus) { + #ifdef blink_pin + pinMode(blink_pin, OUTPUT); + if (satus == "off") { + noTone(blink_pin); + digitalWrite(blink_pin, HIGH); } + if (satus == "on") { + noTone(blink_pin); + digitalWrite(blink_pin, LOW); + } + if (satus == "slow") tone(blink_pin, 1); + if (satus == "fast") tone(blink_pin, 20); + #endif } -#endif + void getMemoryLoad(String text) { #ifdef ESP8266 diff --git a/mqtt.ino b/mqtt.ino index 8cd0c0c7..e74d0571 100644 --- a/mqtt.ino +++ b/mqtt.ino @@ -7,6 +7,7 @@ void MQTT_init() { Serial.println("[VV] WiFi-ok"); if (client_mqtt.connected()) { Serial.println("[VV] MQTT-ok"); + led_blink("off"); } else { MQTT_Connecting(); if (!just_load) mqtt_lost_error++; @@ -53,12 +54,7 @@ void MQTT_init() { } -void do_mqtt_send_settings_to_udp() { - if (mqtt_send_settings_to_udp) { - mqtt_send_settings_to_udp = false; - send_mqtt_to_udp(); - } -} + void do_mqtt_connection() { if (mqtt_connection) { @@ -82,13 +78,14 @@ boolean MQTT_Connecting() { String mqtt_server = jsonRead(configSetup, "mqttServer"); if ((mqtt_server != "")) { Serial.println("[E] Lost MQTT connection, start reconnecting"); - //ssl//espClient.setCACert(local_root_ca1); + led_blink("fast"); client_mqtt.setServer(mqtt_server.c_str(), jsonReadtoInt(configSetup, "mqttPort")); if (WiFi.status() == WL_CONNECTED) { if (!client_mqtt.connected()) { Serial.println("[V] Connecting to MQTT server commenced"); if (client_mqtt.connect(chipID.c_str(), jsonRead(configSetup, "mqttUser").c_str(), jsonRead(configSetup, "mqttPass").c_str())) { Serial.println("[VV] MQTT connected"); + led_blink("off"); client_mqtt.setCallback(callback); client_mqtt.subscribe(jsonRead(configSetup, "mqttPrefix").c_str()); // Для приема получения HELLOW и подтверждения связи client_mqtt.subscribe((jsonRead(configSetup, "mqttPrefix") + "/" + chipID + "/+/control").c_str()); // Подписываемся на топики control @@ -97,6 +94,7 @@ boolean MQTT_Connecting() { return true; } else { Serial.println("[E] try again in " + String(wifi_mqtt_reconnecting / 1000) + " sec"); + led_blink("fast"); return false; } } @@ -120,7 +118,7 @@ void callback(char* topic, byte * payload, unsigned int length) { Serial.println(" => " + str); if (str == "HELLO") outcoming_date(); - + //превращает название топика в команду, а значение в параметр команды if (topic_str.indexOf("control") > 0) { //IoTmanager/800324-1458415/button1/control 1 //IoTmanager/800324-1458415/button99/control 1 String topic = selectFromMarkerToMarker(topic_str, "/", 3); //button1 //button99 @@ -136,6 +134,11 @@ void callback(char* topic, byte * payload, unsigned int length) { //Serial.println(str); order_loop += str + ","; } + if (topic_str.indexOf("update") > 0) { + if (str == "1") { + upgrade = true; + } + } } //данные которые отправляем при подключении или отбновлении страницы @@ -143,7 +146,10 @@ void outcoming_date() { sendAllWigets(); sendAllData(); + +#ifdef logging_enable choose_log_date_and_send(); +#endif Serial.println("[V] Sending all date to iot manager completed"); } diff --git a/push_pushingbox.ino b/push_pushingbox.ino index 0d33191e..0efffb26 100644 --- a/push_pushingbox.ino +++ b/push_pushingbox.ino @@ -1,3 +1,4 @@ +#ifdef push_enable void Push_init() { server.on("/pushingboxDate", HTTP_GET, [](AsyncWebServerRequest * request) { @@ -58,3 +59,4 @@ void pushControl() { client_push.stop(); Serial.println("- stopping the client"); } +#endif diff --git a/set.h b/set.h index aac7f511..01e9cca9 100644 --- a/set.h +++ b/set.h @@ -5,16 +5,33 @@ boolean mb_4_of_memory = true; //#define MDNS_enable //#define WS_enable //#define layout_in_ram -#define wifi_mqtt_reconnecting 30000 +//=================================================================== +//====================udp============================================ +#define UDP_enable +//====================sensors======================================== +#define level_enable +#define analog_enable +#define dallas_enable +#define dht_enable //подъедает оперативку сука +#define bmp_enable +#define bme_enable +//====================logging========================================= +#define logging_enable +//=====================gears========================================== +#define stepper_enable +#define servo_enable +//=====================other========================================== +#define serial_enable +#define push_enable +//==================================================================== +//==================================================================== + +#define wifi_mqtt_reconnecting 20000 +#define blink_pin 2 #define tank_level_times_to_send 10 //после скольки выстрелов делать отправку данных - #define statistics_update 1000 * 60 * 60 * 2 //====================================================================== - -//#define TIME_COMPILING String(__TIME__) -//#define DATE_COMPILING String(__DATE__) - //===============библиотеки и объекты для ESP8266======================== #ifdef ESP8266 #include @@ -92,29 +109,39 @@ StringCommand sCmd; boolean but[NUM_BUTTONS]; Bounce * buttons = new Bounce[NUM_BUTTONS]; +#ifdef level_enable #include "GyverFilters.h" //настраивается в GyverHacks.h - MEDIAN_FILTER_SIZE GMedian medianFilter; +#endif +#ifdef dallas_enable #include #include OneWire *oneWire; DallasTemperature sensors; +#endif +#ifdef dht_enable #include DHTesp dht; +#endif #include +#ifdef bmp_enable #include Adafruit_BMP280 bmp; // use I2C interface Adafruit_Sensor *bmp_temp = bmp.getTemperatureSensor(); Adafruit_Sensor *bmp_pressure = bmp.getPressureSensor(); +#endif +#ifdef bmp_enable #include Adafruit_BME280 bme; // use I2C interface Adafruit_Sensor *bme_temp = bme.getTemperatureSensor(); Adafruit_Sensor *bme_pressure = bme.getPressureSensor(); Adafruit_Sensor *bme_humidity = bme.getHumiditySensor(); +#endif //#include //SoftwareSerial mySerial(14, 12); diff --git a/udp.ino b/udp.ino index 9cc7b2aa..29a7a087 100644 --- a/udp.ino +++ b/udp.ino @@ -1,3 +1,4 @@ +#ifdef UDP_enable void UDP_init() { server.on("/udp", HTTP_GET, [](AsyncWebServerRequest * request) { String value; @@ -167,3 +168,11 @@ void send_mqtt_to_udp() { } } } + +void do_mqtt_send_settings_to_udp() { + if (mqtt_send_settings_to_udp) { + mqtt_send_settings_to_udp = false; + send_mqtt_to_udp(); + } +} +#endif