『瀚思彼岸』» 智能家居技术论坛

标题: 分享将涂鸦zigbee电动开窗器(推拉窗)接入ZHA的心路历程 [打印本页]

作者: samhsba    时间: 2022-9-15 01:17
标题: 分享将涂鸦zigbee电动开窗器(推拉窗)接入ZHA的心路历程
本帖最后由 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容器内再进行下述操作:
  1. docker exec -it 你的ha容器名 bash
复制代码

第一种方式:
1.在ha运行的机器中,进入到/usr/local/lib/python3.10/site-packages/zhaquirks/tuya/目录中.
  1. cd /usr/local/lib/python3.10/site-packages/zhaquirks/tuya/
复制代码

注意:因为很多同学安装位置不同,找不到上述路径也不知道如何查找,请尝试用root用户按以下命令进行搜索:
  1. find / -path */site-packages/zhaquirks/tuya/ts0601_cover.py -type f
复制代码



注意,不同的ha版本,python版本号可能不一样,请根据读者实际情况修改路径中红色部分.

2.在这个目录下找到ts0601_cover.py这个文件,编辑他
  1. vi ts0601_cover.py
复制代码
3.找到  "class TuyaMoesCover0601(TuyaWindowCover):"  这一行,大概在165行.
然后再随后的几行找到 "MODELS_INFO: ["  这一行
并在参考下面的设备型号格式,将这台不知名开窗器设备id啥的加一行进去,最终结果参考如下:

                               
登录/注册后可看大图

4.保存退出,重启ha,再重新进行添加zha设备,开窗器实体就会出现了,并且基本能完美工作.
注意,这种方式可能会在ha进行版本升级的时候失效,因为升级会把你之前修改好的文件覆盖成新版.新版如果还是没有加入这个型号的适配,就需要你再根据上述步骤操作一遍即可.

第二种方式:
以下内容假设ha配置文件所在目录为/config
1.在ha配置文件configuration.yaml同级目录下创建zha_quirks文件夹
  1. cd /config
  2. mkdir zha_quirks
复制代码

2.进入zha_quirks目录并再创建tuya文件夹
  1. cd /config/zha_quirks
  2. mkdir tuya
复制代码

3.将/usr/local/lib/python3.10/site-packages/zhaquirks/tuya/目录下的ts0601_cover.py和__init__.py这2个文件复制到步骤2创建的tuya文件夹中
注意,不同的ha版本,python版本号可能不一样,请根据读者实际情况修改路径中红色部分.
  1. cp /usr/local/lib/python3.10/site-packages/zhaquirks/tuya/ts0601_cover.py /config/zha_quirks/tuya/
复制代码

注意:因为很多同学安装位置不同,找不到上述路径也不知道如何查找,请尝试用root用户按以下命令进行搜索
  1. find / -path */site-packages/zhaquirks/tuya/ts0601_cover.py -type f
复制代码




4.编辑复制过来的这个ts0601_cover.py文件
  1. vi /config/zha_quirks/tuya/ts0601_cover.py
复制代码
5.找到  "class TuyaMoesCover0601(TuyaWindowCover):"  这一行,大概在165行.
然后再随后的几行找到 "MODELS_INFO: ["  这一行
并在参考下面的设备型号格式,将这台不知名开窗器设备id啥的加一行进去并保存,最终结果参考如下:

                               
登录/注册后可看大图



6.在ha配置文件configuration.yaml中加入以下内容并保存:
  1. zha:
  2.   enable_quirks: true
  3.   custom_quirks_path: /config/zha_quirks
复制代码
/config/zha_quirks是存放zha_quirks代码的文件夹路径,请根据读者实际情况填写

                               
登录/注册后可看大图



7.重启ha,并重新添加该设备,即可生成可用控制实体.

方式二相较于方式一操作繁杂一些,但是可以一定程度上避免升级带来的问题.但不能完全避免,如果升级变动过大,相关的初始化脚本有可能会报错导致实体失效,那么就再按照方式二的教程把新版文件再捣腾一遍基本就能解决.

附一下正确识别的实体图:

                               
登录/注册后可看大图

                               
登录/注册后可看大图

                               
登录/注册后可看大图


