使用CC2531 USB Zigbee Dongle通过Zigbee2mqtt自建网关并接入HomeAssistant

1、准备工作

设备:已刷固件的 CC2531 USB Zigbee Dongle

系统:Windows10 Linux子系统 Debian(Linux DESKTOP-1ABHLTE 4.4.0-18362-Microsoft)

CC2531 USB Zigbee Dongle

将 CC2531 USB Zigbee Dongle 插到PC的USB口,等待驱动安装完成,正常会有弹窗提示安装到哪个COM口,比如我的是COM3。

启用 Windows10 Linux子系统,在Microsoft 应用商店下载Debian。

Debian

在开始菜单搜索 启用功能

启用或者关闭Windows功能

找到 适用于Linux的Windows子系统,点击启用,等待Windows启用功能并按要求重启。

重启完毕后,可以在开始中找到Debain的图标,点击即可打开Linux终端。

第一次启动会要求填写账号密码(密码输入时不可见)。

2、安装Python环境

建议安装Conda包管理器,这样可以随意切换环境而互相不影响。

终端命令:

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
chmod +x Miniconda3-latest-Linux-x86_64.sh && ./Miniconda3-latest-Linux-x86_64.sh

按照提示安装即可,安装完成后,新建一个Python环境。

这时候需要关闭终端重新打开才能生效,否则conda命令找不到。

当然你也可以把conda的全路径写出来,这样就能找到了。

根据多次踩坑的经验,HA依赖的一些库对Python3.9.0还不支持,所以这次安装Python3.8.0的版本即可。

conda create -n ha python=3.8.0

会提示安装一些库,输入 y 同意即可,安装完成后,切换环境。

conda activate ha

记得,退出环境的命令是:

conda deactivate

切换环境成功的标记如下:

conda activate ha

3、安装HomeAssistant

先更改pip仓库源为阿里云的再下载 homeassistant 库,否则国内下载非常慢。

pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
pip install homeassistant

等待下载完成,还会有一些库需要安装。

pip install sqlalchemy==1.3.20 hass-nabucasa==0.37.1 home-assistant-frontend==20201021.4

安装完成后,进入.homeassistant 文件夹下(路径是: /home/你之前创建的用户名/.homeassistant)

# 进入.homeassistant 文件夹,这里是HA的配置文件所在目录
cd .homeassistant
ls

编辑 configuration.yaml 文件

vim configuration.yaml

输入内容

mqtt:
  discovery: true
  broker: localhost  # Remove if you want to use builtin-in MQTT broker
  # birth_message and will_message is not required anymore for Home Assistant 0.113 >=
  birth_message:
    topic: 'hass/status'
    payload: 'online'
  will_message:
    topic: 'hass/status'
    payload: 'offline'

这部分官方教程是:https://www.zigbee2mqtt.io/integration/home_assistant.html

保存,然后这里先暂停,从 Windows桌面->开始中找到 Debian 打开另外一个Linux终端。

4、安装Zigbee2mqtt

Zigbee2mqtt 是一个将 Zigbee 协议转化成 MQTT 的桥接工具。

按照官方教程安装Zigbee2mqtt:Running Zigbee2MQTT

简单来说就是安装NodeJs,然后通过 npm 下载Zigbee2MQTT,然后运行。

由于我使用apt命令下载的NodeJs版本太低,所以我直接从官网下载最新的版本压缩包,直接使用了,你如果会安装NodeJs,这一步完全可以不看我的教程。

在打开的新Linux终端中输入以下命令:

wget https://npm.taobao.org/mirrors/node/v14.15.0/node-v14.15.0-linux-x64.tar.xz
# 下载完成后,解压文件
xz -d node-v14.15.0-linux-x64.tar.xz
tar xvf node-v14.15.0-linux-x64.tar
# 解压后重命名文件夹为node
mv node-v14.15.0-linux-x64 node

然后设置环境变量

sudo vim /etc/profile

打开后,按一下 i ,按方向键下到最后一行,输入:

export PATH=$PATH:/home/你之前创建的用户名/node/bin

然后按一下 ESC,输入 :wq 退出。

重新加载profile文件

source  /etc/profile

看一下node 版本号有没有输出

node -v
npm -v

如下所述就正常

node -v

从GitHub把 zigbee2mqtt 项目文件下载到本地

