自制zigbee网关接入Homeassistant笔记 您所在的位置:网站首页 docker安装zigbee2mqtt在没在ha面板上 自制zigbee网关接入Homeassistant笔记

自制zigbee网关接入Homeassistant笔记

2023-09-19 22:23| 来源: 网络整理| 查看: 265

背景

近日通过小黄鱼购入了别人自制的zigbee2mqtt网关,踩了很多坑,学习了很多知识。写个笔记记录下来。

设备

zigbee2mqtt自制网关,购买连接不附,需要的可以自己搜索。购入价72含运费。自制网关芯片组为cc2530+esp12。运行系统为tasmota。

cc2530负责zigbee网络 esp12负责将zigbee数据转为wifi

工作模式主要有两种

z2m模式,该模式直接将cc2530的串口指令通过网络tcp协议发送给zigbee2mqtt软件。实际上是zigbee2mqtt监听的。 z2p模式,该模式将cc2530串口指令解析后通过mqtt发动到mqtt broker下,由订阅者处理。 自学的一些基本概念 zigbee2mqtt设备

自己学习了一下这个设备,发现网上大部分都是cc25xx芯片通过usb连接ha,其实原本设计就是usb dongle。后来比较著名的就是妖神设计的将esp8266和cc2530连起来,以wifi作为媒介转发,免去受usb必须插在宿主机上的限制。

芯片组上cc25xx差别主要体现在带机量上。目前没有比对过,不评价。

zigbee2mqtt.io 软件

这个是将zigbee设备识别,并转为mqtt协议的软件,支持千种以上设备,通用性较强,界面友好。网址

MQTT

这是一个通用消息软件,详细内容可以自行网上搜索。在homeassistant下作用就是可以通过mqtt discovery自动发现mqtt设备。通常需要一个MQTT broker作为服务器转发消息。基本概念上有消息发布者及订阅者。消息发布者根据topic(主题)发布消息,订阅者订阅该topic读取消息。

基本网络链路

zigbee设备与自制zigbee网关配对。

zigbee设备 -zigbee> 自制zigbee网关(z2m) -wifi/tcp> Zigbee2mqtt软件 -网络> MQTT broker -> MQTT订阅者(Homeassistant) zigbee设备 -zigbee> 自制zigbee网关(z2p) -wifi/mqtt> MQTT broker -> MQTT订阅者(Homeassistant)

方案2优点就是无需zigbee2mqtt软件。缺点就是对于mqtt homeassistant需要通过configuration.yaml自己配置设备。 方案1有点就是zigbee2mqtt软件直接可在homeassistant中集成并识别。缺点就是zigbeemqtt无法识别的设备自己还是要手工设置。

我的当前方案

方案1

实施步骤 1. 自制zigbee设备 初始状态下,通过手机wifi连接自制zigbee设备,手机会根据网络连接检查自动跳出wifi设置界面,本设备如果没有跳出的话可以通过192.168.4.1设置。 设置完wifi后等待设备重启,手机连回同一wifi网络,检查路由器下设备,找到该设备ip并通过网页访问。 在设置,模块设置下选择z2m。 2. MQTT broker 在hass.io下,我用的是hassos(推荐,简单,不适合高手),supervisor加载项商店安装Mosquitto broker。 在配置里设置,自己设置(其实可以不设置) logins: - username: *** password: *** 启动MQTT broker 3. MQTT集成 在homeassistant集成中,会自动出现MQTT等待配置,如果没有可以新增集成。只需保证enable discovery就行。其他会自行配置。实际上用的用户也不是我们设置的用户。 4. zigbee2mqtt.io 在hass.io下,supervisor加载项商店点击右上角三点,repositories,添加 https://github.com/zigbee2mqtt/hassio-zigbee2mqtt 在hass.io下,supervisor加载项商店安装zigbee2mqtt 对于本文情况及设备,在配置页面,我只修改了serial,改为自制zigbee网关的ip地址 serial: port: 'tcp://***:8880' 启动zigbee2mqtt,如果配置正确,应该没有报错。我的是以下log [s6-init] making user provided files available at /var/run/s6/etc...exited 0. [s6-init] ensuring user provided files have correct perms...exited 0. [fix-attrs.d] applying ownership & permissions fixes... [fix-attrs.d] done. [cont-init.d] executing container initialization scripts... [cont-init.d] socat.sh: executing... [10:56:05] INFO: Socat not enabled, marking service as down [cont-init.d] socat.sh: exited 0. [cont-init.d] zigbee2mqtt.sh: executing... [10:56:05] INFO: MQTT available, fetching server detail ... [10:56:05] INFO: MQTT server settings not configured, trying to auto-discovering ... [10:56:06] INFO: Configuring 'mqtt://core-mosquitto:1883' mqtt server [10:56:06] INFO: MQTT credentials not configured, trying to auto-discovering ... [10:56:06] INFO: Configuring'addons' mqtt user [10:56:06] INFO: Previous config file found, checking backup [10:56:06] INFO: Creating backup config in '/config/zigbee2mqtt/.configuration.yaml.bk' [10:56:06] INFO: Adjusting Zigbee2mqtt core yaml config with add-on quirks ... [cont-init.d] zigbee2mqtt.sh: exited 0. [cont-init.d] done. [services.d] starting services [services.d] done. [10:56:07] INFO: Handing over control to Zigbee2mqtt Core ... > [email protected] start /app > node index.js 以上就配置完成 个人经验 这种配置下zigbee2mqtt比较慢,设备识别也会有错的情况,多取消及配对几次可以成功。 同理,Permit Join按钮可以允许设备配对,有时候也会失败,等一下在按就行。 本人使用场景就是将米家贴墙开关的按钮事件通过mqtt触发homeassistant自动化,并通过remote homeassistant连接另一台homeassistant上通过yeelight-bluetooth连接的yeelight 初代蓝牙床头灯来,达到控制灯的开关功能。(何必呢,呵呵呵)家庭智能都是从这货开始的! 后续购入米家6键场景开关来控制暖气片三通通断。 补充一点,mqtt里的action需要触发一次才能在ha里正常识别并可作为触发条件使用。


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有