4 Commits

Author SHA1 Message Date
577d5478a8 Version 1.0.3
Updated sensor messages for compatibility with zh_espnow_sensor.
Updated components.
2024-06-26 09:24:40 +03:00
10640f64b5 Updated components 2024-06-23 22:23:47 +03:00
1699554c74 Update README.md 2024-06-23 22:16:27 +03:00
2f6c37038b Update README.md 2024-06-23 12:21:59 +03:00
6 changed files with 18 additions and 9 deletions

View File

@ -12,7 +12,7 @@ ESP-NOW based switch for ESP32 ESP-IDF and ESP8266 RTOS SDK. Alternate firmware
1. Saves the last state when the power is turned off. 1. Saves the last state when the power is turned off.
2. Automatically adds switch configuration to Home Assistan via MQTT discovery as a switch. 2. Automatically adds switch configuration to Home Assistan via MQTT discovery as a switch.
3. Update firmware from HTTPS server via ESP-NOW. 3. Update firmware from HTTPS server via ESP-NOW.
4. Optional support one external sensor (DS18B20, DHT11, DHT22). 4. Optional support one external 1-wire sensor (DS18B20/DHT11/DHT22/AM2302/AM2320).
5. Direct or mesh work mode. 5. Direct or mesh work mode.
## Notes ## Notes
@ -35,7 +35,7 @@ MQTT configuration message should filled according to the template "X1,X2,X3,X4,
7. X7 - External button GPIO number. 0 - 48 (according to the module used), 255 if not used. 7. X7 - External button GPIO number. 0 - 48 (according to the module used), 255 if not used.
8. X8 - External button trigger level. 1 for high, 0 for low. Only affected when X7 is used. 8. X8 - External button trigger level. 1 for high, 0 for low. Only affected when X7 is used.
9. X9 - Sensor GPIO number. 0 - 48 (according to the module used). 255 if not used. 9. X9 - Sensor GPIO number. 0 - 48 (according to the module used). 255 if not used.
10. X10 - Sensor type. 1 for DS18B20, 2 for DHT11, 3 for DHT22. Only affected when X9 is used. 10. X10 - Sensor type. 1 for DS18B20, 8 for DHT. Only affected when X9 is used.
## Build and flash ## Build and flash

View File

@ -402,22 +402,29 @@ void zh_send_sensor_config_message(const switch_config_t *switch_config)
data.payload_data.config_message.sensor_config_message.qos = 2; data.payload_data.config_message.sensor_config_message.qos = 2;
data.payload_data.config_message.sensor_config_message.retain = true; data.payload_data.config_message.sensor_config_message.retain = true;
char *unit_of_measurement = NULL; char *unit_of_measurement = NULL;
// For compatibility with zh_espnow_sensor.
data.payload_data.config_message.sensor_config_message.unique_id = 2;
data.payload_data.config_message.sensor_config_message.sensor_device_class = HASDC_VOLTAGE;
unit_of_measurement = "V";
strcpy(data.payload_data.config_message.sensor_config_message.unit_of_measurement, unit_of_measurement);
zh_send_message(switch_config->gateway_mac, (uint8_t *)&data, sizeof(zh_espnow_data_t));
// For compatibility with zh_espnow_sensor.
switch (switch_config->hardware_config.sensor_type) switch (switch_config->hardware_config.sensor_type)
{ {
case HAST_DS18B20: case HAST_DS18B20:
data.payload_data.config_message.sensor_config_message.unique_id = 2; data.payload_data.config_message.sensor_config_message.unique_id = 3;
data.payload_data.config_message.sensor_config_message.sensor_device_class = HASDC_TEMPERATURE; data.payload_data.config_message.sensor_config_message.sensor_device_class = HASDC_TEMPERATURE;
unit_of_measurement = "°C"; unit_of_measurement = "°C";
strcpy(data.payload_data.config_message.sensor_config_message.unit_of_measurement, unit_of_measurement); strcpy(data.payload_data.config_message.sensor_config_message.unit_of_measurement, unit_of_measurement);
zh_send_message(switch_config->gateway_mac, (uint8_t *)&data, sizeof(zh_espnow_data_t)); zh_send_message(switch_config->gateway_mac, (uint8_t *)&data, sizeof(zh_espnow_data_t));
break; break;
case HAST_DHT: case HAST_DHT:
data.payload_data.config_message.sensor_config_message.unique_id = 2; data.payload_data.config_message.sensor_config_message.unique_id = 3;
data.payload_data.config_message.sensor_config_message.sensor_device_class = HASDC_TEMPERATURE; data.payload_data.config_message.sensor_config_message.sensor_device_class = HASDC_TEMPERATURE;
unit_of_measurement = "°C"; unit_of_measurement = "°C";
strcpy(data.payload_data.config_message.sensor_config_message.unit_of_measurement, unit_of_measurement); strcpy(data.payload_data.config_message.sensor_config_message.unit_of_measurement, unit_of_measurement);
zh_send_message(switch_config->gateway_mac, (uint8_t *)&data, sizeof(zh_espnow_data_t)); zh_send_message(switch_config->gateway_mac, (uint8_t *)&data, sizeof(zh_espnow_data_t));
data.payload_data.config_message.sensor_config_message.unique_id = 3; data.payload_data.config_message.sensor_config_message.unique_id = 4;
data.payload_data.config_message.sensor_config_message.sensor_device_class = HASDC_HUMIDITY; data.payload_data.config_message.sensor_config_message.sensor_device_class = HASDC_HUMIDITY;
unit_of_measurement = "%"; unit_of_measurement = "%";
strcpy(data.payload_data.config_message.sensor_config_message.unit_of_measurement, unit_of_measurement); strcpy(data.payload_data.config_message.sensor_config_message.unit_of_measurement, unit_of_measurement);
@ -472,6 +479,7 @@ void zh_send_sensor_status_message_task(void *pvParameter)
{ {
case ESP_OK: case ESP_OK:
data.payload_data.status_message.sensor_status_message.temperature = temperature; data.payload_data.status_message.sensor_status_message.temperature = temperature;
data.payload_data.status_message.sensor_status_message.voltage = 3.3; // For compatibility with zh_espnow_sensor.
break; break;
case ESP_FAIL: case ESP_FAIL:
vTaskDelay(10000 / portTICK_PERIOD_MS); vTaskDelay(10000 / portTICK_PERIOD_MS);
@ -492,6 +500,7 @@ void zh_send_sensor_status_message_task(void *pvParameter)
case ESP_OK: case ESP_OK:
data.payload_data.status_message.sensor_status_message.humidity = humidity; data.payload_data.status_message.sensor_status_message.humidity = humidity;
data.payload_data.status_message.sensor_status_message.temperature = temperature; data.payload_data.status_message.sensor_status_message.temperature = temperature;
data.payload_data.status_message.sensor_status_message.voltage = 3.3; // For compatibility with zh_espnow_sensor.
break; break;
case ESP_ERR_INVALID_RESPONSE: case ESP_ERR_INVALID_RESPONSE:
vTaskDelay(10000 / portTICK_PERIOD_MS); vTaskDelay(10000 / portTICK_PERIOD_MS);

View File

@ -1 +1 @@
1.0.2 1.0.3