mirror of
https://github.com/home-assistant/core.git
synced 2025-07-22 20:57:21 +00:00
Add Freebox switch platform (#21710)
* Added Freebox switch and bump aiofreepybox version * Added missing modified files * removed unused import * gen_requirements_all passed * removed unused import * Remove unused code * lint fixes * More lint fixe * Bump aiofreepybox version and API version to Freebox * Remove URL from log entry * import relative * Sort imports
This commit is contained in:
parent
112ed88d64
commit
d81df1f0ae
@ -9,7 +9,7 @@ from homeassistant.const import CONF_HOST, CONF_PORT, EVENT_HOMEASSISTANT_STOP
|
|||||||
from homeassistant.helpers import config_validation as cv, discovery
|
from homeassistant.helpers import config_validation as cv, discovery
|
||||||
from homeassistant.helpers.discovery import async_load_platform
|
from homeassistant.helpers.discovery import async_load_platform
|
||||||
|
|
||||||
REQUIREMENTS = ['aiofreepybox==0.0.6']
|
REQUIREMENTS = ['aiofreepybox==0.0.8']
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -60,7 +60,7 @@ async def async_setup_freebox(hass, config, host, port):
|
|||||||
}
|
}
|
||||||
|
|
||||||
token_file = hass.config.path(FREEBOX_CONFIG_FILE)
|
token_file = hass.config.path(FREEBOX_CONFIG_FILE)
|
||||||
api_version = 'v1'
|
api_version = 'v4'
|
||||||
|
|
||||||
fbx = Freepybox(
|
fbx = Freepybox(
|
||||||
app_desc=app_desc,
|
app_desc=app_desc,
|
||||||
@ -78,6 +78,8 @@ async def async_setup_freebox(hass, config, host, port):
|
|||||||
hass, 'sensor', DOMAIN, {}, config))
|
hass, 'sensor', DOMAIN, {}, config))
|
||||||
hass.async_create_task(async_load_platform(
|
hass.async_create_task(async_load_platform(
|
||||||
hass, 'device_tracker', DOMAIN, {}, config))
|
hass, 'device_tracker', DOMAIN, {}, config))
|
||||||
|
hass.async_create_task(async_load_platform(
|
||||||
|
hass, 'switch', DOMAIN, {}, config))
|
||||||
|
|
||||||
async def close_fbx(event):
|
async def close_fbx(event):
|
||||||
"""Close Freebox connection on HA Stop."""
|
"""Close Freebox connection on HA Stop."""
|
||||||
|
63
homeassistant/components/freebox/switch.py
Normal file
63
homeassistant/components/freebox/switch.py
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
"""Support for Freebox Delta, Revolution and Mini 4K."""
|
||||||
|
import logging
|
||||||
|
|
||||||
|
from homeassistant.components.switch import SwitchDevice
|
||||||
|
|
||||||
|
from . import DATA_FREEBOX
|
||||||
|
|
||||||
|
DEPENDENCIES = ['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)
|
@ -112,7 +112,7 @@ aiodns==1.1.1
|
|||||||
aioesphomeapi==1.7.0
|
aioesphomeapi==1.7.0
|
||||||
|
|
||||||
# homeassistant.components.freebox
|
# homeassistant.components.freebox
|
||||||
aiofreepybox==0.0.6
|
aiofreepybox==0.0.8
|
||||||
|
|
||||||
# homeassistant.components.yi.camera
|
# homeassistant.components.yi.camera
|
||||||
aioftp==0.12.0
|
aioftp==0.12.0
|
||||||
|
Loading…
x
Reference in New Issue
Block a user