在智能家居和物联网领域,无线 Zigbee 技术被广泛应用,Zigbee-herdsman 是一个基于 Node.js 的 Zigbee 网关控制库,它提供了对 Zigbee 设备的搜索、发现、配对、控制等操作,同时支持多个 Zigbee 网络的管理。本文将为读者介绍如何使用 zigbee-herdsman。
1. 安装
在开始使用 zigbee-herdsman 之前,首先需要安装 Node.js。打开终端,并运行以下命令:
npm install zigbee-herdsman --save
完成安装之后,就可以使用 zigbee-herdsman 了。
2. 发现和连接 Zigbee 网络
使用 zigbee-herdsman 前,需要在代码中引入相应的模块:
const ZH = require('zigbee-herdsman'); const SerialPort = require('serialport');
Zigbee-herdsman 支持两种方式连接 Zigbee 网络:通过串口和通过 TI CC2531 USB 适配器。以下是通过串口连接的代码:
const port = new SerialPort('/dev/ttyACM0', { baudRate: 115200 }); const adapter = new ZH.Adapter(port); adapter.on('ready', () => { console.log('Adapter ready'); // do something });
此代码通过串口连接到 /dev/ttyACM0,确保此串口已连接到 Zigbee 网络。
针对 TI CC2531 USB 适配器进行连接的代码如下:
-- -------------------- ---- ------- ----- --- - --- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --- ----- ------- - --- -------------------------- - ------ ------- -------- --- ----------- ---- --- ------------------- -- -- - -------------------- -------- -- -- --------- ---展开代码
此代码指定了网络 ID、信道和网络密钥以便连接到 Zigbee 网络。
3. 搜索和发现设备
在与 Zigbee 网络连接后,就可以开始搜索和连接设备了。以下是搜索设备的代码:
-- -------------------- ---- ------- -------------------------- -------- -- - ------------------- ------- --------------------- --- ------------------------ -------- -- - ------------------- ----- --------------------- --- ----------------------- -- - -------------------- ---------- ---展开代码
此代码将 Zigbee 网络连接,并在发现新设备时打印出其 IEEE 地址。
发现设备后,还需要进行配对、解除配对等操作。以下是配对和解除配对设备的代码:
adapter.on('deviceAnnounce', (device) => { console.log(`Device announce: ${device.ieeeAddr}`); device.endpoints.forEach(async (ep) => { await adapter.enableEP(device, ep.ID); const groups = await adapter.getGroupsForEndpoint(device, ep.ID); console.table(groups); }); });
此代码将启用每个端点并获取其所在组的列表。
4. 控制设备
通过 Zigbee 网络连接到设备后,需要控制设备的状态,例如打开或关闭灯。这里是控制设备的代码:
const device = await adapter.waitForDevice('00:11:22:33:44:55:66:77'); const endpoint = device.getEndpoint(1); const onOff = endpoint.getCluster('genOnOff'); await onOff.toggle();
此代码使用“切换”命令来打开或关闭灯。
结论
在物联网和智能家居领域中,Zigbee 技术是一个重要的通信协议。通过 zigbee-herdsman 等 npm 包,可以轻松地控制 Zigbee 网络中的设备。本文提供了基本的指导和示例代码,希望对读者有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/96897