"""Support for Freebox Delta, Revolution and Mini 4K.""" import logging from homeassistant.components.switch import SwitchDevice from . import DATA_FREEBOX _LOGGER = logging.getLogger(__name__) async def async_setup_platform( hass, config, async_add_entities, discovery_info=None): """Set up the switch.""" fbx = hass.data[DATA_FREEBOX] async_add_entities([FbxWifiSwitch(fbx)], True) class FbxWifiSwitch(SwitchDevice): """Representation of a freebox wifi switch.""" def __init__(self, fbx): """Initilize the Wifi switch.""" self._name = 'Freebox WiFi' self._state = None self._fbx = fbx @property def name(self): """Return the name of the switch.""" return self._name @property def is_on(self): """Return true if device is on.""" return self._state async def _async_set_state(self, enabled): """Turn the switch on or off.""" from aiofreepybox.exceptions import InsufficientPermissionsError wifi_config = {"enabled": enabled} try: await self._fbx.wifi.set_global_config(wifi_config) except InsufficientPermissionsError: _LOGGER.warning('Home Assistant does not have permissions to' ' modify the Freebox settings. Please refer' ' to documentation.') async def async_turn_on(self, **kwargs): """Turn the switch on.""" await self._async_set_state(True) async def async_turn_off(self, **kwargs): """Turn the switch off.""" await self._async_set_state(False) async def async_update(self): """Get the state and update it.""" datas = await self._fbx.wifi.get_global_config() active = datas['enabled'] self._state = bool(active)