Add wiffi integration (#30784)
* Add integration for wiffi devices wiffi devices are DIY board manufactured by stall.biz. Several devices are available, e.g. a weather station (weatherman), an indoor environmental sensor (wiffi-wz) and some more. This intgration has been developed using a weatherman device, but should also work for other devices from stall.biz. * Fix pylint warning * Use WIFFI / STALL WIFFI instead of wiffi to be consistent with stall.biz * Don't update disabled entities. * fix complains - move wiffi specific code to pypi - remove yaml configuration code * incorporate various suggestions from code review * fix remaining comments from Martin * fix comments * add tests for config flow * fix comments * add missing requirements for tests * fix pylint warnings * fix comments * fix comments remove debug log rename .translations to translations * rebase and adapt to latest dev branch * Update homeassistant/components/wiffi/config_flow.py Co-Authored-By: Martin Hjelmare <marhje52@gmail.com> * Update homeassistant/components/wiffi/config_flow.py Co-Authored-By: Martin Hjelmare <marhje52@gmail.com> * fix missing import Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
This commit is contained in:
parent
6464c94990
commit
ee96ff2846
16 changed files with 647 additions and 0 deletions
53
homeassistant/components/wiffi/binary_sensor.py
Normal file
53
homeassistant/components/wiffi/binary_sensor.py
Normal file
|
@ -0,0 +1,53 @@
|
|||
"""Binary sensor platform support for wiffi devices."""
|
||||
|
||||
from homeassistant.components.binary_sensor import BinarySensorEntity
|
||||
from homeassistant.core import callback
|
||||
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
||||
|
||||
from . import WiffiEntity
|
||||
from .const import CREATE_ENTITY_SIGNAL
|
||||
|
||||
|
||||
async def async_setup_entry(hass, config_entry, async_add_entities):
|
||||
"""Set up platform for a new integration.
|
||||
|
||||
Called by the HA framework after async_forward_entry_setup has been called
|
||||
during initialization of a new integration (= wiffi).
|
||||
"""
|
||||
|
||||
@callback
|
||||
def _create_entity(device, metric):
|
||||
"""Create platform specific entities."""
|
||||
entities = []
|
||||
|
||||
if metric.is_bool:
|
||||
entities.append(BoolEntity(device, metric))
|
||||
|
||||
async_add_entities(entities)
|
||||
|
||||
async_dispatcher_connect(hass, CREATE_ENTITY_SIGNAL, _create_entity)
|
||||
|
||||
|
||||
class BoolEntity(WiffiEntity, BinarySensorEntity):
|
||||
"""Entity for wiffi metrics which have a boolean value."""
|
||||
|
||||
def __init__(self, device, metric):
|
||||
"""Initialize the entity."""
|
||||
super().__init__(device, metric)
|
||||
self._value = metric.value
|
||||
self.reset_expiration_date()
|
||||
|
||||
@property
|
||||
def is_on(self):
|
||||
"""Return the state of the entity."""
|
||||
return self._value
|
||||
|
||||
@callback
|
||||
def _update_value_callback(self, device, metric):
|
||||
"""Update the value of the entity.
|
||||
|
||||
Called if a new message has been received from the wiffi device.
|
||||
"""
|
||||
self.reset_expiration_date()
|
||||
self._value = metric.value
|
||||
self.async_write_ha_state()
|
Loading…
Add table
Add a link
Reference in a new issue