Use Platform and ValueType enum in zwave_js.discovery (#77402)

This commit is contained in:
Raman Gupta 2022-08-27 18:47:46 -04:00 committed by GitHub
parent 8e88e039f7
commit d25a76d3d6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -43,6 +43,8 @@ from zwave_js_server.model.device_class import DeviceClassItem
from zwave_js_server.model.node import Node as ZwaveNode from zwave_js_server.model.node import Node as ZwaveNode
from zwave_js_server.model.value import Value as ZwaveValue from zwave_js_server.model.value import Value as ZwaveValue
from homeassistant.backports.enum import StrEnum
from homeassistant.const import Platform
from homeassistant.core import callback from homeassistant.core import callback
from homeassistant.helpers.device_registry import DeviceEntry from homeassistant.helpers.device_registry import DeviceEntry
@ -59,6 +61,15 @@ from .discovery_data_template import (
from .helpers import ZwaveValueID from .helpers import ZwaveValueID
class ValueType(StrEnum):
"""Enum with all value types."""
ANY = "any"
BOOLEAN = "boolean"
NUMBER = "number"
STRING = "string"
class DataclassMustHaveAtLeastOne: class DataclassMustHaveAtLeastOne:
"""A dataclass that must have at least one input parameter that is not None.""" """A dataclass that must have at least one input parameter that is not None."""
@ -97,7 +108,7 @@ class ZwaveDiscoveryInfo:
# bool to specify whether state is assumed and events should be fired on value update # bool to specify whether state is assumed and events should be fired on value update
assumed_state: bool assumed_state: bool
# the home assistant platform for which an entity should be created # the home assistant platform for which an entity should be created
platform: str platform: Platform
# helper data to use in platform setup # helper data to use in platform setup
platform_data: Any platform_data: Any
# additional values that need to be watched by entity # additional values that need to be watched by entity
@ -145,7 +156,7 @@ class ZWaveDiscoverySchema:
""" """
# specify the hass platform for which this scheme applies (e.g. light, sensor) # specify the hass platform for which this scheme applies (e.g. light, sensor)
platform: str platform: Platform
# primary value belonging to this discovery scheme # primary value belonging to this discovery scheme
primary_value: ZWaveValueDiscoverySchema primary_value: ZWaveValueDiscoverySchema
# [optional] hint for platform # [optional] hint for platform
@ -194,7 +205,7 @@ def get_config_parameter_discovery_schema(
and primary_value. and primary_value.
""" """
return ZWaveDiscoverySchema( return ZWaveDiscoverySchema(
platform="sensor", platform=Platform.SENSOR,
hint="config_parameter", hint="config_parameter",
primary_value=ZWaveValueDiscoverySchema( primary_value=ZWaveValueDiscoverySchema(
command_class={CommandClass.CONFIGURATION}, command_class={CommandClass.CONFIGURATION},
@ -202,7 +213,7 @@ def get_config_parameter_discovery_schema(
property_name=property_name, property_name=property_name,
property_key=property_key, property_key=property_key,
property_key_name=property_key_name, property_key_name=property_key_name,
type={"number"}, type={ValueType.NUMBER},
), ),
entity_registry_enabled_default=False, entity_registry_enabled_default=False,
**kwargs, **kwargs,
@ -212,13 +223,13 @@ def get_config_parameter_discovery_schema(
DOOR_LOCK_CURRENT_MODE_SCHEMA = ZWaveValueDiscoverySchema( DOOR_LOCK_CURRENT_MODE_SCHEMA = ZWaveValueDiscoverySchema(
command_class={CommandClass.DOOR_LOCK}, command_class={CommandClass.DOOR_LOCK},
property={CURRENT_MODE_PROPERTY}, property={CURRENT_MODE_PROPERTY},
type={"number"}, type={ValueType.NUMBER},
) )
SWITCH_MULTILEVEL_CURRENT_VALUE_SCHEMA = ZWaveValueDiscoverySchema( SWITCH_MULTILEVEL_CURRENT_VALUE_SCHEMA = ZWaveValueDiscoverySchema(
command_class={CommandClass.SWITCH_MULTILEVEL}, command_class={CommandClass.SWITCH_MULTILEVEL},
property={CURRENT_VALUE_PROPERTY}, property={CURRENT_VALUE_PROPERTY},
type={"number"}, type={ValueType.NUMBER},
) )
SWITCH_BINARY_CURRENT_VALUE_SCHEMA = ZWaveValueDiscoverySchema( SWITCH_BINARY_CURRENT_VALUE_SCHEMA = ZWaveValueDiscoverySchema(
@ -228,7 +239,7 @@ SWITCH_BINARY_CURRENT_VALUE_SCHEMA = ZWaveValueDiscoverySchema(
SIREN_TONE_SCHEMA = ZWaveValueDiscoverySchema( SIREN_TONE_SCHEMA = ZWaveValueDiscoverySchema(
command_class={CommandClass.SOUND_SWITCH}, command_class={CommandClass.SOUND_SWITCH},
property={TONE_ID_PROPERTY}, property={TONE_ID_PROPERTY},
type={"number"}, type={ValueType.NUMBER},
) )
# For device class mapping see: # For device class mapping see:
@ -237,7 +248,7 @@ DISCOVERY_SCHEMAS = [
# ====== START OF DEVICE SPECIFIC MAPPING SCHEMAS ======= # ====== START OF DEVICE SPECIFIC MAPPING SCHEMAS =======
# Honeywell 39358 In-Wall Fan Control using switch multilevel CC # Honeywell 39358 In-Wall Fan Control using switch multilevel CC
ZWaveDiscoverySchema( ZWaveDiscoverySchema(
platform="fan", platform=Platform.FAN,
manufacturer_id={0x0039}, manufacturer_id={0x0039},
product_id={0x3131}, product_id={0x3131},
product_type={0x4944}, product_type={0x4944},
@ -245,7 +256,7 @@ DISCOVERY_SCHEMAS = [
), ),
# GE/Jasco - In-Wall Smart Fan Control - 12730 / ZW4002 # GE/Jasco - In-Wall Smart Fan Control - 12730 / ZW4002
ZWaveDiscoverySchema( ZWaveDiscoverySchema(
platform="fan", platform=Platform.FAN,
hint="has_fan_value_mapping", hint="has_fan_value_mapping",
manufacturer_id={0x0063}, manufacturer_id={0x0063},
product_id={0x3034}, product_id={0x3034},
@ -257,7 +268,7 @@ DISCOVERY_SCHEMAS = [
), ),
# GE/Jasco - In-Wall Smart Fan Control - 14287 / ZW4002 # GE/Jasco - In-Wall Smart Fan Control - 14287 / ZW4002
ZWaveDiscoverySchema( ZWaveDiscoverySchema(
platform="fan", platform=Platform.FAN,
hint="has_fan_value_mapping", hint="has_fan_value_mapping",
manufacturer_id={0x0063}, manufacturer_id={0x0063},
product_id={0x3131}, product_id={0x3131},
@ -269,7 +280,7 @@ DISCOVERY_SCHEMAS = [
), ),
# GE/Jasco - In-Wall Smart Fan Control - 14314 / ZW4002 # GE/Jasco - In-Wall Smart Fan Control - 14314 / ZW4002
ZWaveDiscoverySchema( ZWaveDiscoverySchema(
platform="fan", platform=Platform.FAN,
manufacturer_id={0x0063}, manufacturer_id={0x0063},
product_id={0x3138}, product_id={0x3138},
product_type={0x4944}, product_type={0x4944},
@ -277,7 +288,7 @@ DISCOVERY_SCHEMAS = [
), ),
# Leviton ZW4SF fan controllers using switch multilevel CC # Leviton ZW4SF fan controllers using switch multilevel CC
ZWaveDiscoverySchema( ZWaveDiscoverySchema(
platform="fan", platform=Platform.FAN,
manufacturer_id={0x001D}, manufacturer_id={0x001D},
product_id={0x0002}, product_id={0x0002},
product_type={0x0038}, product_type={0x0038},
@ -286,7 +297,7 @@ DISCOVERY_SCHEMAS = [
# Inovelli LZW36 light / fan controller combo using switch multilevel CC # Inovelli LZW36 light / fan controller combo using switch multilevel CC
# The fan is endpoint 2, the light is endpoint 1. # The fan is endpoint 2, the light is endpoint 1.
ZWaveDiscoverySchema( ZWaveDiscoverySchema(
platform="fan", platform=Platform.FAN,
hint="has_fan_value_mapping", hint="has_fan_value_mapping",
manufacturer_id={0x031E}, manufacturer_id={0x031E},
product_id={0x0001}, product_id={0x0001},
@ -295,7 +306,7 @@ DISCOVERY_SCHEMAS = [
command_class={CommandClass.SWITCH_MULTILEVEL}, command_class={CommandClass.SWITCH_MULTILEVEL},
endpoint={2}, endpoint={2},
property={CURRENT_VALUE_PROPERTY}, property={CURRENT_VALUE_PROPERTY},
type={"number"}, type={ValueType.NUMBER},
), ),
data_template=FixedFanValueMappingDataTemplate( data_template=FixedFanValueMappingDataTemplate(
FanValueMapping( FanValueMapping(
@ -305,7 +316,7 @@ DISCOVERY_SCHEMAS = [
), ),
# HomeSeer HS-FC200+ # HomeSeer HS-FC200+
ZWaveDiscoverySchema( ZWaveDiscoverySchema(
platform="fan", platform=Platform.FAN,
hint="has_fan_value_mapping", hint="has_fan_value_mapping",
manufacturer_id={0x000C}, manufacturer_id={0x000C},
product_id={0x0001}, product_id={0x0001},
@ -323,7 +334,7 @@ DISCOVERY_SCHEMAS = [
), ),
# Fibaro Shutter Fibaro FGR222 # Fibaro Shutter Fibaro FGR222
ZWaveDiscoverySchema( ZWaveDiscoverySchema(
platform="cover", platform=Platform.COVER,
hint="window_shutter_tilt", hint="window_shutter_tilt",
manufacturer_id={0x010F}, manufacturer_id={0x010F},
product_id={0x1000, 0x1001}, product_id={0x1000, 0x1001},
@ -347,7 +358,7 @@ DISCOVERY_SCHEMAS = [
), ),
# Qubino flush shutter # Qubino flush shutter
ZWaveDiscoverySchema( ZWaveDiscoverySchema(
platform="cover", platform=Platform.COVER,
hint="window_shutter", hint="window_shutter",
manufacturer_id={0x0159}, manufacturer_id={0x0159},
product_id={0x0052, 0x0053}, product_id={0x0052, 0x0053},
@ -356,7 +367,7 @@ DISCOVERY_SCHEMAS = [
), ),
# Graber/Bali/Spring Fashion Covers # Graber/Bali/Spring Fashion Covers
ZWaveDiscoverySchema( ZWaveDiscoverySchema(
platform="cover", platform=Platform.COVER,
hint="window_blind", hint="window_blind",
manufacturer_id={0x026E}, manufacturer_id={0x026E},
product_id={0x5A31}, product_id={0x5A31},
@ -365,7 +376,7 @@ DISCOVERY_SCHEMAS = [
), ),
# iBlinds v2 window blind motor # iBlinds v2 window blind motor
ZWaveDiscoverySchema( ZWaveDiscoverySchema(
platform="cover", platform=Platform.COVER,
hint="window_blind", hint="window_blind",
manufacturer_id={0x0287}, manufacturer_id={0x0287},
product_id={0x000D}, product_id={0x000D},
@ -374,7 +385,7 @@ DISCOVERY_SCHEMAS = [
), ),
# Vision Security ZL7432 In Wall Dual Relay Switch # Vision Security ZL7432 In Wall Dual Relay Switch
ZWaveDiscoverySchema( ZWaveDiscoverySchema(
platform="switch", platform=Platform.SWITCH,
manufacturer_id={0x0109}, manufacturer_id={0x0109},
product_id={0x1711, 0x1717}, product_id={0x1711, 0x1717},
product_type={0x2017}, product_type={0x2017},
@ -383,7 +394,7 @@ DISCOVERY_SCHEMAS = [
), ),
# Heatit Z-TRM3 # Heatit Z-TRM3
ZWaveDiscoverySchema( ZWaveDiscoverySchema(
platform="climate", platform=Platform.CLIMATE,
hint="dynamic_current_temp", hint="dynamic_current_temp",
manufacturer_id={0x019B}, manufacturer_id={0x019B},
product_id={0x0203}, product_id={0x0203},
@ -391,7 +402,7 @@ DISCOVERY_SCHEMAS = [
primary_value=ZWaveValueDiscoverySchema( primary_value=ZWaveValueDiscoverySchema(
command_class={CommandClass.THERMOSTAT_MODE}, command_class={CommandClass.THERMOSTAT_MODE},
property={THERMOSTAT_MODE_PROPERTY}, property={THERMOSTAT_MODE_PROPERTY},
type={"number"}, type={ValueType.NUMBER},
), ),
data_template=DynamicCurrentTempClimateDataTemplate( data_template=DynamicCurrentTempClimateDataTemplate(
lookup_table={ lookup_table={
@ -431,7 +442,7 @@ DISCOVERY_SCHEMAS = [
), ),
# Heatit Z-TRM2fx # Heatit Z-TRM2fx
ZWaveDiscoverySchema( ZWaveDiscoverySchema(
platform="climate", platform=Platform.CLIMATE,
hint="dynamic_current_temp", hint="dynamic_current_temp",
manufacturer_id={0x019B}, manufacturer_id={0x019B},
product_id={0x0202}, product_id={0x0202},
@ -440,7 +451,7 @@ DISCOVERY_SCHEMAS = [
primary_value=ZWaveValueDiscoverySchema( primary_value=ZWaveValueDiscoverySchema(
command_class={CommandClass.THERMOSTAT_MODE}, command_class={CommandClass.THERMOSTAT_MODE},
property={THERMOSTAT_MODE_PROPERTY}, property={THERMOSTAT_MODE_PROPERTY},
type={"number"}, type={ValueType.NUMBER},
), ),
data_template=DynamicCurrentTempClimateDataTemplate( data_template=DynamicCurrentTempClimateDataTemplate(
lookup_table={ lookup_table={
@ -469,7 +480,7 @@ DISCOVERY_SCHEMAS = [
), ),
# FortrezZ SSA1/SSA2/SSA3 # FortrezZ SSA1/SSA2/SSA3
ZWaveDiscoverySchema( ZWaveDiscoverySchema(
platform="select", platform=Platform.SELECT,
hint="multilevel_switch", hint="multilevel_switch",
manufacturer_id={0x0084}, manufacturer_id={0x0084},
product_id={0x0107, 0x0108, 0x010B, 0x0205}, product_id={0x0107, 0x0108, 0x010B, 0x0205},
@ -486,7 +497,7 @@ DISCOVERY_SCHEMAS = [
), ),
# HomeSeer HSM-200 v1 # HomeSeer HSM-200 v1
ZWaveDiscoverySchema( ZWaveDiscoverySchema(
platform="light", platform=Platform.LIGHT,
hint="black_is_off", hint="black_is_off",
manufacturer_id={0x001E}, manufacturer_id={0x001E},
product_id={0x0001}, product_id={0x0001},
@ -508,20 +519,22 @@ DISCOVERY_SCHEMAS = [
# ====== START OF GENERIC MAPPING SCHEMAS ======= # ====== START OF GENERIC MAPPING SCHEMAS =======
# locks # locks
# Door Lock CC # Door Lock CC
ZWaveDiscoverySchema(platform="lock", primary_value=DOOR_LOCK_CURRENT_MODE_SCHEMA), ZWaveDiscoverySchema(
platform=Platform.LOCK, primary_value=DOOR_LOCK_CURRENT_MODE_SCHEMA
),
# Only discover the Lock CC if the Door Lock CC isn't also present on the node # Only discover the Lock CC if the Door Lock CC isn't also present on the node
ZWaveDiscoverySchema( ZWaveDiscoverySchema(
platform="lock", platform=Platform.LOCK,
primary_value=ZWaveValueDiscoverySchema( primary_value=ZWaveValueDiscoverySchema(
command_class={CommandClass.LOCK}, command_class={CommandClass.LOCK},
property={LOCKED_PROPERTY}, property={LOCKED_PROPERTY},
type={"boolean"}, type={ValueType.BOOLEAN},
), ),
absent_values=[DOOR_LOCK_CURRENT_MODE_SCHEMA], absent_values=[DOOR_LOCK_CURRENT_MODE_SCHEMA],
), ),
# door lock door status # door lock door status
ZWaveDiscoverySchema( ZWaveDiscoverySchema(
platform="binary_sensor", platform=Platform.BINARY_SENSOR,
hint="property", hint="property",
primary_value=ZWaveValueDiscoverySchema( primary_value=ZWaveValueDiscoverySchema(
command_class={ command_class={
@ -529,53 +542,53 @@ DISCOVERY_SCHEMAS = [
CommandClass.DOOR_LOCK, CommandClass.DOOR_LOCK,
}, },
property={DOOR_STATUS_PROPERTY}, property={DOOR_STATUS_PROPERTY},
type={"any"}, type={ValueType.ANY},
), ),
), ),
# thermostat fan # thermostat fan
ZWaveDiscoverySchema( ZWaveDiscoverySchema(
platform="fan", platform=Platform.FAN,
hint="thermostat_fan", hint="thermostat_fan",
primary_value=ZWaveValueDiscoverySchema( primary_value=ZWaveValueDiscoverySchema(
command_class={CommandClass.THERMOSTAT_FAN_MODE}, command_class={CommandClass.THERMOSTAT_FAN_MODE},
property={THERMOSTAT_FAN_MODE_PROPERTY}, property={THERMOSTAT_FAN_MODE_PROPERTY},
type={"number"}, type={ValueType.NUMBER},
), ),
entity_registry_enabled_default=False, entity_registry_enabled_default=False,
), ),
# humidifier # humidifier
# hygrostats supporting mode (and optional setpoint) # hygrostats supporting mode (and optional setpoint)
ZWaveDiscoverySchema( ZWaveDiscoverySchema(
platform="humidifier", platform=Platform.HUMIDIFIER,
primary_value=ZWaveValueDiscoverySchema( primary_value=ZWaveValueDiscoverySchema(
command_class={CommandClass.HUMIDITY_CONTROL_MODE}, command_class={CommandClass.HUMIDITY_CONTROL_MODE},
property={HUMIDITY_CONTROL_MODE_PROPERTY}, property={HUMIDITY_CONTROL_MODE_PROPERTY},
type={"number"}, type={ValueType.NUMBER},
), ),
), ),
# climate # climate
# thermostats supporting mode (and optional setpoint) # thermostats supporting mode (and optional setpoint)
ZWaveDiscoverySchema( ZWaveDiscoverySchema(
platform="climate", platform=Platform.CLIMATE,
primary_value=ZWaveValueDiscoverySchema( primary_value=ZWaveValueDiscoverySchema(
command_class={CommandClass.THERMOSTAT_MODE}, command_class={CommandClass.THERMOSTAT_MODE},
property={THERMOSTAT_MODE_PROPERTY}, property={THERMOSTAT_MODE_PROPERTY},
type={"number"}, type={ValueType.NUMBER},
), ),
), ),
# thermostats supporting setpoint only (and thus not mode) # thermostats supporting setpoint only (and thus not mode)
ZWaveDiscoverySchema( ZWaveDiscoverySchema(
platform="climate", platform=Platform.CLIMATE,
primary_value=ZWaveValueDiscoverySchema( primary_value=ZWaveValueDiscoverySchema(
command_class={CommandClass.THERMOSTAT_SETPOINT}, command_class={CommandClass.THERMOSTAT_SETPOINT},
property={THERMOSTAT_SETPOINT_PROPERTY}, property={THERMOSTAT_SETPOINT_PROPERTY},
type={"number"}, type={ValueType.NUMBER},
), ),
absent_values=[ # mode must not be present to prevent dupes absent_values=[ # mode must not be present to prevent dupes
ZWaveValueDiscoverySchema( ZWaveValueDiscoverySchema(
command_class={CommandClass.THERMOSTAT_MODE}, command_class={CommandClass.THERMOSTAT_MODE},
property={THERMOSTAT_MODE_PROPERTY}, property={THERMOSTAT_MODE_PROPERTY},
type={"number"}, type={ValueType.NUMBER},
), ),
], ],
), ),
@ -583,68 +596,68 @@ DISCOVERY_SCHEMAS = [
# When CC is Sensor Binary and device class generic is Binary Sensor, entity should # When CC is Sensor Binary and device class generic is Binary Sensor, entity should
# be enabled by default # be enabled by default
ZWaveDiscoverySchema( ZWaveDiscoverySchema(
platform="binary_sensor", platform=Platform.BINARY_SENSOR,
hint="boolean", hint="boolean",
device_class_generic={"Binary Sensor"}, device_class_generic={"Binary Sensor"},
primary_value=ZWaveValueDiscoverySchema( primary_value=ZWaveValueDiscoverySchema(
command_class={CommandClass.SENSOR_BINARY}, command_class={CommandClass.SENSOR_BINARY},
type={"boolean"}, type={ValueType.BOOLEAN},
), ),
), ),
# Legacy binary sensors are phased out (replaced by notification sensors) # Legacy binary sensors are phased out (replaced by notification sensors)
# Disable by default to not confuse users # Disable by default to not confuse users
ZWaveDiscoverySchema( ZWaveDiscoverySchema(
platform="binary_sensor", platform=Platform.BINARY_SENSOR,
hint="boolean", hint="boolean",
primary_value=ZWaveValueDiscoverySchema( primary_value=ZWaveValueDiscoverySchema(
command_class={CommandClass.SENSOR_BINARY}, command_class={CommandClass.SENSOR_BINARY},
type={"boolean"}, type={ValueType.BOOLEAN},
), ),
entity_registry_enabled_default=False, entity_registry_enabled_default=False,
), ),
ZWaveDiscoverySchema( ZWaveDiscoverySchema(
platform="binary_sensor", platform=Platform.BINARY_SENSOR,
hint="boolean", hint="boolean",
primary_value=ZWaveValueDiscoverySchema( primary_value=ZWaveValueDiscoverySchema(
command_class={ command_class={
CommandClass.BATTERY, CommandClass.BATTERY,
CommandClass.SENSOR_ALARM, CommandClass.SENSOR_ALARM,
}, },
type={"boolean"}, type={ValueType.BOOLEAN},
), ),
), ),
ZWaveDiscoverySchema( ZWaveDiscoverySchema(
platform="binary_sensor", platform=Platform.BINARY_SENSOR,
hint="notification", hint="notification",
primary_value=ZWaveValueDiscoverySchema( primary_value=ZWaveValueDiscoverySchema(
command_class={ command_class={
CommandClass.NOTIFICATION, CommandClass.NOTIFICATION,
}, },
type={"number"}, type={ValueType.NUMBER},
), ),
allow_multi=True, allow_multi=True,
), ),
# generic text sensors # generic text sensors
ZWaveDiscoverySchema( ZWaveDiscoverySchema(
platform="sensor", platform=Platform.SENSOR,
hint="string_sensor", hint="string_sensor",
primary_value=ZWaveValueDiscoverySchema( primary_value=ZWaveValueDiscoverySchema(
command_class={CommandClass.SENSOR_ALARM}, command_class={CommandClass.SENSOR_ALARM},
type={"string"}, type={ValueType.STRING},
), ),
), ),
ZWaveDiscoverySchema( ZWaveDiscoverySchema(
platform="sensor", platform=Platform.SENSOR,
hint="string_sensor", hint="string_sensor",
primary_value=ZWaveValueDiscoverySchema( primary_value=ZWaveValueDiscoverySchema(
command_class={CommandClass.INDICATOR}, command_class={CommandClass.INDICATOR},
type={"string"}, type={ValueType.STRING},
), ),
entity_registry_enabled_default=False, entity_registry_enabled_default=False,
), ),
# generic numeric sensors # generic numeric sensors
ZWaveDiscoverySchema( ZWaveDiscoverySchema(
platform="sensor", platform=Platform.SENSOR,
hint="numeric_sensor", hint="numeric_sensor",
primary_value=ZWaveValueDiscoverySchema( primary_value=ZWaveValueDiscoverySchema(
command_class={ command_class={
@ -652,55 +665,55 @@ DISCOVERY_SCHEMAS = [
CommandClass.SENSOR_ALARM, CommandClass.SENSOR_ALARM,
CommandClass.BATTERY, CommandClass.BATTERY,
}, },
type={"number"}, type={ValueType.NUMBER},
), ),
data_template=NumericSensorDataTemplate(), data_template=NumericSensorDataTemplate(),
), ),
ZWaveDiscoverySchema( ZWaveDiscoverySchema(
platform="sensor", platform=Platform.SENSOR,
hint="numeric_sensor", hint="numeric_sensor",
primary_value=ZWaveValueDiscoverySchema( primary_value=ZWaveValueDiscoverySchema(
command_class={CommandClass.INDICATOR}, command_class={CommandClass.INDICATOR},
type={"number"}, type={ValueType.NUMBER},
), ),
data_template=NumericSensorDataTemplate(), data_template=NumericSensorDataTemplate(),
entity_registry_enabled_default=False, entity_registry_enabled_default=False,
), ),
# Meter sensors for Meter CC # Meter sensors for Meter CC
ZWaveDiscoverySchema( ZWaveDiscoverySchema(
platform="sensor", platform=Platform.SENSOR,
hint="meter", hint="meter",
primary_value=ZWaveValueDiscoverySchema( primary_value=ZWaveValueDiscoverySchema(
command_class={ command_class={
CommandClass.METER, CommandClass.METER,
}, },
type={"number"}, type={ValueType.NUMBER},
property={VALUE_PROPERTY}, property={VALUE_PROPERTY},
), ),
data_template=NumericSensorDataTemplate(), data_template=NumericSensorDataTemplate(),
), ),
# special list sensors (Notification CC) # special list sensors (Notification CC)
ZWaveDiscoverySchema( ZWaveDiscoverySchema(
platform="sensor", platform=Platform.SENSOR,
hint="list_sensor", hint="list_sensor",
primary_value=ZWaveValueDiscoverySchema( primary_value=ZWaveValueDiscoverySchema(
command_class={ command_class={
CommandClass.NOTIFICATION, CommandClass.NOTIFICATION,
}, },
type={"number"}, type={ValueType.NUMBER},
), ),
allow_multi=True, allow_multi=True,
entity_registry_enabled_default=False, entity_registry_enabled_default=False,
), ),
# number for Basic CC # number for Basic CC
ZWaveDiscoverySchema( ZWaveDiscoverySchema(
platform="number", platform=Platform.NUMBER,
hint="Basic", hint="Basic",
primary_value=ZWaveValueDiscoverySchema( primary_value=ZWaveValueDiscoverySchema(
command_class={ command_class={
CommandClass.BASIC, CommandClass.BASIC,
}, },
type={"number"}, type={ValueType.NUMBER},
property={CURRENT_VALUE_PROPERTY}, property={CURRENT_VALUE_PROPERTY},
), ),
required_values=[ required_values=[
@ -708,7 +721,7 @@ DISCOVERY_SCHEMAS = [
command_class={ command_class={
CommandClass.BASIC, CommandClass.BASIC,
}, },
type={"number"}, type={ValueType.NUMBER},
property={TARGET_VALUE_PROPERTY}, property={TARGET_VALUE_PROPERTY},
) )
], ],
@ -717,24 +730,24 @@ DISCOVERY_SCHEMAS = [
), ),
# binary switches # binary switches
ZWaveDiscoverySchema( ZWaveDiscoverySchema(
platform="switch", platform=Platform.SWITCH,
primary_value=SWITCH_BINARY_CURRENT_VALUE_SCHEMA, primary_value=SWITCH_BINARY_CURRENT_VALUE_SCHEMA,
), ),
# binary switch # binary switch
# barrier operator signaling states # barrier operator signaling states
ZWaveDiscoverySchema( ZWaveDiscoverySchema(
platform="switch", platform=Platform.SWITCH,
hint="barrier_event_signaling_state", hint="barrier_event_signaling_state",
primary_value=ZWaveValueDiscoverySchema( primary_value=ZWaveValueDiscoverySchema(
command_class={CommandClass.BARRIER_OPERATOR}, command_class={CommandClass.BARRIER_OPERATOR},
property={SIGNALING_STATE_PROPERTY}, property={SIGNALING_STATE_PROPERTY},
type={"number"}, type={ValueType.NUMBER},
), ),
), ),
# cover # cover
# window coverings # window coverings
ZWaveDiscoverySchema( ZWaveDiscoverySchema(
platform="cover", platform=Platform.COVER,
hint="window_cover", hint="window_cover",
device_class_generic={"Multilevel Switch"}, device_class_generic={"Multilevel Switch"},
device_class_specific={ device_class_specific={
@ -748,24 +761,24 @@ DISCOVERY_SCHEMAS = [
# cover # cover
# motorized barriers # motorized barriers
ZWaveDiscoverySchema( ZWaveDiscoverySchema(
platform="cover", platform=Platform.COVER,
hint="motorized_barrier", hint="motorized_barrier",
primary_value=ZWaveValueDiscoverySchema( primary_value=ZWaveValueDiscoverySchema(
command_class={CommandClass.BARRIER_OPERATOR}, command_class={CommandClass.BARRIER_OPERATOR},
property={CURRENT_STATE_PROPERTY}, property={CURRENT_STATE_PROPERTY},
type={"number"}, type={ValueType.NUMBER},
), ),
required_values=[ required_values=[
ZWaveValueDiscoverySchema( ZWaveValueDiscoverySchema(
command_class={CommandClass.BARRIER_OPERATOR}, command_class={CommandClass.BARRIER_OPERATOR},
property={TARGET_STATE_PROPERTY}, property={TARGET_STATE_PROPERTY},
type={"number"}, type={ValueType.NUMBER},
), ),
], ],
), ),
# fan # fan
ZWaveDiscoverySchema( ZWaveDiscoverySchema(
platform="fan", platform=Platform.FAN,
hint="fan", hint="fan",
device_class_generic={"Multilevel Switch"}, device_class_generic={"Multilevel Switch"},
device_class_specific={"Fan Switch"}, device_class_specific={"Fan Switch"},
@ -774,7 +787,7 @@ DISCOVERY_SCHEMAS = [
# number platform # number platform
# valve control for thermostats # valve control for thermostats
ZWaveDiscoverySchema( ZWaveDiscoverySchema(
platform="number", platform=Platform.NUMBER,
hint="Valve control", hint="Valve control",
device_class_generic={"Thermostat"}, device_class_generic={"Thermostat"},
primary_value=SWITCH_MULTILEVEL_CURRENT_VALUE_SCHEMA, primary_value=SWITCH_MULTILEVEL_CURRENT_VALUE_SCHEMA,
@ -785,46 +798,46 @@ DISCOVERY_SCHEMAS = [
# NOTE: keep this at the bottom of the discovery scheme, # NOTE: keep this at the bottom of the discovery scheme,
# to handle all others that need the multilevel CC first # to handle all others that need the multilevel CC first
ZWaveDiscoverySchema( ZWaveDiscoverySchema(
platform="light", platform=Platform.LIGHT,
primary_value=SWITCH_MULTILEVEL_CURRENT_VALUE_SCHEMA, primary_value=SWITCH_MULTILEVEL_CURRENT_VALUE_SCHEMA,
), ),
# sirens # sirens
ZWaveDiscoverySchema( ZWaveDiscoverySchema(
platform="siren", platform=Platform.SIREN,
primary_value=SIREN_TONE_SCHEMA, primary_value=SIREN_TONE_SCHEMA,
), ),
# select # select
# siren default tone # siren default tone
ZWaveDiscoverySchema( ZWaveDiscoverySchema(
platform="select", platform=Platform.SELECT,
hint="Default tone", hint="Default tone",
primary_value=ZWaveValueDiscoverySchema( primary_value=ZWaveValueDiscoverySchema(
command_class={CommandClass.SOUND_SWITCH}, command_class={CommandClass.SOUND_SWITCH},
property={DEFAULT_TONE_ID_PROPERTY}, property={DEFAULT_TONE_ID_PROPERTY},
type={"number"}, type={ValueType.NUMBER},
), ),
required_values=[SIREN_TONE_SCHEMA], required_values=[SIREN_TONE_SCHEMA],
), ),
# number # number
# siren default volume # siren default volume
ZWaveDiscoverySchema( ZWaveDiscoverySchema(
platform="number", platform=Platform.NUMBER,
hint="volume", hint="volume",
primary_value=ZWaveValueDiscoverySchema( primary_value=ZWaveValueDiscoverySchema(
command_class={CommandClass.SOUND_SWITCH}, command_class={CommandClass.SOUND_SWITCH},
property={DEFAULT_VOLUME_PROPERTY}, property={DEFAULT_VOLUME_PROPERTY},
type={"number"}, type={ValueType.NUMBER},
), ),
required_values=[SIREN_TONE_SCHEMA], required_values=[SIREN_TONE_SCHEMA],
), ),
# select # select
# protection CC # protection CC
ZWaveDiscoverySchema( ZWaveDiscoverySchema(
platform="select", platform=Platform.SELECT,
primary_value=ZWaveValueDiscoverySchema( primary_value=ZWaveValueDiscoverySchema(
command_class={CommandClass.PROTECTION}, command_class={CommandClass.PROTECTION},
property={LOCAL_PROPERTY, RF_PROPERTY}, property={LOCAL_PROPERTY, RF_PROPERTY},
type={"number"}, type={ValueType.NUMBER},
), ),
), ),
] ]