Paul Shawn ef56448dbb
refactor: refactor miot device and spec (#592)
* fix: fix miot_device type error

* fix: fix type error

* feat: remove spec cache storage

* feat: update std_lib and multi_lang logic

* feat: update entity value-range

* feat: update value-list logic

* feat: update prop.format_ logic

* fix: fix miot cloud log error

* fix: fix fan entity

* style: ignore type error

* style: rename spec_filter func name

* feat: move bool_trans from storage to spec

* feat: move sepc_filter from storage to spec, use the YAML format file

* feat: same prop supports multiple sub

* feat: same event supports multiple sub

* fix: fix device remove error

* feat: add func slugify_did

* fix: fix multi lang error

* feat: update action debug logic

* feat: ignore normal disconnect log

* feat: support binary mode

* feat: change miot spec name type define

* style: ignore i18n tranlate type error

* fix: fix pylint warning

* fix: miot storage type error

* feat: support binary display mode configure

* feat: set default sensor state_class

* fix: fix sensor entity type error

* fix: fix __init__ type error

* feat: update test case logic

* fix: github actions add dependencies lib

* fix: fix some type error

* feat: update device list changed notify logic
2025-01-17 18:14:31 +08:00

224 lines
22 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"config": {
"flow_title": "米家集成",
"step": {
"eula": {
"title": "风险告知",
"description": "1. 您的小米用户信息和设备信息将会存储在您的 Home Assistant 系统中,**小米无法保证 Home Assistant 存储机制的安全性**。您需要负责防止您的信息被窃取。\r\n2. 此集成由开源社区维护,可能会出现稳定性问题或其它问题,使用此集成遇到相关问题时,您应当**向开源社区寻求帮助,而不是联系小米客服**。\r\n3. 您需要有一定的技术能力来维护您的本地运行环境,此集成对新手用户来说并不友好。\r\n4. 在使用此集成前请仔细阅读README。\r\n5. 为了用户能够稳定地使用集成,避免接口被滥用,**此集成仅允许在 Home Assistant 中使用详情请参考LICENSE**。",
"data": {
"eula": "我已悉知以上风险并自愿承担因使用集成所带来的相关风险。"
}
},
"auth_config": {
"title": "基础配置",
"description": "### 登录地区\r\n选择小米账号所在的地区。您可以在 `米家APP > 我的(位于底部菜单) > 更多设置 > 关于米家` 中查看。\r\n### 语言\r\n选择设备及实体名称所用的语言。缺少翻译的部分语句将使用英文显示。\r\n### OAuth2 认证跳转地址\r\nOAuth2 认证跳转地址为 **[http://homeassistant.local:8123](http://homeassistant.local:8123)**Home Assistant 需要与当前操作终端(例如,个人电脑)在同一局域网内,且操作终端能通过该地址访问 Home Assistant 首页,否则登录认证可能会失败。\r\n### 集成网络配置\r\n检测本地网络是否正常相关网络资源是否可访问。**首次添加时建议勾选。**\r\n### 注意事项\r\n- 对于数百个及以上米家设备的用户,首次添加集成会耗费一些时间,请耐心等待。\r\n- 如果 Home Assistant 运行在docker环境下请确保docker网络模式为host否则会导致本地控制功能异常。\r\n- 集成本地控制功能存在一些依赖项请仔细阅读README。",
"data": {
"cloud_server": "登录地区",
"integration_language": "语言",
"oauth_redirect_url": "认证跳转地址",
"network_detect_config": "集成网络配置"
}
},
"network_detect_config": {
"title": "网络检测配置",
"description": "## 使用介绍\r\n### 网络检测地址\r\n用于检测网络是否正常未设置时将使用系统默认地址检测。如果默认地址检测异常时可尝试输入可用的自定义地址检测。\r\n- 可输入多个检测地址,地址之间使用`,`号间隔,如`8.8.8.8,https://www.bing.com`\r\n- 如果为IP地址将采用ping方式检测如果为http(s)地址,将采用 HTTP GET 访问该地址检测。\r\n- 如果想恢复系统默认检测地址,请输入`,`号,然后点击'下一步'。\r\n- **该配置为全局配置,修改会影响其它集成实例的网络检测,请谨慎修改。**\r\n### 检测网络依赖项\r\n依次检查下述网络依赖项是否可访问。如果相关地址无法访问将会导致集成异常。\r\n- OAuth2 认证地址:`https://account.xiaomi.com/oauth2/authorize`。\r\n- 小米 HTTP API 地址:`https://{http_host}/app/v2/ha/oauth/get_token`。\r\n- 小米 SPEC API 地址:`https://miot-spec.org/miot-spec-v2/template/list/device`。\r\n- 小米 MQTT Broker 地址:`mqtts://{cloud_server}-ha.mqtt.io.mi.com:8883`。",
"data": {
"network_detect_addr": "网络检测地址",
"check_network_deps": "检测网络依赖项"
}
},
"oauth_error": {
"title": "登录出现错误",
"description": "点击“下一步”重试"
},
"homes_select": {
"title": "选择家庭与设备",
"description": "## 使用介绍\r\n### 导入设备的家庭\r\n集成将添加已选中家庭中的设备。\r\n### 房间名同步模式\r\n将设备从米家APP同步到 Home Assistant 时,设备在 Home Assistant 中所处区域的名称的命名方式将遵循以下规则。注意设备同步过程不会改变米家APP中家庭和房间的设置。\r\n- 不同步:设备不会被添加至任何区域。\r\n- 其它选项设备所添加到的区域以米家APP中的家庭或房间名称命名。\r\n### 高级设置选项\r\n展示高级设置选项对集成的专业配置选项进行修改。\r\n\r\n \r\n### {nick_name} 您好!请选择您想要添加的设备所处家庭。",
"data": {
"home_infos": "导入设备的家庭",
"area_name_rule": "房间名同步模式",
"advanced_options": "高级设置选项"
}
},
"advanced_options": {
"title": "高级设置选项",
"description": "## 使用介绍\r\n### 除非您非常清楚下列选项的含义,否则请保持默认。\r\n### 筛选设备\r\n支持按照家庭房间名称、设备接入类型、设备型号筛选设备同时也支持设备维度筛选。\r\n### 控制模式\r\n- 自动:本地局域网内存在可用的小米中枢网关时, Home Assistant 会优先通过中枢网关发送设备控制指令以实现本地化控制功能。本地局域网不存在中枢时会尝试通过小米OT协议发送控制指令以实现本地化控制功能。只有当上述本地化控制条件不满足时设备控制指令才会通过云端发送。\r\n- 云端:控制指令仅通过云端发送。\r\n### Action 调试模式\r\n对于设备 MIoT-Spec-V2 定义的方法,在生成通知实体之外,还会生成一个文本输入框实体,您可以在调试时用它向设备发送控制指令。\r\n### 隐藏非标准生成实体\r\n隐藏名称以“*”开头的非标准 MIoT-Spec-V2 实例生成的实体。\r\n### 二进制传感器显示模式\r\n将米家中的二进制传感器显示为文本传感器实体或者二进制传感器实体。\r\n### 显示设备状态变化通知\r\n细化显示设备状态变化通知只显示勾选的通知消息。",
"data": {
"devices_filter": "筛选设备",
"ctrl_mode": "控制模式",
"action_debug": "Action 调试模式",
"hide_non_standard_entities": "隐藏非标准生成实体",
"display_binary_mode": "二进制传感器显示模式",
"display_devices_changed_notify": "显示设备状态变化通知"
}
},
"devices_filter": {
"title": "筛选设备",
"description": "## 使用介绍\r\n支持按照家庭房间名称、设备接入类型、设备型号筛选设备同时也支持设备维度筛选筛选逻辑如下\r\n- 会先根据统计逻辑获取所有包含项的并集或者交集,然后再获取排除项的交集或者并集,最后将【包含汇总结果】减去【排除汇总结果】得到【筛选结果】\r\n- 如未选择包含项,表示包含全部。\r\n### 筛选模式\r\n- 排除:移除不需要的项。\r\n- 包含:包含需要的项。\r\n### 统计逻辑\r\n- 与逻辑:取所有同模式筛选项的交集。\r\n- 或逻辑:取所有同模式筛选项的并集。\r\n\r\n您也可以进入集成项的【配置>更新设备列表】页面,勾选【筛选设备】重新筛选。",
"data": {
"room_filter_mode": "筛选家庭房间",
"room_list": "家庭房间",
"type_filter_mode": "筛选设备接入类型",
"type_list": "设备接入类型",
"model_filter_mode": "筛选设备型号",
"model_list": "设备型号",
"devices_filter_mode": "筛选设备",
"device_list": "设备列表",
"statistics_logic": "统计逻辑"
}
}
},
"progress": {
"oauth": "### {link_left}请点击此处进行登录{link_right}\r\n登录成功后将会自动跳转至下一页面"
},
"error": {
"eula_not_agree": "请阅读风险告知文本。",
"get_token_error": "获取登录授权信息OAuth token失败。",
"get_homeinfo_error": "获取家庭信息失败。",
"mdns_discovery_error": "本地设备发现服务异常。",
"get_cert_error": "获取中枢证书失败。",
"no_family_selected": "未选择家庭。",
"no_devices": "选择的家庭中没有设备。请选择有设备的家庭,然后继续。",
"no_filter_devices": "筛选设备为空。请选择有效的筛选条件,然后继续。",
"no_central_device": "【中枢网关模式】需要 Home Assistant 所在的局域网中存在可用的小米中枢网关。请检查选择的家庭是否符合该要求。",
"invalid_network_addr": "存在无效的IP地址或者HTTP地址请输入有效的地址。",
"invalid_ip_addr": "存在无法访问的IP地址请输入有效的IP地址。",
"invalid_http_addr": "存在无法访问的HTTP地址请输入有效的HTTP地址。",
"invalid_default_addr": "默认网络检测地址无法访问,请检查网络配置或者使用自定义网络检测地址。",
"unreachable_oauth2_host": "无法访问 OAuth2 认证地址,请检查网络配置。",
"unreachable_http_host": "无法访问小米 HTTP API 地址,请检查网络配置。",
"unreachable_spec_host": "无法访问小米 SPEC API 地址,请检查网络配置。",
"unreachable_mqtt_broker": "无法访问小米 MQTT Broker 地址,请检查网络配置。"
},
"abort": {
"ha_uuid_get_failed": "获取 Home Assistant UUID 失败。",
"network_connect_error": "配置失败。网络连接异常,请检查设备网络配置。",
"already_configured": "该用户已配置完成。请进入集成页面,点击“配置”按钮修改配置。",
"invalid_auth_info": "认证信息已过期。请进入集成页面,点击“配置”按钮重新认证。",
"config_flow_error": "集成配置错误:{error}"
}
},
"options": {
"step": {
"auth_config": {
"title": "认证配置",
"description": "检测到本地认证信息过期,请重新开始认证\r\n### 当前登录地区: {cloud_server}\r\n### OAuth2 认证跳转地址\r\nOAuth2 认证跳转地址为 **[http://homeassistant.local:8123](http://homeassistant.local:8123)**Home Assistant 需要与当前操作终端(例如,个人电脑)在同一局域网内,且操作终端能通过该地址访问 Home Assistant 首页,否则登录认证可能会失败。",
"data": {
"oauth_redirect_url": "认证跳转地址"
}
},
"oauth_error": {
"title": "登录出现错误",
"description": "点击“下一步”重试"
},
"config_options": {
"title": "配置选项",
"description": "### {nick_name} 您好!\r\n\r\n小米账号ID{uid}\r\n当前登录区域{cloud_server}\r\n集成实例ID{instance_id}\r\n\r\n请勾选需要重新配置的选项然后点击“下一步”。",
"data": {
"integration_language": "集成语言",
"update_user_info": "更新用户信息",
"update_devices": "更新设备列表",
"action_debug": "Action 调试模式",
"hide_non_standard_entities": "隐藏非标准生成实体",
"display_binary_mode": "二进制传感器显示模式",
"display_devices_changed_notify": "显示设备状态变化通知",
"update_trans_rules": "更新实体转换规则",
"update_lan_ctrl_config": "更新局域网控制配置",
"network_detect_config": "集成网络配置"
}
},
"update_user_info": {
"title": "更新用户昵称",
"description": "{nick_name} 您好!请在下方修改您的用户昵称。",
"data": {
"nick_name": "用户昵称"
}
},
"homes_select": {
"title": "重新选择家庭与设备",
"description": "## 使用介绍\r\n### 导入设备的家庭\r\n集成将添加已选中家庭中的设备。\r\n### 筛选设备\r\n支持按照家庭房间名称、设备接入类型、设备型号筛选设备同时也支持设备维度筛选已筛选出 **{local_count}** 个设备。\r\n### 控制模式\r\n- 自动:本地局域网内存在可用的小米中枢网关时, Home Assistant 会优先通过中枢网关发送设备控制指令以实现本地化控制功能。本地局域网不存在中枢时会尝试通过小米OT协议发送控制指令以实现本地化控制功能。只有当上述本地化控制条件不满足时设备控制指令才会通过云端发送。\r\n- 云端:控制指令仅通过云端发送。",
"data": {
"home_infos": "导入设备的家庭",
"devices_filter": "筛选设备",
"ctrl_mode": "控制模式"
}
},
"devices_filter": {
"title": "筛选设备",
"description": "## 使用介绍\r\n支持按照家庭房间名称、设备接入类型、设备型号筛选设备同时也支持设备维度筛选筛选逻辑如下\r\n- 会先根据统计逻辑获取所有包含项的并集或者交集,然后再获取排除项的交集或者并集,最后将【包含汇总结果】减去【排除汇总结果】得到【筛选结果】\r\n- 如未选择包含项,表示包含全部。\r\n### 筛选模式\r\n- 排除:移除不需要的项。\r\n- 包含:包含需要的项。\r\n### 统计逻辑\r\n- 与逻辑:取所有同模式筛选项的交集。\r\n- 或逻辑:取所有同模式筛选项的并集。\r\n\r\n您也可以进入集成项的【配置>更新设备列表】页面,勾选【筛选设备】重新筛选。",
"data": {
"room_filter_mode": "筛选家庭房间",
"room_list": "家庭房间",
"type_filter_mode": "筛选设备接入类型",
"type_list": "设备接入类型",
"model_filter_mode": "筛选设备型号",
"model_list": "设备型号",
"devices_filter_mode": "筛选设备",
"device_list": "设备列表",
"statistics_logic": "统计逻辑"
}
},
"update_trans_rules": {
"title": "更新实体转换规则",
"description": "## 使用介绍\r\n- 更新当前集成实例中设备的实体信息,包含 MIoT-Spec-V2 多语言配置、布尔值翻译、过滤规则。\r\n- **警告**:该配置为全局配置,将会更新本地缓存,会影响所有集成实例。\r\n- 该操作会耗费一定时间,请耐心等待,勾选“确认更新”,点击“下一步”开始更新 **{urn_count}** 条规则,否则跳过更新。",
"data": {
"confirm": "确认更新"
}
},
"update_lan_ctrl_config": {
"title": "更新局域网控制配置",
"description": "## 使用介绍\r\n更新小米局域网控制功能的配置信息。当云端和中枢网关均无法控制设备时集成会尝试通过局域网控制设备。如果未选择网卡局域网控制将不会生效。\r\n- 目前只支持控制局域网内的兼容 MIoT-Spec-V2 的 IP 设备部分2020年之前生产的旧设备可能不支持局域网控制或者不支持局域网订阅。\r\n- 请选择和被控设备同一局域网的网卡(支持多选)。如果选择多个网卡导致 Home Assistant 到同一局域网存在多个连接,建议只保留最优的网络连接,否则可能会影响设备的正常使用。\r\n- 如果局域网内存在支持本地控制的终端设备(带屏音箱、手机等),启用局域网订阅可能会导致本地自动化或者设备异常。\r\n- **警告**:该配置为全局配置,会影响所有集成实例,请谨慎修改。\r\n{notice_net_dup}",
"data": {
"net_interfaces": "请选择使用的网卡",
"enable_subscribe": "启用局域网订阅"
}
},
"network_detect_config": {
"title": "网络检测配置",
"description": "## 使用介绍\r\n### 网络检测地址\r\n用于检测网络是否正常未设置时将使用系统默认地址检测。如果默认地址检测异常时可尝试输入可用的自定义地址检测。\r\n- 可输入多个检测地址,地址之间使用`,`号间隔,如`8.8.8.8,https://www.bing.com`\r\n- 如果为IP地址将采用ping方式检测如果为http(s)地址,将采用 HTTP GET 访问该地址检测。\r\n- 如果想恢复系统默认检测地址,请输入`,`号,然后点击'下一步'。\r\n- **该配置为全局配置,修改会影响其它集成实例的网络检测,请谨慎修改。**\r\n### 检测网络依赖项\r\n依次检查下述网络依赖项是否可访问。如果相关地址无法访问将会导致集成异常。\r\n- OAuth2 认证地址:`https://account.xiaomi.com/oauth2/authorize`。\r\n- 小米 HTTP API 地址:`https://{http_host}/app/v2/ha/oauth/get_token`。\r\n- 小米 SPEC API 地址:`https://miot-spec.org/miot-spec-v2/template/list/device`。\r\n- 小米 MQTT Broker 地址:`mqtts://{cloud_server}-ha.mqtt.io.mi.com:8883`。",
"data": {
"network_detect_addr": "网络检测地址",
"check_network_deps": "检测网络依赖项"
}
},
"config_confirm": {
"title": "确认配置",
"description": "**{nick_name}** 您好!请确认最新的配置信息,然后点击“提交”。\r\n集成将会使用更新后的配置重新载入。\r\n\r\n集成语言\t{lang_new}\r\n用户昵称\t{nick_name_new}\r\nAction 调试模式:\t{action_debug}\r\n隐藏非标准生成实体\t{hide_non_standard_entities}\r\n显示设备状态变化通知\t{display_devices_changed_notify}\r\n设备变化\t新增 **{devices_add}** 个设备,移除 **{devices_remove}** 个设备\r\n转换规则变化\t共条 **{trans_rules_count}** 规则,更新 **{trans_rules_count_success}** 条规则",
"data": {
"confirm": "确认修改"
}
}
},
"progress": {
"oauth": "### {link_left}请点击此处重新登录{link_right}"
},
"error": {
"not_auth": "用户未认证。请点击认证链接以认证用户身份。",
"get_token_error": "获取登录授权信息OAuth token失败。",
"get_homeinfo_error": "获取家庭信息失败。",
"get_cert_error": "获取中枢证书失败。",
"no_family_selected": "未选择家庭。",
"no_devices": "选择的家庭中没有设备,请选择有设备的家庭,然后继续。",
"no_filter_devices": "筛选设备为空。请选择有效的筛选条件,然后继续。",
"no_central_device": "【中枢网关模式】需要 Home Assistant 所在的局域网中存在可用的小米中枢网关。请检查选择的家庭是否符合该要求。",
"mdns_discovery_error": "本地设备发现服务异常。",
"update_config_error": "配置信息更新失败。",
"not_confirm": "未确认修改项。请勾选确认后再提交。",
"invalid_network_addr": "存在无效的IP地址或者HTTP地址请输入有效的地址。",
"invalid_ip_addr": "存在无法访问的IP地址请输入有效的IP地址。",
"invalid_http_addr": "存在无法访问的HTTP地址请输入有效的HTTP地址。",
"invalid_default_addr": "默认网络检测地址无法访问,请检查网络配置或者使用自定义网络检测地址。",
"unreachable_oauth2_host": "无法访问 OAuth2 认证地址,请检查网络配置。",
"unreachable_http_host": "无法访问小米 HTTP API 地址,请检查网络配置。",
"unreachable_spec_host": "无法访问小米 SPEC API 地址,请检查网络配置。",
"unreachable_mqtt_broker": "无法访问小米 MQTT Broker 地址,请检查网络配置。"
},
"abort": {
"network_connect_error": "配置失败。网络连接异常,请检查设备网络配置。",
"options_flow_error": "集成重新配置错误:{error}",
"re_add": "请重新添加集成,错误信息:{error}",
"storage_error": "集成存储模块异常。请重试或者重新添加集成:{error}",
"inconsistent_account": "账号信息不一致。请使用正确的账号登录。"
}
}
}