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: case ZHDT_SWITCH:
zh_espnow_switch_send_mqtt_json_config_message(data, recv_data->mac_addr, gateway_config); zh_espnow_switch_send_mqtt_json_config_message(data, recv_data->mac_addr, gateway_config);
goto ZHPT_CONFIG_SEND_SYSLOG;
break; break;
case ZHDT_LED: case ZHDT_LED:
zh_espnow_led_send_mqtt_json_config_message(data, recv_data->mac_addr, gateway_config); zh_espnow_led_send_mqtt_json_config_message(data, recv_data->mac_addr, gateway_config);
goto ZHPT_CONFIG_SEND_SYSLOG;
break; break;
case ZHDT_SENSOR: case ZHDT_SENSOR:
zh_espnow_sensor_send_mqtt_json_config_message(data, recv_data->mac_addr, gateway_config); zh_espnow_sensor_send_mqtt_json_config_message(data, recv_data->mac_addr, gateway_config);
goto ZHPT_CONFIG_SEND_SYSLOG;
break; break;
case ZHDT_BINARY_SENSOR: case ZHDT_BINARY_SENSOR:
zh_espnow_binary_sensor_send_mqtt_json_config_message(data, recv_data->mac_addr, gateway_config); zh_espnow_binary_sensor_send_mqtt_json_config_message(data, recv_data->mac_addr, gateway_config);
goto ZHPT_CONFIG_SEND_SYSLOG;
break; break;
default: default:
break; 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; break;
case ZHPT_HARDWARE: 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: case MQTT_EVENT_CONNECTED:
if (gateway_config->mqtt_is_connected == false) 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 *topic_for_subscribe = NULL;
char *supported_device_type = NULL; char *supported_device_type = NULL;
for (zh_device_type_t i = 1; i <= ZHDT_MAX; ++i) 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: case MQTT_EVENT_DISCONNECTED:
if (gateway_config->mqtt_is_connected == true) 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_attributes_message_task);
vTaskDelete(gateway_config->gateway_keep_alive_message_task); vTaskDelete(gateway_config->gateway_keep_alive_message_task);
vTaskDelete(gateway_config->device_availability_check_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)); 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); esp_mqtt_client_publish(gateway_config->mqtt_client, topic, "offline", 0, 2, true);
heap_caps_free(topic); 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); 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. 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