浏览器家园
TAG标签|网站导航| 手机访问:m.liulanqi.com
LiteOS SDK是Huawei LiteOS软件开发工具包(Software Development Kit),包括端云互通组件、FOTA、JS引擎、传感框架等内容。
本文档介绍的LiteOS SDK包括了LiteOS SDK端云互通组件。端云互通组件是华为物联网解决方案中,资源受限终端对接到 IoT云平台的重要组件。端云互通组件提供端云协同能力,集成了 LwM2M、CoAP、mbed TLS、LwIP 等全套 IoT 互联互通协议栈,且在 LwM2M 的基础上,提供端云互通组件开放API,用户只需关注自身的应用,而不必关注 LwM2M 实现细节,直接使用 LiteOS SDK端云互通组件封装的 API,通过四个步骤就能简单快速地实现与华为 OceanConnect IoT平台安全可靠连接。使用 LiteOS SDK端云互通组件,用户可以大大减少开发周期,聚焦自己的业务开发,快速构建自己的产品。
Huawei LiteOS架构图
MQTT(MQ Telemetry Transport)是一种基于发布和订阅(publish/subscribe)的简单的、轻量级的通信协议,它应用于资源受限的设备及低带宽、高延时、不可靠的网络。MQTT3.1.1版本已成为OASIS的标准。
当前LiteOS MQTT的实现承载在传输层安全协议TLS之上,通信的协议层次见下图。
设备使用MQTT很容易和华为OceanConnect IoT平台对接,平台目前支持两种对接模式。
一机一密模式,即一个设备在平台申请一个密码,流程图如下所示:
一型一密模式,即一种产品在平台申请一个密码,产品的设备唯一标识nodeid由设备厂家分配,设备的密码由设备和平台动态协商,流程图如下所示:
使用LiteOS端云互通MQTT组件很容易和IoT平台实现连接:
平台侧环境准备
在开发之前,需要提前获取如下信息:
端侧环境准备:
LiteOS源代码托管在GitHub,地址为https://github.com/LiteOS/LiteOS。
IoT平台需要有配置的MQTT设备信息,才能和设备连接。具体请参见IoT平台的操作资料。
在平台的设备注册中输入设备信息,提交后保存对应的deviceid和password。
在产品管理中导入产品,提交后保存productid和password。
MQTT组件依赖于cJSON、mbedtls及tcp/ip的实现。tcp/ip可使用lwip实现或者在AT模块实现。详细的编译可参考config_mqtt.mk及Makefile。
MQTT组件相关代码如下:
动态连接需要保存IoT平台分配的deviceid及password等secret info。需要使用1056字节保存该信息。该信息需要使用可擦除的不易丢失器件存储。该信息为用户的敏感信息,建议用户使用安全的加密算法如使用CBC模式的AES128算法进行加密存储,保护该信息安全。
动态连接的nodeid需要能唯一标识设备,如使用SN或者MAC地址等等。
若设备配置的密码校验类型为校验时间戳时,即MQTT_SIGN_TYPE_HMACSHA256_CHECK_TIME,设备时间需要和IoT平台时间同步,年月日小时应该保持一致,连接才能校验通过。
否则可带任意时间。
设备的连接参数、ca证书需要和IoT平台配置一致,才能连接成功。
数据的上报及命令下发及应答的格式需要和IoT平台配置的profile一致,才能实现数据上报及命令下发、应答。
静态设备平台profile的查询
动态设备profile查询
举例:
数据上报的Json格式要求为:
{
"msgType": "deviceReq",
"hasMore": 0,
"data": [{
"serviceId": "serviceIdValue",
"data": {
"defineData": "defineValue"
},
"eventTime": "20161219T114920Z"
}]
}
命令下发的Json格式要求为:
{
"msgType":"cloudReq",
"serviceId":"serviceIdValue",
"paras":{
"paraName":"paraValue"
},
"cmd":"cmdValue",
"hasMore":0,
"mid":0
}
命令响应报文格式为:
{
"msgType":"deviceRsp",
"mid":0,
"errcode":0,
"hasMore":0,
"body":{
"bodyParaName":"bodyParaValue"
}
}
请参考开源社区,DEMO代码路径demos/agenttiny_mqtt/agent_tiny_demo.c。
说明:
Huawei LiteOS开源社区地址:https://github.com/LiteOS/LiteOS。
atiny_mqtt_init
int atiny_mqtt_init(const mqtt_param_s* atiny_params, mqtt_client_s** phandle) |
|
atiny_mqtt_bind
int atiny_mqtt_bind(const mqtt_device_info_s* device_info, mqtt_client_s* phandle) |
|
atiny_mqtt_data_send
int atiny_mqtt_data_send(mqtt_client_s* phandle, const char *msg, uint32_t msg_len, mqtt_qos_e qos) |
|
atiny_mqtt_isconnected
谷歌浏览器测试,谷歌浏览器测试:打开网页、加载速度与兼容性测试
Copyright 2019-2029 www.liulanqi.com 【浏览器家园】 版权所有
浏览器家园_下载浏览器就到浏览器家园 | 专注MAC浏览器和Windows浏览器下载和使用介绍
声明: 所有软件和文章收集整理来自互联网 如有异议 请与本站联系 本站为非赢利性网站 不接受任何赞助和广告