之前有大佬送我了一套Zigbee套件,一直稳定使用,最近从PVE换到ESXI后,又重新部署一遍,顺便写个教程。

1、直通Zigbee控制器

这里使用的ESXI8.0U2b,PVE同理,只需要添加USB设备,然后选择Zigbee控制器即可。

1-qket.png

登陆虚拟机查看直通的控制器ID

ls /dev/tty后补全后发现有一个ttyUSB0,也有可能会是ttyACM0,如果你有多个USB那就需要使用dmesg命令自行查找并对应了。

输入ls /dev/serial/by-id/按tab键补全得到Zigbee控制器ID,复制下来这个很重要

2-dqbi.png

2、安装EMQX

docker run \
  --name emqx \
  -p 1883:1883 -p 8083:8083 \
  -p 8084:8084 -p 8883:8883 \
  -p 18083:18083 \
  -v $PWD/EMQX:/opt/emqx/data \
  -v $PWD/EMQX/log:/opt/emqx/log \
  emqx/emqx:5.6.1

安装后docker ps查看

3、安装Zigbee2MQTT

docker run \
   --name Zigbee2MQTT \
   --restart=unless-stopped \
   --device=/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0:/dev/ttyACM0 \
   -p 8080:8080 \
   -v $(pwd)/Zigbee2MQTT:/app/data \
   -v /run/udev:/run/udev:ro \
   -e TZ=Asia/Shanghai \
   koenkk/zigbee2mqtt

注意

--device=/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0:/dev/ttyACM0 \

其中usb-1a86_USB_Serial-if00-port0是我的Zigbee控制器ID,不是你的

只需要把usb-1a86_USB_Serial-if00-port0换成你的控制器ID即可,ID在第一步里有讲!

4、配置Zigbee2MQTT

上一步执行完后,Zigbee2MQTT会报错并停止运行,原因在于我偷懒没有提前下载所需的配置文件,因为部署完成后会自动下载,只需要在它下载的配置文件中修改EMQX地址即可。

上一步中我把Zigbee2MQTT的目录映射到当前目录下的Zigbee2MQTT目录,我是在root目录下运行,所以我映射的目录是/root/Zigbee2MQTT/

目录下会有一个configuration.yaml文件,我们使用vim工具或者nano修改第五行的

server: mqtt://docker容器的网关

例如我的我docker容器网段位172.18.0.0,所以我输入的是172.18.0.1

6-ymwp.png

保存后退出,重启容器。

5、登陆Zigee2MQTT

第三步中我们映射的端口为8080,所以在浏览器中输入宿主机IP:8080即可访问

7-jlzw.png