From 7ffb5202ec4e2e89082bf6ad4e0b42914a344ad4 Mon Sep 17 00:00:00 2001 From: Ivan Pavlina Date: Sun, 2 Jan 2022 08:17:58 +0000 Subject: [PATCH] Modified checking of sensor type name logic to prevent false positives. Removed excessive logging. --- .../mikrotik_router/mikrotik_controller.py | 3 -- custom_components/mikrotik_router/sensor.py | 44 +++++++++---------- 2 files changed, 22 insertions(+), 25 deletions(-) diff --git a/custom_components/mikrotik_router/mikrotik_controller.py b/custom_components/mikrotik_router/mikrotik_controller.py index e0c7706..6e9ab2a 100644 --- a/custom_components/mikrotik_router/mikrotik_controller.py +++ b/custom_components/mikrotik_router/mikrotik_controller.py @@ -614,10 +614,8 @@ class MikrotikControllerData: if self.api.connected() and self.option_sensor_client_traffic: if 0 < self.major_fw_version < 7: - _LOGGER.info("Using accounting feature for client traffic processing") await self.hass.async_add_executor_job(self.process_accounting) elif 0 < self.major_fw_version >= 7: - _LOGGER.info("Using accounting kid control devices for client traffic processing") await self.hass.async_add_executor_job(self.process_kid_control_devices) if self.api.connected() and self.option_sensor_simple_queues: @@ -2172,4 +2170,3 @@ class MikrotikControllerData: break return uid - diff --git a/custom_components/mikrotik_router/sensor.py b/custom_components/mikrotik_router/sensor.py index 3c3eede..0b0104d 100644 --- a/custom_components/mikrotik_router/sensor.py +++ b/custom_components/mikrotik_router/sensor.py @@ -305,7 +305,7 @@ def update_items(inst, config_entry, mikrotik_controller, async_add_entities, se new_sensors.append(sensors[item_id]) for sensor in SENSOR_TYPES: - if "system_" in sensor: + if sensor.startswith("system_"): if ( SENSOR_TYPES[sensor][ATTR_ATTR] not in mikrotik_controller.data[SENSOR_TYPES[sensor][ATTR_PATH]] @@ -327,27 +327,7 @@ def update_items(inst, config_entry, mikrotik_controller, async_add_entities, se ) new_sensors.append(sensors[item_id]) - if "client_traffic_" in sensor: - for uid in mikrotik_controller.data["client_traffic"]: - item_id = f"{inst}-{sensor}-{mikrotik_controller.data['client_traffic'][uid]['mac-address']}" - if item_id in sensors: - if sensors[item_id].enabled: - sensors[item_id].async_schedule_update_ha_state() - continue - - if ( - SENSOR_TYPES[sensor][ATTR_ATTR] - in mikrotik_controller.data["client_traffic"][uid].keys() - ): - sensors[item_id] = MikrotikClientTrafficSensor( - mikrotik_controller=mikrotik_controller, - inst=inst, - sensor=sensor, - uid=uid, - ) - new_sensors.append(sensors[item_id]) - - if "traffic_" in sensor: + if sensor.startswith("traffic_"): if not config_entry.options.get( CONF_SENSOR_PORT_TRAFFIC, DEFAULT_SENSOR_PORT_TRAFFIC ): @@ -370,6 +350,26 @@ def update_items(inst, config_entry, mikrotik_controller, async_add_entities, se ) new_sensors.append(sensors[item_id]) + if sensor.startswith("client_traffic_"): + for uid in mikrotik_controller.data["client_traffic"]: + item_id = f"{inst}-{sensor}-{mikrotik_controller.data['client_traffic'][uid]['mac-address']}" + if item_id in sensors: + if sensors[item_id].enabled: + sensors[item_id].async_schedule_update_ha_state() + continue + + if ( + SENSOR_TYPES[sensor][ATTR_ATTR] + in mikrotik_controller.data["client_traffic"][uid].keys() + ): + sensors[item_id] = MikrotikClientTrafficSensor( + mikrotik_controller=mikrotik_controller, + inst=inst, + sensor=sensor, + uid=uid, + ) + new_sensors.append(sensors[item_id]) + if new_sensors: async_add_entities(new_sensors, True)