第11章 鸿蒙IoT开发

25 阅读2分钟

鸿蒙的优势之一是 跨设备与 IoT 集成能力,开发者可以通过统一框架控制各种智能设备,实现分布式场景。

11.1 IoT设备接入流程

  1. 注册设备

    • 在 HMS Core 或开发者后台注册设备,获取 DeviceID 和权限认证信息。
  2. 配置设备能力

    • 在 DevEco Studio 中选择设备类型(传感器、灯、摄像头等)
    • 配置通信协议(BLE、Wi-Fi、Zigbee)
  3. 开发应用

    • 创建 Ability 或 Service 与 IoT 设备通信
    • 通过分布式能力实现远程控制和状态同步
  4. 调试与测试

    • 使用模拟器或真实设备进行功能和性能测试

📌 流程图(简化版):

开发者注册设备 → 配置设备能力 → 创建应用能力 → 调试与测试 → 发布

11.2 IoT能力

鸿蒙提供丰富的 IoT API,主要包括:

1. 传感器

  • 支持温度、湿度、加速度、心率等传感器
  • 示例:读取温湿度传感器
import sensor from '@ohos.sensor';

let sensorManager = sensor.createSensorManager();
sensorManager.startSensor(1, 1000, (data) => {
  console.log("温度:", data.values[0], "湿度:", data.values[1]);
});

2. 蓝牙(BLE)

  • 扫描、连接、读写蓝牙设备数据
  • 示例:扫描附近 BLE 设备
import bluetooth from '@ohos.bluetooth';

bluetooth.startScanDevices((device) => {
  console.log("发现设备:", device.name, device.deviceId);
});

3. 摄像头

  • 支持拍照、录像和视频流传输
  • 示例:拍照
import camera from '@ohos.camera';

camera.takePhoto({ quality: "high" }).then((filePath) => {
  console.log("照片保存路径:", filePath);
});

11.3 分布式IoT应用案例

  • 手机控制智能灯

    • 手机 Ability 控制灯的开关
    • 灯状态同步到平板或手表
  • 分布式数据同步

    • 使用 KVStore / DDMS 实现跨设备状态更新
  • 远程调用服务

    • 手机调用灯的 Service Ability,实现开关控制

11.4 实操:手机控制智能灯

功能需求

  • 手机端应用控制智能灯开/关
  • 状态同步到其他设备显示
  • 分布式数据存储灯状态

示例代码

import distributedData from '@ohos.data.distributedData';

@Entry
@Component
struct SmartLamp {
  @State lampOn: boolean = false;
  private kvStore: any;

  async aboutToAppear() {
    // 初始化分布式 KVStore
    let manager = distributedData.createDistributedKVStoreManager("smartLampApp");
    this.kvStore = await manager.getKVStore("lampStore", { autoSync: true });

    // 读取灯状态
    let value = await this.kvStore.get("lampState");
    this.lampOn = value ? value === "on" : false;

    // 监听跨设备数据变化
    this.kvStore.on("dataChange", (data) => {
      if (data.key === "lampState") {
        this.lampOn = data.value.value === "on";
      }
    });
  }

  toggleLamp() {
    this.lampOn = !this.lampOn;
    // 写入分布式 KVStore,实现跨设备同步
    this.kvStore.put("lampState", this.lampOn ? "on" : "off");
    console.log("灯状态:", this.lampOn ? "开" : "关");
  }

  build() {
    Column({ space: 20, alignItems: HorizontalAlign.Center }) {
      Text(`智能灯状态:${this.lampOn ? "开" : "关"}`).fontSize(24)
      Button(this.lampOn ? "关闭灯" : "开启灯").onClick(() => this.toggleLamp())
    }
  }
}

优化建议

  • 使用懒加载更新 UI
  • 对 IoT 数据变化做节流,避免频繁刷新
  • 对关键操作记录日志,便于调试

11.5 小结

  • 鸿蒙 IoT 开发流程:注册设备 → 配置能力 → 开发应用 → 调试发布
  • 支持丰富的 IoT 能力:传感器、蓝牙、摄像头等
  • 分布式 IoT 应用可以跨设备同步状态
  • 实操案例:手机控制智能灯,实现远程开关和状态显示