Skip to content

Commit

Permalink
Version 1.3
Browse files Browse the repository at this point in the history
Added relay work modes.
  • Loading branch information
aZholtikov committed Feb 17, 2023
1 parent dc17e39 commit 0b60348
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 6 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ ESP-NOW based switch for ESP8266. Alternate firmware for Tuya/SmartLife/eWeLink
5. Possibility firmware update over OTA (if is allows the size of the flash memory).
6. Web interface for settings.
7. Optionally support one external one wire digital climate sensor (DS18B20, DHT11 or DHT22) with automatically added sensor configuration to Home Assistan via MQTT discovery as a sensor. Periodically transmission sensor status (every 300 seconds) to the gateway.
8. Normal or reverse relay mode (normal by default).

## Notes

Expand Down
4 changes: 3 additions & 1 deletion data/function.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ function loadBlock() {
}
document.getElementsByTagName('body')[0].innerHTML = newString;
setFirmvareValue('version', 'firmware');
setGpioValue('workModeSelect', 'workMode');
setGpioValue('relayPinSelect', 'relayPin');
setGpioValue('relayPinTypeSelect', 'relayPinType');
setGpioValue('ledPinSelect', 'ledPin');
Expand Down Expand Up @@ -71,7 +72,8 @@ function saveSetting(submit) {
+ "&extButtonPin=" + getSelectValue('extButtonPinSelect')
+ "&extButtonPinType=" + getSelectValue('extButtonPinTypeSelect')
+ "&sensorPin=" + getSelectValue('sensorPinSelect')
+ "&sensorType=" + getSelectValue('sensorTypeSelect');
+ "&sensorType=" + getSelectValue('sensorTypeSelect')
+ "&workMode=" + getSelectValue('workModeSelect');
sendRequest(submit, server);
alert("Please restart device for changes apply.");
}
Expand Down
9 changes: 9 additions & 0 deletions data/index.htm
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,15 @@ <h1>ESP-NOW Switch </h1>
title="ESP-NOW network name (1 to 20 characters)" />
</div>

<div class="wrapper">
<p class="text-select">Work mode:</p>
<input id="workMode" value="{{workMode}}" hidden />
<p><select id="workModeSelect">
<option value="0">NORMAL</option>
<option value="1">REVERSE</option>
</select></p>
</div>

<div class="wrapper">
<p class="text-select">Relay GPIO:</p>
<input id="relayPin" value="{{relayPin}}" hidden />
Expand Down
35 changes: 30 additions & 5 deletions src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,12 @@ typedef struct

std::vector<espnow_message_t> espnowMessage;

const String firmware{"1.21"};
const String firmware{"1.3"};

String espnowNetName{"DEFAULT"};

uint8_t workMode{0};

String deviceName = "ESP-NOW switch " + String(ESP.getChipId(), HEX);

bool relayStatus{false};
Expand Down Expand Up @@ -203,9 +205,19 @@ void onUnicastReceiving(const char *data, const uint8_t *sender)
deserializeJson(json, incomingData.message);
relayStatus = json["set"] == payloadOn ? true : false;
if (relayPin)
digitalWrite(relayPin, relayPinType ? relayStatus : !relayStatus);
{
if (workMode)
digitalWrite(relayPin, relayPinType ? !relayStatus : relayStatus);
else
digitalWrite(relayPin, relayPinType ? relayStatus : !relayStatus);
}
if (ledPin)
digitalWrite(ledPin, ledPinType ? relayStatus : !relayStatus);
{
if (workMode)
digitalWrite(ledPin, ledPinType ? !relayStatus : relayStatus);
else
digitalWrite(ledPin, ledPinType ? relayStatus : !relayStatus);
}
saveConfig();
sendStatusMessage();
}
Expand Down Expand Up @@ -258,6 +270,7 @@ void loadConfig()
ledPinType = json["ledPinType"];
sensorPin = json["sensorPin"];
sensorType = json["sensorType"];
workMode = json["workMode"];
file.close();
}

Expand All @@ -278,6 +291,7 @@ void saveConfig()
json["ledPinType"] = ledPinType;
json["sensorPin"] = sensorPin;
json["sensorType"] = sensorType;
json["workMode"] = workMode;
json["system"] = "empty";
File file = LittleFS.open("/config.json", "w");
serializeJsonPretty(json, file);
Expand All @@ -301,6 +315,7 @@ void setupWebServer()
ledPinType = request->getParam("ledPinType")->value().toInt();
sensorPin = request->getParam("sensorPin")->value().toInt();
sensorType = request->getParam("sensorType")->value().toInt();
workMode = request->getParam("workMode")->value().toInt();
deviceName = request->getParam("deviceName")->value();
espnowNetName = request->getParam("espnowNetName")->value();
request->send(200);
Expand Down Expand Up @@ -333,9 +348,19 @@ void switchingRelay()
{
relayStatus = !relayStatus;
if (relayPin)
digitalWrite(relayPin, relayPinType ? relayStatus : !relayStatus);
{
if (workMode)
digitalWrite(relayPin, relayPinType ? !relayStatus : relayStatus);
else
digitalWrite(relayPin, relayPinType ? relayStatus : !relayStatus);
}
if (ledPin)
digitalWrite(ledPin, ledPinType ? relayStatus : !relayStatus);
{
if (workMode)
digitalWrite(ledPin, ledPinType ? !relayStatus : relayStatus);
else
digitalWrite(ledPin, ledPinType ? relayStatus : !relayStatus);
}
saveConfig();
sendStatusMessage();
ETS_GPIO_INTR_ENABLE();
Expand Down

0 comments on commit 0b60348

Please sign in to comment.