1 """The jvc_projector integration."""
3 from __future__
import annotations
5 from jvcprojector
import JvcProjector, JvcProjectorAuthError, JvcProjectorConnectError
12 EVENT_HOMEASSISTANT_STOP,
18 from .coordinator
import JvcProjectorDataUpdateCoordinator
20 type JVCConfigEntry = ConfigEntry[JvcProjectorDataUpdateCoordinator]
22 PLATFORMS = [Platform.BINARY_SENSOR, Platform.REMOTE, Platform.SELECT, Platform.SENSOR]
26 """Set up integration from a config entry."""
27 device = JvcProjector(
28 host=entry.data[CONF_HOST],
29 port=entry.data[CONF_PORT],
30 password=entry.data[CONF_PASSWORD],
34 await device.connect(
True)
35 except JvcProjectorConnectError
as err:
36 await device.disconnect()
38 f
"Unable to connect to {entry.data[CONF_HOST]}"
40 except JvcProjectorAuthError
as err:
41 await device.disconnect()
45 await coordinator.async_config_entry_first_refresh()
47 entry.runtime_data = coordinator
49 async
def disconnect(event: Event) ->
None:
50 await device.disconnect()
52 entry.async_on_unload(
53 hass.bus.async_listen_once(EVENT_HOMEASSISTANT_STOP, disconnect)
56 await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
62 """Unload config entry."""
63 if unload_ok := await hass.config_entries.async_unload_platforms(entry, PLATFORMS):
64 await entry.runtime_data.device.disconnect()
bool async_unload_entry(HomeAssistant hass, JVCConfigEntry entry)
bool async_setup_entry(HomeAssistant hass, JVCConfigEntry entry)