From f1a239f11824e621f8e3651e685bb78fdad9dfb0 Mon Sep 17 00:00:00 2001 From: Tomaae <23486452+tomaae@users.noreply.github.com> Date: Mon, 9 Dec 2019 10:07:36 +0100 Subject: [PATCH] removed extra cycle in sensor update_items --- custom_components/mikrotik_router/sensor.py | 41 +++++++++------------ 1 file changed, 18 insertions(+), 23 deletions(-) diff --git a/custom_components/mikrotik_router/sensor.py b/custom_components/mikrotik_router/sensor.py index 665f053..7679f4a 100644 --- a/custom_components/mikrotik_router/sensor.py +++ b/custom_components/mikrotik_router/sensor.py @@ -103,33 +103,28 @@ def update_items(inst, mikrotik_controller, async_add_entities, sensors): """Update sensor state from the controller.""" new_sensors = [] - for sensor in SENSOR_TYPES: - if "traffic_" in sensor: - continue - - item_id = "{}-{}".format(inst, sensor) - if item_id in sensors: - if sensors[item_id].enabled: - sensors[item_id].async_schedule_update_ha_state() - continue - - sensors[item_id] = MikrotikControllerSensor(mikrotik_controller=mikrotik_controller, inst=inst, sensor=sensor) - new_sensors.append(sensors[item_id]) - for sensor in SENSOR_TYPES: if "traffic_" not in sensor: - continue + item_id = "{}-{}".format(inst, sensor) + if item_id in sensors: + if sensors[item_id].enabled: + sensors[item_id].async_schedule_update_ha_state() + continue - for uid in mikrotik_controller.data['interface']: - if mikrotik_controller.data['interface'][uid]['type'] == "ether": - item_id = "{}-{}-{}".format(inst, sensor, mikrotik_controller.data['interface'][uid]['default-name']) - if item_id in sensors: - if sensors[item_id].enabled: - sensors[item_id].async_schedule_update_ha_state() - continue + sensors[item_id] = MikrotikControllerSensor(mikrotik_controller=mikrotik_controller, inst=inst, sensor=sensor) + new_sensors.append(sensors[item_id]) - sensors[item_id] = MikrotikControllerTrafficSensor(mikrotik_controller=mikrotik_controller, inst=inst, sensor=sensor, uid=uid) - new_sensors.append(sensors[item_id]) + if "traffic_" in sensor: + for uid in mikrotik_controller.data['interface']: + if mikrotik_controller.data['interface'][uid]['type'] == "ether": + item_id = "{}-{}-{}".format(inst, sensor, mikrotik_controller.data['interface'][uid]['default-name']) + if item_id in sensors: + if sensors[item_id].enabled: + sensors[item_id].async_schedule_update_ha_state() + continue + + sensors[item_id] = MikrotikControllerTrafficSensor(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)