Complete Smart Camera (sp) device support to Tuya (#58301)

pull/58313/head
Franck Nijhof 2021-10-23 21:24:40 +02:00 committed by GitHub
parent e961d92b5e
commit 75e561f1fa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 260 additions and 0 deletions

View File

@ -75,8 +75,14 @@ CONF_PASSWORD = "password"
CONF_COUNTRY_CODE = "country_code"
CONF_APP_TYPE = "tuya_app_type"
DEVICE_CLASS_TUYA_BASIC_ANTI_FLICKR = "tuya__basic_anti_flickr"
DEVICE_CLASS_TUYA_BASIC_NIGHTVISION = "tuya__basic_nightvision"
DEVICE_CLASS_TUYA_DECIBEL_SENSITIVITY = "tuya__decibel_sensitivity"
DEVICE_CLASS_TUYA_IPC_WORK_MODE = "tuya__ipc_work_mode"
DEVICE_CLASS_TUYA_LED_TYPE = "tuya__led_type"
DEVICE_CLASS_TUYA_LIGHT_MODE = "tuya__light_mode"
DEVICE_CLASS_TUYA_MOTION_SENSITIVITY = "tuya__motion_sensitivity"
DEVICE_CLASS_TUYA_RECORD_MODE = "tuya__record_mode"
DEVICE_CLASS_TUYA_RELAY_STATUS = "tuya__relay_status"
TUYA_DISCOVERY_NEW = "tuya_discovery_new"
@ -130,6 +136,14 @@ class DPCode(str, Enum):
ANGLE_HORIZONTAL = "angle_horizontal"
ANGLE_VERTICAL = "angle_vertical"
ANION = "anion" # Ionizer unit
BASIC_ANTI_FLICKER = "basic_anti_flicker"
BASIC_DEVICE_VOLUME = "basic_device_volume"
BASIC_FLIP = "basic_flip"
BASIC_INDICATOR = "basic_indicator"
BASIC_NIGHTVISION = "basic_nightvision"
BASIC_OSD = "basic_osd"
BASIC_PRIVATE = "basic_private"
BASIC_WDR = "basic_wdr"
BATTERY_PERCENTAGE = "battery_percentage" # Battery percentage
BATTERY_STATE = "battery_state" # Battery state
BATTERY_VALUE = "battery_value" # Battery value
@ -162,10 +176,13 @@ class DPCode(str, Enum):
CONTROL = "control"
CONTROL_2 = "control_2"
CONTROL_3 = "control_3"
CRY_DETECTION_SWITCH = "cry_detection_switch"
CUP_NUMBER = "cup_number" # NUmber of cups
CUR_CURRENT = "cur_current" # Actual current
CUR_POWER = "cur_power" # Actual power
CUR_VOLTAGE = "cur_voltage" # Actual voltage
DECIBEL_SENSITIVITY = "decibel_sensitivity"
DECIBEL_SWITCH = "decibel_switch"
DEHUMIDITY_SET_VALUE = "dehumidify_set_value"
DO_NOT_DISTURB = "do_not_disturb"
DOORCONTACT_STATE = "doorcontact_state" # Status of door window sensor
@ -177,12 +194,15 @@ class DPCode(str, Enum):
FAN_SPEED_PERCENT = "fan_speed_percent" # Stepless speed
FAR_DETECTION = "far_detection"
FILTER_RESET = "filter_reset" # Filter (cartridge) reset
FLOODLIGHT_LIGHTNESS = "floodlight_lightness"
FLOODLIGHT_SWITCH = "floodlight_switch"
GAS_SENSOR_STATE = "gas_sensor_state"
GAS_SENSOR_STATUS = "gas_sensor_status"
GAS_SENSOR_VALUE = "gas_sensor_value"
HUMIDITY_CURRENT = "humidity_current" # Current humidity
HUMIDITY_SET = "humidity_set" # Humidity setting
HUMIDITY_VALUE = "humidity_value" # Humidity
IPC_WORK_MODE = "ipc_work_mode"
LED_TYPE_1 = "led_type_1"
LED_TYPE_2 = "led_type_2"
LED_TYPE_3 = "led_type_3"
@ -191,7 +211,10 @@ class DPCode(str, Enum):
LOCK = "lock" # Lock / Child lock
MATERIAL = "material" # Material
MODE = "mode" # Working mode / Mode
MOTION_RECORD = "motion_record"
MOTION_SENSITIVITY = "motion_sensitivity"
MOTION_SWITCH = "motion_switch" # Motion switch
MOTION_TRACKING = "motion_tracking"
MUFFLING = "muffling" # Muffling
NEAR_DETECTION = "near_detection"
PAUSE = "pause"
@ -209,12 +232,16 @@ class DPCode(str, Enum):
PRESSURE_STATE = "pressure_state"
PRESSURE_VALUE = "pressure_value"
PUMP_RESET = "pump_reset" # Water pump reset
RECORD_MODE = "record_mode"
RECORD_SWITCH = "record_switch" # Recording switch
RELAY_STATUS = "relay_status"
SEEK = "seek"
SENSITIVITY = "sensitivity" # Sensitivity
SENSOR_HUMIDITY = "sensor_humidity"
SENSOR_TEMPERATURE = "sensor_temperature"
SHAKE = "shake" # Oscillating
SHOCK_STATE = "shock_state" # Vibration status
SIREN_SWITCH = "siren_switch"
SITUATION_SET = "situation_set"
SMOKE_SENSOR_STATE = "smoke_sensor_state"
SMOKE_SENSOR_STATUS = "smoke_sensor_status"
@ -270,6 +297,8 @@ class DPCode(str, Enum):
WATER_SET = "water_set" # Water level
WATERSENSOR_STATE = "watersensor_state"
WET = "wet" # Humidification
WIRELESS_BATTERYLOCK = "wireless_batterylock"
WIRELESS_ELECTRICITY = "wireless_electricity"
WORK_MODE = "work_mode" # Working mode
WORK_POWER = "work_power"

View File

@ -19,6 +19,7 @@ from homeassistant.components.light import (
LightEntityDescription,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import ENTITY_CATEGORY_CONFIG
from homeassistant.core import HomeAssistant, callback
from homeassistant.helpers.dispatcher import async_dispatcher_connect
from homeassistant.helpers.entity_platform import AddEntitiesCallback
@ -116,6 +117,20 @@ LIGHTS: dict[str, tuple[TuyaLightEntityDescription, ...]] = {
name="Backlight",
),
),
# Smart Camera
# https://developer.tuya.com/en/docs/iot/categorysp?id=Kaiuz35leyo12
"sp": (
TuyaLightEntityDescription(
key=DPCode.FLOODLIGHT_SWITCH,
brightness=DPCode.FLOODLIGHT_LIGHTNESS,
name="Floodlight",
),
TuyaLightEntityDescription(
key=DPCode.BASIC_INDICATOR,
name="Indicator Light",
entity_category=ENTITY_CATEGORY_CONFIG,
),
),
# Dimmer Switch
# https://developer.tuya.com/en/docs/iot/categorytgkg?id=Kaiuz0ktx7m0o
"tgkg": (

View File

@ -78,6 +78,16 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = {
entity_category=ENTITY_CATEGORY_CONFIG,
),
),
# Smart Camera
# https://developer.tuya.com/en/docs/iot/categorysp?id=Kaiuz35leyo12
"sp": (
NumberEntityDescription(
key=DPCode.BASIC_DEVICE_VOLUME,
name="Volume",
icon="mdi:volume-high",
entity_category=ENTITY_CATEGORY_CONFIG,
),
),
# Dimmer Switch
# https://developer.tuya.com/en/docs/iot/categorytgkg?id=Kaiuz0ktx7m0o
"tgkg": (

View File

@ -16,8 +16,14 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import HomeAssistantTuyaData
from .base import EnumTypeData, TuyaEntity
from .const import (
DEVICE_CLASS_TUYA_BASIC_ANTI_FLICKR,
DEVICE_CLASS_TUYA_BASIC_NIGHTVISION,
DEVICE_CLASS_TUYA_DECIBEL_SENSITIVITY,
DEVICE_CLASS_TUYA_IPC_WORK_MODE,
DEVICE_CLASS_TUYA_LED_TYPE,
DEVICE_CLASS_TUYA_LIGHT_MODE,
DEVICE_CLASS_TUYA_MOTION_SENSITIVITY,
DEVICE_CLASS_TUYA_RECORD_MODE,
DEVICE_CLASS_TUYA_RELAY_STATUS,
DOMAIN,
TUYA_DISCOVERY_NEW,
@ -83,6 +89,51 @@ SELECTS: dict[str, tuple[SelectEntityDescription, ...]] = {
entity_category=ENTITY_CATEGORY_CONFIG,
),
),
# Smart Camera
# https://developer.tuya.com/en/docs/iot/categorysp?id=Kaiuz35leyo12
"sp": (
SelectEntityDescription(
key=DPCode.IPC_WORK_MODE,
name="IPC Mode",
device_class=DEVICE_CLASS_TUYA_IPC_WORK_MODE,
entity_category=ENTITY_CATEGORY_CONFIG,
),
SelectEntityDescription(
key=DPCode.DECIBEL_SENSITIVITY,
name="Sound Detection Sensitivity",
icon="mdi:volume-vibrate",
device_class=DEVICE_CLASS_TUYA_DECIBEL_SENSITIVITY,
entity_category=ENTITY_CATEGORY_CONFIG,
),
SelectEntityDescription(
key=DPCode.RECORD_MODE,
name="Record Mode",
icon="mdi:record-rec",
device_class=DEVICE_CLASS_TUYA_RECORD_MODE,
entity_category=ENTITY_CATEGORY_CONFIG,
),
SelectEntityDescription(
key=DPCode.BASIC_NIGHTVISION,
name="Night Vision",
icon="mdi:theme-light-dark",
device_class=DEVICE_CLASS_TUYA_BASIC_NIGHTVISION,
entity_category=ENTITY_CATEGORY_CONFIG,
),
SelectEntityDescription(
key=DPCode.BASIC_ANTI_FLICKER,
name="Anti-flicker",
icon="mdi:image-outline",
device_class=DEVICE_CLASS_TUYA_BASIC_ANTI_FLICKR,
entity_category=ENTITY_CATEGORY_CONFIG,
),
SelectEntityDescription(
key=DPCode.MOTION_SENSITIVITY,
name="Motion Detection Sensitivity",
icon="mdi:motion-sensor",
device_class=DEVICE_CLASS_TUYA_MOTION_SENSITIVITY,
entity_category=ENTITY_CATEGORY_CONFIG,
),
),
# Dimmer Switch
# https://developer.tuya.com/en/docs/iot/categorytgkg?id=Kaiuz0ktx7m0o
"tgkg": (

View File

@ -238,6 +238,29 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = {
# Emergency Button
# https://developer.tuya.com/en/docs/iot/categorysos?id=Kaiuz3oi6agjy
"sos": BATTERY_SENSORS,
# Smart Camera
# https://developer.tuya.com/en/docs/iot/categorysp?id=Kaiuz35leyo12
"sp": (
SensorEntityDescription(
key=DPCode.SENSOR_TEMPERATURE,
name="Temperature",
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
),
SensorEntityDescription(
key=DPCode.SENSOR_HUMIDITY,
name="Humidity",
device_class=DEVICE_CLASS_HUMIDITY,
state_class=STATE_CLASS_MEASUREMENT,
),
SensorEntityDescription(
key=DPCode.WIRELESS_ELECTRICITY,
name="Battery",
device_class=DEVICE_CLASS_BATTERY,
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
state_class=STATE_CLASS_MEASUREMENT,
),
),
# Pressure Sensor
# https://developer.tuya.com/en/docs/iot/categoryylcg?id=Kaiuz3kc2e4gm
"ylcg": (

View File

@ -27,6 +27,14 @@ SIRENS: dict[str, tuple[SirenEntityDescription, ...]] = {
name="Siren",
),
),
# Smart Camera
# https://developer.tuya.com/en/docs/iot/categorysp?id=Kaiuz35leyo12
"sp": (
SirenEntityDescription(
key=DPCode.SIREN_SWITCH,
name="Siren",
),
),
}

View File

@ -1,5 +1,23 @@
{
"state": {
"tuya__basic_anti_flickr": {
"0": "Disabled",
"1": "50 Hz",
"2": "60 Hz"
},
"tuya__basic_nightvision": {
"0": "Automatic",
"1": "[%key:common::state::off%]",
"2": "[%key:common::state::on%]"
},
"tuya__decibel_sensitivity": {
"0": "Low sensitivity",
"1": "High sensitivity"
},
"tuya__ipc_work_mode": {
"0": "Low power mode",
"1": "Continuous working mode"
},
"tuya__led_type": {
"halogen": "Halogen",
"incandescent": "Incandescent",
@ -10,6 +28,15 @@
"pos": "Indicate switch location",
"relay": "Indicate switch on/off state"
},
"tuya__motion_sensitivity": {
"0": "Low sensitivity",
"1": "Medium sensitivity",
"2": "High sensitivity"
},
"tuya__record_mode": {
"1": "Record events only",
"2": "Continuous recording"
},
"tuya__relay_status": {
"last": "Remember last state",
"memory": "Remember last state",

View File

@ -272,6 +272,76 @@ SWITCHES: dict[str, tuple[SwitchEntityDescription, ...]] = {
entity_category=ENTITY_CATEGORY_CONFIG,
),
),
# Smart Camera
# https://developer.tuya.com/en/docs/iot/categorysp?id=Kaiuz35leyo12
"sp": (
SwitchEntityDescription(
key=DPCode.WIRELESS_BATTERYLOCK,
name="Battery Lock",
icon="mdi:battery-lock",
entity_category=ENTITY_CATEGORY_CONFIG,
),
SwitchEntityDescription(
key=DPCode.CRY_DETECTION_SWITCH,
icon="mdi:emoticon-cry",
name="Cry Detection",
entity_category=ENTITY_CATEGORY_CONFIG,
),
SwitchEntityDescription(
key=DPCode.DECIBEL_SWITCH,
icon="mdi:microphone-outline",
name="Sound Detection",
entity_category=ENTITY_CATEGORY_CONFIG,
),
SwitchEntityDescription(
key=DPCode.RECORD_SWITCH,
icon="mdi:record-rec",
name="Video Recording",
entity_category=ENTITY_CATEGORY_CONFIG,
),
SwitchEntityDescription(
key=DPCode.MOTION_RECORD,
icon="mdi:record-rec",
name="Motion Recording",
entity_category=ENTITY_CATEGORY_CONFIG,
),
SwitchEntityDescription(
key=DPCode.BASIC_PRIVATE,
icon="mdi:eye-off",
name="Privacy Mode",
entity_category=ENTITY_CATEGORY_CONFIG,
),
SwitchEntityDescription(
key=DPCode.BASIC_FLIP,
icon="mdi:flip-horizontal",
name="Flip",
entity_category=ENTITY_CATEGORY_CONFIG,
),
SwitchEntityDescription(
key=DPCode.BASIC_OSD,
icon="mdi:watermark",
name="Time Watermark",
entity_category=ENTITY_CATEGORY_CONFIG,
),
SwitchEntityDescription(
key=DPCode.BASIC_WDR,
icon="mdi:watermark",
name="Wide Dynamic Range",
entity_category=ENTITY_CATEGORY_CONFIG,
),
SwitchEntityDescription(
key=DPCode.MOTION_TRACKING,
icon="mdi:motion-sensor",
name="Motion Tracking",
entity_category=ENTITY_CATEGORY_CONFIG,
),
SwitchEntityDescription(
key=DPCode.MOTION_SWITCH,
icon="mdi:motion-sensor",
name="Motion Alarm",
entity_category=ENTITY_CATEGORY_CONFIG,
),
),
# Ceiling Light
# https://developer.tuya.com/en/docs/iot/ceiling-light?id=Kaiuz03xxfc4r
"xdd": (

View File

@ -1,5 +1,23 @@
{
"state": {
"tuya__basic_anti_flickr": {
"0": "Disabled",
"1": "50 Hz",
"2": "60 Hz"
},
"tuya__basic_nightvision": {
"0": "Automatic",
"1": "Off",
"2": "On"
},
"tuya__decibel_sensitivity": {
"0": "Low sensitivity",
"1": "High sensitivity"
},
"tuya__ipc_work_mode": {
"0": "Low power mode",
"1": "Continuous working mode"
},
"tuya__led_type": {
"halogen": "Halogen",
"incandescent": "Incandescent",
@ -10,6 +28,15 @@
"pos": "Indicate switch location",
"relay": "Indicate switch on/off state"
},
"tuya__motion_sensitivity": {
"0": "Low sensitivity",
"1": "Medium sensitivity",
"2": "High sensitivity"
},
"tuya__record_mode": {
"1": "Record events only",
"2": "Continuous recording"
},
"tuya__relay_status": {
"last": "Remember last state",
"memory": "Remember last state",