diff --git a/components/zh_config b/components/zh_config index 49a4564..db717bf 160000 --- a/components/zh_config +++ b/components/zh_config @@ -1 +1 @@ -Subproject commit 49a4564b99119d9713bb60790bbf341782c03647 +Subproject commit db717bf6eec149759082c00ecf2fca81faf94adf diff --git a/components/zh_espnow b/components/zh_espnow index 742c807..39fdb2e 160000 --- a/components/zh_espnow +++ b/components/zh_espnow @@ -1 +1 @@ -Subproject commit 742c807c416d9f80c0571f8daea85d275e8d4c93 +Subproject commit 39fdb2eb4968172ce16269d6b24ff1672c6f5351 diff --git a/components/zh_network b/components/zh_network index 783b44f..10fefb2 160000 --- a/components/zh_network +++ b/components/zh_network @@ -1 +1 @@ -Subproject commit 783b44fbca0ed467a868b4420f191c6d9f6caea5 +Subproject commit 10fefb2912a2489d4be23ba41eedae47290b0fc0 diff --git a/main/zh_espnow_switch.c b/main/zh_espnow_switch.c index 66cdfb5..5e788c5 100644 --- a/main/zh_espnow_switch.c +++ b/main/zh_espnow_switch.c @@ -471,57 +471,39 @@ void zh_send_sensor_status_message_task(void *pvParameter) data.payload_data.status_message.sensor_status_message.sensor_type = switch_config->hardware_config.sensor_type; for (;;) { + esp_err_t err = ESP_OK; switch (switch_config->hardware_config.sensor_type) { case HAST_DS18B20: - ZH_DS18B20_READ: - switch (zh_ds18b20_read(NULL, &temperature)) + err = zh_ds18b20_read(NULL, &temperature); + if (err == ESP_OK) { - case ESP_OK: 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; - case ESP_FAIL: - vTaskDelay(10000 / portTICK_PERIOD_MS); - goto ZH_DS18B20_READ; - break; - case ESP_ERR_INVALID_CRC: - vTaskDelay(1000 / portTICK_PERIOD_MS); - goto ZH_DS18B20_READ; - break; - default: - break; + data.payload_data.status_message.sensor_status_message.voltage = 3.3; // For future development. } break; case HAST_DHT: - ZH_DHT_READ: - switch (zh_dht_read(&humidity, &temperature)) + err = zh_dht_read(&humidity, &temperature); + if (err == ESP_OK) { - case ESP_OK: 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.voltage = 3.3; // For compatibility with zh_espnow_sensor. - break; - case ESP_ERR_INVALID_RESPONSE: - vTaskDelay(10000 / portTICK_PERIOD_MS); - goto ZH_DHT_READ; - break; - case ESP_ERR_TIMEOUT: - vTaskDelay(10000 / portTICK_PERIOD_MS); - goto ZH_DHT_READ; - break; - case ESP_ERR_INVALID_CRC: - vTaskDelay(3000 / portTICK_PERIOD_MS); - goto ZH_DHT_READ; - break; - default: - break; + data.payload_data.status_message.sensor_status_message.voltage = 3.3; // For future development. } break; default: break; } - zh_send_message(switch_config->gateway_mac, (uint8_t *)&data, sizeof(zh_espnow_data_t)); + if (err == ESP_OK) + { + zh_send_message(switch_config->gateway_mac, (uint8_t *)&data, sizeof(zh_espnow_data_t)); + } + else + { + data.payload_type = ZHPT_ERROR; + strcpy(data.payload_data.status_message.error_message.message, "Sensor reading error."); + zh_send_message(switch_config->gateway_mac, (uint8_t *)&data, sizeof(zh_espnow_data_t)); + } vTaskDelay(ZH_SENSOR_STATUS_MESSAGE_FREQUENCY * 1000 / portTICK_PERIOD_MS); } vTaskDelete(NULL); diff --git a/main/zh_espnow_switch.h b/main/zh_espnow_switch.h index e8d03b0..3453321 100644 --- a/main/zh_espnow_switch.h +++ b/main/zh_espnow_switch.h @@ -159,14 +159,14 @@ void zh_send_switch_attributes_message_task(void *pvParameter); void zh_send_switch_config_message(const switch_config_t *switch_config); /** - * @brief Function for prepare the sensor hardware configuration message and sending it to the gateway. + * @brief Function for prepare the switch hardware configuration message and sending it to the gateway. * * @param[in] switch_config Pointer to the structure of data exchange between tasks, functions and event handlers. */ void zh_send_switch_hardware_config_message(const switch_config_t *switch_config); /** - * @brief Task for prepare the sensor keep alive message and sending it to the gateway. + * @brief Task for prepare the switch keep alive message and sending it to the gateway. * * @param[in] pvParameter Pointer to the structure of data exchange between tasks, functions and event handlers. */ diff --git a/version.txt b/version.txt index e4c0d46..a6a3a43 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.0.3 \ No newline at end of file +1.0.4 \ No newline at end of file