WIP
This commit is contained in:
@ -23,7 +23,7 @@ Gateway for ESP32 ESP-IDF for data exchange between ESP-NOW devices and MQTT bro
|
|||||||
2. ESP-NOW mesh network based on the [zh_network](https://github.com/aZholtikov/zh_network).
|
2. ESP-NOW mesh network based on the [zh_network](https://github.com/aZholtikov/zh_network).
|
||||||
3. For initial settings use "menuconfig -> ZH Gateway Configuration". After first boot all settings (except work mode) will be stored in NVS memory for prevente change during OTA firmware update. But it is highly recommended to set up the configuration via menuconfig before updating.
|
3. For initial settings use "menuconfig -> ZH Gateway Configuration". After first boot all settings (except work mode) will be stored in NVS memory for prevente change during OTA firmware update. But it is highly recommended to set up the configuration via menuconfig before updating.
|
||||||
4. To restart the gateway, send the "restart" command to the root topic of the gateway (example - "homeassistant/gateway/70-03-9F-44-BE-F7").
|
4. To restart the gateway, send the "restart" command to the root topic of the gateway (example - "homeassistant/gateway/70-03-9F-44-BE-F7").
|
||||||
5. To update the gateway firmware, send the "update" command to the root topic of the gateway (example - "homeassistant/gateway/70-03-9F-44-BE-F7"). The update path should be like as "https://your_server/zh_gateway_esp32.bin". The online status of the update is displayed in the root gateway topic.
|
5. To update the gateway firmware, send the "update" command to the root topic of the gateway (example - "homeassistant/gateway/70-03-9F-44-BE-F7"). The update path should be like as "https://your_server/zh_gateway_esp32.bin". The online status of the update is displayed in the root gateway topic and Syslog server (if enabled).
|
||||||
|
|
||||||
## Build and flash
|
## Build and flash
|
||||||
|
|
||||||
|
Submodule components/zh_config updated: 49a4564b99...db717bf6ee
@ -475,9 +475,35 @@ void zh_espnow_event_handler(void *arg, esp_event_base_t event_base, int32_t eve
|
|||||||
break;
|
break;
|
||||||
case ZHPT_UPDATE_FAIL:
|
case ZHPT_UPDATE_FAIL:
|
||||||
esp_mqtt_client_publish(gateway_config->mqtt_client, topic, "update_fail", 0, 2, true);
|
esp_mqtt_client_publish(gateway_config->mqtt_client, topic, "update_fail", 0, 2, true);
|
||||||
|
if (gateway_config->syslog_is_enable == true)
|
||||||
|
{
|
||||||
|
char *mac = (char *)heap_caps_malloc(18, MALLOC_CAP_8BIT);
|
||||||
|
memset(mac, 0, 18);
|
||||||
|
sprintf(mac, "" MAC_STR "", MAC2STR(recv_data->mac_addr));
|
||||||
|
zh_syslog_send(ZH_USER, ZH_ERR, mac, zh_get_device_type_value_name(data->device_type), "Firmware update fail. Incorrect bin file.");
|
||||||
|
heap_caps_free(mac);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case ZHPT_UPDATE_SUCCESS:
|
case ZHPT_UPDATE_SUCCESS:
|
||||||
esp_mqtt_client_publish(gateway_config->mqtt_client, topic, "update_success", 0, 2, true);
|
esp_mqtt_client_publish(gateway_config->mqtt_client, topic, "update_success", 0, 2, true);
|
||||||
|
if (gateway_config->syslog_is_enable == true)
|
||||||
|
{
|
||||||
|
char *mac = (char *)heap_caps_malloc(18, MALLOC_CAP_8BIT);
|
||||||
|
memset(mac, 0, 18);
|
||||||
|
sprintf(mac, "" MAC_STR "", MAC2STR(recv_data->mac_addr));
|
||||||
|
zh_syslog_send(ZH_USER, ZH_INFO, mac, zh_get_device_type_value_name(data->device_type), "Firmware update success.");
|
||||||
|
heap_caps_free(mac);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case ZHPT_ERROR:
|
||||||
|
if (gateway_config->syslog_is_enable == true)
|
||||||
|
{
|
||||||
|
char *mac = (char *)heap_caps_malloc(18, MALLOC_CAP_8BIT);
|
||||||
|
memset(mac, 0, 18);
|
||||||
|
sprintf(mac, "" MAC_STR "", MAC2STR(recv_data->mac_addr));
|
||||||
|
zh_syslog_send(ZH_USER, ZH_ERR, mac, zh_get_device_type_value_name(data->device_type), data->payload_data.status_message.error_message.message);
|
||||||
|
heap_caps_free(mac);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@ -940,6 +966,9 @@ void zh_mqtt_event_handler(void *arg, esp_event_base_t event_base, int32_t event
|
|||||||
void zh_self_ota_update_task(void *pvParameter)
|
void zh_self_ota_update_task(void *pvParameter)
|
||||||
{
|
{
|
||||||
gateway_config_t *gateway_config = pvParameter;
|
gateway_config_t *gateway_config = pvParameter;
|
||||||
|
char *mac = (char *)heap_caps_malloc(18, MALLOC_CAP_8BIT);
|
||||||
|
memset(mac, 0, 18);
|
||||||
|
sprintf(mac, "" MAC_STR "", MAC2STR(gateway_config->self_mac));
|
||||||
xSemaphoreTake(gateway_config->self_ota_in_progress_mutex, portMAX_DELAY);
|
xSemaphoreTake(gateway_config->self_ota_in_progress_mutex, portMAX_DELAY);
|
||||||
char *topic = (char *)heap_caps_malloc(strlen(gateway_config->software_config.mqtt_topic_prefix) + strlen(zh_get_device_type_value_name(ZHDT_GATEWAY)) + 20, MALLOC_CAP_8BIT);
|
char *topic = (char *)heap_caps_malloc(strlen(gateway_config->software_config.mqtt_topic_prefix) + strlen(zh_get_device_type_value_name(ZHDT_GATEWAY)) + 20, MALLOC_CAP_8BIT);
|
||||||
memset(topic, 0, strlen(gateway_config->software_config.mqtt_topic_prefix) + strlen(zh_get_device_type_value_name(ZHDT_GATEWAY)) + 20);
|
memset(topic, 0, strlen(gateway_config->software_config.mqtt_topic_prefix) + strlen(zh_get_device_type_value_name(ZHDT_GATEWAY)) + 20);
|
||||||
@ -948,6 +977,10 @@ void zh_self_ota_update_task(void *pvParameter)
|
|||||||
esp_ota_handle_t update_handle = {0};
|
esp_ota_handle_t update_handle = {0};
|
||||||
const esp_partition_t *update_partition = NULL;
|
const esp_partition_t *update_partition = NULL;
|
||||||
esp_mqtt_client_publish(gateway_config->mqtt_client, topic, "update_begin", 0, 2, true);
|
esp_mqtt_client_publish(gateway_config->mqtt_client, topic, "update_begin", 0, 2, true);
|
||||||
|
if (gateway_config->syslog_is_enable == true)
|
||||||
|
{
|
||||||
|
zh_syslog_send(ZH_USER, ZH_INFO, mac, zh_get_device_type_value_name(ZHDT_GATEWAY), "Firmware update begin.");
|
||||||
|
}
|
||||||
const esp_app_desc_t *app_info = esp_app_get_description();
|
const esp_app_desc_t *app_info = esp_app_get_description();
|
||||||
char *app_name = (char *)heap_caps_malloc(strlen(gateway_config->software_config.firmware_upgrade_url) + strlen(app_info->project_name) + 6, MALLOC_CAP_8BIT);
|
char *app_name = (char *)heap_caps_malloc(strlen(gateway_config->software_config.firmware_upgrade_url) + strlen(app_info->project_name) + 6, MALLOC_CAP_8BIT);
|
||||||
memset(app_name, 0, strlen(gateway_config->software_config.firmware_upgrade_url) + strlen(app_info->project_name) + 6);
|
memset(app_name, 0, strlen(gateway_config->software_config.firmware_upgrade_url) + strlen(app_info->project_name) + 6);
|
||||||
@ -965,6 +998,10 @@ void zh_self_ota_update_task(void *pvParameter)
|
|||||||
esp_http_client_fetch_headers(https_client);
|
esp_http_client_fetch_headers(https_client);
|
||||||
update_partition = esp_ota_get_next_update_partition(NULL);
|
update_partition = esp_ota_get_next_update_partition(NULL);
|
||||||
esp_mqtt_client_publish(gateway_config->mqtt_client, topic, "update_progress", 0, 2, true);
|
esp_mqtt_client_publish(gateway_config->mqtt_client, topic, "update_progress", 0, 2, true);
|
||||||
|
if (gateway_config->syslog_is_enable == true)
|
||||||
|
{
|
||||||
|
zh_syslog_send(ZH_USER, ZH_INFO, mac, zh_get_device_type_value_name(ZHDT_GATEWAY), "Firmware update progress.");
|
||||||
|
}
|
||||||
esp_ota_begin(update_partition, OTA_WITH_SEQUENTIAL_WRITES, &update_handle);
|
esp_ota_begin(update_partition, OTA_WITH_SEQUENTIAL_WRITES, &update_handle);
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
@ -974,7 +1011,12 @@ void zh_self_ota_update_task(void *pvParameter)
|
|||||||
esp_http_client_close(https_client);
|
esp_http_client_close(https_client);
|
||||||
esp_http_client_cleanup(https_client);
|
esp_http_client_cleanup(https_client);
|
||||||
esp_mqtt_client_publish(gateway_config->mqtt_client, topic, "update_error_data_size", 0, 2, true);
|
esp_mqtt_client_publish(gateway_config->mqtt_client, topic, "update_error_data_size", 0, 2, true);
|
||||||
|
if (gateway_config->syslog_is_enable == true)
|
||||||
|
{
|
||||||
|
zh_syslog_send(ZH_USER, ZH_ERR, mac, zh_get_device_type_value_name(ZHDT_GATEWAY), "Firmware update error. Incorrect size of read data.");
|
||||||
|
}
|
||||||
heap_caps_free(topic);
|
heap_caps_free(topic);
|
||||||
|
heap_caps_free(mac);
|
||||||
xSemaphoreGive(gateway_config->self_ota_in_progress_mutex);
|
xSemaphoreGive(gateway_config->self_ota_in_progress_mutex);
|
||||||
vTaskDelete(NULL);
|
vTaskDelete(NULL);
|
||||||
}
|
}
|
||||||
@ -992,7 +1034,12 @@ void zh_self_ota_update_task(void *pvParameter)
|
|||||||
esp_http_client_close(https_client);
|
esp_http_client_close(https_client);
|
||||||
esp_http_client_cleanup(https_client);
|
esp_http_client_cleanup(https_client);
|
||||||
esp_mqtt_client_publish(gateway_config->mqtt_client, topic, "update_fail", 0, 2, true);
|
esp_mqtt_client_publish(gateway_config->mqtt_client, topic, "update_fail", 0, 2, true);
|
||||||
|
if (gateway_config->syslog_is_enable == true)
|
||||||
|
{
|
||||||
|
zh_syslog_send(ZH_USER, ZH_ERR, mac, zh_get_device_type_value_name(ZHDT_GATEWAY), "Firmware update fail. Incorrect bin file.");
|
||||||
|
}
|
||||||
heap_caps_free(topic);
|
heap_caps_free(topic);
|
||||||
|
heap_caps_free(mac);
|
||||||
xSemaphoreGive(gateway_config->self_ota_in_progress_mutex);
|
xSemaphoreGive(gateway_config->self_ota_in_progress_mutex);
|
||||||
vTaskDelete(NULL);
|
vTaskDelete(NULL);
|
||||||
}
|
}
|
||||||
@ -1000,7 +1047,12 @@ void zh_self_ota_update_task(void *pvParameter)
|
|||||||
esp_http_client_close(https_client);
|
esp_http_client_close(https_client);
|
||||||
esp_http_client_cleanup(https_client);
|
esp_http_client_cleanup(https_client);
|
||||||
esp_mqtt_client_publish(gateway_config->mqtt_client, topic, "update_success", 0, 2, true);
|
esp_mqtt_client_publish(gateway_config->mqtt_client, topic, "update_success", 0, 2, true);
|
||||||
|
if (gateway_config->syslog_is_enable == true)
|
||||||
|
{
|
||||||
|
zh_syslog_send(ZH_USER, ZH_INFO, mac, zh_get_device_type_value_name(ZHDT_GATEWAY), "Firmware update success.");
|
||||||
|
}
|
||||||
heap_caps_free(topic);
|
heap_caps_free(topic);
|
||||||
|
heap_caps_free(mac);
|
||||||
zh_espnow_data_t data = {0};
|
zh_espnow_data_t data = {0};
|
||||||
data.device_type = ZHDT_GATEWAY;
|
data.device_type = ZHDT_GATEWAY;
|
||||||
data.payload_type = ZHPT_KEEP_ALIVE;
|
data.payload_type = ZHPT_KEEP_ALIVE;
|
||||||
@ -1013,6 +1065,10 @@ void zh_self_ota_update_task(void *pvParameter)
|
|||||||
void zh_espnow_ota_update_task(void *pvParameter)
|
void zh_espnow_ota_update_task(void *pvParameter)
|
||||||
{
|
{
|
||||||
gateway_config_t *gateway_config = pvParameter;
|
gateway_config_t *gateway_config = pvParameter;
|
||||||
|
char *mac = (char *)heap_caps_malloc(18, MALLOC_CAP_8BIT);
|
||||||
|
memset(mac, 0, 18);
|
||||||
|
sprintf(mac, "" MAC_STR "", MAC2STR(gateway_config->espnow_ota_data.mac_addr));
|
||||||
|
// heap_caps_free(mac);
|
||||||
xSemaphoreTake(gateway_config->espnow_ota_in_progress_mutex, portMAX_DELAY);
|
xSemaphoreTake(gateway_config->espnow_ota_in_progress_mutex, portMAX_DELAY);
|
||||||
zh_espnow_data_t data = {0};
|
zh_espnow_data_t data = {0};
|
||||||
data.device_type = ZHDT_GATEWAY;
|
data.device_type = ZHDT_GATEWAY;
|
||||||
@ -1020,6 +1076,10 @@ void zh_espnow_ota_update_task(void *pvParameter)
|
|||||||
memset(topic, 0, strlen(gateway_config->software_config.mqtt_topic_prefix) + strlen(zh_get_device_type_value_name(gateway_config->espnow_ota_data.device_type)) + 20);
|
memset(topic, 0, strlen(gateway_config->software_config.mqtt_topic_prefix) + strlen(zh_get_device_type_value_name(gateway_config->espnow_ota_data.device_type)) + 20);
|
||||||
sprintf(topic, "%s/%s/" MAC_STR, gateway_config->software_config.mqtt_topic_prefix, zh_get_device_type_value_name(gateway_config->espnow_ota_data.device_type), MAC2STR(gateway_config->espnow_ota_data.mac_addr));
|
sprintf(topic, "%s/%s/" MAC_STR, gateway_config->software_config.mqtt_topic_prefix, zh_get_device_type_value_name(gateway_config->espnow_ota_data.device_type), MAC2STR(gateway_config->espnow_ota_data.mac_addr));
|
||||||
esp_mqtt_client_publish(gateway_config->mqtt_client, topic, "update_begin", 0, 2, true);
|
esp_mqtt_client_publish(gateway_config->mqtt_client, topic, "update_begin", 0, 2, true);
|
||||||
|
if (gateway_config->syslog_is_enable == true)
|
||||||
|
{
|
||||||
|
zh_syslog_send(ZH_USER, ZH_INFO, mac, zh_get_device_type_value_name(gateway_config->espnow_ota_data.device_type), "Firmware update begin.");
|
||||||
|
}
|
||||||
char espnow_ota_write_data[sizeof(data.payload_data.ota_message.espnow_ota_message.data) + 1] = {0};
|
char espnow_ota_write_data[sizeof(data.payload_data.ota_message.espnow_ota_message.data) + 1] = {0};
|
||||||
char *app_name = (char *)heap_caps_malloc(strlen(gateway_config->software_config.firmware_upgrade_url) + strlen(gateway_config->espnow_ota_data.app_name) + 6, MALLOC_CAP_8BIT);
|
char *app_name = (char *)heap_caps_malloc(strlen(gateway_config->software_config.firmware_upgrade_url) + strlen(gateway_config->espnow_ota_data.app_name) + 6, MALLOC_CAP_8BIT);
|
||||||
memset(app_name, 0, strlen(gateway_config->software_config.firmware_upgrade_url) + strlen(gateway_config->espnow_ota_data.app_name) + 6);
|
memset(app_name, 0, strlen(gateway_config->software_config.firmware_upgrade_url) + strlen(gateway_config->espnow_ota_data.app_name) + 6);
|
||||||
@ -1044,11 +1104,20 @@ void zh_espnow_ota_update_task(void *pvParameter)
|
|||||||
data.payload_type = ZHPT_UPDATE_ERROR;
|
data.payload_type = ZHPT_UPDATE_ERROR;
|
||||||
zh_send_message(gateway_config->espnow_ota_data.mac_addr, (uint8_t *)&data, sizeof(zh_espnow_data_t));
|
zh_send_message(gateway_config->espnow_ota_data.mac_addr, (uint8_t *)&data, sizeof(zh_espnow_data_t));
|
||||||
esp_mqtt_client_publish(gateway_config->mqtt_client, topic, "update_error_begin_timeout", 0, 2, true);
|
esp_mqtt_client_publish(gateway_config->mqtt_client, topic, "update_error_begin_timeout", 0, 2, true);
|
||||||
|
if (gateway_config->syslog_is_enable == true)
|
||||||
|
{
|
||||||
|
zh_syslog_send(ZH_USER, ZH_ERR, mac, zh_get_device_type_value_name(gateway_config->espnow_ota_data.device_type), "Firmware update error. Timeout exceed.");
|
||||||
|
}
|
||||||
|
heap_caps_free(mac);
|
||||||
heap_caps_free(topic);
|
heap_caps_free(topic);
|
||||||
xSemaphoreGive(gateway_config->espnow_ota_in_progress_mutex);
|
xSemaphoreGive(gateway_config->espnow_ota_in_progress_mutex);
|
||||||
vTaskDelete(NULL);
|
vTaskDelete(NULL);
|
||||||
}
|
}
|
||||||
esp_mqtt_client_publish(gateway_config->mqtt_client, topic, "update_progress", 0, 2, true);
|
esp_mqtt_client_publish(gateway_config->mqtt_client, topic, "update_progress", 0, 2, true);
|
||||||
|
if (gateway_config->syslog_is_enable == true)
|
||||||
|
{
|
||||||
|
zh_syslog_send(ZH_USER, ZH_INFO, mac, zh_get_device_type_value_name(gateway_config->espnow_ota_data.device_type), "Firmware update progress.");
|
||||||
|
}
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
int data_read_size = esp_http_client_read(https_client, espnow_ota_write_data, sizeof(data.payload_data.ota_message.espnow_ota_message.data));
|
int data_read_size = esp_http_client_read(https_client, espnow_ota_write_data, sizeof(data.payload_data.ota_message.espnow_ota_message.data));
|
||||||
@ -1057,6 +1126,11 @@ void zh_espnow_ota_update_task(void *pvParameter)
|
|||||||
esp_http_client_close(https_client);
|
esp_http_client_close(https_client);
|
||||||
esp_http_client_cleanup(https_client);
|
esp_http_client_cleanup(https_client);
|
||||||
esp_mqtt_client_publish(gateway_config->mqtt_client, topic, "update_error_data_size", 0, 2, true);
|
esp_mqtt_client_publish(gateway_config->mqtt_client, topic, "update_error_data_size", 0, 2, true);
|
||||||
|
if (gateway_config->syslog_is_enable == true)
|
||||||
|
{
|
||||||
|
zh_syslog_send(ZH_USER, ZH_ERR, mac, zh_get_device_type_value_name(gateway_config->espnow_ota_data.device_type), "Firmware update error. Incorrect size of read data.");
|
||||||
|
}
|
||||||
|
heap_caps_free(mac);
|
||||||
heap_caps_free(topic);
|
heap_caps_free(topic);
|
||||||
xSemaphoreGive(gateway_config->espnow_ota_in_progress_mutex);
|
xSemaphoreGive(gateway_config->espnow_ota_in_progress_mutex);
|
||||||
vTaskDelete(NULL);
|
vTaskDelete(NULL);
|
||||||
@ -1075,6 +1149,11 @@ void zh_espnow_ota_update_task(void *pvParameter)
|
|||||||
data.payload_type = ZHPT_UPDATE_ERROR;
|
data.payload_type = ZHPT_UPDATE_ERROR;
|
||||||
zh_send_message(gateway_config->espnow_ota_data.mac_addr, (uint8_t *)&data, sizeof(zh_espnow_data_t));
|
zh_send_message(gateway_config->espnow_ota_data.mac_addr, (uint8_t *)&data, sizeof(zh_espnow_data_t));
|
||||||
esp_mqtt_client_publish(gateway_config->mqtt_client, topic, "update_error_progress_timeout", 0, 2, true);
|
esp_mqtt_client_publish(gateway_config->mqtt_client, topic, "update_error_progress_timeout", 0, 2, true);
|
||||||
|
if (gateway_config->syslog_is_enable == true)
|
||||||
|
{
|
||||||
|
zh_syslog_send(ZH_USER, ZH_ERR, mac, zh_get_device_type_value_name(gateway_config->espnow_ota_data.device_type), "Firmware update error. Timeout exceed.");
|
||||||
|
}
|
||||||
|
heap_caps_free(mac);
|
||||||
heap_caps_free(topic);
|
heap_caps_free(topic);
|
||||||
xSemaphoreGive(gateway_config->espnow_ota_in_progress_mutex);
|
xSemaphoreGive(gateway_config->espnow_ota_in_progress_mutex);
|
||||||
vTaskDelete(NULL);
|
vTaskDelete(NULL);
|
||||||
@ -1087,6 +1166,11 @@ void zh_espnow_ota_update_task(void *pvParameter)
|
|||||||
data.payload_type = ZHPT_UPDATE_END;
|
data.payload_type = ZHPT_UPDATE_END;
|
||||||
zh_send_message(gateway_config->espnow_ota_data.mac_addr, (uint8_t *)&data, sizeof(zh_espnow_data_t));
|
zh_send_message(gateway_config->espnow_ota_data.mac_addr, (uint8_t *)&data, sizeof(zh_espnow_data_t));
|
||||||
esp_mqtt_client_publish(gateway_config->mqtt_client, topic, "update_end", 0, 2, true);
|
esp_mqtt_client_publish(gateway_config->mqtt_client, topic, "update_end", 0, 2, true);
|
||||||
|
if (gateway_config->syslog_is_enable == true)
|
||||||
|
{
|
||||||
|
zh_syslog_send(ZH_USER, ZH_INFO, mac, zh_get_device_type_value_name(gateway_config->espnow_ota_data.device_type), "Firmware update end.");
|
||||||
|
}
|
||||||
|
heap_caps_free(mac);
|
||||||
heap_caps_free(topic);
|
heap_caps_free(topic);
|
||||||
xSemaphoreGive(gateway_config->espnow_ota_in_progress_mutex);
|
xSemaphoreGive(gateway_config->espnow_ota_in_progress_mutex);
|
||||||
vTaskDelete(NULL);
|
vTaskDelete(NULL);
|
||||||
@ -1101,6 +1185,14 @@ void zh_send_espnow_current_time_task(void *pvParameter)
|
|||||||
{
|
{
|
||||||
vTaskDelay(5000 / portTICK_PERIOD_MS);
|
vTaskDelay(5000 / portTICK_PERIOD_MS);
|
||||||
}
|
}
|
||||||
|
if (gateway_config->syslog_is_enable == true)
|
||||||
|
{
|
||||||
|
char *mac = (char *)heap_caps_malloc(18, MALLOC_CAP_8BIT);
|
||||||
|
memset(mac, 0, 18);
|
||||||
|
sprintf(mac, "" MAC_STR "", MAC2STR(gateway_config->self_mac));
|
||||||
|
zh_syslog_send(ZH_USER, ZH_INFO, mac, zh_get_device_type_value_name(ZHDT_GATEWAY), "Connected to NTP.");
|
||||||
|
heap_caps_free(mac);
|
||||||
|
}
|
||||||
time_t now;
|
time_t now;
|
||||||
setenv("TZ", gateway_config->software_config.ntp_time_zone, 1);
|
setenv("TZ", gateway_config->software_config.ntp_time_zone, 1);
|
||||||
tzset();
|
tzset();
|
||||||
@ -1139,7 +1231,7 @@ void zh_device_availability_check_task(void *pvParameter)
|
|||||||
char *mac = (char *)heap_caps_malloc(18, MALLOC_CAP_8BIT);
|
char *mac = (char *)heap_caps_malloc(18, MALLOC_CAP_8BIT);
|
||||||
memset(mac, 0, 18);
|
memset(mac, 0, 18);
|
||||||
sprintf(mac, "" MAC_STR "", MAC2STR(available_device->mac_addr));
|
sprintf(mac, "" MAC_STR "", MAC2STR(available_device->mac_addr));
|
||||||
zh_syslog_send(ZH_USER, ZH_INFO, mac, zh_get_device_type_value_name(available_device->device_type), "Disconnected from gateway.");
|
zh_syslog_send(ZH_USER, ZH_WARNING, mac, zh_get_device_type_value_name(available_device->device_type), "Disconnected from gateway.");
|
||||||
heap_caps_free(mac);
|
heap_caps_free(mac);
|
||||||
}
|
}
|
||||||
zh_vector_delete_item(&gateway_config->available_device_vector, i);
|
zh_vector_delete_item(&gateway_config->available_device_vector, i);
|
||||||
|
Reference in New Issue
Block a user