Version 1.0.8

Fixed bug with duplicate messages in Syslog.
This commit is contained in:
Alexey Zholtikov 2024-07-16 12:07:22 +03:00
parent 7166625595
commit 67aa396262
2 changed files with 11 additions and 15 deletions

View File

@ -370,14 +370,24 @@ void zh_espnow_event_handler(void *arg, esp_event_base_t event_base, int32_t eve
case ZHPT_KEEP_ALIVE: case ZHPT_KEEP_ALIVE:
if (xSemaphoreTake(gateway_config->device_check_in_progress_mutex, portTICK_PERIOD_MS) == pdTRUE) if (xSemaphoreTake(gateway_config->device_check_in_progress_mutex, portTICK_PERIOD_MS) == pdTRUE)
{ {
bool is_found = false;
for (uint16_t i = 0; i < zh_vector_get_size(&gateway_config->available_device_vector); ++i) for (uint16_t i = 0; i < zh_vector_get_size(&gateway_config->available_device_vector); ++i)
{ {
available_device_t *available_device = zh_vector_get_item(&gateway_config->available_device_vector, i); available_device_t *available_device = zh_vector_get_item(&gateway_config->available_device_vector, i);
if (memcmp(recv_data->mac_addr, available_device->mac_addr, 6) == 0) if (memcmp(recv_data->mac_addr, available_device->mac_addr, 6) == 0)
{ {
zh_vector_delete_item(&gateway_config->available_device_vector, i); zh_vector_delete_item(&gateway_config->available_device_vector, i);
is_found = true;
} }
} }
if (gateway_config->syslog_is_enable == true && is_found == false)
{
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);
}
available_device_t available_device = {0}; available_device_t available_device = {0};
available_device.device_type = data->device_type; available_device.device_type = data->device_type;
memcpy(available_device.mac_addr, recv_data->mac_addr, 6); memcpy(available_device.mac_addr, recv_data->mac_addr, 6);
@ -393,32 +403,18 @@ 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:

View File

@ -1 +1 @@
1.0.7 1.0.8