1 """A sensor for incoming calls using a USB modem that supports caller ID."""
3 from __future__
import annotations
5 from phone_modem
import PhoneModem
14 from .const
import CID, DATA_KEY_API, DOMAIN
18 hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
20 """Set up the Modem Caller ID sensor."""
21 api = hass.data[DOMAIN][entry.entry_id][DATA_KEY_API]
31 async
def _async_on_hass_stop(event: Event) ->
None:
32 """HA is shutting down, close modem port."""
33 if hass.data[DOMAIN][entry.entry_id][DATA_KEY_API]:
34 await hass.data[DOMAIN][entry.entry_id][DATA_KEY_API].close()
36 entry.async_on_unload(
37 hass.bus.async_listen_once(EVENT_HOMEASSISTANT_STOP, _async_on_hass_stop)
42 """Implementation of USB modem caller ID sensor."""
44 _attr_should_poll =
False
45 _attr_has_entity_name =
True
47 _attr_translation_key =
"incoming_call"
49 def __init__(self, api: PhoneModem, server_unique_id: str) ->
None:
50 """Initialize the sensor."""
62 """Call when the modem sensor is added to Home Assistant."""
68 """Handle new states."""
70 if self.
apiapi.cid_name:
72 if self.
apiapi.cid_number:
74 if self.
apiapi.cid_time:
None async_added_to_hass(self)
_attr_extra_state_attributes
None _async_incoming_call(self, str new_state)
None __init__(self, PhoneModem api, str server_unique_id)
None async_write_ha_state(self)
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)