# huawei **Repository Path**: oneos-ability/huawei ## Basic Information - **Project Name**: huawei - **Description**: huawei IoT cloud SDK for OneOS - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2024-02-04 - **Last Updated**: 2024-05-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Huawei Cloud Kit - V1.1.0 ## 简介 国内公有云市场竞争白热化,以阿里云、腾讯云、华为云等为代表的头部云服务商正成为众多企业上云首选合作伙伴。华为云作为前三大的公有云服务提供商,很多物联网应用采用对接华为云作为端云连接的解决方案。为了使开发者更聚焦于业务,因此Huawei Cloud Kit提供一种快速连接华为云的手段,开发者可以通过配置,自由选择以太网、2G/3G/4G/5G、NB-IoT、Wifi等多种网络接入物联网平台,并通过LwM2M/MQTT协议与华为云连接。 V1.0.0功能简介: - 华为端云互通组件SDK移植。 - 实现LwM2M(Lightweight Machine-To-Machine)协议连接,包括设备注册,属性上报,命令下发。 V1.1.0功能简介: - 实现MQTT(S)协议连接,支持设备发布/订阅消息 - 支持加密与非加密方式接入 - 支持PSK、CA证书两种认证方式接入华为云 ## 代码结构 | 目录 | 说明 | | ------- | --------------------------------------------- | | adpter | OneOS适配文件,包括内核调用及网络层的适配代码 | | demos | 示例程序 | | doc | 说明文档 | | include | LiteOS端云互通SDK头文件 | | src | LiteOS端云互通SDK源文件 | ## LwM2M协议连接 #### LwM2M实体间的关系 协议最主要的实体包括LwM2M Server和LwM2M Client。 - LwM2M Server作为服务器,部署在M2M服务供应商处或网络服务供应商处。 - LwM2M Client作为客户端,部署在各个LwM2M设备上。 - LwM2M Bootstrap Servery或SmartCard,引导服务器及智能卡为可选项,用户可以将LwM2M Server相关信息直接写入设备。 备注:当前版本不支持Bootstrap,用户需要将LwM2M Server相关信息写入设备,或直接通过域名连接IoT平台。 #### 网络层次 - OMA的LwM2M规范中定义了8个标准对象:Security、Server、Access Control、Device、Connectivity Monitoring、Firmware、Location、Connectivity Statistics;华为云平台另外支持对象ID为19的LwM2M App data,本对象内的数据格式由用户自定义,并且需要在与平台侧的物模型相对应。 | Object | Object ID | | ----------------------------------------- | --------- | | LwM2M Security(安全对象) | 0 | | LwM2M Server(服务器对象) | 1 | | Access Control(访问控制对象) | 2 | | Device(设备对象) | 3 | | Connectivity Monitoring(连通性监控对象) | 4 | | Firmware(固件对象) | 5 | | Location(位置对象) | 6 | | Connectivity Statistics(连通性统计对象) | 7 | | LwM2M App data(应用数据对象) | 19 | - 支持CoAP和CoAPS,加密与非加密方式与华为云平台连接,用户可以通过menuconfig来修改此选项。 - 网络传输工作中BSD Socket之上,AT、LwIP协议栈选择,以及底层链路硬件选择与华为云连接组件无关。 #### 配置选项 使用huawei cloud kit需要通过Menuconfig的图形化工具进行配置选择,配置的路径如下所示: ```text (Top) → Components→ Cloud→ Huawei OneOS Configuration [*] Using huawei cloud connect component Transport Protocol (LwM2M) ---> [*] Enable/Disable (D)TLS Secret Key Type (PSK) ---> (12345678) Config PSK Value [*] Enable LwM2M demo program (119.3.250.80) LwM2M Server Address (dev_0) Config Device ID Code ``` ##### 配置入口 ​ 配置路径:Components→ Cloud→ Huawei ##### 参数说明 ​ Transport Protocol (LwM2M) : 连接协议选择,选择LwM2M; ​ Enable/Disable (D)TLS:使能/去使能(D)TLS; ​ Secret Key Type (PSK):选择密钥方式; ​ Config PSK Value:配置PSK密钥参数; ​ Enable LwM2M demo program:使能LwM2M示例程序; ​ LwM2M Server Address:LwM2M服务器地址,支持IP及域名输入; ​ Config Device ID Code:配置身份码,同云平台的“设备标识码”保持一致。 ## MQTT(S)协议连接 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。 MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。 - 支持QoS0和QoS1 - 支持JSON格式及二进制数据上报 #### 网络层次 - 支持MQTT、MQTTS两种方式接入 - 网络传输工作中BSD Socket之上 #### 使用限制 | 描述 | 限制 | | ---------------------------------------------------------- | ------------------------------------------------------------ | | 支持的MQTT协议版本 | 3.1.1 | | 与标准MQTT协议的区别 | 支持QoS 0和QoS 1,支持Topic自定义,不支持QoS2,不支持will、retain msg | | MQTTS支持的安全等级 | 采用TCP通道基础 + TLS协议(TLSV1.2 版本) | | 单帐号每秒最大MQTT连接请求数 | 无限制 | | 单个设备每分钟支持的最大MQTT连接数 | 1 | | 单个MQTT连接每秒的吞吐量,即带宽,包含直连设备和网关 | 3KB/s | | MQTT单个发布消息最大长度,超过此大小的发布请求将被直接拒绝 | 1MB | | MQTT连接心跳时间建议值 | 心跳时间限定为30至1200秒,推荐设置为120秒 | | 产品是否支持自定义Topic | 不支持 | | 消息发布与订阅 | 设备只能对自己的Topic进行消息发布与订阅 | | 每个订阅请求的最大订阅数 | 无限制 | #### 配置选项 使用huawei cloud kit需要通过Menuconfig的图形化工具进行配置选择,配置的路径如下所示: ```text (Top) → Components→ Cloud→ Huawei OneOS Configuration [*] Using huawei cloud connect component Transport Protocol (MQTT) ---> [*] Enable/Disable (D)TLS Secret Key Type (PSK) ---> (12345678) Config PSK Value (NEW) [*] Enable MQTT demo program (121.36.42.100) MQTT Server Address (NEW) (123456) Config Product ID (NEW) (dev_0) Config Device ID Code (NEW) ``` ##### 配置入口 ​ 配置路径:Components→ Cloud→ Huawei ##### 参数说明 ​ Transport Protocol (MQTT) : 连接协议选择,选择MQTT; ​ Enable/Disable (D)TLS:使能/去使能TLS,去使能TLS后,所有报文将以明文形式发送,建议使能TLS; ​ Secret Key Type (PSK):选择密钥方式,支持PSK及CA证书方式接入; ​ Config PSK Value:配置PSK密钥参数; ​ Enable MQTT demo program:使能MQTT 示例程序; ​ MQTT Server Address:MQTT服务器地址,支持IP及域名输入; ​ Config Product ID:配置产品ID,为云平台自动分配的产品ID。 ​ Config Device ID Code:配置设备标识码,为注册设备时,用户输入的设备标识码 ## 平台侧配置 1. 注册华为云账户 根据网站指引,注册华为云账户--[华为云](https://www.huaweicloud.com/?locale=zh-cn) 2. 创建产品 参照华为云开发指南--[创建产品](https://support.huaweicloud.com/devg-iothub/iot_01_0053.html) 3. 产品开发 参考华为云开发指南--[产品开发指引](https://support.huaweicloud.com/devg-iothub/iot_01_0058.html) 4. 注册设备 参考华为云开发指南--[注册设备](https://support.huaweicloud.com/usermanual-iothub/iot_01_0028.html)及[设备鉴权](https://support.huaweicloud.com/usermanual-iothub/iot_01_0019.html) ## CA证书配置 若选择MQTTS协议接入,并采用x.509证书方式认证,则用户需要如下操作 1. 制作证书 参考华为云帮助文档--[注册X.509证书认证的设备](https://support.huaweicloud.com/usermanual-iothub/iot_01_0055.html#ZH-CN_TOPIC_0222727053__li6976113417455) 2. 上传证书 上传并验证证书,需要同时在两个地方配置 华为云物联网平台=>设备=>设备CA证书 华为云物联网平台=>设备发放=>证书 可以参考华为云帮助文档--[MQTT X.509证书认证接入示例](https://support.huaweicloud.com/qs-iothub/iot_05_0015.html) ## 注意事项 1. PSK参数配置 由于云平台支持的密钥长度为8-32位,只支持16进制密钥,且DTLS传输时密钥采用16进制数传输,因此有如下限制: a. 密钥只支持0-9,A-F,a-f输入; b.密钥长度须为偶数位。