Compare commits
7 Commits
Author | SHA1 | Date | |
---|---|---|---|
90133a7d67 | |||
dd3cbb9633 | |||
0b64933ee7 | |||
1d8d8e3f7d | |||
ceb80d8bd7 | |||
53464acb22 | |||
af8cc16675 |
@ -10,7 +10,7 @@
|
||||
|
||||
<body onload="load();">
|
||||
<form class="box">
|
||||
<h1>ESP-NOW Switch </h1>
|
||||
<h1>ESP-NOW Switch</h1>
|
||||
<div class="wrapper">
|
||||
<p class="text">Firmware:</p>
|
||||
<p class="text" id="version"></p>
|
||||
|
29
src/main.cpp
29
src/main.cpp
@ -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)
|
||||
|
Reference in New Issue
Block a user