From 9bb40e384617599f5b753563d2bc99e3b889b2b4 Mon Sep 17 00:00:00 2001 From: mit4el Date: Sun, 1 Oct 2023 19:55:09 +0300 Subject: [PATCH] =?UTF-8?q?wifi=20array=20=D1=81=20=D0=BE=D0=B1=D1=80?= =?UTF-8?q?=D0=B0=D1=82=D0=BD=D0=BE=D0=B9=20=D1=81=D0=BE=D0=B2=D0=BC=D0=B5?= =?UTF-8?q?=D1=81=D1=82=D0=B8=D0=BC=D0=BE=D1=81=D1=82=D1=8C=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/utils/JsonUtils.h | 2 +- include/utils/WiFiUtils.h | 4 +- src/WsServer.cpp | 2 +- src/utils/JsonUtils.cpp | 240 ++++++++++++++++++++++++++------------ src/utils/WiFiUtils.cpp | 22 ++-- 5 files changed, 182 insertions(+), 88 deletions(-) diff --git a/include/utils/JsonUtils.h b/include/utils/JsonUtils.h index dd4c882d..2d03ce8c 100644 --- a/include/utils/JsonUtils.h +++ b/include/utils/JsonUtils.h @@ -15,7 +15,7 @@ extern bool jsonRead(const String& json, String key, float& value, bool e = true extern bool jsonRead(const String& json, String key, String& value, bool e = true); extern bool jsonRead(const String& json, String key, bool& value, bool e = true); extern bool jsonRead(const String& json, String key, int& value, bool e = true); -extern bool jsonReadArray(const String& json, String key, JsonArray& jArray, bool e = true); +extern bool jsonReadArray(const String& json, String key, std::vector& jArray, bool e = true); extern String jsonReadStr(const String& json, String name, bool e = true); extern int jsonReadInt(const String& json, String name, bool e = true); diff --git a/include/utils/WiFiUtils.h b/include/utils/WiFiUtils.h index ba125e99..c4e43850 100644 --- a/include/utils/WiFiUtils.h +++ b/include/utils/WiFiUtils.h @@ -2,11 +2,11 @@ #include "Global.h" #include "MqttClient.h" - +#include // boolean isNetworkActive(); inline boolean isNetworkActive() {return WiFi.status() == WL_CONNECTED;}; void routerConnect(); bool startAPMode(); -boolean RouterFind(JsonArray jArray); +boolean RouterFind(std::vector jArray); uint8_t RSSIquality(); extern void wifiSignalInit(); diff --git a/src/WsServer.cpp b/src/WsServer.cpp index 4b5d83a0..b8e07c13 100644 --- a/src/WsServer.cpp +++ b/src/WsServer.cpp @@ -176,7 +176,7 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload, // запуск асинхронного сканирования wifi сетей при нажатии выпадающего // списка if (headerStr == "/scan|") { - JsonArray jArray; + std::vector jArray; jsonReadArray(settingsFlashJson, "routerssid", jArray); RouterFind(jArray); sendStringToWs("ssidli", ssidListHeapJson, num); diff --git a/src/utils/JsonUtils.cpp b/src/utils/JsonUtils.cpp index f777d3f5..8e7d2f5e 100644 --- a/src/utils/JsonUtils.cpp +++ b/src/utils/JsonUtils.cpp @@ -2,26 +2,34 @@ #include "utils/FileUtils.h" // new================================================================================ -String jsonReadStrDoc(DynamicJsonDocument& doc, String name) { +String jsonReadStrDoc(DynamicJsonDocument &doc, String name) +{ return doc[name].as(); } -void jsonWriteStrDoc(DynamicJsonDocument& doc, String name, String value) { +void jsonWriteStrDoc(DynamicJsonDocument &doc, String name, String value) +{ doc[name] = value; } // new============================================================================== -bool jsonRead(const String& json, String key, long& value, bool e) { +bool jsonRead(const String &json, String key, long &value, bool e) +{ DynamicJsonDocument doc(JSON_BUFFER_SIZE); DeserializationError error = deserializeJson(doc, json); - if (error) { - if (e) { + if (error) + { + if (e) + { SerialPrint("E", F("jsonRead"), error.f_str()); jsonErrorDetected(); } return false; - } else if (!doc.containsKey(key)) { - if (e) { + } + else if (!doc.containsKey(key)) + { + if (e) + { SerialPrint("E", F("jsonRead"), key + " missing in " + json); jsonErrorDetected(); } @@ -31,17 +39,23 @@ bool jsonRead(const String& json, String key, long& value, bool e) { return true; } -bool jsonRead(const String& json, String key, float& value, bool e) { +bool jsonRead(const String &json, String key, float &value, bool e) +{ DynamicJsonDocument doc(JSON_BUFFER_SIZE); DeserializationError error = deserializeJson(doc, json); - if (error) { - if (e) { + if (error) + { + if (e) + { SerialPrint("E", F("jsonRead"), error.f_str()); jsonErrorDetected(); } return false; - } else if (!doc.containsKey(key)) { - if (e) { + } + else if (!doc.containsKey(key)) + { + if (e) + { SerialPrint("E", F("jsonRead"), key + " missing in " + json); jsonErrorDetected(); } @@ -51,17 +65,23 @@ bool jsonRead(const String& json, String key, float& value, bool e) { return true; } -bool jsonRead(const String& json, String key, String& value, bool e) { +bool jsonRead(const String &json, String key, String &value, bool e) +{ DynamicJsonDocument doc(JSON_BUFFER_SIZE); DeserializationError error = deserializeJson(doc, json); - if (error) { - if (e) { + if (error) + { + if (e) + { SerialPrint("E", F("jsonRead"), error.f_str()); jsonErrorDetected(); } return false; - } else if (!doc.containsKey(key)) { - if (e) { + } + else if (!doc.containsKey(key)) + { + if (e) + { SerialPrint("E", F("jsonRead"), key + " missing in " + json); jsonErrorDetected(); } @@ -71,24 +91,31 @@ bool jsonRead(const String& json, String key, String& value, bool e) { return true; } -bool jsonRead(const String& json, String key, bool& value, bool e) { +bool jsonRead(const String &json, String key, bool &value, bool e) +{ int lvalue = value; bool ret = jsonRead(json, key, lvalue, e); value = lvalue; return ret; } -bool jsonRead(const String& json, String key, int& value, bool e) { +bool jsonRead(const String &json, String key, int &value, bool e) +{ DynamicJsonDocument doc(JSON_BUFFER_SIZE); DeserializationError error = deserializeJson(doc, json); - if (error) { - if (e) { + if (error) + { + if (e) + { SerialPrint("E", F("jsonRead"), error.f_str()); jsonErrorDetected(); } return false; - } else if (!doc.containsKey(key)) { - if (e) { + } + else if (!doc.containsKey(key)) + { + if (e) + { SerialPrint("E", F("jsonRead"), key + " missing in " + json); jsonErrorDetected(); } @@ -98,33 +125,59 @@ bool jsonRead(const String& json, String key, int& value, bool e) { return true; } -bool jsonReadArray(const String& json, String key, JsonArray& jArray, bool e) { +bool jsonReadArray(const String &json, String key, std::vector &jArray, bool e) +{ DynamicJsonDocument doc(JSON_BUFFER_SIZE); DeserializationError error = deserializeJson(doc, json); - if (error) { - if (e) { + if (error) + { + if (e) + { SerialPrint("E", F("jsonReadArray"), error.f_str()); jsonErrorDetected(); } return false; - } else if (!doc.containsKey(key)) { - if (e) { + } + else if (!doc.containsKey(key)) + { + if (e) + { SerialPrint("E", F("jsonReadArray"), key + " missing in " + json); jsonErrorDetected(); } return false; } - jArray = doc[key]; + // SerialPrint("E", F("jsonReadArray"), key + " doc " + doc[key].as()); + if (doc[key].is()) + { + for (int8_t i = 0; i < doc[key].size(); i++) + jArray.push_back(doc[key][i].as()); + // SerialPrint("E", F("jsonReadArray"), "isArray"+key + " doc " + doc[key].as()); + } + else + { + jArray.push_back(doc[key].as()); + // DynamicJsonDocument docArr(JSON_BUFFER_SIZE/5); + // jArray = doc[key].as(); + // String tmp = doc[key].as(); + // jArray.add("dsdsd"); + // SerialPrint("E", F("jsonReadArray"), "notArray"+key + " doc " + doc[key].as()); + // SerialPrint("E", F("jsonReadArray"), "count: " + String(jArray.size()) +" key: " + key + " arr " + jArray[0]); + } + // SerialPrint("E", F("jsonReadArray"), "count: " + String(jArray.size()) +" key: " + key + " doc " + jArray[0].as()); return true; } // new============================================================================== -bool jsonWriteStr_(String& json, const String& key, const String& value, bool e) { +bool jsonWriteStr_(String &json, const String &key, const String &value, bool e) +{ bool ret = true; DynamicJsonDocument doc(JSON_BUFFER_SIZE); DeserializationError error = deserializeJson(doc, json); - if (error) { - if (e) { + if (error) + { + if (e) + { SerialPrint("E", F("jsonWrite"), error.f_str()); jsonErrorDetected(); } @@ -136,12 +189,15 @@ bool jsonWriteStr_(String& json, const String& key, const String& value, bool e) return ret; } -bool jsonWriteBool_(String& json, const String& key, bool value, bool e) { +bool jsonWriteBool_(String &json, const String &key, bool value, bool e) +{ bool ret = true; DynamicJsonDocument doc(JSON_BUFFER_SIZE); DeserializationError error = deserializeJson(doc, json); - if (error) { - if (e) { + if (error) + { + if (e) + { SerialPrint("E", F("jsonWrite"), error.f_str()); jsonErrorDetected(); } @@ -153,12 +209,15 @@ bool jsonWriteBool_(String& json, const String& key, bool value, bool e) { return ret; } -bool jsonWriteInt_(String& json, const String& key, int value, bool e) { +bool jsonWriteInt_(String &json, const String &key, int value, bool e) +{ bool ret = true; DynamicJsonDocument doc(JSON_BUFFER_SIZE); DeserializationError error = deserializeJson(doc, json); - if (error) { - if (e) { + if (error) + { + if (e) + { SerialPrint("E", F("jsonWrite"), error.f_str()); jsonErrorDetected(); } @@ -170,12 +229,15 @@ bool jsonWriteInt_(String& json, const String& key, int value, bool e) { return ret; } -bool jsonWriteFloat_(String& json, const String &key, float value, bool e) { +bool jsonWriteFloat_(String &json, const String &key, float value, bool e) +{ bool ret = true; DynamicJsonDocument doc(JSON_BUFFER_SIZE); DeserializationError error = deserializeJson(doc, json); - if (error) { - if (e) { + if (error) + { + if (e) + { SerialPrint("E", F("jsonWrite"), error.f_str()); jsonErrorDetected(); } @@ -187,24 +249,29 @@ bool jsonWriteFloat_(String& json, const String &key, float value, bool e) { return ret; } -void writeUint8tValueToJsonString(uint8_t* payload, size_t length, size_t headerLenth, String& json) { +void writeUint8tValueToJsonString(uint8_t *payload, size_t length, size_t headerLenth, String &json) +{ String payloadStr; payloadStr.reserve(length + 1); - for (size_t i = headerLenth; i < length; i++) { + for (size_t i = headerLenth; i < length; i++) + { payloadStr += (char)payload[i]; } jsonMergeObjects(json, payloadStr); } -bool jsonMergeObjects(String& json1, String& json2, bool e) { +bool jsonMergeObjects(String &json1, String &json2, bool e) +{ bool ret = true; DynamicJsonDocument doc1(JSON_BUFFER_SIZE); DeserializationError error1 = deserializeJson(doc1, json1); DynamicJsonDocument doc2(JSON_BUFFER_SIZE); DeserializationError error2 = deserializeJson(doc2, json2); jsonMergeDocs(doc1.as(), doc2.as()); - if (error1 || error2) { - if (e) { + if (error1 || error2) + { + if (e) + { SerialPrint("E", F("json"), "jsonMergeObjects error"); jsonErrorDetected(); } @@ -215,18 +282,23 @@ bool jsonMergeObjects(String& json1, String& json2, bool e) { return ret; } -void jsonMergeDocs(JsonObject dest, JsonObjectConst src) { - for (auto kvp : src) { +void jsonMergeDocs(JsonObject dest, JsonObjectConst src) +{ + for (auto kvp : src) + { dest[kvp.key()] = kvp.value(); } } // depricated====================================================================== -String jsonReadStr(const String& json, String name, bool e) { +String jsonReadStr(const String &json, String name, bool e) +{ DynamicJsonDocument doc(JSON_BUFFER_SIZE); DeserializationError error = deserializeJson(doc, json); - if (error) { - if (e) { + if (error) + { + if (e) + { SerialPrint("E", F("jsonRead"), error.f_str()); jsonErrorDetected(); } @@ -234,11 +306,14 @@ String jsonReadStr(const String& json, String name, bool e) { return doc[name].as(); } -boolean jsonReadBool(const String& json, String name, bool e) { +boolean jsonReadBool(const String &json, String name, bool e) +{ DynamicJsonDocument doc(JSON_BUFFER_SIZE); DeserializationError error = deserializeJson(doc, json); - if (error) { - if (e) { + if (error) + { + if (e) + { SerialPrint("E", F("jsonRead"), error.f_str()); jsonErrorDetected(); } @@ -246,11 +321,14 @@ boolean jsonReadBool(const String& json, String name, bool e) { return doc[name].as(); } -int jsonReadInt(const String& json, String name, bool e) { +int jsonReadInt(const String &json, String name, bool e) +{ DynamicJsonDocument doc(JSON_BUFFER_SIZE); DeserializationError error = deserializeJson(doc, json); - if (error) { - if (e) { + if (error) + { + if (e) + { SerialPrint("E", F("jsonRead"), error.f_str()); jsonErrorDetected(); } @@ -258,11 +336,14 @@ int jsonReadInt(const String& json, String name, bool e) { return doc[name].as(); } -long int jsonReadLInt(const String& json, String name, bool e) { +long int jsonReadLInt(const String &json, String name, bool e) +{ DynamicJsonDocument doc(JSON_BUFFER_SIZE); DeserializationError error = deserializeJson(doc, json); - if (error) { - if (e) { + if (error) + { + if (e) + { SerialPrint("E", F("jsonRead"), error.f_str()); jsonErrorDetected(); } @@ -271,11 +352,14 @@ long int jsonReadLInt(const String& json, String name, bool e) { } // depricated======================================================================== -String jsonWriteStr(String& json, String name, String value, bool e) { +String jsonWriteStr(String &json, String name, String value, bool e) +{ DynamicJsonDocument doc(JSON_BUFFER_SIZE); DeserializationError error = deserializeJson(doc, json); - if (error) { - if (e) { + if (error) + { + if (e) + { SerialPrint("E", F("jsonWrite"), error.f_str()); jsonErrorDetected(); } @@ -286,11 +370,14 @@ String jsonWriteStr(String& json, String name, String value, bool e) { return json; } -String jsonWriteBool(String& json, String name, boolean value, bool e) { +String jsonWriteBool(String &json, String name, boolean value, bool e) +{ DynamicJsonDocument doc(JSON_BUFFER_SIZE); DeserializationError error = deserializeJson(doc, json); - if (error) { - if (e) { + if (error) + { + if (e) + { SerialPrint("E", F("jsonWrite"), error.f_str()); jsonErrorDetected(); } @@ -301,11 +388,14 @@ String jsonWriteBool(String& json, String name, boolean value, bool e) { return json; } -String jsonWriteInt(String& json, String name, int value, bool e) { +String jsonWriteInt(String &json, String name, int value, bool e) +{ DynamicJsonDocument doc(JSON_BUFFER_SIZE); DeserializationError error = deserializeJson(doc, json); - if (error) { - if (e) { + if (error) + { + if (e) + { SerialPrint("E", F("jsonWrite"), error.f_str()); jsonErrorDetected(); } @@ -316,11 +406,14 @@ String jsonWriteInt(String& json, String name, int value, bool e) { return json; } -String jsonWriteFloat(String& json, String name, float value, bool e) { +String jsonWriteFloat(String &json, String name, float value, bool e) +{ DynamicJsonDocument doc(JSON_BUFFER_SIZE); DeserializationError error = deserializeJson(doc, json); - if (error) { - if (e) { + if (error) + { + if (e) + { SerialPrint("E", F("jsonWrite"), error.f_str()); jsonErrorDetected(); } @@ -331,7 +424,8 @@ String jsonWriteFloat(String& json, String name, float value, bool e) { return json; } -void jsonErrorDetected() { +void jsonErrorDetected() +{ // пример как отправить ошибку с количеством // jsonWriteInt(errorsHeapJson, F("jse2"), 1); // int number = jsonReadInt(errorsHeapJson, F("jse2n")); diff --git a/src/utils/WiFiUtils.cpp b/src/utils/WiFiUtils.cpp index 14a4245e..cf1dc846 100644 --- a/src/utils/WiFiUtils.cpp +++ b/src/utils/WiFiUtils.cpp @@ -11,8 +11,8 @@ void routerConnect() WiFi.mode(WIFI_STA); byte triesOne = TRIESONE; - JsonArray _ssidList; - JsonArray _passwordList; + std::vector _ssidList; + std::vector _passwordList; jsonReadArray(settingsFlashJson, "routerssid", _ssidList); jsonReadArray(settingsFlashJson, "routerpass", _passwordList); if (_ssidList.size() > 1) @@ -24,7 +24,7 @@ void routerConnect() } else { - WiFi.begin(_ssidList[0].as(), _passwordList[0].as()); + WiFi.begin(_ssidList[0].c_str(), _passwordList[0].c_str()); #ifdef ESP32 WiFi.setTxPower(WIFI_POWER_19_5dBm); #else @@ -34,11 +34,11 @@ void routerConnect() String _password; for (int8_t i = 0; i < _ssidList.size(); i++) { - _ssid = _ssid + _ssidList[i].as() + "; "; + _ssid = _ssid + _ssidList[i] + "; "; } for (int8_t i = 0; i < _passwordList.size(); i++) { - _password = _password + _passwordList[i].as() + "; "; + _password = _password + _passwordList[i] + "; "; } SerialPrint("i", "WIFI", "ssid list: " + _ssid); SerialPrint("i", "WIFI", "pass list: " + _password); @@ -48,9 +48,9 @@ void routerConnect() triesOne = TRIESONE; if (WiFi.status() == WL_CONNECTED) break; - WiFi.begin(_ssidList[i].as(), _passwordList[i].as()); - SerialPrint("i", "WIFI", "ssid connect: " + _ssidList[i].as()); - SerialPrint("i", "WIFI", "pass connect: " + _passwordList[i].as()); + WiFi.begin(_ssidList[i].c_str(), _passwordList[i].c_str()); + SerialPrint("i", "WIFI", "ssid connect: " + _ssidList[i]); + SerialPrint("i", "WIFI", "pass connect: " + _passwordList[i]); while (--triesOne && WiFi.status() != WL_CONNECTED) { // SerialPrint("i", "WIFI", ": " + String((int)WiFi.status())); @@ -109,11 +109,11 @@ bool startAPMode() WIFI_SCAN, 30 * 1000, [&](void *) { - JsonArray jArray; + std::vector jArray; jsonReadArray(settingsFlashJson, "routerssid", jArray); for (int8_t i = 0; i < jArray.size(); i++) { - SerialPrint("i", "WIFI", "scanning for " + jArray[i].as()); + SerialPrint("i", "WIFI", "scanning for " + jArray[i]); } if (RouterFind(jArray)) { @@ -127,7 +127,7 @@ bool startAPMode() return true; } -boolean RouterFind(JsonArray jArray) +boolean RouterFind(std::vector jArray) { bool res = false; int n = WiFi.scanComplete();