mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-26 22:22:16 +03:00
452 исправлен баг пропадания виджетов в приложении
This commit is contained in:
Binary file not shown.
Binary file not shown.
@@ -4,12 +4,12 @@
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1" />
|
||||
|
||||
<title>IoT Manager 4.5.1</title>
|
||||
<title>IoT Manager 4.5.2</title>
|
||||
|
||||
<link rel="icon" type="image/png" href="/favicon.ico" />
|
||||
<link rel="stylesheet" href="/build/bundle.css?4511" />
|
||||
<link rel="stylesheet" href="/build/bundle.css?4520" />
|
||||
|
||||
<script defer src="/build/bundle.js?4511"></script>
|
||||
<script defer src="/build/bundle.js?4520"></script>
|
||||
</head>
|
||||
|
||||
<body></body>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#include "BuildTime.h"
|
||||
|
||||
// Версия прошивки
|
||||
#define FIRMWARE_VERSION 451
|
||||
#define FIRMWARE_VERSION 452
|
||||
|
||||
#ifdef esp8266_1mb_ota
|
||||
#define FIRMWARE_NAME "esp8266_1mb_ota"
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
#include "EspFileSystem.h"
|
||||
#include "Global.h"
|
||||
|
||||
bool fileSystemInit() {
|
||||
bool fileSystemInit()
|
||||
{
|
||||
if (!FileFS.begin()) {
|
||||
SerialPrint(F("E"), F("FS"), F("Init ERROR, may be FS was not flashed"));
|
||||
return false;
|
||||
@@ -10,7 +11,8 @@ bool fileSystemInit() {
|
||||
return true;
|
||||
}
|
||||
|
||||
void globalVarsSync() {
|
||||
void globalVarsSync()
|
||||
{
|
||||
settingsFlashJson = readFile(F("settings.json"), 4096);
|
||||
settingsFlashJson.replace("\r\n", "");
|
||||
|
||||
@@ -18,44 +20,42 @@ void globalVarsSync() {
|
||||
valuesFlashJson.replace("\r\n", "");
|
||||
|
||||
mqttPrefix = jsonReadStr(settingsFlashJson, F("mqttPrefix"));
|
||||
mqttRootDevice = mqttPrefix + "/" + chipId;
|
||||
jsonWriteStr_(settingsFlashJson, "root", mqttRootDevice);
|
||||
jsonWriteStr_(settingsFlashJson, "id", chipId);
|
||||
|
||||
// jsonWriteStr_(errorsHeapJson, "errors_", ""); //метка для парсинга удалить
|
||||
// jsonWriteStr_(ssidListHeapJson, "ssids_", ""); //метка для парсинга удалить
|
||||
mqttRootDevice = mqttPrefix + "/" + chipId;
|
||||
|
||||
// это не используется - удалить в последствии
|
||||
jsonWriteStr_(settingsFlashJson, "root", mqttRootDevice);
|
||||
}
|
||||
|
||||
// к удалению. не используется
|
||||
// String getParamsJson() {
|
||||
// String json;
|
||||
// serializeJson(*getLocalItemsAsJSON(), json);
|
||||
// jsonWriteStr_(json, "params", "");
|
||||
// return json;
|
||||
// }
|
||||
|
||||
void syncSettingsFlashJson() {
|
||||
void syncSettingsFlashJson()
|
||||
{
|
||||
writeFile(F("settings.json"), settingsFlashJson);
|
||||
}
|
||||
|
||||
void syncValuesFlashJson() {
|
||||
void syncValuesFlashJson()
|
||||
{
|
||||
writeFile(F("values.json"), valuesFlashJson);
|
||||
}
|
||||
|
||||
const String getChipId() {
|
||||
const String getChipId()
|
||||
{
|
||||
return String(ESP_getChipId()) + "-" + String(getFlashChipIdNew()); // + "v" + String(FIRMWARE_VERSION);
|
||||
}
|
||||
|
||||
void setChipId() {
|
||||
void setChipId()
|
||||
{
|
||||
chipId = getChipId();
|
||||
SerialPrint("i", "System", "id: " + chipId);
|
||||
}
|
||||
|
||||
const String getUniqueId(const char* name) {
|
||||
const String getUniqueId(const char* name)
|
||||
{
|
||||
return String(name) + getMacAddress();
|
||||
}
|
||||
|
||||
const String getWebVersion() {
|
||||
const String getWebVersion()
|
||||
{
|
||||
String text = readFile("/index.html", 2000);
|
||||
text = selectFromMarkerToMarker(text, "title", 1);
|
||||
text = selectFromMarkerToMarker(text, " ", 2);
|
||||
@@ -64,7 +64,8 @@ const String getWebVersion() {
|
||||
return text;
|
||||
}
|
||||
|
||||
uint32_t ESP_getChipId(void) {
|
||||
uint32_t ESP_getChipId(void)
|
||||
{
|
||||
#ifdef ESP32
|
||||
uint32_t id = 0;
|
||||
for (uint32_t i = 0; i < 17; i = i + 8) {
|
||||
@@ -78,7 +79,8 @@ uint32_t ESP_getChipId(void) {
|
||||
|
||||
// устарела используем новую функцию ниже
|
||||
#ifndef esp32s2_4mb
|
||||
uint32_t ESP_getFlashChipId(void) {
|
||||
uint32_t ESP_getFlashChipId(void)
|
||||
{
|
||||
#ifdef ESP32
|
||||
// Нет аналогичной (без доп.кода) функций в 32
|
||||
// надо использовать другой id - варианты есть
|
||||
@@ -92,7 +94,8 @@ uint32_t ESP_getFlashChipId(void) {
|
||||
// https://github.com/espressif/arduino-esp32/issues/6945#issuecomment-1199900892
|
||||
// получение flash ch id из проекта esp easy
|
||||
|
||||
uint32_t getFlashChipIdNew() {
|
||||
uint32_t getFlashChipIdNew()
|
||||
{
|
||||
// Cache since size does not change
|
||||
static uint32_t flashChipId = 0;
|
||||
|
||||
@@ -114,9 +117,10 @@ uint32_t getFlashChipIdNew() {
|
||||
return flashChipId;
|
||||
}
|
||||
|
||||
const String getMacAddress() {
|
||||
const String getMacAddress()
|
||||
{
|
||||
uint8_t mac[6];
|
||||
char buf[13] = {0};
|
||||
char buf[13] = { 0 };
|
||||
#if defined(ESP8266)
|
||||
WiFi.macAddress(mac);
|
||||
sprintf(buf, MACSTR, MAC2STR(mac));
|
||||
|
||||
@@ -3,14 +3,16 @@
|
||||
extern IoTScenario iotScen;
|
||||
|
||||
#ifdef STANDARD_WEB_SOCKETS
|
||||
void standWebSocketsInit() {
|
||||
void standWebSocketsInit()
|
||||
{
|
||||
standWebSocket.begin();
|
||||
standWebSocket.onEvent(webSocketEvent);
|
||||
SerialPrint("i", "WS", "WS server initialized");
|
||||
}
|
||||
|
||||
void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload,
|
||||
size_t length) {
|
||||
size_t length)
|
||||
{
|
||||
switch (type) {
|
||||
case WStype_ERROR: {
|
||||
Serial.printf("[%u] Error!\n", num);
|
||||
@@ -78,7 +80,8 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload,
|
||||
// генерация события подключения в модулях
|
||||
for (std::list<IoTItem*>::iterator it = IoTItems.begin();
|
||||
it != IoTItems.end(); ++it) {
|
||||
if ((*it)->iAmLocal) (*it)->onMqttWsAppConnectEvent();
|
||||
if ((*it)->iAmLocal)
|
||||
(*it)->onMqttWsAppConnectEvent();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -138,6 +141,8 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload,
|
||||
|
||||
// отвечаем данными на запрос страницы
|
||||
if (headerStr == "/connection|") {
|
||||
sendFileToWsByFrames("/widgets.json", "widget", "", num, WEB_SOCKETS_FRAME_SIZE);
|
||||
sendFileToWsByFrames("/config.json", "config", "", num, WEB_SOCKETS_FRAME_SIZE);
|
||||
sendStringToWs("settin", settingsFlashJson, num);
|
||||
sendStringToWs("ssidli", ssidListHeapJson, num);
|
||||
sendStringToWs("errors", errorsHeapJson, num);
|
||||
@@ -149,8 +154,7 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload,
|
||||
// обработка кнопки сохранить settings.json
|
||||
if (headerStr == "/sgnittes|") {
|
||||
writeUint8tToString(payload, length, headerLenth, settingsFlashJson);
|
||||
writeFileUint8tByFrames("settings.json", payload, length, headerLenth,
|
||||
256);
|
||||
writeFileUint8tByFrames("settings.json", payload, length, headerLenth, 256);
|
||||
sendStringToWs("errors", errorsHeapJson, num);
|
||||
// если не было создано приема данных по udp - то создадим его
|
||||
addThisDeviceToList();
|
||||
@@ -330,7 +334,8 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload,
|
||||
|
||||
// публикация статус сообщений в ws (недостаток в том что делаем бродкаст всем
|
||||
// клиентам поднятым в свелте!!!)
|
||||
void publishStatusWs(const String& topic, const String& data) {
|
||||
void publishStatusWs(const String& topic, const String& data)
|
||||
{
|
||||
String path = mqttRootDevice + "/" + topic;
|
||||
String json = "{}";
|
||||
jsonWriteStr(json, "status", data);
|
||||
@@ -339,7 +344,8 @@ void publishStatusWs(const String& topic, const String& data) {
|
||||
}
|
||||
|
||||
// публикация дополнительных json сообщений в ws
|
||||
void publishJsonWs(const String& topic, String& json) {
|
||||
void publishJsonWs(const String& topic, String& json)
|
||||
{
|
||||
String path = mqttRootDevice + "/" + topic;
|
||||
jsonWriteStr(json, "topic", path);
|
||||
// TO DO отправка полей в веб
|
||||
@@ -347,7 +353,8 @@ void publishJsonWs(const String& topic, String& json) {
|
||||
}
|
||||
|
||||
// данные которые мы отправляем в сокеты переодически
|
||||
void periodicWsSend() {
|
||||
void periodicWsSend()
|
||||
{
|
||||
sendStringToWs("ssidli", ssidListHeapJson, -1);
|
||||
sendStringToWs("errors", errorsHeapJson, -1);
|
||||
// отправляем переодичестки только в авто режиме
|
||||
@@ -357,7 +364,8 @@ void periodicWsSend() {
|
||||
}
|
||||
|
||||
#ifdef ESP32
|
||||
void hexdump(const void* mem, uint32_t len, uint8_t cols = 16) {
|
||||
void hexdump(const void* mem, uint32_t len, uint8_t cols = 16)
|
||||
{
|
||||
const uint8_t* src = (const uint8_t*)mem;
|
||||
Serial.printf("\n[HEXDUMP] Address: 0x%08X len: 0x%X (%d)", (ptrdiff_t)src,
|
||||
len, len);
|
||||
@@ -374,7 +382,8 @@ void hexdump(const void* mem, uint32_t len, uint8_t cols = 16) {
|
||||
#endif
|
||||
|
||||
void sendFileToWsByFrames(const String& filename, const String& header,
|
||||
const String& json, int client_id, size_t frameSize) {
|
||||
const String& json, int client_id, size_t frameSize)
|
||||
{
|
||||
if (header.length() != 6) {
|
||||
SerialPrint("E", "FS", F("wrong header size"));
|
||||
return;
|
||||
@@ -447,7 +456,8 @@ void sendFileToWsByFrames(const String& filename, const String& header,
|
||||
file.close();
|
||||
}
|
||||
|
||||
void sendStringToWs(const String& header, String& payload, int client_id) {
|
||||
void sendStringToWs(const String& header, String& payload, int client_id)
|
||||
{
|
||||
if ((!getNumAPClients() && !isNetworkActive()) || !getNumWSClients()) {
|
||||
// standWebSocket.disconnect(); // это и ниже надо сделать при -
|
||||
// standWebSocket.close(); // - отключении AP И WiFi(STA), надо менять ядро WiFi. Сейчас не закрывается сессия клиента при пропаже AP И WiFi(STA)
|
||||
@@ -471,7 +481,8 @@ void sendStringToWs(const String& header, String& payload, int client_id) {
|
||||
}
|
||||
}
|
||||
|
||||
void sendDeviceList(uint8_t num) {
|
||||
void sendDeviceList(uint8_t num)
|
||||
{
|
||||
if (jsonReadInt(settingsFlashJson, F("udps")) != 0) {
|
||||
// если включен автопоиск то отдаем список из оперативной памяти
|
||||
SerialPrint("i", "FS", "heap list");
|
||||
@@ -484,6 +495,7 @@ void sendDeviceList(uint8_t num) {
|
||||
}
|
||||
}
|
||||
|
||||
int getNumWSClients() {
|
||||
int getNumWSClients()
|
||||
{
|
||||
return standWebSocket.connectedClients(false);
|
||||
}
|
||||
Reference in New Issue
Block a user