HomeAssistant入门之设备管理控制
上篇博客 https://mianao.info/2022/08/25/363507 写了我买了 SOFFON ZigBee USB Dongle Plus (93元)作为协调器,京鱼座四件套(99元)设备(非常不建议购买,就是一套垃圾,原因在此: 废物利用之京鱼座ZigBee无线开关 https://mianao.info/7f706742),还买了涂鸦的 ZigBee 零火开关单开(60元)。
安装完加载项 Zigbee2MQTT 和 Mosquitto broker 后就可以添加 ZigBee 设备了。
添加京鱼座四件套
京鱼座四件套性价比还是挺高的,闲鱼上现在 90 多一套。我开始用 ZHA 集成的时候有很多问题,换了 Zigbee2MQTT 就完美了。
本身 Zigbee2MQTT 是支持京鱼座套件的,可以在这里看到:
https://github.com/Koenkk/zigbee-herdsman-converters/blob/master/src/devices/jxuan.ts
但不知道为什么还有点问题,还好有网友做了补丁:
下载:https://share.mianao.info/Blog/jingxuan.js
其代码如下:
// 20240506 已更新
const {} = require('zigbee-herdsman-converters/lib/modernExtend');
// Add the lines below
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 ota = require('zigbee-herdsman-converters/lib/ota');
const utils = require('zigbee-herdsman-converters/lib/utils');
const globalStore = require('zigbee-herdsman-converters/lib/store');
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']);
},
},
]将该文件放到 Zigbee2MQTT 配置目录下
config\zigbee2mqtt
。打开 Zigbee2MQTT 加载项的设置,添加
jingxuan.js
。添加 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/
简单介绍一下彩云天气预报的安装:
- 进入 HACS 的集成,点击右下角 + 搜索
彩云天气
,安装后重启 HomeAssistant; - 进入 HACS 的前端,点击右下角+搜索Colorfulclouds Weather Card,安装后重启 HomeAssistant;
- 点击系统配置进入设备与服务,右下角添加集成,搜索
colorfulclouds
,填入前面在彩云网站申请的 key,经纬度填写自己的位置;
可在此查询:https://jingweidu.bmcx.com - 在概览里面添加天气预报的卡片 。
重点:在 HACS 中安装集成,只是把文件从 GitHub 下载到了本地,要使用还是得从 HA 的配置中再次添加集成。
更新
现在 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-poweradvanced:
# 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
奖励链接: 欢迎使用推荐链接,新用户充值有奖励 https://www.vultr.com/?ref=7342510