From 86e18f1e991d5c0830df4e261424c3a1e7dd92b3 Mon Sep 17 00:00:00 2001 From: Dmitry Borisenko <49808844+DmitryBorisenko33@users.noreply.github.com> Date: Thu, 18 Jun 2020 23:43:06 +0200 Subject: [PATCH] First working platformio version --- include/Cmd.h | 36 --- include/{set.h => Consts.h} | 2 - include/FileSystem.h | 6 - include/Global.h | 165 ++++++++++++++ include/Init.h | 5 - include/Logging.h | 7 - include/Mqtt.h | 11 - include/Scenario.h | 5 - include/Sensors.h | 3 - include/Strings_.h | 3 +- include/TimeUtils.h | 14 -- include/Timers.h | 10 - include/Upgrade.h | 3 - include/WiFiUtils.h | 4 - include/Widgets.h | 8 - include/i2c_bus.h | 7 - include/main.h | 31 --- include/push_pushingbox.h | 3 +- lib/ESPrelay/.gitattributes | 17 -- lib/ESPrelay/TheThingsMQTT.cpp | 215 ------------------ lib/ESPrelay/TheThingsMQTT.h | 58 ----- lib/ESPrelay/TickerScheduler.h | 79 ------- lib/ESPrelay/subscribe_and_publish.ino | 182 --------------- lib/TickerScheduler/README.md | 81 +++++++ .../TickerScheduler.cpp | 6 +- lib/TickerScheduler/TickerScheduler.h | 91 ++++++++ .../example/blink/blink/blink.ino | 29 +++ platformio.ini | 3 +- src/Cmd.cpp | 11 +- src/FileSystem.cpp | 7 +- src/Init.cpp | 11 +- src/Logging.cpp | 11 +- src/Mqtt.cpp | 15 +- src/Scenario.cpp | 5 +- src/Sensors.cpp | 4 +- src/TimeUtils.cpp | 5 +- src/Timers.cpp | 10 +- src/Upgrade.cpp | 9 +- src/Web_server.cpp | 3 +- src/WiFiUtils.cpp | 133 ++++++----- src/Widgets.cpp | 5 +- src/i2c_bus.cpp | 5 +- src/iot_firmware.cpp | 5 +- src/main.cpp | 39 ++-- src/udp.cpp | 5 + 45 files changed, 511 insertions(+), 856 deletions(-) delete mode 100644 include/Cmd.h rename include/{set.h => Consts.h} (99%) delete mode 100644 include/FileSystem.h create mode 100644 include/Global.h delete mode 100644 include/Init.h delete mode 100644 include/Logging.h delete mode 100644 include/Mqtt.h delete mode 100644 include/Scenario.h delete mode 100644 include/Sensors.h delete mode 100644 include/TimeUtils.h delete mode 100644 include/Timers.h delete mode 100644 include/Upgrade.h delete mode 100644 include/WiFiUtils.h delete mode 100644 include/Widgets.h delete mode 100644 include/i2c_bus.h delete mode 100644 include/main.h delete mode 100644 lib/ESPrelay/.gitattributes delete mode 100644 lib/ESPrelay/TheThingsMQTT.cpp delete mode 100644 lib/ESPrelay/TheThingsMQTT.h delete mode 100644 lib/ESPrelay/TickerScheduler.h delete mode 100644 lib/ESPrelay/subscribe_and_publish.ino create mode 100644 lib/TickerScheduler/README.md rename lib/{ESPrelay => TickerScheduler}/TickerScheduler.cpp (91%) create mode 100644 lib/TickerScheduler/TickerScheduler.h create mode 100644 lib/TickerScheduler/example/blink/blink/blink.ino diff --git a/include/Cmd.h b/include/Cmd.h deleted file mode 100644 index 47577e82..00000000 --- a/include/Cmd.h +++ /dev/null @@ -1,36 +0,0 @@ - -#pragma once - -#include "Arduino.h" - -extern void CMD_init(); -extern void button(); -extern void buttonSet(); -extern void buttonChange(); -extern void pinSet(); -extern void pinChange(); -extern void handle_time_init(); -extern void pwm(); -extern void switch_(); -extern void pwmSet(); -extern void stepper(); -extern void stepperSet(); -extern void servo_(); -extern void servoSet(); -extern void serialBegin(); -extern void serialWrite(); -extern void logging(); -extern void inputDigit(); -extern void digitSet(); -extern void inputTime(); -extern void button(); -extern void timeSet(); -extern void text(); -extern void textSet(); -extern void mqttOrderSend(); -extern void httpOrderSend(); -extern void firmware(); -extern void update_firmware(); -extern void Scenario_init(); -extern void txtExecution(String file); -extern void stringExecution(String str); diff --git a/include/set.h b/include/Consts.h similarity index 99% rename from include/set.h rename to include/Consts.h index a6d4d9fd..e6ced715 100644 --- a/include/set.h +++ b/include/Consts.h @@ -1,5 +1,3 @@ -#pragma once - #include /******************************************************************* diff --git a/include/FileSystem.h b/include/FileSystem.h deleted file mode 100644 index ccec5ffb..00000000 --- a/include/FileSystem.h +++ /dev/null @@ -1,6 +0,0 @@ -#pragma once - -#include -#include - -extern void File_system_init(); \ No newline at end of file diff --git a/include/Global.h b/include/Global.h new file mode 100644 index 00000000..e4b84378 --- /dev/null +++ b/include/Global.h @@ -0,0 +1,165 @@ +#pragma once + +#include + +#include "Consts.h" + +// Cmd +extern void CMD_init(); +extern void button(); +extern void buttonSet(); +extern void buttonChange(); +extern void pinSet(); +extern void pinChange(); +extern void handle_time_init(); +extern void pwm(); +extern void switch_(); +extern void pwmSet(); +extern void stepper(); +extern void stepperSet(); +extern void servo_(); +extern void servoSet(); +extern void serialBegin(); +extern void serialWrite(); +extern void logging(); +extern void inputDigit(); +extern void digitSet(); +extern void inputTime(); +extern void button(); +extern void timeSet(); +extern void text(); +extern void textSet(); +extern void mqttOrderSend(); +extern void httpOrderSend(); +extern void firmware(); +extern void update_firmware(); +extern void Scenario_init(); +extern void txtExecution(String file); +extern void stringExecution(String str); + +// FileSystem +extern void File_system_init(); + +// i2c_bu +extern void do_i2c_scanning(); +extern String i2c_scan(); + +// Init +extern void All_init(); +extern void statistics_init(); +extern void Scenario_init(); +extern void Device_init(); +extern void prsets_init(); +extern void up_time(); + +// Logging +extern void logging(); +extern void deleteOldDate(String file, int seted_number_of_lines, String date_to_add); +extern void clean_log_date(); +extern void choose_log_date_and_send(); + +// Main +void getMemoryLoad(String text); + +extern String jsonReadStr(String& json, String name); +extern int jsonReadInt(String& json, String name); +extern String jsonWriteInt(String& json, String name, int volume); +extern String jsonWriteStr(String& json, String name, String volume); +extern void saveConfig(); +extern String jsonWriteFloat(String& json, String name, float volume); + +extern String getURL(String urls); + +extern String writeFile(String fileName, String strings); +extern String readFile(String fileName, size_t len); +extern String addFile(String fileName, String strings); + +//STRING +extern String selectToMarkerLast(String str, String found); +extern String selectToMarker(String str, String found); +extern String deleteAfterDelimiter(String str, String found); +extern String deleteBeforeDelimiter(String str, String found); +extern String deleteBeforeDelimiterTo(String str, String found); + +extern String selectFromMarkerToMarker(String str, String found, int number); + +extern void servo_(); +extern boolean isDigitStr(String str); +extern String jsonWriteStr(String& json, String name, String volume); +extern void led_blink(String satus); +extern int count(String str, String found); + + +// Mqtt +extern void MQTT_init(); +extern boolean MQTT_Connecting(); +extern boolean sendMQTT(String end_of_topik, String data); +extern boolean sendCHART(String topik, String data); +extern void sendSTATUS(String topik, String state); +extern void sendCONTROL(String id, String topik, String state); +extern void do_mqtt_connection(); +extern void handleMQTT(); +extern String selectFromMarkerToMarker(String str, String found, int number); + +// WiFiUtils +extern void WIFI_init(); +extern void All_init(); +extern bool StartAPMode(); +extern void ROUTER_Connecting(); + +//Scenario +extern void eventGen(String event_name, String number); +extern String add_set(String param_name); + +//Sensors +extern void sensors_init(); + +//Timers +extern void Timer_countdown_init(); +extern void timerStart_(); +extern void addTimer(String number, String time); +extern void timerStop_(); +extern void delTimer(String number); +extern int readTimer(int number); + +//TimeUtils +extern void Time_Init(); +extern int timeToMin(String Time); +extern String GetDataDigital(); +extern String GetDate(); +extern String GetTimeWOsec(); +extern String GetTime(); +extern String GetTimeUnix(); +extern void reconfigTime(); +extern void saveConfig(); +extern String GetTimeUnix(); +extern void time_check(); + +//Upgrade +extern void initUpgrade(); + +//widget +extern void createWidget(String widget_name, String page_name, String page_number, String file, String topic); +extern void createWidgetParam(String widget_name, String page_name, String page_number, String file, String topic, String name1, String param1, String name2, String param2, String name3, String param3); +extern void choose_widget_and_create(String widget_name, String page_name, String page_number, String type, String topik); +extern void createChart(String widget_name, String page_name, String page_number, String file, String topic, String maxCount); + +// Push + +extern void Push_init(); + +// UDP +extern void UDP_init(); +extern void do_udp_data_parse(); +extern void do_mqtt_send_settings_to_udp(); +// WebServer +extern void Web_server_init(); + +//iot_firmware +extern void not_async_actions(); +extern void handleCMD_loop(); +extern void handleButton(); +extern void handleScenario(); +extern void handleUdp(); +extern void do_upgrade_url(); +extern void do_upgrade(); \ No newline at end of file diff --git a/include/Init.h b/include/Init.h deleted file mode 100644 index c593153c..00000000 --- a/include/Init.h +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once - -extern void Scenario_init(); -extern void Device_init(); -extern void prsets_init(); diff --git a/include/Logging.h b/include/Logging.h deleted file mode 100644 index 5a969e48..00000000 --- a/include/Logging.h +++ /dev/null @@ -1,7 +0,0 @@ -#pragma once - -#include - -extern void logging(); -extern void deleteOldDate(String file, int seted_number_of_lines, String date_to_add); -extern void clean_log_date(); \ No newline at end of file diff --git a/include/Mqtt.h b/include/Mqtt.h deleted file mode 100644 index 21805a4e..00000000 --- a/include/Mqtt.h +++ /dev/null @@ -1,11 +0,0 @@ -#pragma once - -#include - -extern boolean MQTT_Connecting(); -extern boolean sendMQTT(String end_of_topik, String data); -extern boolean sendCHART(String topik, String data); -extern void sendSTATUS(String topik, String state); -extern void sendCONTROL(String id, String topik, String state); - -extern void do_mqtt_connection(); \ No newline at end of file diff --git a/include/Scenario.h b/include/Scenario.h deleted file mode 100644 index 06875256..00000000 --- a/include/Scenario.h +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once - -#include - -extern void eventGen(String event_name, String number); \ No newline at end of file diff --git a/include/Sensors.h b/include/Sensors.h deleted file mode 100644 index 84a96345..00000000 --- a/include/Sensors.h +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void sensors_init(); \ No newline at end of file diff --git a/include/Strings_.h b/include/Strings_.h index 106957e0..21865168 100644 --- a/include/Strings_.h +++ b/include/Strings_.h @@ -1,5 +1,6 @@ #pragma once +//Strings // #include #include @@ -135,4 +136,4 @@ inline void char_array::printinput() { inline void char_array::changedefaultsize() { printf("Input new default input string size: "); scanf("%i", charinput); -} \ No newline at end of file +} diff --git a/include/TimeUtils.h b/include/TimeUtils.h deleted file mode 100644 index 6527d93d..00000000 --- a/include/TimeUtils.h +++ /dev/null @@ -1,14 +0,0 @@ -#pragma once - -#include - -extern int timeToMin(String Time); -extern String GetDataDigital(); -extern String GetDate(); -extern String GetTimeWOsec(); -extern String GetTime(); -extern String GetTimeUnix(); -extern void reconfigTime(); -extern void saveConfig(); -extern String GetTimeUnix(); -extern void time_check(); diff --git a/include/Timers.h b/include/Timers.h deleted file mode 100644 index 0b74a588..00000000 --- a/include/Timers.h +++ /dev/null @@ -1,10 +0,0 @@ -#pragma once - -#include - -extern void Timer_countdown_init(); -extern void addTimer(String number, String time); -extern int readTimer(int number); -extern void delTimer(String number); -extern void timerStop(); -extern void delTimer(String number); \ No newline at end of file diff --git a/include/Upgrade.h b/include/Upgrade.h deleted file mode 100644 index 6a399da7..00000000 --- a/include/Upgrade.h +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -extern void initUpgrade(); diff --git a/include/WiFiUtils.h b/include/WiFiUtils.h deleted file mode 100644 index de80d0e0..00000000 --- a/include/WiFiUtils.h +++ /dev/null @@ -1,4 +0,0 @@ -#pragma once - -extern bool StartAPMode(); -extern void ROUTER_Connecting(); \ No newline at end of file diff --git a/include/Widgets.h b/include/Widgets.h deleted file mode 100644 index fdb7e103..00000000 --- a/include/Widgets.h +++ /dev/null @@ -1,8 +0,0 @@ -#pragma once - -#include - -extern void createWidget(String widget_name, String page_name, String page_number, String file, String topic); -extern void createWidgetParam(String widget_name, String page_name, String page_number, String file, String topic, String name1, String param1, String name2, String param2, String name3, String param3); -extern void choose_widget_and_create(String widget_name, String page_name, String page_number, String type, String topik); -extern void createChart(String widget_name, String page_name, String page_number, String file, String topic, String maxCount); diff --git a/include/i2c_bus.h b/include/i2c_bus.h deleted file mode 100644 index 68440aae..00000000 --- a/include/i2c_bus.h +++ /dev/null @@ -1,7 +0,0 @@ -#pragma once - -#include - -extern void do_i2c_scanning(); - -extern String i2c_scan(); \ No newline at end of file diff --git a/include/main.h b/include/main.h deleted file mode 100644 index 27d7c0f7..00000000 --- a/include/main.h +++ /dev/null @@ -1,31 +0,0 @@ - -#pragma once - -#include - -void getMemoryLoad(String text); - -extern String jsonReadStr(String& json, String name); -extern int jsonReadInt(String& json, String name); -extern String jsonWriteInt(String& json, String name, int volume); -extern String jsonWriteStr(String& json, String name, String volume); -extern void saveConfig(); -extern String jsonWriteFloat(String& json, String name, float volume); - -extern String getURL(String urls); - -extern String writeFile(String fileName, String strings); -extern String readFile(String fileName, size_t len); -extern String addFile(String fileName, String strings); - -extern String selectFromMarkerToMarker(String str, String found, int number); -extern String selectToMarker(String str, String found); -extern String deleteAfterDelimiter(String str, String found); -extern String deleteBeforeDelimiter(String str, String found); -extern String deleteBeforeDelimiterTo(String str, String found); - -extern void servo_(); -extern boolean isDigitStr(String str); -extern String jsonWriteStr(String& json, String name, String volume); - -extern void led_blink(String satus); \ No newline at end of file diff --git a/include/push_pushingbox.h b/include/push_pushingbox.h index ff3f9cf9..1d03b9ca 100644 --- a/include/push_pushingbox.h +++ b/include/push_pushingbox.h @@ -1,7 +1,6 @@ #pragma once -#include "main.h" -#include "set.h" +#include "Global.h" inline void Push_init() { server.on("/pushingboxDate", HTTP_GET, [](AsyncWebServerRequest* request) { diff --git a/lib/ESPrelay/.gitattributes b/lib/ESPrelay/.gitattributes deleted file mode 100644 index bdb0cabc..00000000 --- a/lib/ESPrelay/.gitattributes +++ /dev/null @@ -1,17 +0,0 @@ -# Auto detect text files and perform LF normalization -* text=auto - -# Custom for Visual Studio -*.cs diff=csharp - -# Standard to msysgit -*.doc diff=astextplain -*.DOC diff=astextplain -*.docx diff=astextplain -*.DOCX diff=astextplain -*.dot diff=astextplain -*.DOT diff=astextplain -*.pdf diff=astextplain -*.PDF diff=astextplain -*.rtf diff=astextplain -*.RTF diff=astextplain diff --git a/lib/ESPrelay/TheThingsMQTT.cpp b/lib/ESPrelay/TheThingsMQTT.cpp deleted file mode 100644 index 4faf78f3..00000000 --- a/lib/ESPrelay/TheThingsMQTT.cpp +++ /dev/null @@ -1,215 +0,0 @@ -/* -Copyright (c) 2016 TheThings. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Original Maker: Mateo Velez - Metavix for TheThings Inc -Modified and Maintened by: Jose Garcia - TheThings Inc - -*/ - -#include "TheThingsMQTT.h" - - -TheThings::TheThings(char* token){ - initialize(token, NULL); -} - - -TheThings::TheThings(char* token, char* clientName) { - initialize(token, clientName); -} - - -void TheThings::begin(void (*callback)(char*,uint8_t*,unsigned int)) { - this->callback = callback; - _client.setServer(_server, MQTT_PORT); - _client.setCallback(callback); -} - - -bool TheThings::add(char* variableLabel, float value) { - return add(variableLabel, value, "NULL", "NULL"); -} - - -bool TheThings::add(char* variableLabel, float value, char *context) { - return add(variableLabel, value, context, "NULL"); -} - - -bool TheThings::add(char* variableLabel, float value, char *context, char *timestamp) { - (val+currentValue)->_variableLabel = variableLabel; - (val+currentValue)->_value = value; - (val+currentValue)->_context = context; - (val+currentValue)->_timestamp = timestamp; - currentValue++; - if (currentValue > MAX_VALUES) { - Serial.println(F("You are sending more than the maximum of consecutive variables")); - currentValue = MAX_VALUES; - } - return true; -} - - -bool TheThings::connected(){ - return _client.connected(); -} - - -char* TheThings::getMac(){ - // Obtains the MAC of the device - Serial.println("entra"); - byte mac[6]; - WiFi.macAddress(mac); - char macAddr[18]; - sprintf(macAddr, "%2X%2X%2X%2X%2X%2X", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); - return macAddr; -} - - -void TheThings::initialize(char* token, char* clientName){ - _server = SERVER; - _token = token; - currentValue = 0; - val = (Value *)malloc(MAX_VALUES*sizeof(Value)); - if(clientName!=NULL){ - _clientName = clientName; - } -} - - -bool TheThings::loop() { - if (!_client.connected()) { - reconnect(); - } - return _client.loop(); -} - - -void TheThings::reconnect() { - while (!_client.connected()) { - Serial.print("Attempting MQTT connection..."); - if (_client.connect(_clientName, _token, NULL)) { - Serial.println("connected"); - break; - } else { - Serial.print("failed, rc="); - Serial.print(_client.state()); - Serial.println(" try again in 3 seconds"); - delay(3000); - } - } -} - - -void TheThings::setDebug(bool debug){ - _debug = debug; -} - - -void TheThings:: setBroker(char* broker){ - if (_debug){ - Serial.println("Broker set for Business Account"); - } - _server = broker; -} - - -bool TheThings::subscribe() { - char topic[150]; - sprintf(topic, "%s%s", FIRST_PART_TOPIC, _token); - if (!_client.connected()) { - reconnect(); - } - if (_debug){ - Serial.println("Subscribed to: "); - Serial.println(topic); - } - return _client.subscribe(topic); -} - - -bool TheThings::publish() { - - char topic[150]; - char payload[500]; - String str; - sprintf(topic, "%s%s", FIRST_PART_TOPIC, _token); - sprintf(payload, "["); - for (int i = 0; i <= currentValue; ) { - str = String((val+i)->_value, 1); - sprintf(payload,"%s{\"key\":\"%s\",\"value\":%s",payload,(val+i)->_variableLabel, str.c_str()); - if ((val+i)->_timestamp != "NULL") { - sprintf(payload, "%s, \"timestamp\": %s", payload, (val+i)->_timestamp); - } - if ((val+i)->_context != "NULL") { - sprintf(payload, "%s, \"context\": {%s}", payload, (val+i)->_context); - } - i++; - if (i >= currentValue) { - sprintf(payload, "%s}]", payload); - break; - } else { - sprintf(payload, "%s},", payload); - } - } - if (_debug){ - Serial.println("publishing to TOPIC: "); - Serial.println(topic); - Serial.print("JSON dict: "); - Serial.println(payload); - } - currentValue = 0; - return _client.publish(topic, payload, 512); -} - - -bool TheThings::wifiConnection(char* ssid, char* pass) { - WiFi.begin(ssid, pass); - while (WiFi.status() != WL_CONNECTED) { - delay(500); - Serial.print("."); - } - Serial.println(F("WiFi connected")); - Serial.println(F("IP address: ")); - Serial.println(WiFi.localIP()); - if(_clientName==NULL){ - _clientName = getMac(); - } -} - -bool TheThings::wifiConnection2() { - WiFiManager wifiManager; - wifiManager.setTimeout(180); - - //if(!wifiManager.autoConnect("AutoConnectAP")) { - if(!wifiManager.autoConnect()) { - Serial.println("failed to connect and hit timeout"); - delay(3000); - ESP.reset(); - delay(5000); - } -} - -int TheThings::state() { - return _client.state(); -} - diff --git a/lib/ESPrelay/TheThingsMQTT.h b/lib/ESPrelay/TheThingsMQTT.h deleted file mode 100644 index c176003d..00000000 --- a/lib/ESPrelay/TheThingsMQTT.h +++ /dev/null @@ -1,58 +0,0 @@ - -#ifndef TheThingsMQTT_H -#define TheThingsMQTT_H -//#include -#include -#include - -#define MQTT_PORT 1883 -#define SERVER "mqtt.thethings.io" -#define MAX_VALUES 5 -#define FIRST_PART_TOPIC "v2/things/" - -#define META_DEBUG Serial - -typedef struct Value { - char* _variableLabel; - float _value; - char* _context; - char* _timestamp; -} Value; - -class TheThings { - private: - void (*callback)(char*, uint8_t*, unsigned int); - char* getMac(); - void initialize(char* token, char* clientName); - WiFiClient espClient; - PubSubClient _client = PubSubClient(espClient); - WiFiManager wifiManager; - char* _clientName = NULL; - bool _debug = false; - uint8_t currentValue; - char* _password; - char* _server; - char* _ssid; - char* _token; - Value* val; - - public: - TheThings(char* token); - TheThings(char* token, char* clientName); - bool add(char* variableLabel, float value); - bool add(char* variableLabel, float value, char* context); - bool add(char* variableLabel, float value, char* context, char* timestamp); - void begin(void (*callback)(char*, uint8_t*, unsigned int)); - bool connected(); - bool loop(); - bool subscribe(); - bool publish(); - void setBroker(char* broker); - void reconnect(); - void setDebug(bool debug); - bool wifiConnection(char* ssid, char* pass); - bool wifiConnection2(); - int state(); -}; - -#endif diff --git a/lib/ESPrelay/TickerScheduler.h b/lib/ESPrelay/TickerScheduler.h deleted file mode 100644 index 71acb3b0..00000000 --- a/lib/ESPrelay/TickerScheduler.h +++ /dev/null @@ -1,79 +0,0 @@ -#pragma once - -#include -#include - -class Ticker { - typedef void (*ticker_callback_t)(bool *); - - private: - bool is_attached = false; - uint32_t period = 0; - uint32_t last_tick = 0; - ticker_callback_t callback; - bool *callback_argument; - - public: - void Tick() { - if (is_attached && millis() - last_tick >= period) { - callback(callback_argument); - last_tick = millis(); - } - } - - void detach() { - this->is_attached = true; - } - - template - void attach_ms(uint32_t milliseconds, void (*callback)(TArg), TArg arg) { - this->period = milliseconds; - this->callback = callback; - this->callback_argument = arg; - this->is_attached = true; - } -}; - -#ifdef ARDUINO_ARCH_ESP8266 -#include - -#include -#endif - -void tickerFlagHandle(volatile bool *flag); - -#ifdef _GLIBCXX_FUNCTIONAL -typedef std::function tscallback_t; -#else -typedef void (*tscallback_t)(void *); -#endif - -struct TickerSchedulerItem { - Ticker t; - volatile bool flag = false; - tscallback_t cb; - void *cb_arg; - uint32_t period; - volatile bool is_used = false; -}; - -class TickerScheduler { - private: - uint8_t size; - TickerSchedulerItem *items = NULL; - - void handleTicker(tscallback_t, void *, volatile bool *flag); - static void handleTickerFlag(volatile bool *flag); - - public: - TickerScheduler(uint8_t size); - ~TickerScheduler(); - - bool add(uint8_t i, uint32_t period, tscallback_t, void *, boolean shouldFireNow = false); - bool remove(uint8_t i); - bool enable(uint8_t i); - bool disable(uint8_t i); - void enableAll(); - void disableAll(); - void update(); -}; diff --git a/lib/ESPrelay/subscribe_and_publish.ino b/lib/ESPrelay/subscribe_and_publish.ino deleted file mode 100644 index 3148ccd4..00000000 --- a/lib/ESPrelay/subscribe_and_publish.ino +++ /dev/null @@ -1,182 +0,0 @@ -/**************************************** - * Include Libraries - ****************************************/ -#include "TheThingsMQTT.h" -#include "TickerScheduler.h" - -#include -#include - -#include -#include -#include -#include -#include -#include - -/**************************************** - * Define Constants - ****************************************/ -#define TOKEN "" // Your TheThings TOKEN -#define WIFINAME "" //Your SSID -#define WIFIPASS "" // Your Wifi Pass - -TheThings client(TOKEN); - -#define DHTPIN 14 // Pin which is cosnnected to the DHT sensor. -// Uncomment the type of sensor in use: -//#define DHTTYPE DHT11 // DHT 11 -#define DHTTYPE DHT22 // DHT 22 (AM2302) -//#define DHTTYPE DHT21 // DHT 21 (AM2301) - -DHT_Unified dht(DHTPIN, DHTTYPE); - -uint32_t delayMS; -#define TRIGGER_PIN 0 -#define FRECUENCY 2000 -char *AP="TEST_BQ"; -String prefix="rel"; -const char WiFiAPPSK[] = "prueba"; - -WiFiManager wifiManager; - -#define RELAY1 12 -#define RELAY2 13 - -#define MEASUREMENT_TIME 30000 // Time in milisecons - -float Temperature,Humidity; -TickerScheduler ts(1); - -/**************************************** - * Auxiliar Functions - ****************************************/ - -//void configWiFi(){ -// wifiManager.resetSettings(); -// if(!wifiManager.autoConnect(AP,WiFiAPPSK)) { -// Serial.println("Reconfiguration called"); -// delay(3000); -// //reset and try again, or maybe put it to deep sleep -// ESP.reset(); -// delay(15000); -// } -//} - -void callback(char* topic, byte* payload, unsigned int length) { - Serial.print("Message arrived"); - // handle message arrived - String text = ""; - for (int i = 0; i < length; i++) - text.concat((char)payload[i]); - Serial.println(text); - text.replace(" ", ""); - text.toUpperCase(); - if (text.indexOf("\"KEY\":\"REL1\"") >= 0) { - if (text.indexOf("\"VALUE\":\"ON\"") >= 0) digitalWrite(RELAY1,HIGH); - else if (text.indexOf("\"VALUE\":\"OFF\"") >= 0) digitalWrite(RELAY1,LOW); - } - else if (text.indexOf("\"KEY\":\"REL2\"") >= 0) { - if (text.indexOf("\"VALUE\":\"ON\"") >= 0) digitalWrite(RELAY2,HIGH); - else if (text.indexOf("\"VALUE\":\"OFF\"") >= 0) digitalWrite(RELAY2,LOW); - } -} - -float temperatureMeasurement(sensors_event_t event, DHT_Unified dht){ - // Get temperature event and print its value. - dht.temperature().getEvent(&event); - if (isnan(event.temperature)) { - Serial.println("Error reading temperature!"); - } - else { - Serial.print("Temperature: "); - Serial.print(event.temperature); - Serial.println(" *C"); - return event.temperature; - } -} - -float humidityMeasurement(sensors_event_t event, DHT_Unified dht){ - // Get humidity event and print its value. - dht.humidity().getEvent(&event); - if (isnan(event.relative_humidity)) { - Serial.println("Error reading humidity!"); - } - else { - Serial.print("Humidity: "); - Serial.print(event.relative_humidity); - Serial.println("%"); - return event.relative_humidity; - } -} - -void measureAndSend(){ - sensors_event_t event; - Temperature=temperatureMeasurement(event,dht); - Humidity=humidityMeasurement(event,dht); - client.add("Temperature", Temperature); - client.add("Humidity", Humidity); - client.publish(); -} - -/**************************************** - * Main Functions - ****************************************/ - - -void setup() { - // put your setup code here, to run once: - Serial.begin(115200); - delay(100); - pinMode(RELAY1,OUTPUT); - pinMode(RELAY2,OUTPUT); - - dht.begin(); - sensor_t sensor; - - - -// pinMode(TRIGGER_PIN, INPUT); -// attachInterrupt(digitalPinToInterrupt(TRIGGER_PIN), configWiFi, RISING); -// -// //sets timeout until configuration portal gets turned off -// //useful to make it all retry or go to sleep -// //in seconds -// wifiManager.setTimeout(280); -// -// //fetches ssid and pass and tries to connect -// //if it does not connect it starts an access point with the specified name -// //here "AutoConnectAP" -// //and goes into a blocking loop awaiting configuration -// if(!wifiManager.autoConnect(AP,WiFiAPPSK)) { -// Serial.println("failed to connect and hit timeout"); -// delay(3000); -// //reset and try again, or maybe put it to deep sleep -// //ESP.reset(); -// delay(FRECUENCY); -// } -// //if you get here you have connected to the WiFi -// Serial.println("connected...yeey :)"); - - client.wifiConnection(WIFINAME, WIFIPASS); - - //client.wifiConnection2(); - client.begin(callback); - client.subscribe(); //Insert the dataSource and Variable's Labels - - ts.add(0, MEASUREMENT_TIME, [&](void*) { measureAndSend(); }, nullptr, false); - ts.enableAll(); - - } - -void loop() { - // put your main code here, to run repeatedly: - ts.update(); - - if(!client.connected()){ - client.reconnect(); - client.subscribe(); //Insert the dataSource and Variable's Labels - } - client.loop(); - -} diff --git a/lib/TickerScheduler/README.md b/lib/TickerScheduler/README.md new file mode 100644 index 00000000..33f0182e --- /dev/null +++ b/lib/TickerScheduler/README.md @@ -0,0 +1,81 @@ +# TickerScheduler +Simple scheduler for ESP8266 Arduino based on Ticker + +### Initialization + +`TickerScheduler(uint size);` + +| Param | Description | +| --- | --- | +| size | Amount of task Tickers to initialize | + +**Example**: + +`TickerScheduler ts(5)` + + +### Add task + +`boolean add(uint i, uint32_t period, tscallback_t f, boolean shouldFireNow = false); ` + +| Param | Description | +| --- | --- | +| i | Task ID | +| period | Task execution period in ms | +| f | Task callback | +| shouldFireNow| `true` if you want to execute task right after first scheduler update or wait next scheduled start | + +**Returns**: + +`true` - task added sucessfully + +`false` - task was not added + +**Example**: + +`ts.add(0, 3000, sendData)` + +### Execute scheduler in `loop()` + +`ts.update()` + +### Remove task + +`boolean remove(uint i)` + +**Returns**: + +`true` - task removed sucessfully + +`false` - task was not removed + +| Param | Description | +| --- | --- | +| i | Task ID | + +### Enable/Disable task + +`boolean enable(uint i)` + +`boolean disable(uint i)` + +**Returns**: + +`true` - task enabled/disabled sucessfully + +`false` - task was not enabled/disabled + +| Param | Description | +| --- | --- | +| i | Task ID | + +### Enable / disable all tasks + +`void enableAll()` + +`void disableAll()` + +### TODO + +* Task callback parameters support +* ... diff --git a/lib/ESPrelay/TickerScheduler.cpp b/lib/TickerScheduler/TickerScheduler.cpp similarity index 91% rename from lib/ESPrelay/TickerScheduler.cpp rename to lib/TickerScheduler/TickerScheduler.cpp index b3badc25..af47ffa1 100644 --- a/lib/ESPrelay/TickerScheduler.cpp +++ b/lib/TickerScheduler/TickerScheduler.cpp @@ -19,13 +19,13 @@ TickerScheduler::~TickerScheduler() this->size = 0; } -void TickerScheduler::handleTickerFlag(volatile bool * flag) +void TickerScheduler::handleTickerFlag(bool * flag) { if (!*flag) *flag = true; } -void TickerScheduler::handleTicker(tscallback_t f, void * arg, volatile bool * flag) +void TickerScheduler::handleTicker(tscallback_t f, void * arg, bool * flag) { if (*flag) { @@ -81,7 +81,7 @@ bool TickerScheduler::enable(uint8_t i) if (i >= this->size || !this->items[i].is_used) return false; - volatile bool * flag = &this->items[i].flag; + bool * flag = &this->items[i].flag; this->items[i].t.attach_ms(this->items[i].period, TickerScheduler::handleTickerFlag, flag); return true; diff --git a/lib/TickerScheduler/TickerScheduler.h b/lib/TickerScheduler/TickerScheduler.h new file mode 100644 index 00000000..98ae1f05 --- /dev/null +++ b/lib/TickerScheduler/TickerScheduler.h @@ -0,0 +1,91 @@ +#ifndef TICKERSCHEDULER_H +#define TICKERSCHEDULER_H + +#if defined(ARDUINO) && ARDUINO >= 100 + #include "Arduino.h" +#endif +#include + + +#ifdef ARDUINO_ARCH_AVR +class Ticker +{ + typedef void(*ticker_callback_t)(bool*); + +private: + bool is_attached = false; + uint32_t period = 0; + uint32_t last_tick = 0; + ticker_callback_t callback; + bool *callback_argument; +public: + void Tick() + { + if (is_attached && millis() - last_tick >= period) + { + callback(callback_argument); + last_tick = millis(); + } + } + + void detach() + { + this->is_attached = true; + } + + template void attach_ms(uint32_t milliseconds, void(*callback)(TArg), TArg arg) + { + this->period = milliseconds; + this->callback = callback; + this->callback_argument = arg; + this->is_attached = true; + } +}; +#endif + +//#ifdef ARDUINO_ARCH_ESP8266 +#include +#include +//#endif + +void tickerFlagHandle(volatile bool * flag); + +#ifdef _GLIBCXX_FUNCTIONAL +typedef std::function tscallback_t; +#else +typedef void(*tscallback_t)(void*); +#endif + +struct TickerSchedulerItem +{ + Ticker t; + bool flag = false; + tscallback_t cb; + void * cb_arg; + uint32_t period; + volatile bool is_used = false; +}; + +class TickerScheduler +{ +private: + uint8_t size; + TickerSchedulerItem *items = NULL; + + void handleTicker(tscallback_t, void *, bool * flag); + static void handleTickerFlag(bool * flag); + +public: + TickerScheduler(uint8_t size); + ~TickerScheduler(); + + bool add(uint8_t i, uint32_t period, tscallback_t, void *, boolean shouldFireNow = false); + bool remove(uint8_t i); + bool enable(uint8_t i); + bool disable(uint8_t i); + void enableAll(); + void disableAll(); + void update(); +}; + +#endif diff --git a/lib/TickerScheduler/example/blink/blink/blink.ino b/lib/TickerScheduler/example/blink/blink/blink.ino new file mode 100644 index 00000000..49afc470 --- /dev/null +++ b/lib/TickerScheduler/example/blink/blink/blink.ino @@ -0,0 +1,29 @@ +#include + +#define LED1 4 +#define LED2 5 + +TickerScheduler ts(2); + +void blink1() { + digitalWrite(LED1, !digitalRead(LED1)); +} + +void blink2() { + digitalWrite(LED2, !digitalRead(LED2)); +} + +void setup() { + pinMode(LED1, OUTPUT); + digitalWrite(LED1, LOW); + + pinMode(LED2, OUTPUT); + digitalWrite(LED2, LOW); + + ts.add(0, 1000, [&](void *) { blink1(); }, nullptr, true); + ts.add(1, 3000, [&](void *) { blink2(); }, nullptr, true); +} + +void loop() { + ts.update(); +} diff --git a/platformio.ini b/platformio.ini index edffafe0..84ab6931 100644 --- a/platformio.ini +++ b/platformio.ini @@ -17,9 +17,8 @@ lib_deps= ESP32Servo Bounce2 PubSubClient - iothubclientlonghaultests_bld ESP8266-StringCommand - + [env:esp32dev] platform = espressif32 board = esp32dev diff --git a/src/Cmd.cpp b/src/Cmd.cpp index 8708d58f..c9a0c566 100644 --- a/src/Cmd.cpp +++ b/src/Cmd.cpp @@ -1,11 +1,6 @@ -#include "Cmd.h" +#include "Global.h" -#include "Scenario.h" -#include "TimeUtils.h" -#include "Widgets.h" -#include "main.h" #include "push_pushingbox.h" -#include "set.h" void CMD_init() { sCmd.addCommand("button", button); @@ -74,8 +69,8 @@ void CMD_init() { sCmd.addCommand("inputTime", inputTime); sCmd.addCommand("timeSet", timeSet); - sCmd.addCommand("timerStart", timerStart); - sCmd.addCommand("timerStop", timerStop); + sCmd.addCommand("timerStart", timerStart_); + sCmd.addCommand("timerStop", timerStop_); sCmd.addCommand("text", text); sCmd.addCommand("textSet", textSet); diff --git a/src/FileSystem.cpp b/src/FileSystem.cpp index 2f2a8f61..92eb6f31 100644 --- a/src/FileSystem.cpp +++ b/src/FileSystem.cpp @@ -1,9 +1,4 @@ - -#include -#include - -#include "main.h" -#include "set.h" +#include "Global.h" void File_system_init() { Serial.begin(115200); diff --git a/src/Init.cpp b/src/Init.cpp index 7d507425..9a81f8a8 100644 --- a/src/Init.cpp +++ b/src/Init.cpp @@ -1,11 +1,4 @@ -#include "Init.h" - -#include "Logging.h" -#include "Scenario.h" -#include "Timers.h" -#include "Widgets.h" -#include "main.h" -#include "set.h" +#include "Global.h" void All_init() { server.on("/init", HTTP_GET, [](AsyncWebServerRequest* request) { @@ -73,7 +66,7 @@ void Device_init() { int array_sz = sizeof(sensors_reading_map) / sizeof(sensors_reading_map[0]); - for (int i = 0; i <= array_sz; i++) { + for (int i = 0; i < array_sz; i++) { sensors_reading_map[i] = 0; } diff --git a/src/Logging.cpp b/src/Logging.cpp index b23028ce..996786ce 100644 --- a/src/Logging.cpp +++ b/src/Logging.cpp @@ -1,10 +1,6 @@ -#include "Logging.h" +#include "Global.h" -#include "Mqtt.h" -#include "TimeUtils.h" -#include "Widgets.h" -#include "main.h" -#include "set.h" +void sendLogData(String file, String topic); #ifdef logging_enable //===============================================Логирование============================================================ @@ -105,7 +101,8 @@ void choose_log_date_and_send() { String all_line = logging_value_names_list; while (all_line.length() != 0) { String tmp = selectToMarker(all_line, ","); - sendLogData("log." + tmp + ".txt", tmp + "_ch"); + sendLogData("log." + tmp + ".txt", tmp + "_ch" + ); all_line = deleteBeforeDelimiter(all_line, ","); } all_line = ""; diff --git a/src/Mqtt.cpp b/src/Mqtt.cpp index 6a947ae8..feb78d41 100644 --- a/src/Mqtt.cpp +++ b/src/Mqtt.cpp @@ -1,10 +1,11 @@ -#include "Mqtt.h" +#include "Global.h" -#include - -#include "WiFi.h" -#include "main.h" -#include "set.h" +void callback(char* topic, byte* payload, unsigned int length); +String stateMQTT(); +void sendAllData(); +void sendAllWigets(); +void sendSTATUS(String topik, String state); +void outcoming_date(); //===============================================ИНИЦИАЛИЗАЦИЯ================================================ void MQTT_init() { @@ -217,7 +218,7 @@ void sendAllWigets() { } configFile.seek(0, SeekSet); //поставим курсор в начало файла while (configFile.position() != configFile.size()) { - String widget_to_send = configFile.readStringUntil("\r\n"); + String widget_to_send = configFile.readStringUntil('\n'); Serial.println("[V] " + widget_to_send); sendMQTT("config", widget_to_send); } diff --git a/src/Scenario.cpp b/src/Scenario.cpp index 85c023c6..12294285 100644 --- a/src/Scenario.cpp +++ b/src/Scenario.cpp @@ -1,7 +1,4 @@ -#include "Scenario.h" - -#include "main.h" -#include "set.h" +#include "Global.h" void handleScenario() { if (jsonReadStr(configSetup, "scenario") == "1") { diff --git a/src/Sensors.cpp b/src/Sensors.cpp index d5cc2319..890dc2a2 100644 --- a/src/Sensors.cpp +++ b/src/Sensors.cpp @@ -1,6 +1,4 @@ -#include "Sensors.h" - -#include "set.h" +#include "Global.h" void sensors_init() { ts.add( diff --git a/src/TimeUtils.cpp b/src/TimeUtils.cpp index b64a5a3f..4f7036d0 100644 --- a/src/TimeUtils.cpp +++ b/src/TimeUtils.cpp @@ -1,7 +1,4 @@ -#include "TimeUtils.h" - -#include "main.h" -#include "set.h" +#include "Global.h" void Time_Init() { server.on("/time", HTTP_GET, [](AsyncWebServerRequest* request) { diff --git a/src/Timers.cpp b/src/Timers.cpp index c2ff61b4..6c249891 100644 --- a/src/Timers.cpp +++ b/src/Timers.cpp @@ -1,8 +1,4 @@ -#include "Timers.h" - -#include "Scenario.h" -#include "main.h" -#include "set.h" +#include "Global.h" void Timer_countdown_init() { ts.add( @@ -33,7 +29,7 @@ void Timer_countdown_init() { nullptr, true); } -void timerStart() { +void timerStart_() { String number = sCmd.next(); String period_of_time = sCmd.next(); String type = sCmd.next(); @@ -64,7 +60,7 @@ void addTimer(String number, String time) { //Serial.println("ura"); } -void timerStop() { +void timerStop_() { String number = sCmd.next(); delTimer(number); } diff --git a/src/Upgrade.cpp b/src/Upgrade.cpp index 5a815aee..8d83c739 100644 --- a/src/Upgrade.cpp +++ b/src/Upgrade.cpp @@ -1,7 +1,4 @@ -#include "Upgrade.h" - -#include "main.h" -#include "set.h" +#include "Global.h" static const char* UPGRADE_URL PROGMEM = "http://91.204.228.124:1100/update/"; @@ -20,11 +17,11 @@ void initUpgrade() { String last_version = WiFi.status() == WL_CONNECTED ? getURL(getUpgradeUrl()) : ""; jsonWriteStr(configSetup, "last_version", last_version); - Serial.printf("[i] Last firmware version: %s\n", last_version); + Serial.printf("[i] Last firmware version: %s\n", last_version.c_str()); server.on("/check", HTTP_GET, [last_version](AsyncWebServerRequest* request) { upgrade_url = true; - Serial.printf("[i] Last firmware version: %s\n", last_version); + Serial.printf("[i] Last firmware version: %s\n", last_version.c_str()); String tmp = "{}"; if (WiFi.status() == WL_CONNECTED) { if (mb_4_of_memory) { diff --git a/src/Web_server.cpp b/src/Web_server.cpp index 98a6b2b5..3bb2070e 100644 --- a/src/Web_server.cpp +++ b/src/Web_server.cpp @@ -1,5 +1,4 @@ -#include "main.h" -#include "set.h" +#include "Global.h" void Web_server_init() { #ifdef OTA_enable diff --git a/src/WiFiUtils.cpp b/src/WiFiUtils.cpp index 15ebc535..ffb7b783 100644 --- a/src/WiFiUtils.cpp +++ b/src/WiFiUtils.cpp @@ -1,53 +1,64 @@ -#include "main.h" -#include "set.h" +#include "Global.h" -void WIFI_init() { +boolean RouterFind(String ssid); + +void WIFI_init() +{ // --------------------Получаем ssid password со страницы - server.on("/ssid", HTTP_GET, [](AsyncWebServerRequest* request) { - if (request->hasArg("ssid")) { + server.on("/ssid", HTTP_GET, [](AsyncWebServerRequest *request) { + if (request->hasArg("ssid")) + { jsonWriteStr(configSetup, "ssid", request->getParam("ssid")->value()); } - if (request->hasArg("password")) { + if (request->hasArg("password")) + { jsonWriteStr(configSetup, "password", request->getParam("password")->value()); } - saveConfig(); // Функция сохранения данных во Flash - request->send(200, "text/text", "OK"); // отправляем ответ о выполнении + saveConfig(); // Функция сохранения данных во Flash + request->send(200, "text/text", "OK"); // отправляем ответ о выполнении }); // --------------------Получаем ssidAP passwordAP со страницы - server.on("/ssidap", HTTP_GET, [](AsyncWebServerRequest* request) { - if (request->hasArg("ssidAP")) { + server.on("/ssidap", HTTP_GET, [](AsyncWebServerRequest *request) { + if (request->hasArg("ssidAP")) + { jsonWriteStr(configSetup, "ssidAP", request->getParam("ssidAP")->value()); } - if (request->hasArg("passwordAP")) { + if (request->hasArg("passwordAP")) + { jsonWriteStr(configSetup, "passwordAP", request->getParam("passwordAP")->value()); } - saveConfig(); // Функция сохранения данных во Flash - request->send(200, "text/text", "OK"); // отправляем ответ о выполнении + saveConfig(); // Функция сохранения данных во Flash + request->send(200, "text/text", "OK"); // отправляем ответ о выполнении }); // --------------------Получаем логин и пароль для web со страницы - server.on("/web", HTTP_GET, [](AsyncWebServerRequest* request) { - if (request->hasArg("web_login")) { + server.on("/web", HTTP_GET, [](AsyncWebServerRequest *request) { + if (request->hasArg("web_login")) + { jsonWriteStr(configSetup, "web_login", request->getParam("web_login")->value()); } - if (request->hasArg("web_pass")) { + if (request->hasArg("web_pass")) + { jsonWriteStr(configSetup, "web_pass", request->getParam("web_pass")->value()); } - saveConfig(); // Функция сохранения данных во Flash + saveConfig(); // Функция сохранения данных во Flash //Web_server_init(); - request->send(200, "text/text", "OK"); // отправляем ответ о выполнении + request->send(200, "text/text", "OK"); // отправляем ответ о выполнении }); - server.on("/restart", HTTP_GET, [](AsyncWebServerRequest* request) { - if (request->hasArg("device")) { - if (request->getParam("device")->value() == "ok") ESP.restart(); + server.on("/restart", HTTP_GET, [](AsyncWebServerRequest *request) { + if (request->hasArg("device")) + { + if (request->getParam("device")->value() == "ok") + ESP.restart(); } - request->send(200, "text/text", "OK"); // отправляем ответ о выполнении + request->send(200, "text/text", "OK"); // отправляем ответ о выполнении }); ROUTER_Connecting(); } -void ROUTER_Connecting() { +void ROUTER_Connecting() +{ led_blink("slow"); WiFi.mode(WIFI_STA); @@ -57,17 +68,22 @@ void ROUTER_Connecting() { String _password = jsonReadStr(configSetup, "password"); //WiFi.persistent(false); - if (_ssid == "" && _password == "") { + if (_ssid == "" && _password == "") + { WiFi.begin(); - } else { + } + else + { WiFi.begin(_ssid.c_str(), _password.c_str()); Serial.print("ssid: "); Serial.println(_ssid); } // Делаем проверку подключения до тех пор пока счетчик tries // не станет равен нулю или не получим подключение - while (--tries && WiFi.status() != WL_CONNECTED) { - if (WiFi.status() == WL_CONNECT_FAILED) { + while (--tries && WiFi.status() != WL_CONNECTED) + { + if (WiFi.status() == WL_CONNECT_FAILED) + { Serial.println("[E] password is not correct"); tries = 1; jsonWriteInt(optionJson, "pass_status", 1); @@ -77,9 +93,12 @@ void ROUTER_Connecting() { } Serial.println(); - if (WiFi.status() != WL_CONNECTED) { + if (WiFi.status() != WL_CONNECTED) + { StartAPMode(); - } else { + } + else + { Serial.println("[V] WiFi connected"); Serial.print("[V] IP address: http://"); Serial.print(WiFi.localIP()); @@ -90,7 +109,8 @@ void ROUTER_Connecting() { } } -bool StartAPMode() { +bool StartAPMode() +{ Serial.println("WiFi up AP"); WiFi.disconnect(); @@ -105,11 +125,13 @@ bool StartAPMode() { Serial.println(myIP); jsonWriteStr(configJson, "ip", myIP.toString()); - if (jsonReadInt(optionJson, "pass_status") != 1) { + if (jsonReadInt(optionJson, "pass_status") != 1) + { ts.add( - ROUTER_SEARCHING, 10 * 1000, [&](void*) { + ROUTER_SEARCHING, 10 * 1000, [&](void *) { Serial.println("->try find router"); - if (RouterFind(jsonReadStr(configSetup, "ssid"))) { + if (RouterFind(jsonReadStr(configSetup, "ssid"))) + { ts.remove(ROUTER_SEARCHING); WiFi.scanDelete(); ROUTER_Connecting(); @@ -121,43 +143,52 @@ bool StartAPMode() { return true; } -boolean RouterFind(String ssid) { +boolean RouterFind(String ssid) +{ + bool res = false; + int n = WiFi.scanComplete(); Serial.println("n = " + String(n)); - if (n == -2) { //Сканирование не было запущено, запускаем + if (n == -2) + { //Сканирование не было запущено, запускаем Serial.println("[WIFI][i] scanning has not been triggered, starting scanning"); - WiFi.scanNetworks(true, false); //async, show_hidden - return false; + WiFi.scanNetworks(true, false); //async, show_hidde } - if (n == -1) { //Сканирование все еще выполняется + else if (n == -1) + { //Сканирование все еще выполняется Serial.println("[WIFI][i] scanning still in progress"); - return false; } - if (n == 0) { //ни одна сеть не найдена + else if (n == 0) + { //ни одна сеть не найдена Serial.println("[WIFI][i] no any wifi sations, starting scanning"); WiFi.scanNetworks(true, false); - return false; } - if (n > 0) { - for (int i = 0; i <= n; i++) { - if (WiFi.SSID(i) == ssid) { + else if (n > 0) + { + for (int i = 0; i <= n; i++) + { + if (WiFi.SSID(i) == ssid) + { WiFi.scanDelete(); - return true; - } else { + res = true; + } + else + { Serial.print(i); Serial.print(")"); - //Serial.print(ssid); - //Serial.print("<=>"); - if (i == n) { + if (i == n) + { Serial.print(WiFi.SSID(i)); Serial.println("; "); - } else { + } + else + { Serial.print(WiFi.SSID(i)); Serial.println("; "); } } } WiFi.scanDelete(); - return false; } + return res; } diff --git a/src/Widgets.cpp b/src/Widgets.cpp index b9de8aa5..b7d841aa 100644 --- a/src/Widgets.cpp +++ b/src/Widgets.cpp @@ -1,7 +1,4 @@ -#include "Widgets.h" - -#include "main.h" -#include "set.h" +#include "Global.h" void createWidget(String widget_name, String page_name, String page_number, String file, String topic) { String widget; diff --git a/src/i2c_bus.cpp b/src/i2c_bus.cpp index e44155c8..b48335c6 100644 --- a/src/i2c_bus.cpp +++ b/src/i2c_bus.cpp @@ -1,7 +1,4 @@ -#include "i2c_bus.h" - -#include "main.h" -#include "set.h" +#include "Global.h" void do_i2c_scanning() { if (i2c_scanning) { diff --git a/src/iot_firmware.cpp b/src/iot_firmware.cpp index f265ebcd..b13f4b00 100644 --- a/src/iot_firmware.cpp +++ b/src/iot_firmware.cpp @@ -1,7 +1,4 @@ -#include "Cmd.h" -#include "FileSystem.h" -#include "Sensors.h" -#include "set.h" +#include "Global.h" void setup() { File_system_init(); diff --git a/src/main.cpp b/src/main.cpp index 7b923734..025f81f1 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,6 +1,4 @@ -#include "main.h" - -#include "set.h" +#include "Global.h" String jsonReadStr(String& json, String name) { DynamicJsonBuffer jsonBuffer; @@ -61,6 +59,9 @@ void saveConfig() { writeFile("config.json", configSetup); } +//============================================================================================================ +//=============================================STRING=================================================== + // --------Выделяем строку от конца строки до маркера----------------------------------------------------------- String selectToMarkerLast(String str, String found) { int p = str.lastIndexOf(found); @@ -121,25 +122,24 @@ int count(String str, String found) { return i; // Достигли пустой строки и ничего не нашли } + boolean isDigitStr(String str) { - if (str.length() == 1) { - return Digit(str); - } - if (str.length() > 1) { - for (int i = 0; i < str.length(); i++) { - if (!Digit(String(str.charAt(i)))) return false; + for (int i = 0; i < str.length(); i++) { + if (!isDigit(str.charAt(i))) { + return false; } - return true; - } -} -boolean Digit(String str) { - if (str == "0" || str == "1" || str == "2" || str == "3" || str == "4" || str == "5" || str == "6" || str == "7" || str == "8" || str == "9") { - return true; - } else { - return false; } + return str.length(); } +// boolean digit(String str) { +// if (str == "0" || str == "1" || str == "2" || str == "3" || str == "4" || str == "5" || str == "6" || str == "7" || str == "8" || str == "9") { +// return true; +// } else { +// return false; +// } +// } + String getURL(String urls) { String answer = ""; HTTPClient http; @@ -153,10 +153,10 @@ String getURL(String urls) { http.end(); return answer; } -//=================================================================================================================== +//=================================================================================================================== //===========================================FILES=================================================================== // ------------- Добавление файла ----------------------------------------------------------------------------------- -String safeDataToFile(String data, String Folder) { +void safeDataToFile(String data, String Folder) { //String fileName = GetDate(); String fileName; fileName.toLowerCase(); @@ -168,6 +168,7 @@ String safeDataToFile(String data, String Folder) { Serial.println(fileName); jsonWriteStr(configJson, "test", fileName); } + // ------------- Чтение файла в строку ------------------------------------------------------------------------------- String readFile(String fileName, size_t len) { File configFile = SPIFFS.open("/" + fileName, "r"); diff --git a/src/udp.cpp b/src/udp.cpp index 7b5d6928..0ede7729 100644 --- a/src/udp.cpp +++ b/src/udp.cpp @@ -1,3 +1,8 @@ +#include "Global.h" + +void handleUdp_esp32(); +void add_dev_in_list(String fileName, String id, String dev_name, String ip); + #ifdef UDP_enable void UDP_init() { server.on("/udp", HTTP_GET, [](AsyncWebServerRequest * request) {