logo
积分中心
宿舍忘关电器怎么办?用 HarmonyOS 实现提醒助手#向光而行 码向未来
头像 阿正 2026-10-23 17:05:16    发布
13 浏览 0 点赞 0 收藏

大学宿舍里,电脑、台灯、风扇和充电设备都很常见。有时候早上急着去上课,我会担心自己忘记关台灯或者其他电器。虽然这只是个小问题,但我觉得很适合拿来练习 HarmonyOS 应用开发。


我的想法是做一个宿舍节能提醒助手。第一阶段先记录用户手动填写的设备状态,第二阶段再考虑与具备相应能力的智能设备协同,最后探索能否通过自然语言简化操作。


先实现一个设备状态列表

我先定义一个简单的设备数据模型:

interface DormDevice {

 id: string;

 name: string;

 isOn: boolean;

}

function toggleDevice(

 device: DormDevice

): DormDevice {

 return {

   id: device.id,

   name: device.name,

   isOn: !device.isOn

 };

}

这里的 toggleDevice() 只会生成一个新的设备状态对象,不会真的控制台灯或插座。

在 ArkUI 页面中,我可以用 @State 管理设备列表,再通过按钮模拟状态变化。这样能够先练习数据驱动界面和事件处理,而不用一开始就购买硬件。


设备协同才是后续的重点

HarmonyOS 强调多设备协同,但要真正控制宿舍设备,仍然需要相应的硬件支持、设备发现机制、通信接口和授权流程。

因此,我不会把一个普通按钮包装成已经实现的智能家居控制功能。如果后续接入真实设备,就需要先确认设备是否支持对应协议,以及目标 SDK 提供了哪些相关能力。

我还想尝试增加自然语言入口。比如用户说“帮我检查一下宿舍哪些设备还开着”,应用可以先查询当前已连接设备的状态,再把结果整理出来。

这里的关键不是让 AI 猜测设备状态,而是让它理解用户意图,再调用有明确返回值的设备查询业务。没有连接的设备,应用应该明确提示“状态未知”,而不是直接认定设备已经关闭。


给设备增加状态展示

@Entry

@Component

struct DormEnergyPage {

 @State lampOn: boolean = true;

 @State status: string = '台灯状态:开启';

 build() {

   Column({ space: 16 }) {

     Text('宿舍节能助手')

       .fontSize(24)

       .fontWeight(FontWeight.Bold)

     Text(this.status)

     Button('模拟切换台灯状态')

       .onClick(() => {

         this.lampOn = !this.lampOn;

         this.status = this.lampOn

           ? '台灯状态:开启'

           : '台灯状态:关闭';

       })

   }

   .padding(20)

   .width('100%')

 }

}

目前,这只是一个模拟状态页面,不能直接控制真实硬件。真正接入设备后,还需要考虑通信失败、设备离线、状态同步延迟和用户权限等情况。


AI 提醒也不能只看一个开关

我还想加入节能建议,例如根据用户手动记录的使用习惯,提醒检查长时间未关闭的设备。但在没有实际功耗数据时,应用不能随便声称某台设备浪费了多少电。

如果将来接入智能插座的功耗数据,就可以进一步统计使用情况,再给出更有依据的建议。

对我来说,这个项目最大的收获,是把一个生活中的小烦恼拆解成了几个可以逐步完成的技术任务:先做页面和状态管理,再研究设备连接,最后探索 AI 意图理解。

学习 HarmonyOS 不一定非要从复杂的技术框架开始。找到一个自己每天都会遇到的问题,再用所学技术一点点解决它,本身就是很好的实践。

©本站发布的所有内容,包括但不限于文字、图片、音频、视频、图表、标志、标识、广告、商标、商号、域名、软件、程序等,除特别标明外,均来源于网络或用户投稿,版权归原作者或原出处所有。我们致力于保护原作者版权,若涉及版权问题,请及时联系我们进行处理。
分类
HarmonyOS
地址:北京市朝阳区北三环东路三元桥曙光西里甲1号第三置业A座1508室 电话:13391790444或(010)62178877
版权所有:电脑商情信息服务集团 北京赢邦策略咨询有限责任公司
声明:本媒体部分图片、文章来源于网络,版权归原作者所有,我司致力于保护作者版权,如有侵权,请与我司联系删除

京ICP备:2022009079号-2

京公网安备:11010502051901号

ICP证:京B2-20230255