头图

简介

本文档为帮助开发者快速将设备接入到数字管家,完成FA、服务端和设备的通信,实现数字管家对设备的命令控制、日程管理,以及设备对数字管家的主动告警。

快速上手

 title=

1. 前提参考:

鸿蒙开发文档:docs.qq.com/doc/DUmN4VVhBd3NxdExK

  • IoT平台:完成IoT平台新设备配置;
  • 设备端:完成设备端的开发并定义好profile设备模型;
  • 服务端:搭建并配置好了服务端;
  • 数据库:device_type表中添加好相关产品数据;
2. 编写设备控制页面
  1. 在slice目录下新建 xxxxSlice.java文件,通过 addActionRoute()  方法为此AbilitySlice配置一条路由规则,并且在在应用配置文件(config.json)中注册,  title=  title=
  2. 在resources->base->layout下新建对应xml布局文件,在上述两个文件中编写相应界面代码。
3. 页面逻辑与数据处理
  1. slice页面获取deviceId:在onStart中通过调用intent.getStringParam("deviceId") ,获取设备标识用于对设备进行控制或者获取设备信息。

     title=

  2. slice页面获取状态:对于可以主动控制的设备,调用intent.getBooleanParam(KEY_IS_SET_COMMAND, false) ,用于判断当前状态下是需要执行命令,还是通过 [EventBus]将命令数据传出用于日程对设备的编排之中。  title=
  3. 编写设备控制命令的获取和解析方法:在CommandUtil中根据具体设备profile定义,来新增获取命令和解析命令的方法,以供设备调用sendCommand来发送命令和在日程中来解析命令。  title=  title=
  4. 配置设备相关信息:在DeviceData类的initData方法中,根据设备productId添加设备图片资源ID、跳转的action参数和日程解析方法,配置完成后设备列表页、日程页面等都能通过该配置进行图片加载、路由跳转和日程解析。  title=
  5. 以上代码逻辑处理和实现可参考LampAbilitySlice.java。
4. 接口对接

​ 项目使用的网络请求组件为RetrofitCache,项目中服务端api定义于ApiRx2,通过OKHttpUtilsRx2来实现异步调用。

  1. 若使用自己部署的服务端,须做如下修改: (1) 将OKHttpUtilsRx2类中SERVER_URL变量修改为自己的服务端api地址; (2) 将DeviceStateListener类中RABBITMQ_HOST变量修改为自己的服务端地址;
  2. 初始化设备状态:通过调用getDeviceInfo接口,传入deviceId和userId来获取,其中UserId在登录时会储存于Preferences轻量级数据存储之中。  title=
  3. 设备控制命令:通过调用sendCommand接口,传入deviceId和命令json字符串来对指定设备进行控制。

     title=

搜狗高速浏览器截图20240326151450.png

如何验证

鸿蒙NEXT开发星河文档+mau123789是v直接拿取
1. 写入NFC数据

根据设备定义好的设备profile模型,使用应用调测组助手将tlv格式数据写入NFC NFC数据写入章节。

2. 对设备进行碰一碰配网

将手机靠近NFC标签,可正常拉起数字管家,并开始无感配网。

 title=

3. 验证设备跳转入口
  • 在线设备贴近设备NFC标签碰一碰,可正常跳转至应用;

 title=

  • 在首页设备Tab和新增日程页面的设备图标能正确显示设备状态,在线设备点击图标后可跳转设备页;

 title=

4. 验证功能
  • 新增日程:在输入成员、设备执行动作、执行时间等后,日程页面可看见新增的日程以及需执行的动作,在到达指定时间后所有设备能够执行预设动作,并且相关成员手机会收到系统通知。

 title=

  • 设备单点控制:进入设备控制页面,执行控制操作设备能有相应动作执行。
     title=
  • 主动告警:验证设备端能否通过AMQP通知到数字管家,例如智能垃圾桶检测到垃圾桶已满会通过服务端通知到相关用户,并且能触发铃声提醒和系统通知弹框。

 title=


烧脑猴
24 声望21 粉丝

5年JAVA,3年Android。现转入鸿蒙开发行业,每日分享一些鸿蒙技术!