用于本地处理基于 Tuya 的设备的 Home Assistant 自定义集成。
此自定义集成通过推送更新而不是轮询来更新设备状态,因此状态更新速度很快(即使手动操作)。该集成还支持涂鸦物联网云 API,用于检索设备的信息和 local_keys。
注意:云 API 帐户配置不是强制性的(LocalTuya 没有它也可以工作),但强烈建议您轻松检索 local_keys(并在重新配对设备后自动更新)。仅在启动时以及需要更新 local_key 时执行云 API 调用。
目前支持以下涂鸦设备类型:
兼容设备支持能源监控(电压、电流、瓦特等)。
目前支持涂鸦协议3.1-3.4。
该存储库的开发始于@NameLessJedi、@mileperhour 和@TradeFace 的代码。然后,他们的代码进行了深度重构,以提供与 Home Assistant 环境的正确集成,添加配置流程和其他功能。请参阅下面的“感谢”部分。
如果您使用 HACS,最简单的方法是通过 HACS 安装 LocalTuya。
对于手动安装,请将 localtuya 文件夹及其所有内容复制到 Home Assistant 的 custom_components 文件夹中。该文件夹通常位于/config
文件夹内。如果您正在运行 Hass.io,请使用 SAMBA 复制该文件夹。如果您运行的是 Home Assistant Supervised,则 custom_components 文件夹可能位于/usr/share/hassio/homeassistant
。您可能需要创建custom_components
文件夹,然后将 localtuya 文件夹及其所有内容复制到其中。
注意:您必须拥有涂鸦设备的密钥和 ID 才能使用 LocalTuya。最简单的方法是在集成中配置 Cloud API 帐户。如果您选择不这样做,有多种方法可以获取 local_keys,具体取决于您的环境和您拥有的设备。开始获取信息的好地方是 https://github.com/codetheweb/tuyapi/blob/master/docs/SETUP.md 或 https://pypi.org/project/tinytuya/。
注2:如果您计划将这些设备集成到具有互联网的网络上并阻止其互联网访问,则还必须阻止DNS 请求(对本地DNS 服务器,例如192.168.1.1)。如果您只阻止出站互联网,那么设备将处于僵尸状态;它将拒绝/不响应与 localkey 的任何连接。因此,您必须首先将设备连接到有效的互联网连接,获取每个设备的本地密钥,并实施该块。
注意:从 v4.0.0 开始,不再支持使用 YAML 文件进行配置。集成只能使用配置流程进行配置。
要开始配置集成,只需在设置 - 集成页面中按“+添加集成”按钮,然后从下拉菜单中选择 LocalTuya。将出现 Cloud API 配置页面,要求输入您的涂鸦 IoT 平台帐户凭据:
设置涂鸦 IoT 平台账户并在其中设置项目,请参考涂鸦官方集成说明:https://www.home-assistant.io/integrations/tuya/ 找到 Client ID 和 Secret 的地方是在此链接中描述(在“获取授权密钥”段落中),而用户 ID 可以在云项目中的“链接涂鸦应用帐户”子选项卡中找到:
注意:如上面链接所述,如果您已有账户和 IoT 项目,请确保它是在 2021 年 5 月 25 日之后创建的(由于涂鸦 2.0 云中引入的更改)。否则,您需要创建一个新项目。请参阅以下屏幕截图,了解在哪里检查项目创建日期:
按“提交”按钮后,第一个设置完成,并且将添加集成。
注意:不强制输入 Cloud API 凭据:您可以选择勾选“不配置 Cloud API 帐户”按钮,无论如何都会添加集成。
设置集成后,可以按“集成”页面中的“配置”按钮添加和配置设备:
配置菜单如下:
从此菜单中,您可以选择“重新配置云 API 帐户”来编辑您的涂鸦云凭证和设置,以防它们发生更改或集成是从 v.3.xx 版本迁移的。
然后您可以继续添加或编辑您的涂鸦设备。
如果您选择“添加或编辑设备”,将出现一个下拉菜单,其中包含检测到的设备列表(如果选择添加,则使用自动发现;如果选择编辑,则使用已配置的设备列表):您可以选择其中之一,或选择“...”选项手动输入所有参数。
注意:您设备上的涂鸦应用程序必须关闭,以下步骤才能可靠运行。
如果您选择了一项,则只需输入设备的友好名称和 localKey。如果您配置了 Cloud API 帐户,这些值将自动检索,否则您将需要手动输入它们。
设置扫描间隔是可选的,仅当能量/功率值默认更新不够频繁时才需要设置。小于 10 秒的值可能会导致稳定性问题。
设置“手动 DPS 添加”是可选的,仅当设备在实体正确初始化之前未正确通告 DPS 时才需要设置。通常可以通过首先使用涂鸦应用程序连接/初始化设备,然后关闭应用程序,然后将设备添加到集成中来避免此设置。注意:使用此选项添加的任何 DPS 在设置期间都将具有 -1 值。
设置“在 RESET 命令中发送的 DPID”是可选的。当设备在重启后不响应任何涂鸦命令,但可以连接到(僵尸状态)时使用。这种情况主要发生在设备被阻止访问互联网时。 DPids 因设备而异,但通常使用“18,19,20”。如果此处添加了错误的条目,则设备可能无法摆脱僵尸状态。通常,此处仅输入传感器 DPID。
按“提交”后,将测试连接以检查一切是否正常。
然后,是时候添加实体了:此步骤将发生多次。首先,从下拉菜单中选择实体类型进行设置。定义所有需要的实体后,选中“不添加更多实体”复选框:这将完成该过程。
对于每个实体,必须选择关联的 DP。所有需要选择 DP 的选项都将提供一个下拉菜单,显示设备上找到的所有可用 DP(及其当前状态!!),以便于识别。
注意:如果您的设备需要 LocalTuya 向实体发送初始化值才能工作,则可以通过“被动实体”选项进行配置(在支持的实体中)。您可以选择指定要发送的初始化值
每种实体类型都有不同的配置选项。这是“switch”实体的示例:
配置实体后,该过程就完成了。您现在可以将设备与 Home Assistant 中的区域关联
如果您从 v3.xx 或更早版本升级 LocalTuya,配置条目将自动迁移到新设置。一切都应该像升级前一样工作,除了在集成选项卡中您只会看到一个 LocalTuya 集成(显示配置的设备和实体的数量),而不是分组在 LocalTuya Box 中的多个集成。如果旧配置是使用 YAML 文件和配置流程完成的,则会发生这种情况。迁移后,您只需输入涂鸦 IoT 帐户凭据即可启用对 Cloud API 的支持(并受益于 local_key 检索和自动更新):请参阅配置菜单。
如果您使用 YAML 文件配置了 LocalTuya,则可以从 YAML 文件中删除其所有引用,因为它们将不再被考虑,因此可能会带来混乱(仅需要保留记录器配置部分,当然,请参阅调试)。
您可以通过两种不同的方式获取电能监控(电压、电流):
sensor :
- platform : template
sensors :
tuya-sw01_voltage :
value_template : >-
{{ states.switch.sw01.attributes.voltage }}
unit_of_measurement : ' V '
tuya-sw01_current :
value_template : >-
{{ states.switch.sw01.attributes.current }}
unit_of_measurement : ' mA '
tuya-sw01_current_consumption :
value_template : >-
{{ states.switch.sw01.attributes.current_consumption }}
unit_of_measurement : ' W '
有多种基于涂鸦的气候,包括加热器、恒温器和空调。所有这些似乎都以不同的方式集成,很难找到通用的 DP 映射。下面是目前有效的 DP 到产品映射表。使用它作为您自己的映射的指南,如果有可能,请为该列表做出贡献。
DP | 莫斯 BHT 002 | Qlima WMS S + SC52 (AB;AF) | 阿瓦托 |
---|---|---|---|
1 | ID:开/关 {真,假} | ID:开/关 {真,假} | ID:开/关 {真,假} |
2 | 目标温度 整数,缩放比例:0.5 | 目标温度 整数,缩放 1 | 目标温度 整数,缩放 1 |
3 | 当前温度 整数,缩放比例:0.5 | 当前温度 整数,缩放比例:1 | 当前温度 整数,缩放比例:1 |
4 | 模式 {0, 1} | 模式 {“热”、“风”、“湿”、“冷”、“自动”} | ? |
5 | 生态模式 ? | 风扇模式 {“强”、“高”、“中”、“低”、“自动”} | ? |
15 | 不支持 | 支持,未知 {真,假} | ? |
19 | 不支持 | 温度单位 {“c”,“f”} | ? |
23 | 不支持 | 支持,未知 整数,例如。 68 | ? |
24 | 不支持 | 支持,未知 整数,例如。 64 | ? |
101 | 不支持 | 室外温度 整数。缩放比例:1 | ? |
102 | 外部传感器温度 整数,缩放比例:0.5 | 支持,未知 整数,例如。 34 | ? |
104 | 支持,未知 {真,假(?)} | 不支持 | ? |
Moes BHT 002 Avatto 恒温器
每当您编写错误报告时,如果直接包含调试日志,将会有很大帮助(否则我们只会要求它们,并且会花费更长的时间)。因此,请启用这样的调试日志并将其包含在您的问题中:
logger :
default : warning
logs :
custom_components.localtuya : debug
custom_components.localtuya.pytuya : debug
然后,编辑出现问题的设备并选中“启用此设备的调试”按钮。
创建一个(良好且精确的)能量(kWh)传感器(计数器)——不仅仅是功率,而是基于它——。想法:使用:https://www.home-assistant.io/integrations/integration/ 和 https://www.home-assistant.io/integrations/utility_meter/
#15 中列出的所有内容
NameLessJedi https://github.com/NameLessJedi/localtuya-homeassistant 和 mileperhour https://github.com/mileperhour/localtuya-homeassistant 是主要的灵感来源,其开关代码基本上没有变化。
TradeFace,是唯一提供与封面通信的正确代码的公司(特别是用于状态的 0x0d 命令而不是 0x0a,以及相关需求,例如要接收双重回复):https://github。 com/TradeFace/tuya/
Sean6541,用于 Tuya 设备的工作(标准)Python 处理程序。
jasonacox,用于 TinyTuya 项目,我可以从其中导入代码以使用协议 3.4 与设备进行通信。
postlund,感谢这些想法,感谢对 95% 的重构进行编码,并将此存储库的质量提高到难以想象的水平(至少对我而言),并教会了我很多 Home Assistant 中的工作方式。