用户
 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
2019-10-17 23:23:15 SchumyHao ioBroker开发者 楼主 271116
本文为SchumyHao原创文章,未经许可,严禁转载!
如经许可转载时务必注明原作者SchumyHao及原始链接,并注明“发表于ioBroker中国”,转载不得对作品进行修改。 https://bbs.iobroker.cn/thread-361-1-1.html
有关我做的这个网关的硬件信息, 我都更新到此开源项目的说明文档中了. 感兴趣的玩家可以加入进来~
front_hw.png
back_hw.png
Cache_5baca91aa58e8aeb..jpg

为什么要自己做zigbee网关

  1. 小米网关协议时不时的变化,导致设备接入时常不好用。
  2. 小米网关局域网接入使用UDP组播,并不是所有的wifi路由器都支持的。
  3. 小米网关版本更新,有些设备的数据就被网关吃掉,直接发云端,不转发局域网协议了。更有甚者,有一些zigbee设备直接无法支持局域网协议!!
  4. 如果家里有其他品牌zigbee设备,比如宜家,飞利浦的灯,涂鸦的传感器等,都需要专门的zigbee网关,管理复杂。
  5. TB上有大把的标准ZHA,ZLL协议的小厂家终端设备,无法接入。

支持设备列表

自己制作的zigbee网关支持近100种zigbee设备,包括我们常用的小米(aqare),飞利浦Hue,宜家等品牌。具体支持设备列表参考链接。

简述zigbee网络

zigbee网络拓扑
图片来源:https://baijiahao.baidu.com/s?id=1597593171433294352&wfr=spider&for=pc

设备角色

  • 协调器(Coordinator):网络中唯一的管理者。
  • 路由器(Router):可以转发数据的设备。设备本身可以有实际功能,也可以单纯的转发数据。
  • 终端设备(End-Device):具有具体功能的设备,不可以转发数据。

那小米的设备举例,小米网关就是协调器。一般情况,直接有220V供电的设备,比如86墙壁插座,窗帘充当的是路由器。电池供电设备,单火线供电设备是终端设备

网络类型

不想详细的讲网络类型,我也不专业。我只说一点和我们部署有关系的点:

  • source_routing: 协调器支持source routing的话,对网络节点数量多的用户很有帮助。对于节点设备30+的用户,推荐使用此网络。但是支持此功能的协调器最多支持直接连接的子设备最大为5个,所以需要在网络中部署路由器设备。

硬件准备

硬件设备
这个是我使用过的zigbee网关设备,最左边的是下载程序的cc-debug

CC2531/CC2530/CC2538设备

这个是TI的zigbeeSoC芯片,我们需要购买或者自制基于上述芯片的zigbee网关设备。

  • 可以选择淘宝搜索cc2531 usb,最便宜的网关设备,价格10-40不等。这样的设备可以最低成本体验,但是这种设备信号都不会很好。
  • 选择带PA信号放大器的设备,一般采用CC2530+CC2592的搭配方式。这样对信号覆盖有很好的帮助,价格一般也在70元左右。
  • 自己打板制作。我上图设备右一,右二都是从这位大佬modkam的博客找到的开源硬件geber文件,大佬深处寒冷的俄罗斯,却在我们温暖的广州嘉立创投版,此时我心中不得不感谢伟大祖国给了我们这么好的创客发展条件啊。
  • 考虑到做硬件不容易,买来开发版刷固件也不容易,也许后续会考虑直接给大家制作直接伸手的设备。不为挣钱,就让大家玩儿的方便。

下载固件

TI的这个芯片需要使用CC-DEBUG下载器下载固件,需要自行购买。
下载固件需要安装相应的下载程序。具体方法也不重复写了,可以从此链接获取下载程序方法。

需要注意的是,选择下载固件时,需要根据家里zigbee设备情况选择。
如果设备数量在20左右,选择default固件即可。
如果家里设备数量在20+甚至30+,强烈建议选择source routing固件。

支持插USB设备的ioBroker主机

因为USB设备要直接插在主机上进行通信,最方便的就是直接在机器上运行ioBroker,而不是使用虚拟机或者docker,并不是不行,只是我也没有自己研究如何在虚拟机或者docker上读写USB设备,
我家里ioBroker在群晖docker中运行,同时有一个N1和群晖搭建ioBroker多主机系统,具体搭建多主机系统方法见我之前的帖子

