Added sending of system messages to the Syslog server

This commit is contained in:
2024-07-15 23:19:02 +03:00
parent 243f0ae4ff
commit fddcbeb9ff
2 changed files with 39 additions and 1 deletions

View File

@ -393,18 +393,32 @@ void zh_espnow_event_handler(void *arg, esp_event_base_t event_base, int32_t eve
{
case ZHDT_SWITCH:
zh_espnow_switch_send_mqtt_json_config_message(data, recv_data->mac_addr, gateway_config);
goto ZHPT_CONFIG_SEND_SYSLOG;
break;
case ZHDT_LED:
zh_espnow_led_send_mqtt_json_config_message(data, recv_data->mac_addr, gateway_config);
goto ZHPT_CONFIG_SEND_SYSLOG;
break;
case ZHDT_SENSOR:
zh_espnow_sensor_send_mqtt_json_config_message(data, recv_data->mac_addr, gateway_config);
goto ZHPT_CONFIG_SEND_SYSLOG;
break;
case ZHDT_BINARY_SENSOR:
zh_espnow_binary_sensor_send_mqtt_json_config_message(data, recv_data->mac_addr, gateway_config);
goto ZHPT_CONFIG_SEND_SYSLOG;
break;
default:
break;
ZHPT_CONFIG_SEND_SYSLOG:
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), "Connected to gateway.");
heap_caps_free(mac);
}
break;
}
break;
case ZHPT_HARDWARE:
@ -496,6 +510,14 @@ void zh_mqtt_event_handler(void *arg, esp_event_base_t event_base, int32_t event
case MQTT_EVENT_CONNECTED:
if (gateway_config->mqtt_is_connected == false)
{
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 MQTT.");
heap_caps_free(mac);
}
char *topic_for_subscribe = NULL;
char *supported_device_type = NULL;
for (zh_device_type_t i = 1; i <= ZHDT_MAX; ++i)
@ -517,6 +539,14 @@ void zh_mqtt_event_handler(void *arg, esp_event_base_t event_base, int32_t event
case MQTT_EVENT_DISCONNECTED:
if (gateway_config->mqtt_is_connected == 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(gateway_config->self_mac));
zh_syslog_send(ZH_USER, ZH_WARNING, mac, zh_get_device_type_value_name(ZHDT_GATEWAY), "Disconnected from MQTT.");
heap_caps_free(mac);
}
vTaskDelete(gateway_config->gateway_attributes_message_task);
vTaskDelete(gateway_config->gateway_keep_alive_message_task);
vTaskDelete(gateway_config->device_availability_check_task);
@ -1104,6 +1134,14 @@ void zh_device_availability_check_task(void *pvParameter)
sprintf(topic, "%s/%s/" MAC_STR "/status", gateway_config->software_config.mqtt_topic_prefix, zh_get_device_type_value_name(available_device->device_type), MAC2STR(available_device->mac_addr));
esp_mqtt_client_publish(gateway_config->mqtt_client, topic, "offline", 0, 2, true);
heap_caps_free(topic);
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(available_device->mac_addr));
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);
}
zh_vector_delete_item(&gateway_config->available_device_vector, i);
goto CHECK; // Since the vector is shifted after item deletion, the item needs to be re-checked.
}

View File

@ -1 +1 @@
1.0.6
1.0.7