美文网首页
自制zigbee网关接入Homeassistant笔记

自制zigbee网关接入Homeassistant笔记

作者: cwt0490 | 来源:发表于2021-03-29 11:04 被阅读0次

    背景

    近日通过小黄鱼购入了别人自制的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网关配对。

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

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

    我的当前方案

    方案1

    实施步骤

    1. 自制zigbee设备

    1. 初始状态下,通过手机wifi连接自制zigbee设备,手机会根据网络连接检查自动跳出wifi设置界面,本设备如果没有跳出的话可以通过192.168.4.1设置。
    2. 设置完wifi后等待设备重启,手机连回同一wifi网络,检查路由器下设备,找到该设备ip并通过网页访问。
    3. 在设置,模块设置下选择z2m。

    2. MQTT broker

    1. 在hass.io下,我用的是hassos(推荐,简单,不适合高手),supervisor加载项商店安装Mosquitto broker。
    2. 在配置里设置,自己设置(其实可以不设置)
    logins:
      - username: ***
        password: ***
    
    1. 启动MQTT broker

    3. MQTT集成

    1. 在homeassistant集成中,会自动出现MQTT等待配置,如果没有可以新增集成。只需保证enable discovery就行。其他会自行配置。实际上用的用户也不是我们设置的用户。

    4. zigbee2mqtt.io

    1. 在hass.io下,supervisor加载项商店点击右上角三点,repositories,添加
      https://github.com/zigbee2mqtt/hassio-zigbee2mqtt
    2. 在hass.io下,supervisor加载项商店安装zigbee2mqtt
    3. 对于本文情况及设备,在配置页面,我只修改了serial,改为自制zigbee网关的ip地址
    serial:
      port: 'tcp://***:8880'
    
    1. 启动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 ...
    > zigbee2mqtt@1.18.1 start /app
    > node index.js
    

    以上就配置完成

    个人经验

    1. 这种配置下zigbee2mqtt比较慢,设备识别也会有错的情况,多取消及配对几次可以成功。
    2. 同理,Permit Join按钮可以允许设备配对,有时候也会失败,等一下在按就行。
    3. 本人使用场景就是将米家贴墙开关的按钮事件通过mqtt触发homeassistant自动化,并通过remote homeassistant连接另一台homeassistant上通过yeelight-bluetooth连接的yeelight 初代蓝牙床头灯来,达到控制灯的开关功能。(何必呢,呵呵呵)家庭智能都是从这货开始的!
    4. 后续购入米家6键场景开关来控制暖气片三通通断。
    5. 补充一点,mqtt里的action需要触发一次才能在ha里正常识别并可作为触发条件使用。

    相关文章

      网友评论

          本文标题:自制zigbee网关接入Homeassistant笔记

          本文链接:https://www.haomeiwen.com/subject/mtnvhltx.html