Add more Huawei LTE sensors (#32123)

* Add Huawei LTE WiFi client count and DNS server sensors

* Add Huawei LTE current month statistics sensors
This commit is contained in:
Paulus Schoutsen 2020-03-04 14:56:37 -08:00 committed by GitHub
parent d1beb92c5d
commit 9a8017aadd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 40 additions and 5 deletions

View File

@ -63,6 +63,7 @@ from .const import (
KEY_DEVICE_INFORMATION, KEY_DEVICE_INFORMATION,
KEY_DEVICE_SIGNAL, KEY_DEVICE_SIGNAL,
KEY_DIALUP_MOBILE_DATASWITCH, KEY_DIALUP_MOBILE_DATASWITCH,
KEY_MONITORING_MONTH_STATISTICS,
KEY_MONITORING_STATUS, KEY_MONITORING_STATUS,
KEY_MONITORING_TRAFFIC_STATISTICS, KEY_MONITORING_TRAFFIC_STATISTICS,
KEY_WLAN_HOST_LIST, KEY_WLAN_HOST_LIST,
@ -230,6 +231,9 @@ class Router:
self._get_data( self._get_data(
KEY_DIALUP_MOBILE_DATASWITCH, self.client.dial_up.mobile_dataswitch 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_STATUS, self.client.monitoring.status)
self._get_data( self._get_data(
KEY_MONITORING_TRAFFIC_STATISTICS, self.client.monitoring.traffic_statistics KEY_MONITORING_TRAFFIC_STATISTICS, self.client.monitoring.traffic_statistics

View File

@ -27,6 +27,7 @@ KEY_DEVICE_BASIC_INFORMATION = "device_basic_information"
KEY_DEVICE_INFORMATION = "device_information" KEY_DEVICE_INFORMATION = "device_information"
KEY_DEVICE_SIGNAL = "device_signal" KEY_DEVICE_SIGNAL = "device_signal"
KEY_DIALUP_MOBILE_DATASWITCH = "dialup_mobile_dataswitch" KEY_DIALUP_MOBILE_DATASWITCH = "dialup_mobile_dataswitch"
KEY_MONITORING_MONTH_STATISTICS = "monitoring_month_statistics"
KEY_MONITORING_STATUS = "monitoring_status" KEY_MONITORING_STATUS = "monitoring_status"
KEY_MONITORING_TRAFFIC_STATISTICS = "monitoring_traffic_statistics" KEY_MONITORING_TRAFFIC_STATISTICS = "monitoring_traffic_statistics"
KEY_WLAN_HOST_LIST = "wlan_host_list" KEY_WLAN_HOST_LIST = "wlan_host_list"
@ -38,6 +39,8 @@ DEVICE_TRACKER_KEYS = {KEY_WLAN_HOST_LIST}
SENSOR_KEYS = { SENSOR_KEYS = {
KEY_DEVICE_INFORMATION, KEY_DEVICE_INFORMATION,
KEY_DEVICE_SIGNAL, KEY_DEVICE_SIGNAL,
KEY_MONITORING_MONTH_STATISTICS,
KEY_MONITORING_STATUS,
KEY_MONITORING_TRAFFIC_STATISTICS, KEY_MONITORING_TRAFFIC_STATISTICS,
} }

View File

@ -17,7 +17,10 @@ from .const import (
DOMAIN, DOMAIN,
KEY_DEVICE_INFORMATION, KEY_DEVICE_INFORMATION,
KEY_DEVICE_SIGNAL, KEY_DEVICE_SIGNAL,
KEY_MONITORING_MONTH_STATISTICS,
KEY_MONITORING_STATUS,
KEY_MONITORING_TRAFFIC_STATISTICS, KEY_MONITORING_TRAFFIC_STATISTICS,
SENSOR_KEYS,
) )
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@ -117,6 +120,35 @@ SENSOR_META = {
and "mdi:signal-cellular-2" and "mdi:signal-cellular-2"
or "mdi:signal-cellular-3", 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( KEY_MONITORING_TRAFFIC_STATISTICS: dict(
exclude=re.compile(r"^showtraffic$", re.IGNORECASE) 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.""" """Set up from config entry."""
router = hass.data[DOMAIN].routers[config_entry.data[CONF_URL]] router = hass.data[DOMAIN].routers[config_entry.data[CONF_URL]]
sensors = [] sensors = []
for key in ( for key in SENSOR_KEYS:
KEY_DEVICE_INFORMATION,
KEY_DEVICE_SIGNAL,
KEY_MONITORING_TRAFFIC_STATISTICS,
):
items = router.data.get(key) items = router.data.get(key)
if not items: if not items:
continue continue