
回复
作为一个曾把家里智能灯调成闪烁模式吓到猫的开发者,今天要分享HarmonyOS分布式管理的智能家居实战!从设备发现到权限控制,都是我踩过坑总结的干货~
上周帮邻居装智能灯,发现她最想要的是:
设备类型 | 角色定位 | 我的家用实例 |
---|---|---|
主控设备 | 家庭管家,发号施令 | 我的手机(喊一声「我回家了」) |
终端设备 | 执行者,听指令干活 | 客厅灯、空调、窗帘电机 |
import { mdns } from '@kit.NetworkKit';
// 创建设备发现器,像拿个大喇叭喊
let discovery = mdns.createDiscoveryService(this.context, '_smart_light._tcp');
// 听到设备回应就记下来
discovery.on('serviceFound', (设备信息) => {
console.log(`找到设备:${设备信息.serviceName}`);
// 这里可以存设备IP,方便后续控制
});
// 开始喊人
discovery.startSearchingMDNS();
import { http } from '@kit.NetworkKit';
// 给灯发指令(假设灯IP是192.168.1.101)
function 关灯() {
http.request(
'http://192.168.1.101/control',
{
method: 'POST',
extraData: JSON.stringify({ cmd: 'turnOff', brightness: 0 })
},
(err, data) => {
if (!err) {
console.log('灯已关,同步状态到平板');
// 这里通知平板更新状态
}
}
);
}
// 设备认证像查身份证
function 检查设备权限(设备ID) {
// 这里从服务器查设备白名单
let 白名单 = ['客厅灯', '主卧空调'];
return 白名单.includes(设备ID);
}
// 发现新设备时先查身份
discovery.on('serviceFound', (设备) => {
if (检查设备权限(设备.id)) {
console.log('允许加入家庭网络');
} else {
console.log('拒绝陌生设备');
}
});
现在我家设备能做到:下班路上手机点「我回家了」,楼道灯先亮,客厅空调自动调26℃~ 但记得第一次调试时,把窗帘电机误设成「开门就关」,结果朋友来做客被窗帘追着跑😂