Skip to content
Snippets Groups Projects
Commit 178bf736 authored by Heiko Thiery's avatar Heiko Thiery Committed by Fabian Affolter
Browse files

Add new component fritzbox binary_sensor (#17057)


* Add new component fritzbox binary_sensor

Signed-off-by: default avatarHeiko Thiery <heiko.thiery@gmail.com>

* fix failed flake8 test

Signed-off-by: default avatarHeiko Thiery <heiko.thiery@gmail.com>

* add new file to .coveragerc

Signed-off-by: default avatarHeiko Thiery <heiko.thiery@gmail.com>

* use wildcard to cover all platforms

Signed-off-by: default avatarHeiko Thiery <heiko.thiery@gmail.com>

* remove polling because polling is true by default

Signed-off-by: default avatarHeiko Thiery <heiko.thiery@gmail.com>

* add blank line to keep imports ordered

Signed-off-by: default avatarHeiko Thiery <heiko.thiery@gmail.com>

* Minor changes
parent a559c06d
No related branches found
No related tags found
No related merge requests found
......@@ -112,7 +112,7 @@ omit =
homeassistant/components/*/evohome.py
homeassistant/components/fritzbox.py
homeassistant/components/switch/fritzbox.py
homeassistant/components/*/fritzbox.py
homeassistant/components/ecovacs.py
homeassistant/components/*/ecovacs.py
......
"""
Support for Fritzbox binary sensors.
For more details about this component, please refer to the documentation at
https://home-assistant.io/components/binary_sensor.fritzbox/
"""
import logging
import requests
from homeassistant.components.binary_sensor import BinarySensorDevice
from homeassistant.components.fritzbox import DOMAIN as FRITZBOX_DOMAIN
DEPENDENCIES = ['fritzbox']
_LOGGER = logging.getLogger(__name__)
def setup_platform(hass, config, add_entities, discovery_info=None):
"""Set up the Fritzbox binary sensor platform."""
devices = []
fritz_list = hass.data[FRITZBOX_DOMAIN]
for fritz in fritz_list:
device_list = fritz.get_devices()
for device in device_list:
if device.has_alarm:
devices.append(FritzboxBinarySensor(device, fritz))
add_entities(devices, True)
class FritzboxBinarySensor(BinarySensorDevice):
"""Representation of a binary Fritzbox device."""
def __init__(self, device, fritz):
"""Initialize the Fritzbox binary sensor."""
self._device = device
self._fritz = fritz
@property
def name(self):
"""Return the name of the entity."""
return self._device.name
@property
def device_class(self):
"""Return the class of this sensor."""
return 'window'
@property
def is_on(self):
"""Return true if sensor is on."""
if not self._device.present:
return False
return self._device.alert_state
def update(self):
"""Get latest data from the Fritzbox."""
try:
self._device.update()
except requests.exceptions.HTTPError as ex:
_LOGGER.warning("Connection error: %s", ex)
self._fritz.login()
......@@ -18,7 +18,7 @@ _LOGGER = logging.getLogger(__name__)
REQUIREMENTS = ['pyfritzhome==0.4.0']
SUPPORTED_DOMAINS = ['climate', 'switch']
SUPPORTED_DOMAINS = ['binary_sensor', 'climate', 'switch']
DOMAIN = 'fritzbox'
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment