请选择 进入手机版 | 继续访问电脑版

『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 4728|回复: 6

[基础教程] 学习笔记: Zigbee2MQTT

[复制链接]

3

主题

18

帖子

253

积分

论坛分享达人

积分
253
金钱
235
HASS币
10
发表于 2021-9-11 23:19:10 | 显示全部楼层 |阅读模式
本帖最后由 xana278 于 2021-9-13 00:02 编辑

非常基础的笔记 仅供参考

前言

使 Zigbee 设备通过 MQTT 协议接入任何平台
以 HomeaAssistant 为例

前提材料

  1. ESP8266
  2. CC2530ZigBee 模块
  3. 服务端, 如树莓派
  4. dockerdocker-compose 使用基础

ZigBee 无线模块

全新的 ZigBee 模块需要烧录程序

配置固件烧录环境

sudo apt install -y dh-autoreconf libusb-1.0-0-dev libboost-all-dev

下载 Zigbee 模块固件

参考Zigbee2mqtt documentation

编译 CC-tool 烧录程序

在 macOS 下

git clone https://hub.fastgit.org/dashesy/cc-tool.git
cd cc-tool
./bootstarp
./configuer
make

其他系统略

连接, 烧录固件

  1. 引出 CC-Debugger 的 GND、DC、DC、RESET、3.3V 引脚
    4SK9zV.png
  2. sudo ./cc-tool -e -w CC2530ZNP-Prod.hex

ESP8266

ESP8266 程序可使用预编译直接烧录或按照下面方式进行编译安装
安装 ESPtool pip install esptool

自编译安装

获取 Tasmota 源码

git clone https://hub.fastgit.org/arendst/tasmota.git

安装 PlatformIO 拓展

VS Code 拓展直接安装

修改 platformio_override.ini

; 省略部分可不做修改
[common]
board                       = esp8266_1M
monitor_speed               = 115200
monitor_port                = /dev/cu.SLAB_USBtoUART
upload_speed                = 115200
; 选择上传模块与上传端口
upload_resetmethod          = nodemcu
upload_port                 = /dev/cu.SLAB_USBtoUART
; 以下省略
  • MacOS: upload_port 可通过 ls /dev/cu.* 获取
  • Windows: 设备管理器 COM*

修改tasmota/user_config_override.h

#ifndef _USER_CONFIG_OVERRIDE_H_
#define _USER_CONFIG_OVERRIDE_H_

#define MY_LANGUAGE zh_CN   // 中文
#define USE_TCP_BRIDGE      // 使用 TCP_BRIDGE

// Wi-Fi设置
#undef STA_SSID1
#define STA_SSID1 "SSID"
#undef STA_PASS1
#define STA_PASS1 "password"

// 模板设置
#ifdef ESP8266
#define USER_TEMPLATE "{\"NAME\":\"tcp_bridge\",\"GPIO\":[32,1,0,1,0,0,0,0,0,5120,0,5088,1,0],\"FLAG\":0,\"BASE\":1}"
#endif

// Log 等级
#undef WEB_LOG_LEVEL
#define WEB_LOG_LEVEL LOG_LEVEL_DEBUG

// 关闭 MQTT 功能
#undef MQTT_USE
#define MQTT_USE false

// 设置时区
#undef APP_TIMEZONE
#define APP_TIMEZONE 8

// 设置项目, 设备名
#undef PROJECT
#define PROJECT "zigbee_gateway"

#undef FRIENDLY_NAME
#define FRIENDLY_NAME "zigbee_gateway"

// 时间服务器, 否则容易卡住不工作
#undef NTP_SERVER1
#define NTP_SERVER1 "CN.NTP.ORG.CN"

#endif // _USER_CONFIG_OVERRIDE_H_

编译上传

PIO 底部工具栏选择 Build Upload

  • 固件保存在 build_output/firmware/tasmota.bin

预编译或手动上传

  1. 清除 esp 闪存
    esptool.py -p /dev/cu.SLAB_USBtoUART erase_flash
  2. 烧录
    esptool.py -p /dev/cu.SLAB_USBtoUART write_flash 0x0 build_output/firmware/tasmota.bin

最后...

