|
本帖最后由 samhsba 于 2022-11-9 09:46 编辑
为啥要写心路历程呢,主要是分享一下选择适合自己的智能产品的逻辑,更重要的是怎么在没有绝对针对性资料的情况下,利用搜索引擎,依葫芦画瓢来解决全新的问题.
更新历史:
20220915 23:10 听取了10楼linoul的建议,去除冗余步骤,让方式二更加简单;添加演示视频.
20221001 00:57 方式二在上次更新的时候多去除了__init__.py这个脚本,这个脚本必须也复制过来
20221108 9:48 根据反馈提供文件路径搜索的命令 15:37 完善搜索命令,进行全盘搜索
一.背景介绍(都是废话可以不看)
最近几年入了HA的坑,在出租屋折腾各种智能设备,基本靠小米多模网关一把梭,基本也都是zigbee协议的设备(个人比较看好zigbee).也终于在今年初拿到人生第一套精装交付房,那自然是全屋智能的节奏.诸如墙壁开关,灯具,窗帘电机,人体传感器,门窗传感器等等常用设备基本都有品牌商推出成熟的产品(基本都海鲜市场搞得aqara,香!).
唯独自动开窗的设备,始终没看到大厂有类似的产品,马家基本上也都是小厂家做的,更多是平开窗开窗器.
平开窗:
推拉窗:
适配我家推拉窗的,我最近半年能找到的就两家,一个是论坛里能搜到的云仪(涂鸦wifi),另一个就是根本找不到任何资料的涂鸦zigbee,也就是本文的主角.
二.选品过程
论坛上有些许资料可查https://bbs.hassbian.com/thread-15664-1-1.html,也是当时我能唯一确定可以接入ha的推拉窗设备.
由于是涂鸦wifi协议的设备,如果通过官方接入,就会存在延迟问题,也没办法做到本地执行.即便通过tuya local各种tricky的方式接入,也存在诸多问题,比如网站改版,亦或是tuya开发者账号拿key只能半年有效(道听途说,本人没有验证过),blabla...参考https://bbs.hassbian.com/thread-13396-1-1.html
整体这个产品给我的感觉就不是很靠谱,很可能涂鸦说给你ban了就ban了
另外就是个人比较热衷于zigbee设备,属于个人情结,故不得不把目光投向另一个不知名小厂的产品上.
这个产品有多不知名呢,就连店铺名都不带品牌,所以我也不知道怎么称呼
不过虽然厂子不知名,但是产品真的是牛逼,有涂鸦zigbee,欧瑞博zigbee,米家wifi,涂鸦wifi等协议可以选配.
于是在犹豫许久后,在6月跟老板开始了漫长的沟通.
老板基本上都是答非所问,他是真的想帮我,奈何他真的不懂.....我想要的是zigbee的设备id,他给我发的啥也不是,哈哈哈.
没办法,最终还是硬着头皮上了车,想着自己研究下实在不行就把控制芯片寄回去换个米家wifi的,然后就开始了后面的安装调试.
三.尝试开窗器接入zha
设备到手后,根据说明书按3下按钮进入配对模式,zha正常识别,但没有生成任何有用实体,也终于知道设备id了....
于是乎开始根据型号TS0601 TZE200各种google,找到了加热器,墙壁开关,窗帘,开窗器等等,也试了搜索完整型号_TZE200_7upwjcca,那就是啥都搜不到.此刻内心是很芭比Q的
终于根据TS0601 TZE200 cover关键字,找到了github上一个issue,大概了解了一下zha quirks这个东西就是专门解决这类问题的.
看代码是肯定不会看的,但是依葫芦画瓢谁还不会呢
四.正式接入zha
由于对zha quirks代码结构不是很熟,国内资料也是极其少,所以以下操作或许不一定完全正确,如有更好方式还请大佬指教.
以下操作基于Home Assistant 2022.7.6
如果ha是以容器运行,请先进入到ha容器内再进行下述操作:
docker exec -it 你的ha容器名 bash
第一种方式:
1.在ha运行的机器中,进入到/usr/local/lib/python3.10/site-packages/zhaquirks/tuya/目录中.
cd /usr/local/lib/python3.10/site-packages/zhaquirks/tuya/
注意:因为很多同学安装位置不同,找不到上述路径也不知道如何查找,请尝试用root用户按以下命令进行搜索:
find / -path */site-packages/zhaquirks/tuya/ts0601_cover.py -type f
注意,不同的ha版本,python版本号可能不一样,请根据读者实际情况修改路径中红色部分.
2.在这个目录下找到ts0601_cover.py这个文件,编辑他
3.找到 "class TuyaMoesCover0601(TuyaWindowCover):" 这一行,大概在165行.
然后再随后的几行找到 "MODELS_INFO: [" 这一行
并在参考下面的设备型号格式,将这台不知名开窗器设备id啥的加一行进去,最终结果参考如下:
4.保存退出,重启ha,再重新进行添加zha设备,开窗器实体就会出现了,并且基本能完美工作.
注意,这种方式可能会在ha进行版本升级的时候失效,因为升级会把你之前修改好的文件覆盖成新版.新版如果还是没有加入这个型号的适配,就需要你再根据上述步骤操作一遍即可.
第二种方式:
以下内容假设ha配置文件所在目录为/config
1.在ha配置文件configuration.yaml同级目录下创建zha_quirks文件夹
cd /config
mkdir zha_quirks
2.进入zha_quirks目录并再创建tuya文件夹
cd /config/zha_quirks
mkdir tuya
3.将/usr/local/lib/python3.10/site-packages/zhaquirks/tuya/目录下的ts0601_cover.py和__init__.py这2个文件复制到步骤2创建的tuya文件夹中
注意,不同的ha版本,python版本号可能不一样,请根据读者实际情况修改路径中红色部分.
cp /usr/local/lib/python3.10/site-packages/zhaquirks/tuya/ts0601_cover.py /config/zha_quirks/tuya/
注意:因为很多同学安装位置不同,找不到上述路径也不知道如何查找,请尝试用root用户按以下命令进行搜索:
find / -path */site-packages/zhaquirks/tuya/ts0601_cover.py -type f
4.编辑复制过来的这个ts0601_cover.py文件
vi /config/zha_quirks/tuya/ts0601_cover.py
5.找到 "class TuyaMoesCover0601(TuyaWindowCover):" 这一行,大概在165行.
然后再随后的几行找到 "MODELS_INFO: [" 这一行
并在参考下面的设备型号格式,将这台不知名开窗器设备id啥的加一行进去并保存,最终结果参考如下:
6.在ha配置文件configuration.yaml中加入以下内容并保存:
zha:
enable_quirks: true
custom_quirks_path: /config/zha_quirks
/config/zha_quirks是存放zha_quirks代码的文件夹路径,请根据读者实际情况填写
7.重启ha,并重新添加该设备,即可生成可用控制实体.
方式二相较于方式一操作繁杂一些,但是可以一定程度上避免升级带来的问题.但不能完全避免,如果升级变动过大,相关的初始化脚本有可能会报错导致实体失效,那么就再按照方式二的教程把新版文件再捣腾一遍基本就能解决.
附一下正确识别的实体图:
五.产品功能
虽然是涂鸦zigbee,但是产品本身的使用可以完全跟涂鸦无关,不需要涂鸦网关,也不需要下载任何app,单纯通过机器上唯一的一个按键就可以调整所有参数,比如开关正反转,防夹手力道,重新配对,重置等等功能.
目前使用下来效果真的很惊喜,基本是完美的.
为什么是基本完美呢,因为目前发现,调节开窗百分比的时候,只有很小的概率能收到停止信号.比方说从0调整到10%,当机器开到10%停下来后,ha上电机的状态仍然是opening,始终无法达到open终态.这就导致了当你在根据百分比打开窗户的时候,左边的全开按钮就一直是不可点击状态,只有手动点一下中间的停止按钮,全开按钮才会亮起来.当然,根据百分比关闭窗户情况类似,反之亦然就不再解释了.
六.产品演示
|
评分
-
参与人数 2 | 金钱 +30 |
HASS币 +10 |
收起
理由
|
hyq
| + 10 |
|
感谢楼主分享! |
囧
| + 20 |
+ 10 |
感谢楼主分享! |
查看全部评分
|