MQTT中文站
  • 首页
  • MQTT 学习
    • MQTT 入门
    • MQTT 进阶
    • MQTT 编程
    • MQTT 实例
    • MQTT 要点
    • MQTT5 要点
    • MQTT 工具
    • MQTT 客户端库
    • MQTT 服务器
    • Zigbee2MQTT
    • Sparkplug
    • Home Assistant
    • Node-RED
      • Node-RED 安装部署
      • Node-RED 用户指南
      • Node-RED 创建节点
      • Node-RED 示例教程
      • Node-RED 开发流程
      • Node-RED 接口参考
      • Node-RED 配置模板
      • Node-RED 常见问题
  • MQTT 规范
    • MQTT 5 规范
    • MQTT 3.1.1 规范
    • MQTT 3.1 规范
    • MQTT-SN v1.2规范
    • Sparkplug® v3.0.0规范
  • 产品中心
  • 解决方案
    • 环境监测
    • 工业制造
    • 智慧水利
    • 水利管网
    • 积水监测
    • 综合管廊
    • 档案库房
    • 交通物流
    • 智慧城市
    • 智慧农业
    • 智慧养殖
    • 能源电力
    • 石油石化
    • 智能家居
    • 物联网
    • 汽车与出行
  • 使用文档
  • MQTT 云平台
  • 登录
  • 注册

智能家居控制利器:Zigbee2MQTT 中文详细教程

2 年前 • MQTT 教程

先决条件

要使用Zigbee2MQTT,我们需要以下硬件设备:

  1. ZZHA Zigbee 适配器,它是计算机(或服务器)与 Zigbee 无线通信之间的接口。Zigbee2MQTT 支持多种不同类型连接的适配器,如 USB、GPIO 或通过 Wi-Fi 或以太网远程连接的适配器。建议选择以 CC2652 或 CC1352 开头的芯片的适配器。请参阅支持的适配器列表。在安装过程之前,建议查看适配器的推荐详情,以了解是否需要任何额外的配置参数。
  2. Raspberry Pi,这是运行 Zigbee2MQTT 的服务器。大多数 Raspberry Pi 型号都可以运行,但你也可以在许多计算机和平台上运行它,包括 Linux、Windows 和 MacOS。服务器上应安装有 MQTT 代理。Mosquitto(Raspberry Pi 的教程)是推荐的 MQTT 代理,但其他代理也应该可以正常工作。
  3. Zigbee 设备,将与 Zigbee2MQTT 配对的一个或多个 Zigbee 设备。

提示

  • USB 数据线:为了改善网络范围和稳定性,请使用 USB 扩展线缆。如果你在使用设备时遇到任何问题(如超时、无法配对、设备不可达、设备从网络中断开等),首先检查是否存在干扰。请参阅改善网络范围和稳定性。

安装

你可以以不同的方式运行 Zigbee2MQTT,请参阅安装指南。在这个示例中,我们将使用 Docker 和 Docker Compose 来设置和运行 Zigbee2MQTT。

1.) 查找 Zigbee 适配器
1.1) USB Zigbee 适配器
在插入适配器后,查看 dmesg 输出以找到设备位置:

$ sudo dmesg

...
usbcore: registered new interface driver ch341
usbserial: USB Serial support registered for ch341-uart
ch341 3-1:1.0: ch341-uart converter detected
usb 3-1: ch341-uart converter now attached to ttyUSB0

正如我们所看到的,适配器已被识别并挂载在 ttyUSB0 上。

$ ls -l /dev/ttyUSB0
crw-rw---- 1 root dialout 188, May 16 19:15 /dev/ttyUSB0

在这里,我们可以看到该适配器由 root 拥有,并且所有 dialout 组的用户都可以访问它。

1.2) 网络 Zigbee 适配器
Zigbee2MQTT 支持网络 Zigbee 适配器的 mDNS 自动发现功能。如果你的网络 Zigbee 适配器支持 mDNS,则无需知道网络 Zigbee 适配器的 IP 地址,Zigbee2MQTT 将自动检测并配置它。否则,你需要知道网络 Zigbee 适配器的 IP 地址:

  • 将你的适配器连接到 LAN 网络,可以是通过以太网或 Wi-Fi,具体取决于你的适配器。
  • 转到你的路由器/交换机设置,并查找连接设备的列表。
  • 找到你以太网 Zigbee 适配器的 IP 地址。
  • 你还需要知道以太网 Zigbee 适配器的通信端口。在大多数情况下(如 TubeZB、SLZB-06),默认端口为 6638。你可以在适配器的用户手册中查看端口信息。

2.) 设置并启动 Zigbee2MQTT
假设你已经安装了 Docker 和 Docker Compose 的最新版本。

首先,我们创建一个文件夹,用于存放项目 mkdir 文件夹名。在文件夹中,我们创建 docker-compose.yml 文件,该文件定义了 Docker 如何运行我们的容器。以下文件包括两个服务,一个用于 MQTT 服务器,另一个用于 Zigbee2MQTT 本身。确保根据你的需求进行调整,并匹配设备挂载,以防适配器未挂载在 /dev/ttyUSB0 上,或者在使用网络适配器的情况下。