五.产品功能
虽然是涂鸦zigbee,但是产品本身的使用可以完全跟涂鸦无关,不需要涂鸦网关,也不需要下载任何app,单纯通过机器上唯一的一个按键就可以调整所有参数,比如开关正反转,防夹手力道,重新配对,重置等等功能.
目前使用下来效果真的很惊喜,基本是完美的.
为什么是基本完美呢,因为目前发现,调节开窗百分比的时候,只有很小的概率能收到停止信号.比方说从0调整到10%,当机器开到10%停下来后,ha上电机的状态仍然是opening,始终无法达到open终态.这就导致了当你在根据百分比打开窗户的时候,左边的全开按钮就一直是不可点击状态,只有手动点一下中间的停止按钮,全开按钮才会亮起来.当然,根据百分比关闭窗户情况类似,反之亦然就不再解释了.

六.产品演示










作者: samhsba    时间: 2022-9-15 01:39
如果有大佬对github提pr流程熟悉,对zha的代码也熟悉,可以帮忙提交个pr
作者: 情非殇    时间: 2022-9-15 08:28
想看看大佬安装出来的实际效果,我是那种平开+内倒的窗,想改怕丑而且好像我这个窗没有特别好的方案
作者: Ari    时间: 2022-9-15 08:48
也想看看效果
作者: a_dongde    时间: 2022-9-15 08:49
我有一个博云的zigbee燃气报警,在ZHA下被识别成了开关,然后重复报错,也可以用这个方法改嘛?
作者: hyq    时间: 2022-9-15 09:05
您好!我全屋涂鸦zigbee我想问一下您zha网关用的那一种?可否给一个网关链接!谢谢!
作者: samhsba    时间: 2022-9-15 09:59
之前拍了个视频,前面两楼的想看的啥效果?现在手机回复先贴个b站链接看看是不是你们想看的效果~【涂鸦zigbee推拉窗开窗器通过zha介入homeassistant和homekit-哔哩哔哩】 https://b23.tv/Xjyekpg
作者: samhsba    时间: 2022-9-15 10:01
a_dongde 发表于 2022-9-15 08:49
我有一个博云的zigbee燃气报警,在ZHA下被识别成了开关,然后重复报错,也可以用这个方法改嘛? ...

理论上只要是zigbee就能用这个方法,不过我买的这个小众产品恰好跟之前适配过得其他型号差不多,只是这个新型号没被录入,所以简单加一行型号进去就能正常用。如果之前完全没人适配过类似的,不是这么简单一行代码能解决的
作者: samhsba    时间: 2022-9-15 10:02
hyq 发表于 2022-9-15 09:05
您好!我全屋涂鸦zigbee我想问一下您zha网关用的那一种?可否给一个网关链接!谢谢! ...

小米多模网关刷的固件,论坛有教程的~大部分常用涂鸦zigbee都可以直接接入啥都不用改
作者: linoul    时间: 2022-9-15 10:34
方式2 从第五步开始就行了 不用复制const.py __init__.py
作者: samhsba    时间: 2022-9-15 12:17
linoul 发表于 2022-9-15 10:34
方式2 从第五步开始就行了 不用复制const.py __init__.py

啊真的吗?回头我试试啊多谢大佬指点
作者: lexcao    时间: 2022-9-15 16:01
好厉害!膜拜!
作者: hyq    时间: 2022-9-15 19:02
samhsba 发表于 2022-9-15 10:02
小米多模网关刷的固件,论坛有教程的~大部分常用涂鸦zigbee都可以直接接入啥都不用改 ...

好的!谢谢!如果涂鸦的试用到期不能再申请的话就要准备接入zha.我全屋涂鸦zigbee
作者: aoligei    时间: 2022-11-2 22:30
大佬你的开窗器是安装在哪里的呢 可以贴个图看看么

作者: samhsba    时间: 2022-11-3 00:28
aoligei 发表于 2022-11-2 22:30
大佬你的开窗器是安装在哪里的呢 可以贴个图看看么

