- 拆分 tencent_cloud_client.py(1311行)为 api_operations.py / image_processor.py / retry.py - 更新 HA 废弃 API: SupportsResponse.OPTIONAL, async_unload_platforms, native_value, 移除 CONNECTION_CLASS - 新增动态人员传感器管理(自动增/删) - 新增 detect_face 服务定义(services.yaml) - 移除 secret_key 持久化存储,增强安全性 - 完善错误映射前缀匹配 + 异常类型安全退避 - 修复 Coordinator 双重人员 ID 跟踪死代码 - 添加 _sanitize_error 脱敏,ImageCache LRU 缓存 - manifest.json 版本 2.1.0 + Pillow 依赖
69 lines
2.0 KiB
Python
69 lines
2.0 KiB
Python
"""腾讯云人脸识别插件常量定义"""
|
|
|
|
DOMAIN = "tencent_face_recognition"
|
|
PLATFORMS = ["sensor"]
|
|
|
|
CONF_SECRET_ID = "secret_id"
|
|
CONF_SECRET_KEY = "secret_key"
|
|
CONF_REGION = "region"
|
|
CONF_PERSON_GROUP_ID = "person_group_id"
|
|
CONF_SCAN_INTERVAL = "scan_interval"
|
|
|
|
DEFAULT_REGION = "ap-shanghai"
|
|
DEFAULT_PERSON_GROUP_ID = "Hass"
|
|
DEFAULT_MAX_FACE_NUM = 1
|
|
DEFAULT_MIN_FACE_SIZE = 34
|
|
DEFAULT_MAX_USER_NUM = 5
|
|
DEFAULT_QUALITY_CONTROL = 1
|
|
DEFAULT_NEED_ROTATE_CHECK = 1
|
|
DEFAULT_FACE_MATCH_THRESHOLD = 60.0
|
|
DEFAULT_SCAN_INTERVAL = 300 # seconds (5 minutes)
|
|
|
|
SERVICE_FACE_SEARCH = "face_search"
|
|
SERVICE_DETECT_FACE = "detect_face"
|
|
SERVICE_GET_FACE_ATTRIBUTES = "get_face_attributes"
|
|
SERVICE_CREATE_PERSON = "create_person"
|
|
SERVICE_DELETE_PERSON = "delete_person"
|
|
SERVICE_CREATE_FACE = "create_face"
|
|
SERVICE_DELETE_FACE = "delete_face"
|
|
|
|
ATTR_IMAGE_URL = "image_url"
|
|
ATTR_IMAGE_PATH = "image_path"
|
|
ATTR_IMAGE_FILE = "image_file"
|
|
ATTR_CAMERA_ENTITY_ID = "camera_entity_id"
|
|
ATTR_CONFIG_ENTRY_ID = "config_entry_id"
|
|
ATTR_GROUP_ID = "group_id"
|
|
ATTR_MAX_FACE_NUM = "max_face_num"
|
|
ATTR_MIN_FACE_SIZE = "min_face_size"
|
|
ATTR_MAX_USER_NUM = "max_user_num"
|
|
ATTR_QUALITY_CONTROL = "quality_control"
|
|
ATTR_NEED_ROTATE_CHECK = "need_rotate_check"
|
|
ATTR_FACE_MATCH_THRESHOLD = "face_match_threshold"
|
|
ATTR_PERSON_ID = "person_id"
|
|
ATTR_PERSON_NAME = "person_name"
|
|
ATTR_GENDER = "gender"
|
|
ATTR_FACE_ID = "face_id"
|
|
ATTR_PERSON_TAG = "person_tag"
|
|
|
|
EVENT_FACE_DETECTED = "face_detected"
|
|
|
|
# Sensor identifiers
|
|
SENSOR_STATUS = "status"
|
|
SENSOR_PERSON = "person"
|
|
|
|
ERROR_INVALID_CONFIG = "无效的配置"
|
|
ERROR_API_ERROR = "API调用错误"
|
|
ERROR_IMAGE_NOT_FOUND = "图片未找到"
|
|
ERROR_FACE_NOT_DETECTED = "未检测到人脸"
|
|
|
|
STATE_CONNECTED = "已连接"
|
|
STATE_DISCONNECTED = "未连接"
|
|
STATE_CONNECTING = "连接中"
|
|
STATE_ERROR = "连接错误"
|
|
STATE_PARTIALLY_CONNECTED = "部分连接"
|
|
|
|
|
|
def get_entry_value(entry, key, default=None):
|
|
"""Get a config value from entry.options with fallback to entry.data."""
|
|
return entry.options.get(key, entry.data.get(key, default))
|