From fddcbeb9ff0289de5c6c590633fcead3800f312a Mon Sep 17 00:00:00 2001 From: Alexey Zholtikov Date: Mon, 15 Jul 2024 23:19:02 +0300 Subject: [PATCH] Added sending of system messages to the Syslog server --- main/zh_gateway.c | 38 ++++++++++++++++++++++++++++++++++++++ version.txt | 2 +- 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/main/zh_gateway.c b/main/zh_gateway.c index bd6c133..3b4d0d9 100755 --- a/main/zh_gateway.c +++ b/main/zh_gateway.c @@ -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. } diff --git a/version.txt b/version.txt index ece61c6..f9cbc01 100755 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.0.6 \ No newline at end of file +1.0.7 \ No newline at end of file