部署步骤

  1. 在ioBroker admin页面上选择N1主机,并且安装zigbee插件。
  2. 将自制的zigbee硬件设备插在N1主机上。
  3. 运行ioBroker的zigbee程序,稍等片刻,等插件状态变成黄色绿色
  4. 进入插件的设置页面,选择SETTING,在COM port name处,选择ttyUSB0或者ttyACM0这样的设备,别选ttyS开头命名的那些。可选的,可以修改网络和安全相关的配置。但是如果是不了解自己在做什么的话,建议就别动了。
  5. 重启插件程序,等到程序状态为绿色。
  6. 再次进入程序配置页面,点击绿色图标按钮,开始添加自己的zigbee设备。这里注意,最右上角的绿色图标是指的添加直接连接协调器的子设备,而网络中,router属性的设备同样也有一个绿色的图标,可以由他发起设备接入。
  7. 添加完所有设备后,可以在NETWORK MAP页面查看网络情况。
  8. 在设备页面,可以看到已经添加的设备的属性,这里面可以发现,有很多小米子设备的数据,是比局域网协议更多的哦~

注意事项

  • 牵扯到硬件,请大家根据自己情况酌情选择方案。
  • router设备同样可以使用coordinator一样的硬件,只要刷不同的router固件即可。
  • 小米设备,并没有完全遵守zigbee协议的规范,所以会有一些地方需要注意:
    • 添加设备的时候,尤其是电池供电设备时,在长按链接按钮5s后,设备开始链接zigbee网关,灯长闪一次,代表已经接入网络。但是zigbee标准协议里面还需要子设备再上报设备的一些信息,可是小米的电池设备并没有上报,如果一直等待的话,会出现类似这样的错误Error: Cannot get the Node Descriptor of the Device: 0x00158d0000fd3145 (Error: Timed out after 10000 ms). undefined解决办法:再设备接入网络的长闪一次之后,继续按照1秒2次的频率短按设备配对按钮,直到程序配对输出页面上出现这样的日志为止 Interview state: step 1/1. progress: 13%。大约添加一个电池设备需要40s,如果失败请多尝试。
    • 如果选择source_routing的协调器,小米的电池设备又会定期打印这样的错误logZigbee publish to '0x00158d00010b6cc9', genTime - readRsp - [{"attrId":0,"status":0,"attrData":624267880,"dataType":226}] - 1 failed with error Error: AF data request fails, status code: 205.。完全不影响使用,忽略即可。
    • 小米设备的Available属性也完全不准,请不要忽略他的状态,不要依靠这个状态做任何自动化。

开源硬件

我已经在大佬的基础上着手改良硬件,并且已经开源出来了。
大家可以在Github中找到项目



使用道具 举报 回复
8266+CC2530+CC2592也可以接入了, 而且是在群辉通过wifi接入。
可以画一个小板子来玩儿了
使用道具 举报 回复 支持 2 反对 0
经过实验,通过8266+cc2530+cc2592的方案。
在群晖docker里面运行没有问题,也脱离了必须USB线连接的束缚。

但是发现数据延时严重,而且经常出现控制指令超时的情况。

还需要进一步debug看看是不是没有解决办法了
使用道具 举报 回复 支持 2 反对 0
因为wifi透传串口涉及到多个地方的功能增加,今天有在树莓派上实验了一下:
cc2530+cc2592串口连接树莓派硬件串口。
树莓派运行ser2net
N1使用socat连接树莓派的ser2net
N1运行zigbee插件。

插件可以运行,可以添加设备。

下一步计划:
在群晖docker里面运行,而不是N1中
使用道具 举报 回复 支持 1 反对 0
给力!!感谢妖神的分享!!感谢Iob论坛带来的分享空间!!感谢伟大的祖国带来的强大的生产力!
使用道具 举报 回复 支持 反对
达康书记 发表于 2019-10-17 23:33
给力!!感谢妖神的分享!!感谢Iob论坛带来的分享空间!!感谢伟大的祖国带来的强大的生产力! ...

最后一句点题~
使用道具 举报 回复 支持 反对
厉害,期待更好的方案
使用道具 举报 回复 支持 反对
lighu36 发表于 2019-10-17 23:44
厉害,期待更好的方案

有什么建议? 我觉得下一步可以弄一个8266替代usb串口。。。
使用道具 举报 回复 支持 反对
SchumyHao 发表于 2019-10-17 23:49
有什么建议? 我觉得下一步可以弄一个8266替代usb串口。。。

正打算装修,看看有没有好的方案,把家里的所有设备全部集成,期待你的作品,哈哈
使用道具 举报 回复 支持 反对
SchumyHao 发表于 2019-10-17 23:49
有什么建议? 我觉得下一步可以弄一个8266替代usb串口。。。

也希望多一下8266的玩法
使用道具 举报 回复 支持 反对
2019-10-20 10:08:15 houhd 金牌会员
10#
期待大佬方便我这样的伸手党。
使用道具 举报 回复 支持 反对
123下一页
发新帖
您需要登录后才可以回帖 登录 | 立即注册