配置 ESP 为网关

  1. 通过各种方式找到 ESP 的内网 IP 地址, 并设为静态 IP. 其实前面写 user_config_override.h 的时候就可以设置了
  2. 进入网页 设置 -> 模块设置 -> 模块类型 -> tcp_bridge -> 保存
  3. 进入网页 控制台 输入Rule1 ON System#Boot do TCPStart 8880 endon; Rule1 1

连接 ESP8266 和 CC2530

  • 在先前的 user_config_override.h 中预先定义了模板, 下面按照模板中进行连接

TXD = GPIO15
RXD = GPIO13

对应实体板接口自行查询

ESP8266     CC2530 
  3V3          - VCC 
  GND    GND 
  TXD   - P02 
  RXD   -  P03 

启动你的MQTT服务器

docker-compose 参考 https://hub.docker.com/_/eclipse-mosquitto

services:
  mqtt:
    image: eclipse-mosquitto
    container_name: mqtt
    restart: always
    ports: 
      - 1883:1883
    volumes: 
      - /data/mqtt/config:/mosquitto/config
      - /data/mqtt/data:/mosquitto/data
      - /data/mqtt/log:/mosquitto/log
      - /etc/localtime:/etc/localtime:ro

配置 Zigbee2mqtt

参考 Running Zigbee2MQTT 这里使用 docker-compose 部署

新建文件夹 mkdir z2m && cd z2m/

services:
  zigbee2mqtt:
    image: koenkk/zigbee2mqtt
    container_name: z2m
    restart: unless-stopped
    volumes: 
      - ./:/app/data
    network_mode: host
    environment:
      - TZ=Asia/Shanghai

首次运行 docker-compose up -d 后自动创建文件

然后修改 configuration.yaml

homeassistant: true
permit_join: true
mqtt:
  base_topic: zigbee2mqtt
  server: 'mqtt://localhost:1883'
  user: mqtt
  password: mqtt
serial:
  port: 'tcp://192.168.0.73:8880'

查看 Zigbee2MQTT 的 Log 并配对设备!

docker logs -f --since 5m z2m

配对完成后记得到 Homeasstant 连接 MQTT 服务器

最后 把 permit_join: true 改为 permit_join: false 就大功告成了!


评分

参与人数 1金钱 +2 收起 理由
yqgqc + 2 感谢楼主分享!

查看全部评分

回复

使用道具 举报

3

主题

18

帖子

253

积分

论坛分享达人

积分
253
金钱
235
HASS币
10
 楼主| 发表于 2021-9-11 23:22:38 | 显示全部楼层
也可以看看我自己网站上的原文 链接
回复

使用道具 举报

1

主题

189

帖子

1871

积分

金牌会员

Rank: 6Rank: 6

积分
1871
金钱
1682
HASS币
0
发表于 2021-9-12 03:25:51 | 显示全部楼层
感谢分享,好文章
回复

使用道具 举报

7

主题

150

帖子

2154

积分

金牌会员

Rank: 6Rank: 6

积分
2154
金钱
2004
HASS币
0
发表于 2021-9-12 09:44:40 来自手机 | 显示全部楼层
我想知道8266和zigbee模块的接线方式
回复

使用道具 举报

20

主题

245

帖子

1387

积分

金牌会员

Rank: 6Rank: 6

积分
1387
金钱
1137
HASS币
40
发表于 2021-9-12 12:33:28 | 显示全部楼层
回复

使用道具 举报

3

主题

18

帖子

253

积分

论坛分享达人

积分
253
金钱
235
HASS币
10
 楼主| 发表于 2021-9-13 00:03:31 | 显示全部楼层
wangling75 发表于 2021-9-12 09:44
我想知道8266和zigbee模块的接线方式

按照8266上模板连 已更新原文 https://wiki.kexue.io/e/zh/zigbee2mqtt
回复

使用道具 举报

14

主题

246

帖子

1926

积分

金牌会员

Rank: 6Rank: 6

积分
1926
金钱
1675
HASS币
50
发表于 2022-4-1 20:18:42 | 显示全部楼层
您的原文看不到了,请楼主检查一下。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-3-19 11:07 , Processed in 0.052524 second(s), 29 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表