1 """Support for Huawei LTE binary sensors."""
3 from __future__
import annotations
8 from huawei_lte_api.enums.cradle
import ConnectionStatusEnum
11 DOMAIN
as BINARY_SENSOR_DOMAIN,
21 KEY_MONITORING_CHECK_NOTIFICATIONS,
22 KEY_MONITORING_STATUS,
23 KEY_WLAN_WIFI_FEATURE_SWITCH,
25 from .entity
import HuaweiLteBaseEntityWithDevice
27 _LOGGER = logging.getLogger(__name__)
32 config_entry: ConfigEntry,
33 async_add_entities: AddEntitiesCallback,
35 """Set up from config entry."""
36 router = hass.data[DOMAIN].routers[config_entry.entry_id]
37 entities: list[Entity] = []
39 if router.data.get(KEY_MONITORING_STATUS):
45 if router.data.get(KEY_MONITORING_CHECK_NOTIFICATIONS):
52 """Huawei LTE binary sensor device base class."""
54 _attr_entity_registry_enabled_default =
False
58 _raw_state: str |
None =
None
62 return f
"{self.key}.{self.item}"
65 """Subscribe to needed data on add."""
67 self.
routerrouter.subscriptions[self.key].append(
68 f
"{BINARY_SENSOR_DOMAIN}/{self.item}"
72 """Unsubscribe from needed data on remove."""
75 f
"{BINARY_SENSOR_DOMAIN}/{self.item}"
81 value = self.
routerrouter.data[self.key][self.item]
84 _LOGGER.debug(
"%s[%s] not in data", self.key, self.item)
93 CONNECTION_STATE_ATTRIBUTES = {
94 str(ConnectionStatusEnum.CONNECTING):
"Connecting",
95 str(ConnectionStatusEnum.DISCONNECTING):
"Disconnecting",
96 str(ConnectionStatusEnum.CONNECT_FAILED):
"Connect failed",
97 str(ConnectionStatusEnum.CONNECT_STATUS_NULL):
"Status not available",
98 str(ConnectionStatusEnum.CONNECT_STATUS_ERROR):
"Status error",
103 """Huawei LTE mobile connection binary sensor."""
105 _attr_translation_key =
"mobile_connection"
106 _attr_entity_registry_enabled_default =
True
108 key = KEY_MONITORING_STATUS
109 item =
"ConnectionStatus"
113 """Return whether the binary sensor is on."""
117 in (ConnectionStatusEnum.CONNECTED, ConnectionStatusEnum.DISCONNECTING)
122 """Return True if real state is assumed, not known."""
124 ConnectionStatusEnum.CONNECT_FAILED,
125 ConnectionStatusEnum.CONNECTED,
126 ConnectionStatusEnum.DISCONNECTED,
131 """Get additional attributes related to connection status."""
133 if self.
_raw_state_raw_state
in CONNECTION_STATE_ATTRIBUTES:
134 attributes[
"additional_state"] = CONNECTION_STATE_ATTRIBUTES[
141 """Huawei LTE WiFi status binary sensor base class."""
145 """Return whether the binary sensor is on."""
150 """Return True if real state is assumed, not known."""
155 """Huawei LTE WiFi status binary sensor."""
157 _attr_translation_key: str =
"wifi_status"
159 key = KEY_MONITORING_STATUS
164 """Huawei LTE 2.4GHz WiFi status binary sensor."""
166 _attr_translation_key: str =
"24ghz_wifi_status"
168 key = KEY_WLAN_WIFI_FEATURE_SWITCH
169 item =
"wifi24g_switch_enable"
173 """Huawei LTE 5GHz WiFi status binary sensor."""
175 _attr_translation_key: str =
"5ghz_wifi_status"
177 key = KEY_WLAN_WIFI_FEATURE_SWITCH
178 item =
"wifi5g_enabled"
182 """Huawei LTE SMS storage full binary sensor."""
184 _attr_translation_key: str =
"sms_storage_full"
186 key = KEY_MONITORING_CHECK_NOTIFICATIONS
187 item =
"SmsStorageFull"
191 """Return whether the binary sensor is on."""
196 """Return True if real state is assumed, not known."""
str _device_unique_id(self)
None async_added_to_hass(self)
None async_will_remove_from_hass(self)
dict[str, Any]|None extra_state_attributes(self)
bool remove(self, _T matcher)
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)