выпадающий список сетей wifi

This commit is contained in:
Dmitry Borisenko
2022-02-05 02:13:56 +01:00
parent 6966a66ef0
commit f2f94ba071
11 changed files with 55 additions and 14 deletions

5
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,5 @@
{
"files.associations": {
"ratio": "cpp"
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -2,8 +2,8 @@
"name": "IoTmanager",
"apssid": "IoTmanager",
"appass": "",
"routerssid": "rise",
"routerpass": "hostel3333",
"routerssid": "WLAN1-Y1GYEF",
"routerpass": "2egY69YTA8DDR7En",
"timezone": 1,
"ntp": "pool.ntp.org",
"weblogin": "admin",

View File

@@ -86,6 +86,9 @@ extern String paramsHeapJson;
extern String orderBuf;
extern String eventBuf;
// wifi
extern String ssidListJson;
// Mqtt
extern String mqttServer;
extern int mqttPort;

View File

@@ -1,5 +1,6 @@
#pragma once
#include "Global.h"
#include "Utils/WiFiUtils.h"
#ifdef STANDARD_WEB_SOCKETS
extern void standWebSocketsInit();
@@ -9,8 +10,10 @@ extern void hexdump(const void* mem, uint32_t len, uint8_t cols);
#endif
#endif
void sendFileToWs5(const char* filename, uint8_t num, size_t frameSize);
void sendFileToWs(const char* filename, uint8_t num, size_t frameSize);
void publishStatusWs(const String& topic, const String& data);
void sendStringToWs(const String& msg, uint8_t num, String name);
// void sendMark(const char* filename, const char* mark, uint8_t num);
// void sendFileToWs3(const String& filename, uint8_t num);
// void sendFileToWs4(const String& filename, uint8_t num);

View File

@@ -17,6 +17,7 @@ void globalVarsSync() {
mqttRootDevice = mqttPrefix + "/" + chipId;
jsonWriteStr_(settingsFlashJson, "root", mqttRootDevice);
saveSettingsFlashJson();
jsonWriteStr_(ssidListJson, "ssid", "");
}
void saveSettingsFlashJson() {

View File

@@ -38,6 +38,9 @@ String paramsHeapJson = "{}"; //переменная в которой хр
String orderBuf = "";
String eventBuf = "";
// wifi
String ssidListJson = "{}";
// Mqtt
String mqttServer = "";
int mqttPort = 0;

View File

@@ -21,6 +21,9 @@ void setup() {
//подключаемся к роутеру
routerConnect();
//запустим один раз асинхронное сканирование сетей wifi для веба
RouterFind(jsonReadStr(settingsFlashJson, F("routerssid")));
//инициализация асинхронного веб сервера и веб сокетов
#ifdef ASYNC_WEB_SERVER
asyncWebServerInit();

View File

@@ -31,27 +31,36 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload, size_t length)
}
// dashboard===================================================================
if (headerStr == "/") {
sendFileToWs5("/layout.json", num, 1024);
sendFileToWs("/layout.json", num, 1024);
}
if (headerStr == "/tuoyal") {
writeFileUint8tByFrames("layout.json", payload, length, headerLenth, 256);
}
// configutation===============================================================
if (headerStr == "/config") {
sendFileToWs5("/items.json", num, 1024);
sendFileToWs5("/widgets.json", num, 1024);
sendFileToWs5("/config.json", num, 1024);
sendFileToWs5("/settings.json", num, 1024);
sendFileToWs("/items.json", num, 1024);
sendFileToWs("/widgets.json", num, 1024);
sendFileToWs("/config.json", num, 1024);
sendFileToWs("/settings.json", num, 1024);
}
if (headerStr == "/gifnoc") {
writeFileUint8tByFrames("config.json", payload, length, headerLenth, 256);
}
// connection===================================================================
if (headerStr == "/connec") {
sendFileToWs5("/settings.json", num, 1024);
sendFileToWs("/settings.json", num, 1024);
if (RouterFind(jsonReadStr(settingsFlashJson, F("routerssid")))) {
standWebSocket.sendTXT(num, ssidListJson);
}
}
if (headerStr == "/scan") {
if (RouterFind(jsonReadStr(settingsFlashJson, F("routerssid")))) {
standWebSocket.sendTXT(num, ssidListJson);
}
}
if (headerStr == "/cennoc") {
writeFileUint8tByFrames("settings.json", payload, length, headerLenth, 256);
settingsFlashJson = readFile(F("settings.json"), 4096);
}
} break;
@@ -109,7 +118,7 @@ void hexdump(const void* mem, uint32_t len, uint8_t cols = 16) {
#endif
//посылка данных из файла в бинарном виде
void sendFileToWs5(const char* filename, uint8_t num, size_t frameSize) {
void sendFileToWs(const char* filename, uint8_t num, size_t frameSize) {
standWebSocket.sendTXT(num, "/st" + String(filename));
String path = filepath(filename);
auto file = FileFS.open(path, "r");
@@ -129,14 +138,25 @@ void sendFileToWs5(const char* filename, uint8_t num, size_t frameSize) {
standWebSocket.sendTXT(num, "/end" + String(filename));
}
//публикация статус сообщений
void publishStatusWs(const String& topic, const String& data) {
String path = mqttRootDevice + "/" + topic; //+ "/status";
String path = mqttRootDevice + "/" + topic; //+ "/status";
String json = "{}";
jsonWriteStr(json, "status", data);
jsonWriteStr(json, "topic", path);
standWebSocket.broadcastTXT(json);
}
//посылка данных из string
void sendStringToWs(const String& msg, uint8_t num, String name) {
standWebSocket.sendTXT(num, "/st" + String(name));
size_t size = msg.length();
char dataArray[size];
msg.toCharArray(dataArray, size);
standWebSocket.sendBIN(num, (uint8_t*)dataArray, size);
standWebSocket.sendTXT(num, "/end" + String(name));
}
// void sendMark(const char* filename, const char* mark, uint8_t num) {
// char outChar[strlen(filename) + strlen(mark) + 1];
// strcpy(outChar, mark);

View File

@@ -103,9 +103,12 @@ boolean RouterFind(String ssid) {
if (WiFi.SSID(i) == ssid) {
res = true;
}
SerialPrint("i", "WIFI", (res ? "*" : "") + String(i, DEC) + ") " + WiFi.SSID(i));
// SerialPrint("i", "WIFI", (res ? "*" : "") + String(i, DEC) + ") " + WiFi.SSID(i));
jsonWriteStr_(ssidListJson, String(i), WiFi.SSID(i));
// String(WiFi.RSSI(i)
}
}
WiFi.scanDelete();
return res;
}