12.1 OneNET云介绍
通常来说,一个物联网产品应当包括设备、云平台、手机APP。我将在鸿蒙系统上移植MQTT协议、OneNET接入协议,实现手机APP、网页两者都可以远程(跨网络,不是局域网的)访问开发板数据,并控制开发板的功能。
理论上来说,任何以MQTT协议为基础的物联网云平台都可以支持接入。
关于phomqtt 和onenet软件包,已提供下载,声明:所有源码均遵守开源协议~~。
支持鸿蒙系统的 harmony_mqtt 代码仓库:
https://gitee.com/qidiyun/harmony_mqtt
支持鸿蒙系统的 onenet接入软件包仓库:
https://gitee.com/qidiyun/harmony_onenet
12.2 效果演示
先看下效果,我这边使用的是OneNET物联云平台,进入应用,可以看到如下网页界面。该网页的温度、湿度数据由 鸿蒙开发板(Hi3861)上传,同时有一个开关按钮,可以控制开发板的LED灯。
另外,也提供一个手机APP,
以上界面比较简陋,但不妨碍我们使用,另外选择OneNET云平台的主要是原因是接入方式比较简单方便,易于学习,另外一个是OneNET提供了物联网云平台、手机APP,不需要大家自己再去实现,可以更多地将注意力放在鸿蒙系统开发上。
12.3 OneNET软件包
我这边已经将mqtt 和 onenet 以软件包的形式发布,两个软件包分别是
(1)onenet——实现onenet 接入能力
(2)pahomqtt——实现MQTT协议功能
只需要将这两个软件包放到 third_party 文件夹下即可。然后修改
我们来看下onenet 文件夹:
其中 onenet.h 是头文件
onenet_mqtt.c 是全部源码,它基于paho mqtt的MQTTClient编程模型。
另外 samples文件夹下是一个示例代码,代码内容如下:
#include <stdio.h>
#include <unistd.h>
#include "MQTTClient.h"
#include "onenet.h"
#define ONENET_INFO_DEVID "597952816"
#define ONENET_INFO_AUTH "202005160951"
#define ONENET_INFO_APIKEY "zgQdlB5y3Bi9pNd2bUYmS8TJHIY="
#define ONENET_INFO_PROID "345377"
#define ONENET_MASTER_APIKEY "gwaK2wJT5wgnSbJYz67CVRGvwkI="
extern int rand(void);
void onenet_cmd_rsp_cb(uint8_t *recv_data, size_t recv_size, uint8_t **resp_data, size_t *resp_size)
{
printf("recv data is %.*s\n", recv_size, recv_data);
*resp_data = NULL;
*resp_size = 0;
}
int mqtt_test(void)
{
device_info_init(ONENET_INFO_DEVID, ONENET_INFO_PROID, ONENET_INFO_AUTH, ONENET_INFO_APIKEY, ONENET_MASTER_APIKEY);
onenet_mqtt_init();
onenet_set_cmd_rsp_cb(onenet_cmd_rsp_cb);
while (1)
{
int value = 0;
value = rand() % 100;
if (onenet_mqtt_upload_digit("temperature", value) < 0)
{
printf("upload has an error, stop uploading");
//break;
}
else
{
printf("buffer : {\"temperature\":%d} \r\n", value);
}
sleep(1);
}
return 0;
}
手机APP下载:https://open.iot.10086.cn/doc/art656.html#118
12.4 OneNET平台使用
首先我们要注册账号,OneNET平台地址:
然后进入控制台,鼠标放在全部产品服务,选择多协议接入
选择MQTT旧版,单击创建产品
这里我们可以按照我们的需求填写相关信息即可
之后可以选择添加设备
可以填写信息和填写地理位置,鉴权信息可以随意填写
12.5 OneNET设备信息
代码中,我们需要填写以下认证信息:
#define ONENET_INFO_DEVID “597952816”
#define ONENET_INFO_AUTH “202005160951”
#define ONENET_INFO_APIKEY “zgQdlB5y3Bi9pNd2bUYmS8TJHIY=”
#define ONENET_INFO_PROID “345377”
#define ONENET_MASTER_APIKEY “gwaK2wJT5wgnSbJYz67CVRGvwkI=”
(1)ONENET_INFO_DEVID 和 ONENET_INFO_AUTH
设备ID和鉴权信息,可以通过查看设备详情得到:
(2)ONENET_INFO_APIKEY
Api key,可以通过添加api key得到
(3)ONENET_INFO_PROID和ONENET_MASTER_APIKEY
这个可以查看产品ID和master key
为了能让大家更好的学习鸿蒙(HarmonyOS NEXT)开发技术,这边特意整理了《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05
《鸿蒙开发学习手册》:
如何快速入门:https://qr21.cn/FV7h05
- 基本概念
- 构建第一个ArkTS应用
- ……
开发基础知识:https://qr21.cn/FV7h05
- 应用基础知识
- 配置文件
- 应用数据管理
- 应用安全管理
- 应用隐私保护
- 三方应用调用管控机制
- 资源分类与访问
- 学习ArkTS语言
- ……
基于ArkTS 开发:https://qr21.cn/FV7h05
- Ability开发
- UI开发
- 公共事件与通知
- 窗口管理
- 媒体
- 安全
- 网络与链接
- 电话服务
- 数据管理
- 后台任务(Background Task)管理
- 设备管理
- 设备使用信息统计
- DFX
- 国际化开发
- 折叠屏系列
- ……
鸿蒙开发面试真题(含参考答案):https://qr18.cn/F781PH
鸿蒙开发面试大盘集篇(共计319页):https://qr18.cn/F781PH
1.项目开发必备面试题
2.性能优化方向
3.架构方向
4.鸿蒙开发系统底层方向
5.鸿蒙音视频开发方向
6.鸿蒙车载开发方向
7.鸿蒙南向开发方向