Version 1.0.3
Added keep_alive_message_task. Added sensor reading error message. Updated components.
This commit is contained in:
parent
2bd120b5d3
commit
d1d9c79369
@ -1 +1 @@
|
|||||||
Subproject commit 49a4564b99119d9713bb60790bbf341782c03647
|
Subproject commit db717bf6eec149759082c00ecf2fca81faf94adf
|
@ -1 +1 @@
|
|||||||
Subproject commit 742c807c416d9f80c0571f8daea85d275e8d4c93
|
Subproject commit 39fdb2eb4968172ce16269d6b24ff1672c6f5351
|
@ -1 +1 @@
|
|||||||
Subproject commit 783b44fbca0ed467a868b4420f191c6d9f6caea5
|
Subproject commit 10fefb2912a2489d4be23ba41eedae47290b0fc0
|
@ -291,8 +291,9 @@ void zh_sensor_deep_sleep(sensor_config_t *sensor_config)
|
|||||||
#ifndef CONFIG_IDF_TARGET_ESP8266
|
#ifndef CONFIG_IDF_TARGET_ESP8266
|
||||||
esp_sleep_enable_timer_wakeup(sensor_config->hardware_config.measurement_frequency * 1000000);
|
esp_sleep_enable_timer_wakeup(sensor_config->hardware_config.measurement_frequency * 1000000);
|
||||||
#endif
|
#endif
|
||||||
uint8_t required_message_quantity = 1;
|
uint8_t required_message_quantity = 2;
|
||||||
zh_send_sensor_hardware_config_message(sensor_config);
|
zh_send_sensor_hardware_config_message(sensor_config);
|
||||||
|
zh_send_sensor_keep_alive_message_task(sensor_config);
|
||||||
if (sensor_config->hardware_config.sensor_pin_1 != ZH_NOT_USED && sensor_config->hardware_config.sensor_type != HAST_NONE)
|
if (sensor_config->hardware_config.sensor_pin_1 != ZH_NOT_USED && sensor_config->hardware_config.sensor_type != HAST_NONE)
|
||||||
{
|
{
|
||||||
required_message_quantity += zh_send_sensor_config_message(sensor_config);
|
required_message_quantity += zh_send_sensor_config_message(sensor_config);
|
||||||
@ -506,7 +507,9 @@ void zh_send_sensor_status_message_task(void *pvParameter)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
zh_send_message(sensor_config->gateway_mac, (uint8_t *)&data, sizeof(zh_espnow_data_t)); // For future development. Will be changed for sensor read error message.
|
data.payload_type = ZHPT_ERROR;
|
||||||
|
strcpy(data.payload_data.status_message.error_message.message, "Sensor reading error.");
|
||||||
|
zh_send_message(sensor_config->gateway_mac, (uint8_t *)&data, sizeof(zh_espnow_data_t));
|
||||||
}
|
}
|
||||||
if (gpio_get_level(sensor_config->hardware_config.power_pin) == 1)
|
if (gpio_get_level(sensor_config->hardware_config.power_pin) == 1)
|
||||||
{
|
{
|
||||||
@ -521,6 +524,26 @@ void zh_send_sensor_status_message_task(void *pvParameter)
|
|||||||
vTaskDelete(NULL);
|
vTaskDelete(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void zh_send_sensor_keep_alive_message_task(void *pvParameter)
|
||||||
|
{
|
||||||
|
sensor_config_t *sensor_config = pvParameter;
|
||||||
|
zh_espnow_data_t data = {0};
|
||||||
|
data.device_type = ZHDT_SENSOR;
|
||||||
|
data.payload_type = ZHPT_KEEP_ALIVE;
|
||||||
|
data.payload_data.keep_alive_message.online_status = ZH_ONLINE;
|
||||||
|
data.payload_data.keep_alive_message.message_frequency = ZH_SENSOR_KEEP_ALIVE_MESSAGE_FREQUENCY;
|
||||||
|
for (;;)
|
||||||
|
{
|
||||||
|
zh_send_message(sensor_config->gateway_mac, (uint8_t *)&data, sizeof(zh_espnow_data_t));
|
||||||
|
if (sensor_config->hardware_config.battery_power == true)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
vTaskDelay(ZH_SENSOR_KEEP_ALIVE_MESSAGE_FREQUENCY * 1000 / portTICK_PERIOD_MS);
|
||||||
|
}
|
||||||
|
vTaskDelete(NULL);
|
||||||
|
}
|
||||||
|
|
||||||
void zh_espnow_event_handler(void *arg, esp_event_base_t event_base, int32_t event_id, void *event_data)
|
void zh_espnow_event_handler(void *arg, esp_event_base_t event_base, int32_t event_id, void *event_data)
|
||||||
{
|
{
|
||||||
sensor_config_t *sensor_config = arg;
|
sensor_config_t *sensor_config = arg;
|
||||||
@ -560,6 +583,7 @@ void zh_espnow_event_handler(void *arg, esp_event_base_t event_base, int32_t eve
|
|||||||
zh_send_sensor_config_message(sensor_config);
|
zh_send_sensor_config_message(sensor_config);
|
||||||
xTaskCreatePinnedToCore(&zh_send_sensor_status_message_task, "NULL", ZH_MESSAGE_STACK_SIZE, sensor_config, ZH_MESSAGE_TASK_PRIORITY, (TaskHandle_t *)&sensor_config->status_message_task, tskNO_AFFINITY);
|
xTaskCreatePinnedToCore(&zh_send_sensor_status_message_task, "NULL", ZH_MESSAGE_STACK_SIZE, sensor_config, ZH_MESSAGE_TASK_PRIORITY, (TaskHandle_t *)&sensor_config->status_message_task, tskNO_AFFINITY);
|
||||||
xTaskCreatePinnedToCore(&zh_send_sensor_attributes_message_task, "NULL", ZH_MESSAGE_STACK_SIZE, sensor_config, ZH_MESSAGE_TASK_PRIORITY, (TaskHandle_t *)&sensor_config->attributes_message_task, tskNO_AFFINITY);
|
xTaskCreatePinnedToCore(&zh_send_sensor_attributes_message_task, "NULL", ZH_MESSAGE_STACK_SIZE, sensor_config, ZH_MESSAGE_TASK_PRIORITY, (TaskHandle_t *)&sensor_config->attributes_message_task, tskNO_AFFINITY);
|
||||||
|
xTaskCreatePinnedToCore(&zh_send_sensor_keep_alive_message_task, "NULL", ZH_MESSAGE_STACK_SIZE, sensor_config, ZH_MESSAGE_TASK_PRIORITY, (TaskHandle_t *)&sensor_config->keep_alive_message_task, tskNO_AFFINITY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -572,6 +596,7 @@ void zh_espnow_event_handler(void *arg, esp_event_base_t event_base, int32_t eve
|
|||||||
{
|
{
|
||||||
vTaskDelete(sensor_config->status_message_task);
|
vTaskDelete(sensor_config->status_message_task);
|
||||||
vTaskDelete(sensor_config->attributes_message_task);
|
vTaskDelete(sensor_config->attributes_message_task);
|
||||||
|
vTaskDelete(sensor_config->keep_alive_message_task);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -667,6 +692,7 @@ void zh_espnow_event_handler(void *arg, esp_event_base_t event_base, int32_t eve
|
|||||||
{
|
{
|
||||||
vTaskDelete(sensor_config->status_message_task);
|
vTaskDelete(sensor_config->status_message_task);
|
||||||
vTaskDelete(sensor_config->attributes_message_task);
|
vTaskDelete(sensor_config->attributes_message_task);
|
||||||
|
vTaskDelete(sensor_config->keep_alive_message_task);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -690,6 +716,7 @@ void zh_espnow_event_handler(void *arg, esp_event_base_t event_base, int32_t eve
|
|||||||
{
|
{
|
||||||
vTaskDelete(sensor_config->status_message_task);
|
vTaskDelete(sensor_config->status_message_task);
|
||||||
vTaskDelete(sensor_config->attributes_message_task);
|
vTaskDelete(sensor_config->attributes_message_task);
|
||||||
|
vTaskDelete(sensor_config->keep_alive_message_task);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -54,7 +54,8 @@
|
|||||||
#define DS18B20_POWER_STABILIZATION_PERIOD 500 // Power stabilization period after the sensor is turned on. The value is selected experimentally.
|
#define DS18B20_POWER_STABILIZATION_PERIOD 500 // Power stabilization period after the sensor is turned on. The value is selected experimentally.
|
||||||
#define DHT_POWER_STABILIZATION_PERIOD 2000 // Power stabilization period after the sensor is turned on. The value is selected experimentally.
|
#define DHT_POWER_STABILIZATION_PERIOD 2000 // Power stabilization period after the sensor is turned on. The value is selected experimentally.
|
||||||
|
|
||||||
#define ZH_SENSOR_ATTRIBUTES_MESSAGE_FREQUENCY 60 // Frequency of transmission of keep alive messages to the gateway (in seconds).
|
#define ZH_SENSOR_KEEP_ALIVE_MESSAGE_FREQUENCY 10 // Frequency of sending a keep alive message to the gateway (in seconds).
|
||||||
|
#define ZH_SENSOR_ATTRIBUTES_MESSAGE_FREQUENCY 60 // Frequency of transmission a sensor attributes message to the gateway (in seconds).
|
||||||
|
|
||||||
#define ZH_MESSAGE_TASK_PRIORITY 2 // Prioritize the task of sending messages to the gateway.
|
#define ZH_MESSAGE_TASK_PRIORITY 2 // Prioritize the task of sending messages to the gateway.
|
||||||
#define ZH_MESSAGE_STACK_SIZE 2048 // The stack size of the task of sending messages to the gateway.
|
#define ZH_MESSAGE_STACK_SIZE 2048 // The stack size of the task of sending messages to the gateway.
|
||||||
@ -75,6 +76,7 @@ typedef struct // Structure of data exchange between tasks, functions and event
|
|||||||
uint8_t sent_message_quantity; // System counter for the number of sended messages. @note Used only when powered by battery.
|
uint8_t sent_message_quantity; // System counter for the number of sended messages. @note Used only when powered by battery.
|
||||||
TaskHandle_t attributes_message_task; // Unique task handle for zh_send_sensor_attributes_message_task(). @note Used only when external powered.
|
TaskHandle_t attributes_message_task; // Unique task handle for zh_send_sensor_attributes_message_task(). @note Used only when external powered.
|
||||||
TaskHandle_t status_message_task; // Unique task handle for zh_send_sensor_status_message_task(). @note Used only when external powered.
|
TaskHandle_t status_message_task; // Unique task handle for zh_send_sensor_status_message_task(). @note Used only when external powered.
|
||||||
|
TaskHandle_t keep_alive_message_task; // Unique task handle for zh_send_sensor_keep_alive_message_task(). @note Used only when external powered.
|
||||||
const esp_partition_t *update_partition; // Unique handle for next OTA update partition. @note Used only when external powered.
|
const esp_partition_t *update_partition; // Unique handle for next OTA update partition. @note Used only when external powered.
|
||||||
esp_ota_handle_t update_handle; // Unique handle for OTA functions. @note Used only when external powered.
|
esp_ota_handle_t update_handle; // Unique handle for OTA functions. @note Used only when external powered.
|
||||||
uint16_t ota_message_part_number; // System counter for the number of received OTA messages. @note Used only when external powered.
|
uint16_t ota_message_part_number; // System counter for the number of received OTA messages. @note Used only when external powered.
|
||||||
@ -157,6 +159,13 @@ uint8_t zh_send_sensor_config_message(const sensor_config_t *sensor_config);
|
|||||||
*/
|
*/
|
||||||
void zh_send_sensor_status_message_task(void *pvParameter);
|
void zh_send_sensor_status_message_task(void *pvParameter);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Task for prepare the sensor 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.
|
||||||
|
*/
|
||||||
|
void zh_send_sensor_keep_alive_message_task(void *pvParameter);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Function for ESP-NOW event processing.
|
* @brief Function for ESP-NOW event processing.
|
||||||
*
|
*
|
||||||
|
@ -1 +1 @@
|
|||||||
1.0.2
|
1.0.3
|
Loading…
x
Reference in New Issue
Block a user