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

 找回密码
 立即注册
查看: 7158|回复: 5

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

[复制链接]

3

主题

17

帖子

267

积分

论坛分享达人

积分
267
金钱
250
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 感谢楼主分享!

查看全部评分

回复

使用道具 举报

1

主题

198

帖子

2185

积分

金牌会员

Rank: 6Rank: 6

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

使用道具 举报

8

主题

171

帖子

2467

积分

金牌会员

Rank: 6Rank: 6

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

使用道具 举报

20

主题

250

帖子

1437

积分

论坛DIY达人

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

使用道具 举报

3

主题

17

帖子

267

积分

论坛分享达人

积分
267
金钱
250
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

主题

262

帖子

2225

积分

金牌会员

Rank: 6Rank: 6

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

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-28 10:38 , Processed in 0.064916 second(s), 29 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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