7 Commits
v1.41 ... v1.42

Author SHA1 Message Date
90133a7d67 Version 1.42
Fixed some bugs.
2023-03-15 16:37:19 +03:00
dd3cbb9633 Fixed one bug 2023-03-12 12:49:50 +03:00
0b64933ee7 Minor changes 2023-03-07 11:58:03 +03:00
1d8d8e3f7d Fixed one bug 2023-03-06 00:43:29 +03:00
ceb80d8bd7 Minor changes 2023-03-04 13:28:32 +03:00
53464acb22 Minor changes 2023-03-04 12:41:59 +03:00
af8cc16675 Minor changes 2023-03-04 12:36:37 +03:00
2 changed files with 16 additions and 15 deletions

View File

@ -35,7 +35,6 @@ typedef struct
struct deviceConfig
{
const String firmware{"1.41"};
String espnowNetName{"DEFAULT"};
uint8_t workMode{0};
String deviceName = "ESP-NOW switch " + String(ESP.getChipId(), HEX);
@ -53,6 +52,8 @@ struct deviceConfig
std::vector<espnow_message_t> espnowMessage;
const String firmware{"1.42"};
bool relayStatus{false};
bool wasMqttAvailable{false};
@ -172,7 +173,7 @@ void onBroadcastReceiving(const char *data, const uint8_t *sender)
if (myNet.macToString(gatewayMAC) == myNet.macToString(sender) && incomingData.payloadsType == ENPT_KEEP_ALIVE)
{
isGatewayAvailable = true;
StaticJsonDocument<sizeof(esp_now_payload_data_t::message)> json;
DynamicJsonDocument json(sizeof(esp_now_payload_data_t::message));
deserializeJson(json, incomingData.message);
bool temp = json["MQTT"] == "online" ? true : false;
if (wasMqttAvailable != temp)
@ -201,7 +202,7 @@ void onUnicastReceiving(const char *data, const uint8_t *sender)
memcpy(&incomingData, data, sizeof(esp_now_payload_data_t));
if (incomingData.deviceType != ENDT_GATEWAY || myNet.macToString(gatewayMAC) != myNet.macToString(sender))
return;
StaticJsonDocument<sizeof(esp_now_payload_data_t::message)> json;
DynamicJsonDocument json(sizeof(esp_now_payload_data_t::message));
if (incomingData.payloadsType == ENPT_SET)
{
deserializeJson(json, incomingData.message);
@ -220,7 +221,7 @@ void onUnicastReceiving(const char *data, const uint8_t *sender)
else
digitalWrite(config.ledPin, config.ledPinType ? relayStatus : !relayStatus);
}
saveConfig();
saveStatus();
sendStatusMessage();
}
if (incomingData.payloadsType == ENPT_UPDATE)
@ -287,9 +288,9 @@ void loadStatus(void)
saveStatus();
File file = LittleFS.open("/status.json", "r");
String jsonFile = file.readString();
DynamicJsonDocument json(32);
DynamicJsonDocument json(64); // To calculate the buffer size uses https://arduinojson.org/v6/assistant.
deserializeJson(json, jsonFile);
relayStatus = json["relayStatus"];
relayStatus = json["status"];
file.close();
delay(50);
ETS_GPIO_INTR_ENABLE();
@ -298,8 +299,8 @@ void loadStatus(void)
void saveStatus(void)
{
ETS_GPIO_INTR_DISABLE();
DynamicJsonDocument json(32);
json["relayStatus"] = relayStatus;
DynamicJsonDocument json(48); // To calculate the buffer size uses https://arduinojson.org/v6/assistant.
json["status"] = relayStatus;
json["system"] = "empty";
File file = LittleFS.open("/status.json", "w");
serializeJsonPretty(json, file);
@ -340,8 +341,8 @@ void setupWebServer()
webServer.on("/config", HTTP_GET, [](AsyncWebServerRequest *request)
{
String configJson;
DynamicJsonDocument json(512);
json["firmware"] = config.firmware;
DynamicJsonDocument json(384); // To calculate the buffer size uses https://arduinojson.org/v6/assistant.
json["firmware"] = firmware;
json["espnowNetName"] = config.espnowNetName;
json["deviceName"] = config.deviceName;
json["relayPin"] = config.relayPin;
@ -407,7 +408,7 @@ void sendAttributesMessage(const uint8_t type)
uint32_t days = hours / 24;
esp_now_payload_data_t outgoingData{ENDT_SWITCH, ENPT_ATTRIBUTES};
espnow_message_t message;
StaticJsonDocument<sizeof(esp_now_payload_data_t::message)> json;
DynamicJsonDocument json(sizeof(esp_now_payload_data_t::message));
if (type == ENST_NONE)
json["Type"] = "ESP-NOW switch";
else
@ -417,7 +418,7 @@ void sendAttributesMessage(const uint8_t type)
}
json["MCU"] = "ESP8266";
json["MAC"] = myNet.getNodeMac();
json["Firmware"] = config.firmware;
json["Firmware"] = firmware;
json["Library"] = myNet.getFirmwareVersion();
json["Uptime"] = "Days:" + String(days) + " Hours:" + String(hours - (days * 24)) + " Mins:" + String(mins - (hours * 60));
serializeJsonPretty(json, outgoingData.message);
@ -446,7 +447,7 @@ void sendConfigMessage(const uint8_t type)
return;
esp_now_payload_data_t outgoingData{ENDT_SWITCH, ENPT_CONFIG};
espnow_message_t message;
StaticJsonDocument<sizeof(esp_now_payload_data_t::message)> json;
DynamicJsonDocument json(sizeof(esp_now_payload_data_t::message));
if (type == ENST_NONE)
{
json[MCMT_DEVICE_NAME] = config.deviceName;
@ -498,7 +499,7 @@ void sendStatusMessage(const uint8_t type)
statusMessageTimerSemaphore = false;
esp_now_payload_data_t outgoingData{ENDT_SWITCH, ENPT_STATE};
espnow_message_t message;
StaticJsonDocument<sizeof(esp_now_payload_data_t::message)> json;
DynamicJsonDocument json(sizeof(esp_now_payload_data_t::message));
if (type == ENST_NONE)
json["state"] = relayStatus ? "ON" : "OFF";
if (type == ENST_DS18B20)