mirror of
https://github.com/home-assistant/core
synced 2024-09-03 08:14:07 +02:00
![Andrew Onyshchuk](/assets/img/avatar_default.png)
This brings back support for Z-Wave thermostats of SETPOINT_THERMOSTAT specific device class. Such devices don't have COMMAND_CLASS_THERMOSTAT_MODE and are now handled separately.
416 lines
16 KiB
Python
416 lines
16 KiB
Python
"""Z-Wave discovery schemas."""
|
|
from . import const
|
|
|
|
DEFAULT_VALUES_SCHEMA = {
|
|
"power": {
|
|
const.DISC_SCHEMAS: [
|
|
{
|
|
const.DISC_COMMAND_CLASS: [const.COMMAND_CLASS_SENSOR_MULTILEVEL],
|
|
const.DISC_INDEX: [const.INDEX_SENSOR_MULTILEVEL_POWER],
|
|
},
|
|
{
|
|
const.DISC_COMMAND_CLASS: [const.COMMAND_CLASS_METER],
|
|
const.DISC_INDEX: [const.INDEX_METER_POWER],
|
|
},
|
|
],
|
|
const.DISC_OPTIONAL: True,
|
|
}
|
|
}
|
|
|
|
DISCOVERY_SCHEMAS = [
|
|
{
|
|
const.DISC_COMPONENT: "binary_sensor",
|
|
const.DISC_GENERIC_DEVICE_CLASS: [
|
|
const.GENERIC_TYPE_ENTRY_CONTROL,
|
|
const.GENERIC_TYPE_SENSOR_ALARM,
|
|
const.GENERIC_TYPE_SENSOR_BINARY,
|
|
const.GENERIC_TYPE_SWITCH_BINARY,
|
|
const.GENERIC_TYPE_METER,
|
|
const.GENERIC_TYPE_SENSOR_MULTILEVEL,
|
|
const.GENERIC_TYPE_SWITCH_MULTILEVEL,
|
|
const.GENERIC_TYPE_SENSOR_NOTIFICATION,
|
|
const.GENERIC_TYPE_THERMOSTAT,
|
|
],
|
|
const.DISC_VALUES: dict(
|
|
DEFAULT_VALUES_SCHEMA,
|
|
**{
|
|
const.DISC_PRIMARY: {
|
|
const.DISC_COMMAND_CLASS: [const.COMMAND_CLASS_SENSOR_BINARY],
|
|
const.DISC_TYPE: const.TYPE_BOOL,
|
|
const.DISC_GENRE: const.GENRE_USER,
|
|
},
|
|
"off_delay": {
|
|
const.DISC_COMMAND_CLASS: [const.COMMAND_CLASS_CONFIGURATION],
|
|
const.DISC_INDEX: [9],
|
|
const.DISC_OPTIONAL: True,
|
|
},
|
|
},
|
|
),
|
|
},
|
|
{
|
|
const.DISC_COMPONENT: "climate", # thermostat without COMMAND_CLASS_THERMOSTAT_MODE
|
|
const.DISC_GENERIC_DEVICE_CLASS: [
|
|
const.GENERIC_TYPE_THERMOSTAT,
|
|
const.GENERIC_TYPE_SENSOR_MULTILEVEL,
|
|
],
|
|
const.DISC_SPECIFIC_DEVICE_CLASS: [
|
|
const.SPECIFIC_TYPE_THERMOSTAT_HEATING,
|
|
const.SPECIFIC_TYPE_SETPOINT_THERMOSTAT,
|
|
],
|
|
const.DISC_VALUES: dict(
|
|
DEFAULT_VALUES_SCHEMA,
|
|
**{
|
|
const.DISC_PRIMARY: {
|
|
const.DISC_COMMAND_CLASS: [const.COMMAND_CLASS_THERMOSTAT_SETPOINT]
|
|
},
|
|
"temperature": {
|
|
const.DISC_COMMAND_CLASS: [const.COMMAND_CLASS_SENSOR_MULTILEVEL],
|
|
const.DISC_INDEX: [const.INDEX_SENSOR_MULTILEVEL_TEMPERATURE],
|
|
const.DISC_OPTIONAL: True,
|
|
},
|
|
"fan_mode": {
|
|
const.DISC_COMMAND_CLASS: [const.COMMAND_CLASS_THERMOSTAT_FAN_MODE],
|
|
const.DISC_OPTIONAL: True,
|
|
},
|
|
"operating_state": {
|
|
const.DISC_COMMAND_CLASS: [
|
|
const.COMMAND_CLASS_THERMOSTAT_OPERATING_STATE
|
|
],
|
|
const.DISC_OPTIONAL: True,
|
|
},
|
|
"fan_action": {
|
|
const.DISC_COMMAND_CLASS: [
|
|
const.COMMAND_CLASS_THERMOSTAT_FAN_ACTION
|
|
],
|
|
const.DISC_OPTIONAL: True,
|
|
},
|
|
"mode": {
|
|
const.DISC_COMMAND_CLASS: [const.COMMAND_CLASS_THERMOSTAT_MODE],
|
|
const.DISC_OPTIONAL: True,
|
|
},
|
|
},
|
|
),
|
|
},
|
|
{
|
|
const.DISC_COMPONENT: "climate", # thermostat with COMMAND_CLASS_THERMOSTAT_MODE
|
|
const.DISC_GENERIC_DEVICE_CLASS: [
|
|
const.GENERIC_TYPE_THERMOSTAT,
|
|
const.GENERIC_TYPE_SENSOR_MULTILEVEL,
|
|
],
|
|
const.DISC_SPECIFIC_DEVICE_CLASS: [
|
|
const.SPECIFIC_TYPE_THERMOSTAT_GENERAL,
|
|
const.SPECIFIC_TYPE_THERMOSTAT_GENERAL_V2,
|
|
const.SPECIFIC_TYPE_SETBACK_THERMOSTAT,
|
|
],
|
|
const.DISC_VALUES: dict(
|
|
DEFAULT_VALUES_SCHEMA,
|
|
**{
|
|
const.DISC_PRIMARY: {
|
|
const.DISC_COMMAND_CLASS: [const.COMMAND_CLASS_THERMOSTAT_MODE]
|
|
},
|
|
"setpoint_heating": {
|
|
const.DISC_COMMAND_CLASS: [const.COMMAND_CLASS_THERMOSTAT_SETPOINT],
|
|
const.DISC_INDEX: [1],
|
|
const.DISC_OPTIONAL: True,
|
|
},
|
|
"setpoint_cooling": {
|
|
const.DISC_COMMAND_CLASS: [const.COMMAND_CLASS_THERMOSTAT_SETPOINT],
|
|
const.DISC_INDEX: [2],
|
|
const.DISC_OPTIONAL: True,
|
|
},
|
|
"setpoint_furnace": {
|
|
const.DISC_COMMAND_CLASS: [const.COMMAND_CLASS_THERMOSTAT_SETPOINT],
|
|
const.DISC_INDEX: [7],
|
|
const.DISC_OPTIONAL: True,
|
|
},
|
|
"setpoint_dry_air": {
|
|
const.DISC_COMMAND_CLASS: [const.COMMAND_CLASS_THERMOSTAT_SETPOINT],
|
|
const.DISC_INDEX: [8],
|
|
const.DISC_OPTIONAL: True,
|
|
},
|
|
"setpoint_moist_air": {
|
|
const.DISC_COMMAND_CLASS: [const.COMMAND_CLASS_THERMOSTAT_SETPOINT],
|
|
const.DISC_INDEX: [9],
|
|
const.DISC_OPTIONAL: True,
|
|
},
|
|
"setpoint_auto_changeover": {
|
|
const.DISC_COMMAND_CLASS: [const.COMMAND_CLASS_THERMOSTAT_SETPOINT],
|
|
const.DISC_INDEX: [10],
|
|
const.DISC_OPTIONAL: True,
|
|
},
|
|
"setpoint_eco_heating": {
|
|
const.DISC_COMMAND_CLASS: [const.COMMAND_CLASS_THERMOSTAT_SETPOINT],
|
|
const.DISC_INDEX: [11],
|
|
const.DISC_OPTIONAL: True,
|
|
},
|
|
"setpoint_eco_cooling": {
|
|
const.DISC_COMMAND_CLASS: [const.COMMAND_CLASS_THERMOSTAT_SETPOINT],
|
|
const.DISC_INDEX: [12],
|
|
const.DISC_OPTIONAL: True,
|
|
},
|
|
"setpoint_away_heating": {
|
|
const.DISC_COMMAND_CLASS: [const.COMMAND_CLASS_THERMOSTAT_SETPOINT],
|
|
const.DISC_INDEX: [13],
|
|
const.DISC_OPTIONAL: True,
|
|
},
|
|
"setpoint_away_cooling": {
|
|
const.DISC_COMMAND_CLASS: [const.COMMAND_CLASS_THERMOSTAT_SETPOINT],
|
|
const.DISC_INDEX: [14],
|
|
const.DISC_OPTIONAL: True,
|
|
},
|
|
"setpoint_full_power": {
|
|
const.DISC_COMMAND_CLASS: [const.COMMAND_CLASS_THERMOSTAT_SETPOINT],
|
|
const.DISC_INDEX: [15],
|
|
const.DISC_OPTIONAL: True,
|
|
},
|
|
"temperature": {
|
|
const.DISC_COMMAND_CLASS: [const.COMMAND_CLASS_SENSOR_MULTILEVEL],
|
|
const.DISC_INDEX: [const.INDEX_SENSOR_MULTILEVEL_TEMPERATURE],
|
|
const.DISC_OPTIONAL: True,
|
|
},
|
|
"fan_mode": {
|
|
const.DISC_COMMAND_CLASS: [const.COMMAND_CLASS_THERMOSTAT_FAN_MODE],
|
|
const.DISC_OPTIONAL: True,
|
|
},
|
|
"operating_state": {
|
|
const.DISC_COMMAND_CLASS: [
|
|
const.COMMAND_CLASS_THERMOSTAT_OPERATING_STATE
|
|
],
|
|
const.DISC_OPTIONAL: True,
|
|
},
|
|
"fan_action": {
|
|
const.DISC_COMMAND_CLASS: [
|
|
const.COMMAND_CLASS_THERMOSTAT_FAN_ACTION
|
|
],
|
|
const.DISC_OPTIONAL: True,
|
|
},
|
|
"zxt_120_swing_mode": {
|
|
const.DISC_COMMAND_CLASS: [const.COMMAND_CLASS_CONFIGURATION],
|
|
const.DISC_INDEX: [33],
|
|
const.DISC_OPTIONAL: True,
|
|
},
|
|
},
|
|
),
|
|
},
|
|
{
|
|
const.DISC_COMPONENT: "cover", # Rollershutter
|
|
const.DISC_GENERIC_DEVICE_CLASS: [
|
|
const.GENERIC_TYPE_SWITCH_MULTILEVEL,
|
|
const.GENERIC_TYPE_ENTRY_CONTROL,
|
|
],
|
|
const.DISC_SPECIFIC_DEVICE_CLASS: [
|
|
const.SPECIFIC_TYPE_CLASS_A_MOTOR_CONTROL,
|
|
const.SPECIFIC_TYPE_CLASS_B_MOTOR_CONTROL,
|
|
const.SPECIFIC_TYPE_CLASS_C_MOTOR_CONTROL,
|
|
const.SPECIFIC_TYPE_MOTOR_MULTIPOSITION,
|
|
const.SPECIFIC_TYPE_SECURE_BARRIER_ADDON,
|
|
const.SPECIFIC_TYPE_SECURE_DOOR,
|
|
],
|
|
const.DISC_VALUES: dict(
|
|
DEFAULT_VALUES_SCHEMA,
|
|
**{
|
|
const.DISC_PRIMARY: {
|
|
const.DISC_COMMAND_CLASS: [const.COMMAND_CLASS_SWITCH_MULTILEVEL],
|
|
const.DISC_GENRE: const.GENRE_USER,
|
|
},
|
|
"open": {
|
|
const.DISC_COMMAND_CLASS: [const.COMMAND_CLASS_SWITCH_MULTILEVEL],
|
|
const.DISC_INDEX: [const.INDEX_SWITCH_MULTILEVEL_BRIGHT],
|
|
const.DISC_OPTIONAL: True,
|
|
},
|
|
"close": {
|
|
const.DISC_COMMAND_CLASS: [const.COMMAND_CLASS_SWITCH_MULTILEVEL],
|
|
const.DISC_INDEX: [const.INDEX_SWITCH_MULTILEVEL_DIM],
|
|
const.DISC_OPTIONAL: True,
|
|
},
|
|
},
|
|
),
|
|
},
|
|
{
|
|
const.DISC_COMPONENT: "cover", # Garage Door Switch
|
|
const.DISC_GENERIC_DEVICE_CLASS: [
|
|
const.GENERIC_TYPE_SWITCH_MULTILEVEL,
|
|
const.GENERIC_TYPE_ENTRY_CONTROL,
|
|
],
|
|
const.DISC_SPECIFIC_DEVICE_CLASS: [
|
|
const.SPECIFIC_TYPE_CLASS_A_MOTOR_CONTROL,
|
|
const.SPECIFIC_TYPE_CLASS_B_MOTOR_CONTROL,
|
|
const.SPECIFIC_TYPE_CLASS_C_MOTOR_CONTROL,
|
|
const.SPECIFIC_TYPE_MOTOR_MULTIPOSITION,
|
|
const.SPECIFIC_TYPE_SECURE_BARRIER_ADDON,
|
|
const.SPECIFIC_TYPE_SECURE_DOOR,
|
|
],
|
|
const.DISC_VALUES: dict(
|
|
DEFAULT_VALUES_SCHEMA,
|
|
**{
|
|
const.DISC_PRIMARY: {
|
|
const.DISC_COMMAND_CLASS: [const.COMMAND_CLASS_SWITCH_BINARY],
|
|
const.DISC_GENRE: const.GENRE_USER,
|
|
}
|
|
},
|
|
),
|
|
},
|
|
{
|
|
const.DISC_COMPONENT: "cover", # Garage Door Barrier
|
|
const.DISC_GENERIC_DEVICE_CLASS: [
|
|
const.GENERIC_TYPE_SWITCH_MULTILEVEL,
|
|
const.GENERIC_TYPE_ENTRY_CONTROL,
|
|
],
|
|
const.DISC_SPECIFIC_DEVICE_CLASS: [
|
|
const.SPECIFIC_TYPE_CLASS_A_MOTOR_CONTROL,
|
|
const.SPECIFIC_TYPE_CLASS_B_MOTOR_CONTROL,
|
|
const.SPECIFIC_TYPE_CLASS_C_MOTOR_CONTROL,
|
|
const.SPECIFIC_TYPE_MOTOR_MULTIPOSITION,
|
|
const.SPECIFIC_TYPE_SECURE_BARRIER_ADDON,
|
|
const.SPECIFIC_TYPE_SECURE_DOOR,
|
|
],
|
|
const.DISC_VALUES: dict(
|
|
DEFAULT_VALUES_SCHEMA,
|
|
**{
|
|
const.DISC_PRIMARY: {
|
|
const.DISC_COMMAND_CLASS: [const.COMMAND_CLASS_BARRIER_OPERATOR],
|
|
const.DISC_INDEX: [const.INDEX_BARRIER_OPERATOR_LABEL],
|
|
}
|
|
},
|
|
),
|
|
},
|
|
{
|
|
const.DISC_COMPONENT: "fan",
|
|
const.DISC_GENERIC_DEVICE_CLASS: [const.GENERIC_TYPE_SWITCH_MULTILEVEL],
|
|
const.DISC_SPECIFIC_DEVICE_CLASS: [const.SPECIFIC_TYPE_FAN_SWITCH],
|
|
const.DISC_VALUES: dict(
|
|
DEFAULT_VALUES_SCHEMA,
|
|
**{
|
|
const.DISC_PRIMARY: {
|
|
const.DISC_COMMAND_CLASS: [const.COMMAND_CLASS_SWITCH_MULTILEVEL],
|
|
const.DISC_INDEX: [const.INDEX_SWITCH_MULTILEVEL_LEVEL],
|
|
const.DISC_TYPE: const.TYPE_BYTE,
|
|
}
|
|
},
|
|
),
|
|
},
|
|
{
|
|
const.DISC_COMPONENT: "light",
|
|
const.DISC_GENERIC_DEVICE_CLASS: [
|
|
const.GENERIC_TYPE_SWITCH_MULTILEVEL,
|
|
const.GENERIC_TYPE_SWITCH_REMOTE,
|
|
],
|
|
const.DISC_SPECIFIC_DEVICE_CLASS: [
|
|
const.SPECIFIC_TYPE_POWER_SWITCH_MULTILEVEL,
|
|
const.SPECIFIC_TYPE_SCENE_SWITCH_MULTILEVEL,
|
|
const.SPECIFIC_TYPE_NOT_USED,
|
|
],
|
|
const.DISC_VALUES: dict(
|
|
DEFAULT_VALUES_SCHEMA,
|
|
**{
|
|
const.DISC_PRIMARY: {
|
|
const.DISC_COMMAND_CLASS: [const.COMMAND_CLASS_SWITCH_MULTILEVEL],
|
|
const.DISC_INDEX: [const.INDEX_SWITCH_MULTILEVEL_LEVEL],
|
|
const.DISC_TYPE: const.TYPE_BYTE,
|
|
},
|
|
"dimming_duration": {
|
|
const.DISC_COMMAND_CLASS: [const.COMMAND_CLASS_SWITCH_MULTILEVEL],
|
|
const.DISC_INDEX: [const.INDEX_SWITCH_MULTILEVEL_DURATION],
|
|
const.DISC_OPTIONAL: True,
|
|
},
|
|
"color": {
|
|
const.DISC_COMMAND_CLASS: [const.COMMAND_CLASS_SWITCH_COLOR],
|
|
const.DISC_INDEX: [const.INDEX_SWITCH_COLOR_COLOR],
|
|
const.DISC_OPTIONAL: True,
|
|
},
|
|
"color_channels": {
|
|
const.DISC_COMMAND_CLASS: [const.COMMAND_CLASS_SWITCH_COLOR],
|
|
const.DISC_INDEX: [const.INDEX_SWITCH_COLOR_CHANNELS],
|
|
const.DISC_OPTIONAL: True,
|
|
},
|
|
},
|
|
),
|
|
},
|
|
{
|
|
const.DISC_COMPONENT: "lock",
|
|
const.DISC_GENERIC_DEVICE_CLASS: [const.GENERIC_TYPE_ENTRY_CONTROL],
|
|
const.DISC_SPECIFIC_DEVICE_CLASS: [
|
|
const.SPECIFIC_TYPE_DOOR_LOCK,
|
|
const.SPECIFIC_TYPE_ADVANCED_DOOR_LOCK,
|
|
const.SPECIFIC_TYPE_SECURE_KEYPAD_DOOR_LOCK,
|
|
const.SPECIFIC_TYPE_SECURE_LOCKBOX,
|
|
],
|
|
const.DISC_VALUES: dict(
|
|
DEFAULT_VALUES_SCHEMA,
|
|
**{
|
|
const.DISC_PRIMARY: {
|
|
const.DISC_COMMAND_CLASS: [const.COMMAND_CLASS_DOOR_LOCK],
|
|
const.DISC_INDEX: [const.INDEX_DOOR_LOCK_LOCK],
|
|
},
|
|
"access_control": {
|
|
const.DISC_COMMAND_CLASS: [const.COMMAND_CLASS_ALARM],
|
|
const.DISC_INDEX: [const.INDEX_ALARM_ACCESS_CONTROL],
|
|
const.DISC_OPTIONAL: True,
|
|
},
|
|
"alarm_type": {
|
|
const.DISC_COMMAND_CLASS: [const.COMMAND_CLASS_ALARM],
|
|
const.DISC_INDEX: [const.INDEX_ALARM_TYPE],
|
|
const.DISC_OPTIONAL: True,
|
|
},
|
|
"alarm_level": {
|
|
const.DISC_COMMAND_CLASS: [const.COMMAND_CLASS_ALARM],
|
|
const.DISC_INDEX: [const.INDEX_ALARM_LEVEL],
|
|
const.DISC_OPTIONAL: True,
|
|
},
|
|
"v2btze_advanced": {
|
|
const.DISC_COMMAND_CLASS: [const.COMMAND_CLASS_CONFIGURATION],
|
|
const.DISC_INDEX: [12],
|
|
const.DISC_OPTIONAL: True,
|
|
},
|
|
},
|
|
),
|
|
},
|
|
{
|
|
const.DISC_COMPONENT: "sensor",
|
|
const.DISC_VALUES: dict(
|
|
DEFAULT_VALUES_SCHEMA,
|
|
**{
|
|
const.DISC_PRIMARY: {
|
|
const.DISC_COMMAND_CLASS: [
|
|
const.COMMAND_CLASS_SENSOR_MULTILEVEL,
|
|
const.COMMAND_CLASS_METER,
|
|
const.COMMAND_CLASS_ALARM,
|
|
const.COMMAND_CLASS_SENSOR_ALARM,
|
|
const.COMMAND_CLASS_INDICATOR,
|
|
const.COMMAND_CLASS_BATTERY,
|
|
],
|
|
const.DISC_GENRE: const.GENRE_USER,
|
|
}
|
|
},
|
|
),
|
|
},
|
|
{
|
|
const.DISC_COMPONENT: "switch",
|
|
const.DISC_GENERIC_DEVICE_CLASS: [
|
|
const.GENERIC_TYPE_METER,
|
|
const.GENERIC_TYPE_SENSOR_ALARM,
|
|
const.GENERIC_TYPE_SENSOR_BINARY,
|
|
const.GENERIC_TYPE_SWITCH_BINARY,
|
|
const.GENERIC_TYPE_ENTRY_CONTROL,
|
|
const.GENERIC_TYPE_SENSOR_MULTILEVEL,
|
|
const.GENERIC_TYPE_SWITCH_MULTILEVEL,
|
|
const.GENERIC_TYPE_SENSOR_NOTIFICATION,
|
|
const.GENERIC_TYPE_GENERIC_CONTROLLER,
|
|
const.GENERIC_TYPE_SWITCH_REMOTE,
|
|
const.GENERIC_TYPE_REPEATER_SLAVE,
|
|
const.GENERIC_TYPE_THERMOSTAT,
|
|
const.GENERIC_TYPE_WALL_CONTROLLER,
|
|
],
|
|
const.DISC_VALUES: dict(
|
|
DEFAULT_VALUES_SCHEMA,
|
|
**{
|
|
const.DISC_PRIMARY: {
|
|
const.DISC_COMMAND_CLASS: [const.COMMAND_CLASS_SWITCH_BINARY],
|
|
const.DISC_TYPE: const.TYPE_BOOL,
|
|
const.DISC_GENRE: const.GENRE_USER,
|
|
}
|
|
},
|
|
),
|
|
},
|
|
]
|