Administrator
发布于 2026-09-03 / 26,013 阅读
0
0

鸿蒙百篇系列(85/100):IoT 设备开发——从鸿蒙智联到轻量系统接入

系列:鸿蒙开发从入门到专家 · 第 85 篇

IoT 设备和手机、车机完全不同:内存以 KB 或 MB 计,CPU 可能是单片机,网络以 Wi-Fi、BLE、Zigbee 为主。HarmonyOS NEXT 在消费端强调富设备体验,而其底座 OpenHarmony 则覆盖了轻量、小型、标准三种系统类型。对于 IoT 开发者来说,真正要理解的是鸿蒙智联(HarmonyOS Connect)的接入流程,以及轻量系统上的开发模式。

一、鸿蒙生态中的设备分层

HarmonyOS 把设备按资源能力分成不同层级:

层级

代表设备

系统

开发语言

轻量

传感器、灯泡、插座

OpenHarmony 轻量系统 / LiteOS-M

C

小型

摄像头、门锁、空气净化器

OpenHarmony 小型系统 / LiteOS-A

C/C++

标准

手机、平板、车机

HarmonyOS NEXT / 标准系统

ArkTS/C/C++

IoT 设备大多落在轻量和小型两层,开发重心在设备固件、物模型、配网和安全。

二、HarmonyOS Connect 接入流程

鸿蒙智联是消费级 IoT 设备接入华为生态的主要通道,核心流程分为七步:

  1. 注册与签约:企业开发者账号、实名认证、签署合作协议。

  2. 产品定义:在 Device Partner 平台创建产品,定义软硬件、物模型、品类信息。

  3. UX 设计:参考鸿蒙智联设计规范,设计设备卡片、App 控制页。

  4. 设备开发:集成鸿蒙智联服务包,完成配网、物模型、固件功能开发。

  5. 应用开发:开发原子化服务或智慧生活 App 中的 H5 控制页。

  6. 自测试:使用 DECC 工具完成软硬件规格自测。

  7. 认证与授权:提交样机和技术认证,通过后获得 HarmonyOS Connect 品牌授权。

2.1 物模型是什么

物模型定义了设备能上报什么状态、能接收什么指令。比如一个智能灯:

  • 属性:开关状态、亮度、色温。

  • 命令:打开、关闭、设置亮度。

  • 事件:故障告警、定时完成。

物模型是设备、云端、App 之间的统一语言,开发前要先把物模型定清楚。

2.2 配网方式

方式

适用场景

特点

碰一碰

带 NFC 的设备

体验最好,依赖 NFC 标签

扫码

带屏幕的设备

稳定,需要用户对准二维码

软 AP

Wi-Fi 设备

通用性强,但步骤较多

BLE

低功耗设备

适合电池供电设备

三、轻量系统开发示例

以 Hi3861 这类 Wi-Fi MCU 为例,轻量系统开发主要使用 C 语言和 HDF 驱动框架。

3.1 GPIO 控制 LED

#include "ohos_init.h"
#include "gpio_if.h"

static void LedTask(void)
{
    GpioSetDir(7, GPIO_DIR_OUT);
    while (1) {
        GpioSetOutputVal(7, 1);
        osDelay(50);
        GpioSetOutputVal(7, 0);
        osDelay(50);
    }
}

APP_FEATURE_INIT(LedTask);

3.2 Wi-Fi 连接

#include "wifi_device.h"

static void ConnectWifi(void)
{
    WifiDeviceConfig config = {0};
    strcpy(config.ssid, "Your_SSID");
    strcpy(config.preSharedKey, "Your_Password");
    config.securityType = WIFI_SEC_TYPE_PSK;

    int netId = -1;
    RegisterWifiEvent(&g_event);
    EnableWifi();
    AddDeviceConfig(&config, &netId);
    ConnectTo(netId);
}

3.3 设备服务化

轻量设备本身不跑复杂应用,而是通过分布式软总线被发现,把手机上的能力虚拟到设备侧。比如摄像头可以把画面流传到手机,门锁可以把状态上报到云端。开发者需要把设备能力封装成服务,注册到系统服务框架中。

四、HDF 驱动框架

HDF(Hardware Driver Foundation)是 OpenHarmony 统一的驱动框架,目标是把驱动和内核解耦。一个典型驱动需要实现:

  • 驱动入口:HdfDriverEntry,包含 Bind、Init、Release。

  • 接口定义:用 IDL 描述驱动对外接口。

  • 配置文件:在 hcs 文件中声明驱动加载参数。

static int32_t MyDriverBind(struct HdfDeviceObject *device)
{
    static struct IDeviceIoService service = {
        .Dispatch = MyDriverDispatch,
    };
    device->service = &service;
    return HDF_SUCCESS;
}

static int32_t MyDriverInit(struct HdfDeviceObject *device)
{
    // 初始化硬件
    return HDF_SUCCESS;
}

static void MyDriverRelease(struct HdfDeviceObject *device)
{
    // 释放资源
}

struct HdfDriverEntry g_myDriverEntry = {
    .moduleVersion = 1,
    .moduleName = "my_driver",
    .Bind = MyDriverBind,
    .Init = MyDriverInit,
    .Release = MyDriverRelease,
};

HDF_INIT(g_myDriverEntry);

五、安全与量产

IoT 设备的安全要求不比手机低,尤其是门锁、摄像头这类涉及隐私和物理安全的设备。

  • 设备认证:每台设备需要有唯一标识和证书,防止伪造。

  • 通信加密:设备与云端、设备与手机之间使用 TLS 或鸿蒙软总线安全通道。

  • 固件签名:OTA 升级包必须签名验证,防止被篡改。

  • 产线烧录:密钥和证书要在安全产线环境下写入,避免泄露。

六、从设备到应用的数据链路

一个完整 IoT 产品的数据链路通常是这样:

  1. 设备上电后通过配网接入家庭路由器。

  2. 设备向云端注册,上报物模型中的属性。

  3. 用户在智慧生活 App 或原子化服务中查看设备状态、下发命令。

  4. 云端把命令转发给设备,设备执行后上报结果。

  5. 设备状态变化触发场景联动,比如"开门开灯"。

这条链路中,最容易出问题的环节是配网失败、命令超时、状态不同步。建议在产品设计阶段就明确每种异常场景的降级策略。

七、小结

IoT 开发不是写几个 GPIO 控制那么简单,它涉及物模型、配网、驱动、安全、云端通信多个层面。HarmonyOS Connect 提供了从设备定义到认证授权的一站式通道,OpenHarmony 提供了从轻量到标准系统的统一技术底座。对于想进入鸿蒙生态的硬件团队,先把产品定义和物模型理顺,比一上来就写代码更重要。

下一篇我们回到应用侧,深入原子化服务的进阶开发。

参考阅读

  • 华为 Device Partner 平台:HarmonyOS Connect 接入流程

  • OpenHarmony 官网:轻量系统开发指南

  • 华为开发者联盟:HDF 驱动开发指南


评论