1 """Support for KWB Easyfire."""
3 from __future__
import annotations
6 import voluptuous
as vol
9 PLATFORM_SCHEMA
as SENSOR_PLATFORM_SCHEMA,
18 EVENT_HOMEASSISTANT_STOP,
33 SERIAL_SCHEMA = SENSOR_PLATFORM_SCHEMA.extend(
35 vol.Optional(CONF_RAW, default=DEFAULT_RAW): cv.boolean,
36 vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
37 vol.Required(CONF_DEVICE): cv.string,
38 vol.Required(CONF_TYPE):
"serial",
42 ETHERNET_SCHEMA = SENSOR_PLATFORM_SCHEMA.extend(
44 vol.Optional(CONF_RAW, default=DEFAULT_RAW): cv.boolean,
45 vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
46 vol.Required(CONF_HOST): cv.string,
47 vol.Required(CONF_PORT): cv.port,
48 vol.Required(CONF_TYPE):
"tcp",
52 PLATFORM_SCHEMA = vol.Schema(vol.Any(SERIAL_SCHEMA, ETHERNET_SCHEMA))
58 add_entities: AddEntitiesCallback,
59 discovery_info: DiscoveryInfoType |
None =
None,
61 """Set up the KWB component."""
62 host = config.get(CONF_HOST)
63 port = config.get(CONF_PORT)
64 device = config.get(CONF_DEVICE)
65 connection_type = config.get(CONF_TYPE)
66 raw = config.get(CONF_RAW)
67 client_name = config.get(CONF_NAME)
69 if connection_type ==
"serial":
70 easyfire = kwb.KWBEasyfire(MODE_SERIAL,
"", 0, device)
71 elif connection_type ==
"tcp":
72 easyfire = kwb.KWBEasyfire(MODE_TCP, host, port)
78 hass.bus.listen_once(EVENT_HOMEASSISTANT_STOP,
lambda event: easyfire.stop_thread())
82 for sensor
in easyfire.get_sensors()
83 if (sensor.sensor_type != kwb.PROP_SENSOR_RAW)
84 or (sensor.sensor_type == kwb.PROP_SENSOR_RAW
and raw)
89 """Representation of a KWB Easyfire sensor."""
91 def __init__(self, easyfire, sensor, client_name):
92 """Initialize the KWB sensor."""
100 """Return the name."""
101 return f
"{self._client_name} {self._name}"
105 """Return if sensor is available."""
106 return self.
_sensor_sensor.available
110 """Return the state of value."""
111 if self.
_sensor_sensor.value
is not None and self.
_sensor_sensor.available:
112 return self.
_sensor_sensor.value
117 """Return the unit of measurement of this entity, if any."""
118 return self.
_sensor_sensor.unit_of_measurement
def native_unit_of_measurement(self)
def __init__(self, easyfire, sensor, client_name)
def add_entities(account, async_add_entities, tracked)
None setup_platform(HomeAssistant hass, ConfigType config, AddEntitiesCallback add_entities, DiscoveryInfoType|None discovery_info=None)