1 """The sensor websocket API."""
3 from __future__
import annotations
7 import voluptuous
as vol
14 NON_NUMERIC_DEVICE_CLASSES,
19 _NUMERIC_DEVICE_CLASSES =
list(set(SensorDeviceClass) - NON_NUMERIC_DEVICE_CLASSES)
24 """Set up the sensor websocket API."""
25 websocket_api.async_register_command(hass, ws_device_class_units)
26 websocket_api.async_register_command(hass, ws_numeric_device_classes)
30 @websocket_api.websocket_command(
{
vol.Required("type"):
"sensor/device_class_convertible_units",
31 vol.Required(
"device_class"): str,
37 """Return supported units for a device class."""
38 device_class = msg[
"device_class"]
39 convertible_units = []
40 if device_class
in UNIT_CONVERTERS
and device_class
in DEVICE_CLASS_UNITS:
41 convertible_units = sorted(
42 DEVICE_CLASS_UNITS[device_class],
43 key=
lambda s: str.casefold(
str(s)),
45 connection.send_result(msg[
"id"], {
"units": convertible_units})
49 @websocket_api.websocket_command(
{
vol.Required("type"):
"sensor/numeric_device_classes",
55 """Return numeric sensor device classes."""
56 connection.send_result(
57 msg[
"id"], {
"numeric_device_classes": _NUMERIC_DEVICE_CLASSES}
59
None async_setup(HomeAssistant hass)
None ws_numeric_device_classes(HomeAssistant hass, websocket_api.ActiveConnection connection, dict[str, Any] msg)
None ws_device_class_units(HomeAssistant hass, websocket_api.ActiveConnection connection, dict[str, Any] msg)