找了下之前拍照的图片.你主要是看那张仰视图吧

                               
登录/注册后可看大图


                               
登录/注册后可看大图

作者: aoligei    时间: 2022-11-3 00:30
samhsba 发表于 2022-11-3 00:28
找了下之前拍照的图片.你主要是看那张仰视图吧

哦 看懂了。 方便说下价格么 我比较懒准备弄
作者: samhsba    时间: 2022-11-4 14:19
aoligei 发表于 2022-11-3 00:30
哦 看懂了。 方便说下价格么 我比较懒准备弄

价格是根据长度来的,几百块钱吧一个,你可以根据图片搜索那家店,反正我就正常价格买的,并没有什么优惠
作者: 祁连山路    时间: 2022-11-4 23:58
楼主能加QQ
作者: 祁连山路    时间: 2022-11-5 00:01
samhsba 发表于 2022-11-4 14:19
价格是根据长度来的,几百块钱吧一个,你可以根据图片搜索那家店,反正我就正常价格买的,并没有什么优惠 ...

我的涂鸦zigbee窗帘电机,和您的帖子很像,想具体请教一下
作者: 祁连山路    时间: 2022-11-6 09:01
楼主,找不到这个目录,/usr/local/lib/python3.10/site-packages/zhaquirks/tuya/目录
作者: samhsba    时间: 2022-11-8 00:11
祁连山路 发表于 2022-11-6 09:01
楼主,找不到这个目录,/usr/local/lib/python3.10/site-packages/zhaquirks/tuya/目录

要看你的ha装在哪里,不是照抄的,如果是docker版本就跟我一样的路径
作者: samhsba    时间: 2022-11-8 09:50
祁连山路 发表于 2022-11-6 09:01
楼主,找不到这个目录,/usr/local/lib/python3.10/site-packages/zhaquirks/tuya/目录

帖子更新了搜索的命令,贴过来给你

注意:因为很多同学安装位置不同,找不到上述路径也不知道如何查找,请尝试以下命令进行搜索:
find -path */site-packages/zhaquirks/tuya/ts0601_cover.py -type f

作者: hades2013    时间: 2022-11-8 22:19
(⊙o⊙)哇,很不错
作者: 祁连山路    时间: 2022-12-4 11:07
在楼主的亲自指导下,我一个小白设置成功,非常感谢大佬指导。
作者: liy517    时间: 2022-12-4 16:59
这个教程得收藏一下,我也遇到过很多设备加入ZHA后,虽然加入了,但是不识别实体,回头好好研究一下。

作者: lexcao    时间: 2023-1-8 21:26
虚拟机安装的HA,找不到这个目录,输入
  1. find / -path */site-packages/zhaquirks/tuya/ts0601_cover.py -type f
复制代码
无反应,是不是文件结构不同?
作者: lexcao    时间: 2023-1-8 21:40
github上下载了一个ts0601_cover.py,需要的试试
作者: lexcao    时间: 2023-1-9 20:40
lexcao 发表于 2023-1-8 21:40
github上下载了一个ts0601_cover.py,需要的试试

经过尝试,没有成功。
作者: hyq    时间: 2023-4-20 22:12
祁连山路 发表于 2022-12-4 11:07
在楼主的亲自指导下,我一个小白设置成功,非常感谢大佬指导。

你好!我也是涂鸦zigbee窗帘电机需要接入。方便详细说一下如何操作吗?谢谢!
作者: hyq    时间: 2023-4-23 08:33
samhsba 发表于 2022-11-8 09:50
帖子更新了搜索的命令,贴过来给你

注意:因为很多同学安装位置不同,找不到上述路径也不知道如何查找, ...

非常感谢!按照楼主教程10个窗帘电机完美接入zha.再次感谢!
作者: z00000000    时间: 2023-7-4 19:53
hyq 发表于 2023-4-20 22:12
你好!我也是涂鸦zigbee窗帘电机需要接入。方便详细说一下如何操作吗?谢谢! ...

我也是窗帘管状电机,按楼主的方法成功。




欢迎光临 『瀚思彼岸』» 智能家居技术论坛 (https://bbs.hassbian.com/) Powered by Discuz! X3.5