From 9a8017aaddb0c5153ad608ed509e4461c26c0628 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 4 Mar 2020 14:56:37 -0800 Subject: [PATCH] Add more Huawei LTE sensors (#32123) * Add Huawei LTE WiFi client count and DNS server sensors * Add Huawei LTE current month statistics sensors --- .../components/huawei_lte/__init__.py | 4 ++ homeassistant/components/huawei_lte/const.py | 3 ++ homeassistant/components/huawei_lte/sensor.py | 38 ++++++++++++++++--- 3 files changed, 40 insertions(+), 5 deletions(-) diff --git a/homeassistant/components/huawei_lte/__init__.py b/homeassistant/components/huawei_lte/__init__.py index 1bcdd7129c7..261250e9c02 100644 --- a/homeassistant/components/huawei_lte/__init__.py +++ b/homeassistant/components/huawei_lte/__init__.py @@ -63,6 +63,7 @@ from .const import ( KEY_DEVICE_INFORMATION, KEY_DEVICE_SIGNAL, KEY_DIALUP_MOBILE_DATASWITCH, + KEY_MONITORING_MONTH_STATISTICS, KEY_MONITORING_STATUS, KEY_MONITORING_TRAFFIC_STATISTICS, KEY_WLAN_HOST_LIST, @@ -230,6 +231,9 @@ class Router: self._get_data( KEY_DIALUP_MOBILE_DATASWITCH, self.client.dial_up.mobile_dataswitch ) + self._get_data( + KEY_MONITORING_MONTH_STATISTICS, self.client.monitoring.month_statistics + ) self._get_data(KEY_MONITORING_STATUS, self.client.monitoring.status) self._get_data( KEY_MONITORING_TRAFFIC_STATISTICS, self.client.monitoring.traffic_statistics diff --git a/homeassistant/components/huawei_lte/const.py b/homeassistant/components/huawei_lte/const.py index 41814d5ae10..5a4aeb5f0b7 100644 --- a/homeassistant/components/huawei_lte/const.py +++ b/homeassistant/components/huawei_lte/const.py @@ -27,6 +27,7 @@ KEY_DEVICE_BASIC_INFORMATION = "device_basic_information" KEY_DEVICE_INFORMATION = "device_information" KEY_DEVICE_SIGNAL = "device_signal" KEY_DIALUP_MOBILE_DATASWITCH = "dialup_mobile_dataswitch" +KEY_MONITORING_MONTH_STATISTICS = "monitoring_month_statistics" KEY_MONITORING_STATUS = "monitoring_status" KEY_MONITORING_TRAFFIC_STATISTICS = "monitoring_traffic_statistics" KEY_WLAN_HOST_LIST = "wlan_host_list" @@ -38,6 +39,8 @@ DEVICE_TRACKER_KEYS = {KEY_WLAN_HOST_LIST} SENSOR_KEYS = { KEY_DEVICE_INFORMATION, KEY_DEVICE_SIGNAL, + KEY_MONITORING_MONTH_STATISTICS, + KEY_MONITORING_STATUS, KEY_MONITORING_TRAFFIC_STATISTICS, } diff --git a/homeassistant/components/huawei_lte/sensor.py b/homeassistant/components/huawei_lte/sensor.py index 8ca5e02dcdd..e49de1c05a3 100644 --- a/homeassistant/components/huawei_lte/sensor.py +++ b/homeassistant/components/huawei_lte/sensor.py @@ -17,7 +17,10 @@ from .const import ( DOMAIN, KEY_DEVICE_INFORMATION, KEY_DEVICE_SIGNAL, + KEY_MONITORING_MONTH_STATISTICS, + KEY_MONITORING_STATUS, KEY_MONITORING_TRAFFIC_STATISTICS, + SENSOR_KEYS, ) _LOGGER = logging.getLogger(__name__) @@ -117,6 +120,35 @@ SENSOR_META = { and "mdi:signal-cellular-2" or "mdi:signal-cellular-3", ), + KEY_MONITORING_MONTH_STATISTICS: dict( + exclude=re.compile(r"^month(duration|lastcleartime)$", re.IGNORECASE) + ), + (KEY_MONITORING_MONTH_STATISTICS, "CurrentMonthDownload"): dict( + name="Current month download", unit=DATA_BYTES, icon="mdi:download" + ), + (KEY_MONITORING_MONTH_STATISTICS, "CurrentMonthUpload"): dict( + name="Current month upload", unit=DATA_BYTES, icon="mdi:upload" + ), + KEY_MONITORING_STATUS: dict( + include=re.compile( + r"^(currentwifiuser|(primary|secondary).*dns)$", re.IGNORECASE + ) + ), + (KEY_MONITORING_STATUS, "CurrentWifiUser"): dict( + name="WiFi clients connected", icon="mdi:wifi" + ), + (KEY_MONITORING_STATUS, "PrimaryDns"): dict( + name="Primary DNS server", icon="mdi:ip" + ), + (KEY_MONITORING_STATUS, "SecondaryDns"): dict( + name="Secondary DNS server", icon="mdi:ip" + ), + (KEY_MONITORING_STATUS, "PrimaryIPv6Dns"): dict( + name="Primary IPv6 DNS server", icon="mdi:ip" + ), + (KEY_MONITORING_STATUS, "SecondaryIPv6Dns"): dict( + name="Secondary IPv6 DNS server", icon="mdi:ip" + ), KEY_MONITORING_TRAFFIC_STATISTICS: dict( exclude=re.compile(r"^showtraffic$", re.IGNORECASE) ), @@ -145,11 +177,7 @@ async def async_setup_entry(hass, config_entry, async_add_entities): """Set up from config entry.""" router = hass.data[DOMAIN].routers[config_entry.data[CONF_URL]] sensors = [] - for key in ( - KEY_DEVICE_INFORMATION, - KEY_DEVICE_SIGNAL, - KEY_MONITORING_TRAFFIC_STATISTICS, - ): + for key in SENSOR_KEYS: items = router.data.get(key) if not items: continue