* use state attribute rather than type * HA style tweaks * small tweak * bump client * add more device_state_attributes * bump client * small tweak * bump client for concurrent IO * force snake_case, and refactor (consolidate) Devices/Zones * force snake_case, and refactor (consolidate) Devices/Zones 2 * force snake_case, and refactor (consolidate) Devices/Zones 3 * refactor last_comms / wakeup_interval check * movement sensor is dynamic, and tweaking * tweak * bump client to v0.6.20 * dummy * dummy 2 * bump client to handle another edge case * use entity_id fro zones * small tweak * bump client to 0.6.22 * add recursive snake_case converter * fix regression * fix regression 2 * fix regression 3 * remove Awaitables * don't dynamically create function every scan_interval * log kast_comms as localtime, delint dt_util * add sensors fro v1 API * tweak entity_id * bump client * bump client to v0.6.24 * bump client to v0.6.25 * explicit device attrs, dt as UTC * add unique_id, remove entity_id * Bump client to 0.6.26 - add Hub UID * remove convert_dict() * add mac_address (uid) for v1 API * tweak var names * add UID.upper() to avoid unwanted unique_id changes * Update homeassistant/components/geniushub/__init__.py Co-Authored-By: Martin Hjelmare <marhje52@kth.se> * Update homeassistant/components/geniushub/__init__.py Co-Authored-By: Martin Hjelmare <marhje52@kth.se> * remove underscores * refactor for broker * ready now * validate UID (MAC address) * move uid to broker * use existing constant * pass client to broker
45 lines
1.4 KiB
Python
45 lines
1.4 KiB
Python
"""Support for Genius Hub binary_sensor devices."""
|
|
from homeassistant.components.binary_sensor import BinarySensorDevice
|
|
from homeassistant.helpers.typing import ConfigType, HomeAssistantType
|
|
|
|
from . import DOMAIN, GeniusDevice
|
|
|
|
GH_STATE_ATTR = "outputOnOff"
|
|
|
|
|
|
async def async_setup_platform(
|
|
hass: HomeAssistantType, config: ConfigType, async_add_entities, discovery_info=None
|
|
) -> None:
|
|
"""Set up the Genius Hub sensor entities."""
|
|
if discovery_info is None:
|
|
return
|
|
|
|
broker = hass.data[DOMAIN]["broker"]
|
|
|
|
switches = [
|
|
GeniusBinarySensor(broker, d, GH_STATE_ATTR)
|
|
for d in broker.client.device_objs
|
|
if GH_STATE_ATTR in d.data["state"]
|
|
]
|
|
|
|
async_add_entities(switches, update_before_add=True)
|
|
|
|
|
|
class GeniusBinarySensor(GeniusDevice, BinarySensorDevice):
|
|
"""Representation of a Genius Hub binary_sensor."""
|
|
|
|
def __init__(self, broker, device, state_attr) -> None:
|
|
"""Initialize the binary sensor."""
|
|
super().__init__(broker, device)
|
|
|
|
self._state_attr = state_attr
|
|
|
|
if device.type[:21] == "Dual Channel Receiver":
|
|
self._name = f"{device.type[:21]} {device.id}"
|
|
else:
|
|
self._name = f"{device.type} {device.id}"
|
|
|
|
@property
|
|
def is_on(self) -> bool:
|
|
"""Return the status of the sensor."""
|
|
return self._device.data["state"][self._state_attr]
|