version: '3.8'
services:
  mqtt:
    image: eclipse-mosquitto:2.0
    restart: unless-stopped
    volumes:
      - "./mosquitto-data:/mosquitto"
    ports:
      - "1883:1883"
      - "9001:9001"
    command: "mosquitto -c /mosquitto-no-auth.conf"

  zigbee2mqtt:
    container_name: zigbee2mqtt
    restart: unless-stopped
    image: koenkk/zigbee2mqtt
    volumes:
      -

 ./zigbee2mqtt-data:/app/data
      - /run/udev:/run/udev:ro
    ports:
      - 8080:8080
    environment:
      - TZ=Europe/Berlin
    devices:
      - /dev/ttyUSB0:/dev/ttyUSB0

接下来,我们将在 zigbee2mqtt-data 文件夹中创建一个简单的 Zigbee2MQTT 配置文件 configuration.yaml。

# 让新设备加入我们的 Zigbee 网络
permit_join: true
# Docker Compose 通过 "mqtt" 主机名使 MQTT 服务器可用
mqtt:
  base_topic: zigbee2mqtt
  server: mqtt://mqtt
# Zigbee 适配器路径
serial:
  port: /dev/ttyUSB0
# 启用 Zigbee2MQTT 前端
frontend:
  port: 8080
# 让 Zigbee2MQTT 在首次启动时生成新的网络密钥
advanced:
  network_key: GENERATE

对于网络适配器,串行设置应如下:

serial:
  port: tcp://192.168.1.12:6638

其中 192.168.1.112 是你的网络 Zigbee 适配器的 IP 地址,6638 是端口。

如果你的适配器支持 mDNS,则可以省略 IP 地址,并使用以下配置:

serial:
 port: mdns://slzb-06

其中 slzb-06 是你的网络 Zigbee 适配器的 mDNS 名称。

现在,我们应该在我们的目录中有两个文件,可以启动这个堆栈:

$ find
./docker-compose.yml
./zigbee2mqtt-data/configuration.yaml

# 首次启动
$ docker compose up -d

# 检查日志
$ docker compose logs -f

经过一段时间后,你应该看到一些日志消息,说明 Mosquitto 和 Zigbee2MQTT 已经在运行。你可以使用 http://localhost:8080(或远程服务器的主机名)打开前端。

现在,我们可以继续配对我们的第一个设备。

连接设备

查找你的设备的支持设备列表,并按照说明进行配对。

如果没有提供说明,该设备可能可以通过恢复出厂设置来进行配对。

一旦你在日志中看到类似下面的内容,你的设备就已经配对成功了,你可以开始使用前端和 MQTT 消息来控制它。

Zigbee2MQTT:info  2019-11-09T12:19:56: Successfully interviewed '0x00158d0001dc126a', device has successfully been paired

注意

重要的是在初始设置完成后,将 permit_join 设置为 false,以保持 Zigbee 网络的安全性,防止其他 Zigbee 设备的意外加入。

打赏赞微海报分享
esp8266 mqtt Zigbee2MQTT 客户端服务器 智能家居

基于ESP8266的温湿度传感器与MQTT物联网平台通信教程

MQTT.js:JavaScript 生态中最广泛使用的 MQTT 客户端库

猜你喜欢

改善基础设施:HiveMQ如何推动智能城市发展

改善基础设施:HiveMQ如何推动智能城市发展

08/07
2024
为什么企业选择全托管HiveMQ云进行MQTT部署

为什么企业选择全托管HiveMQ云进行MQTT部署

07/01
2024
MQTT 赋能工业 PLC 数据采集与应用

MQTT 赋能工业 PLC 数据采集与应用

06/30
2024
  • 解决方案
    • 智能家居
    • 汽车与出行
    • 工业制造
    • 能源电力
    • 石油石化
    • 交通物流
    • 零售
  • 学习
    • MQTT 规范
    • MQTT 教程
    • MQTT 软件
    • MQTT 客户端库
    • MQTT 服务器
    • 工具和应用程序
  • 关于我们
    • 了解创科慧仁
    • 加入创科慧仁
    • 投资者关系
    • 新闻动态
    • 合作伙伴
    • 联系我们
  • 友情链接
    • Modbus中文网
    • 跳动符号官网
    • 物联网世界
    • RFID世界网
    • 深圳物联网协会
    • isoftstone软通动力
    • 中国发展战略学研究会
    • B.P商业伙伴
  • 在线客服
  • 全国客户服务热线
    4006909885
  • 官方公众号
  • 联系邮箱
    contact@mqtt.cn
Copyright © 2025 MQTT中文站. All rights reserved.Designed by nicetheme. 京ICP备20029519号
在线客服

微信咨询

微信咨询

4006909885

服务热线 7*24小时

电话咨询
  • 首页
  • MQTT 学习
    • MQTT 入门
    • MQTT 进阶
    • MQTT 编程
    • MQTT 实例
    • MQTT 要点
    • MQTT5 要点
    • MQTT 工具
    • MQTT 客户端库
    • MQTT 服务器
    • Zigbee2MQTT
    • Sparkplug
    • Home Assistant
    • Node-RED
  • MQTT 规范
    • MQTT 5 规范
    • MQTT 3.1.1 规范
    • MQTT 3.1 规范
    • MQTT-SN v1.2规范
    • Sparkplug® v3.0.0规范
  • 产品中心
  • 解决方案
    • 环境监测
    • 工业制造
    • 智慧水利
    • 水利管网
    • 积水监测
    • 综合管廊
    • 档案库房
    • 交通物流
    • 智慧城市
    • 智慧农业
    • 智慧养殖
    • 能源电力
    • 石油石化
    • 智能家居
    • 物联网
    • 汽车与出行
  • 使用文档
  • MQTT 云平台
  • 登录
  • 注册
string(5) "2.0.0"