ESP-NOW based switch for ESP32 ESP-IDF and ESP8266 RTOS SDK. Alternate firmware for Tuya/SmartLife/eWeLink WiFi switches.
- ESP8266 RTOS_SDK v3.4
- ESP32 ESP-IDF v5.2
- Saves the last state when the power is turned off.
- Automatically adds switch configuration to Home Assistan via MQTT discovery as a switch.
- Update firmware from HTTPS server via ESP-NOW.
- Optional support one external 1-wire sensor (DS18B20/DHT11/DHT22/AM2302/AM2320).
- Direct or mesh work mode.
- Work mode must be same with gateway work mode.
- ESP-NOW mesh network based on the zh_network.
- For initial settings use "menuconfig -> ZH ESP-NOW Switch Configuration". After first boot all settings will be stored in NVS memory for prevente change during OTA firmware update.
- To restart the switch, send the "restart" command to the root topic of the switch (example - "homeassistant/espnow_switch/24-62-AB-F9-1F-A8").
- To update the switch firmware, send the "update" command to the root topic of the switch (example - "homeassistant/espnow_switch/70-03-9F-44-BE-F7"). The update path should be like as "https://your_server/zh_espnow_switch_esp32.bin" (for ESP32) or "https://your_server/zh_espnow_switch_esp8266.app1.bin + https://your_server/zh_espnow_switch_esp8266.app2.bin" (for ESP8266). Average update time is up to some minutes. The online status of the update will be displayed in the root switch topic.
- To change initial settings of the switch (except work mode), send the X1,X2,X3,X4,X5,X6,X7,X8,X9,X10,X11 command to the hardware topic of the switch (example - "homeassistant/espnow_switch/70-03-9F-44-BE-F7/hardware"). The configuration will only be accepted if it does not cause errors. The current configuration status is displayed in the configuration topic of the switch (example - "homeassistant/espnow_switch/70-03-9F-44-BE-F7/config").
MQTT configuration message should filled according to the template "X1,X2,X3,X4,X5,X6,X7,X8,X9,X10". Where:
- X1 - Relay GPIO number. 0 - 48 (according to the module used), 255 if not used.
- X2 - Relay ON level. 1 for high, 0 for low. Only affected when X1 is used.
- X3 - Led GPIO number. 0 - 48 (according to the module used), 255 if not used.
- X4 - Led ON level. 1 for high, 0 for low. Only affected when X3 is used.
- X5 - Internal button GPIO number. 0 - 48 (according to the module used), 255 if not used.
- X6 - Internal button trigger level. 1 for high, 0 for low. Only affected when X5 is used.
- X7 - External button GPIO number. 0 - 48 (according to the module used), 255 if not used.
- X8 - External button trigger level. 1 for high, 0 for low. Only affected when X7 is used.
- X9 - Sensor GPIO number. 0 - 48 (according to the module used). 255 if not used.
- X10 - Sensor type. 1 for DS18B20, 8 for DHT. Only affected when X9 is used.
- X11 - Sensor measurement frequency. 1 - 65536 seconds. Only affected when X9 is used.
Run the following command to firmware build and flash module:
cd your_projects_folder
git clone --recurse-submodules https://github.com/aZholtikov/zh_espnow_switch.git
cd zh_espnow_switch
For ESP32 family:
idf.py set-target (TARGET) // Optional
idf.py menuconfig
idf.py build
idf.py flash
For ESP8266 family:
make menuconfig
make
make flash
See here.
- A gateway is required. For details see zh_gateway.
- Use the "make ota" command instead of "make" to prepare 2 bin files for OTA update (for ESP8266).
Any feedback will be gladly accepted.