sudo git clone https://github.com/Koenkk/zigbee2mqtt.git /opt/zigbee2mqtt
# 将这个文件夹的所有权转交给你创建的账号
sudo chown -R 你创建的账号名称:你创建的账号名称 /opt/zigbee2mqtt
# 安装项目运行所需库
cd /opt/zigbee2mqtt
npm ci

如果一切正常,则输出npm ci类似于(设备上的包数和秒数可能不同):

node-pre-gyp info ok
added 383 packages in 111.613s

配置zigbee2mqtt

vim /opt/zigbee2mqtt/data/configuration.yaml

目前我的配置文件内容如下:

# HomeAssistant集成(MQTT 发现)
homeassistant: true

# 允许新设备加入
permit_join: true

# MQTT settings
mqtt:
  # MQTT消息的MQTT基本主题
messages
  base_topic: zigbee2mqtt
  # MQTT 服务器 URL,如果你有MQTT地址也可以改一下里面的内容,我们写localhost是因为等会我们会自己运行一个在本地的MQTT服务
  # server: 'mqtt://localhost'
  server: 'mqtt://localhost'
  # MQTT 服务器身份验证,如果需要,请取消注释:
  # user: my_user
  # password: my_password

# Serial 设置
serial:
  # CC2531 USB sniffer 的位置
  port: /dev/ttyS3

特别说明:Serial settings 中的 port 参数其实是与 COM 口对应的,COMx对应WSL的/dev/ttySx,例如COM3对应WSL的/dev/ttyS3

你创建的账号名称可能没有权限访问/dev/ttyS3,可以这样:

sudo chown -R 你创建的账号名称:你创建的账号名称 /dev/ttyS3

4、在本地搭建EMQTT服务器

官网下载地址:https://www.emqtt.io/downloads/

Windows下的话可以参照这个教程操作 :Windows上搭建EMQTT服务器

当然可以自己构建:https://github.com/emqx/emqx-rel

运行起来后,在浏览器中输入:http://localhost:18083/ 就可以打开了,用户名:admin,密码:public

EMQTT 后台

5、运行Zigbee2mqtt和HomeAssistant

第二个Linux终端窗口中,启动Zigbee2mqtt

cd /opt/zigbee2mqtt
npm start

正常情况下,Zigbee2mqtt连接MQTT服务后你可以在EMQTT后台中看到有一个新连接。

同时,你可以让Zigbee子设备进入配对模式,这样扫描到后,终端也会有输出记录,比如这样的消息就是扫描到小米的Zigbee插座。

Zigbee2MQTT:info  2020-11-13 09:50:41: MQTT publish: topic 'homeassistant/sensor/0x00158d0013a34fdf/power/config', payload '{"availability":[{"topic":"zigbee2mqtt/bridge/state"},{"topic":"zigbee2mqtt/0x00158d0013a34fdf/availability"}],"device":{"identifiers":["zigbee2mqtt_0x00158d0013a34fdf"],"manufacturer":"Xiaomi","model":"Mi power plug ZigBee (ZNCZ02LM)","name":"0x00158d0013a34fdf","sw_version":"Zigbee2MQTT 1.16.1"},"icon":"mdi:flash","json_attributes_topic":"zigbee2mqtt/0x00158d0013a34fdf","name":"0x00158d0013a34fdf_power","state_topic":"zigbee2mqtt/0x00158d0013a34fdf","unique_id":"0x00158d0013a34fdf_power_zigbee2mqtt","unit_of_measurement":"W","value_template":"{{ value_json.power }}"}'

然后在另外一个Linux终端窗口中,启动HomeAssistant

hass --open-ui

如果没有报错的话,应该是会显示URL地址。

HomeAssistant执行

进入后台后,第一次会要求设置账号密码,进入主页后,应该可以看到非常多的实体设备,你需要自己编辑UI。

先在 配置->实体注册表 中你不需要的设备全部删除吧,保留你需要的Zigbee子设备即可。

实体注册表

然后在 概览中,编辑仪盘表->编辑UI

编辑仪盘表

把不需要的UI删除掉,添加你需要的UI(添加->按实体),最终效果如下:

主页面

由于我只是演示,所以没有改卡片组件名称,你有需要可以改,就这样。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343

推荐阅读更多精彩内容