DIY

上篇博客 https://mianao.info/2022/08/25/363507 写了我买了 SOFFON ZigBee USB Dongle Plus (93元)作为协调器,京鱼座四件套(99元)设备,还买了涂鸦的 ZigBee 零火开关单开(60元)。
安装完加载项 Zigbee2MQTT 和 Mosquitto broker 后就可以添加 ZigBee 设备了。

添加京鱼座四件套

京鱼座四件套性价比还是挺高的,闲鱼上现在 90 多一套。我开始用 ZHA 集成的时候有很多问题,换了 Zigbee2MQTT 就完美了。
本身 Zigbee2MQTT 是支持京鱼座套件的,可以在这里看到:
https://github.com/Koenkk/zigbee-herdsman-converters/blob/master/devices/jxuan.js
但不知道为什么还有点问题,还好有网友做了补丁:

  1. 下载:https://share.mianao.info/Blog/jingxuan.js
    其代码如下:

    const fz = require('zigbee-herdsman-converters/converters/fromZigbee');
    const tz = require('zigbee-herdsman-converters/converters/toZigbee');
    const exposes = require('zigbee-herdsman-converters/lib/exposes');
    const reporting = require('zigbee-herdsman-converters/lib/reporting');
    const extend = require('zigbee-herdsman-converters/lib/extend');
    const e = exposes.presets;
    const ea = exposes.access;
    
    const fzLocal = {
     WSZ01_on_off_action: {
       cluster: '65029',
       type: ['attributeReport'],
       convert: (model, msg, publish, options, meta) => {
           const clickMapping = {0: 'release', 1: 'single', 2: 'double', 3: 'hold'};
           return {action: `${clickMapping[msg.data[1]]}`};
       },
      },
       
    };
    
    module.exports = [
     // 人体传感器
     // 人传配对方式:长按重置键,网关发现后,每隔一秒按一次重置键
     {  
         zigbeeModel: ['wall pir'],
         model: 'PRZ01',
         vendor: 'J.XUAN',
         description: 'Human body movement sensor',  
         fromZigbee: [fz.ias_occupancy_alarm_1_with_timeout, fz.battery], 
         toZigbee: [], 
         exposes: [e.occupancy(), e.battery_low(), e.battery()], 
     },
     // 无线开关
     {
         zigbeeModel: ['JD-SWITCH\u000002'],
         model: 'WSZ01',
         vendor: 'J.XUAN',
         description: 'Wireless switch',
         supports: "action, battery, linkquality",
         fromZigbee: [fzLocal.WSZ01_on_off_action,fz.battery],
         toZigbee: [],
         exposes: [e.action(['release', 'single', 'double', 'hold']), e.battery()],
     },
     // 插座
     {
         zigbeeModel: ['00090bdc'],
         model: 'SPZ01',
         vendor: 'J.XUAN',
         description: 'plug',
         fromZigbee: [fz.on_off, fz.electrical_measurement, fz.metering],
         exposes: [e.switch(), e.power(), e.power_outage_memory().withAccess(ea.STATE_SET), e.energy()],
         toZigbee: [tz.on_off, tz.SPZ01_power_outage_memory],
         configure: async (device, coordinatorEndpoint, logger) => {
             const endpoint = device.getEndpoint(1);
             await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'haElectricalMeasurement']);
         },
     },
    ]
  2. 将该文件放到 Zigbee2MQTT 配置目录下 config\zigbee2mqtt
  3. 打开 Zigbee2MQTT 加载项的设置,添加 jingxuan.js
  4. 添加 ZigBee 设备。
    打开 Zigbee2MQTT,点击允许添加新设备

    按下设备重置键或配对键,等待网关 Zigbee2MQTT 自动发现;需要注意的是人体传感器,网关发现后还要每隔一秒按一下重置键,直到配对完成。

添加其他设备

打开 Zigbee2MQTT,点击允许添加新设备

涂鸦的 ZigBee 零火开关配对就很简单了,长按开关,等待网关 Zigbee2MQTT 自动发现,配对就完成了。
Zigbee2MQTT 网络图显示终端设备,路由设备,协调器的连接状态。

虽然 Zigbee2MQTT 支持的设备很多,但总有新设备开发出来,添加当前没支持的设备官网有介绍方法:
https://www.zigbee2mqtt.io/advanced/support-new-devices/01_support_new_devices.html#_3-adding-converter-s-for-your-device

添加天气集成

天气预报是很基本的集成,但 HomeAssistant 并没有默认内置一个,所以要自己添加。
首先就是到天气网站申请开发者账号,弄个 API。我申请的是彩云天气的,感觉相对简单一点。
https://dashboard.caiyunapp.com/
简单介绍一下彩云天气预报的安装:

  1. 进入 HACS 的集成,点击右下角 + 搜索彩云天气,安装后重启 HomeAssistant;
  2. 进入 HACS 的前端,点击右下角+搜索Colorfulclouds Weather Card,安装后重启 HomeAssistant;
  3. 点击系统配置进入设备与服务,右下角添加集成,搜索 colorfulclouds,填入前面在彩云网站申请的 key,经纬度填写自己的位置;
    可在此查询:https://jingweidu.bmcx.com
  4. 概览里面添加天气预报的卡片 。

更新

现在 HomeAssistant 更新还是比较简单的,只要你访问国外网络通畅,无论是系统还是集成,加载项等,有更新就会有提示,直接点击安装就可以了。

每个月上旬系统更新较为频繁,建议在每个月下旬至少更新一次系统。

修改 SOFFON ZigBee USB Dongle Plus 发射功率

SOFFON ZigBee USB Dongle Plus 发射功率默认是 5,我们总希望信号更好,所以要修改发射功率,其实我在上篇就有,只是没单独写。
SOFFON 官方是给了一个手册,专门写了如何修改发射功率的,但我看了觉得不方便:
方法一,下载固件,修改 znp.syscfg 发射功率值,然后再烧录到设备。给的固件是 hex,我不知道用什么软件能打开了修改,文档也没说;
方法二,通过串口指令修改,但只给了发送的 4 位值:01 21 14 功率值,有没有功能指令不知道,文档也没说;
风险有点大啊,所以我没试。

Zigbee2MQTT 官方给了修改发射功率的配置,只需要在 Zigbee2MQTT 配置选项里添加很方便:
zigbee2mqtt.io/guide/configuration/adapter-settings.html#transmitter-power

advanced:
  # Optional: Transmit power setting in dBm (default: 5).
  # This will set the transmit power for devices that bring an inbuilt amplifier.
  # It can't go over the maximum of the respective hardware and might be limited
  # by firmware (for example to migrate heat, or by using an unsupported firmware).
  # For the CC2652R(B) this is 5 dBm, CC2652P/CC1352P-2 20 dBm.
  transmit_power: 5
Pay by WeChat

Pay by WeChat

Comment

  1. Jdeal Jdeal
    Chrome 106

    啊,满满的回忆啊,让我想起了六七年前折腾HomeAssistant的日子,哈哈,SOFFON貌似是我买的第一个设备

This is just a placeholder img.