系列:鸿蒙开发从入门到专家 · 第 85 篇
IoT 设备和手机、车机完全不同:内存以 KB 或 MB 计,CPU 可能是单片机,网络以 Wi-Fi、BLE、Zigbee 为主。HarmonyOS NEXT 在消费端强调富设备体验,而其底座 OpenHarmony 则覆盖了轻量、小型、标准三种系统类型。对于 IoT 开发者来说,真正要理解的是鸿蒙智联(HarmonyOS Connect)的接入流程,以及轻量系统上的开发模式。
一、鸿蒙生态中的设备分层
HarmonyOS 把设备按资源能力分成不同层级:
IoT 设备大多落在轻量和小型两层,开发重心在设备固件、物模型、配网和安全。
二、HarmonyOS Connect 接入流程
鸿蒙智联是消费级 IoT 设备接入华为生态的主要通道,核心流程分为七步:
注册与签约:企业开发者账号、实名认证、签署合作协议。
产品定义:在 Device Partner 平台创建产品,定义软硬件、物模型、品类信息。
UX 设计:参考鸿蒙智联设计规范,设计设备卡片、App 控制页。
设备开发:集成鸿蒙智联服务包,完成配网、物模型、固件功能开发。
应用开发:开发原子化服务或智慧生活 App 中的 H5 控制页。
自测试:使用 DECC 工具完成软硬件规格自测。
认证与授权:提交样机和技术认证,通过后获得 HarmonyOS Connect 品牌授权。
2.1 物模型是什么
物模型定义了设备能上报什么状态、能接收什么指令。比如一个智能灯:
属性:开关状态、亮度、色温。
命令:打开、关闭、设置亮度。
事件:故障告警、定时完成。
物模型是设备、云端、App 之间的统一语言,开发前要先把物模型定清楚。
2.2 配网方式
三、轻量系统开发示例
以 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 产品的数据链路通常是这样:
设备上电后通过配网接入家庭路由器。
设备向云端注册,上报物模型中的属性。
用户在智慧生活 App 或原子化服务中查看设备状态、下发命令。
云端把命令转发给设备,设备执行后上报结果。
设备状态变化触发场景联动,比如"开门开灯"。
这条链路中,最容易出问题的环节是配网失败、命令超时、状态不同步。建议在产品设计阶段就明确每种异常场景的降级策略。
七、小结
IoT 开发不是写几个 GPIO 控制那么简单,它涉及物模型、配网、驱动、安全、云端通信多个层面。HarmonyOS Connect 提供了从设备定义到认证授权的一站式通道,OpenHarmony 提供了从轻量到标准系统的统一技术底座。对于想进入鸿蒙生态的硬件团队,先把产品定义和物模型理顺,比一上来就写代码更重要。
下一篇我们回到应用侧,深入原子化服务的进阶开发。
参考阅读
华为 Device Partner 平台:HarmonyOS Connect 接入流程
OpenHarmony 官网:轻量系统开发指南
华为开发者联盟:HDF 驱动开发指南