文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

在鸿蒙开发板上使用MQTT协议、OneNET实现第一个物联网项目

2024-12-03 16:47

关注

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com/

通常来说,一个物联网产品应当包括设备、云平台、手机APP。我将在鸿蒙系统上移植MQTT协议、OneNET接入协议,实现手机APP、网页两者都可以远程(跨网络,不是局域网的)访问开发板数据,并控制开发板的功能。

理论上来说,任何以MQTT协议为基础的物联网云平台都可以支持接入。

关于phomqtt 和onenet软件包,已提供下载,声明:所有源码均遵守开源协议。

支持鸿蒙系统的 harmony_mqtt 代码仓库:

https://gitee.com/qidiyun/harmony_mqtt

支持鸿蒙系统的 onenet接入软件包仓库:

https://gitee.com/qidiyun/harmony_onenet

3.11.1 效果

先看下效果,我这边使用的是OneNET物联云平台,进入应用,可以看到如下网页界面。该网页的温度、湿度数据由 鸿蒙开发板(Hi3861)上传,同时有一个开关按钮,可以控制开发板的LED灯。

 

另外,也提供一个手机APP,


以上界面比较简陋,但不妨碍我们使用,另外选择OneNET云平台的主要是原因是接入方式比较简单方便,易于学习,另外一个是OneNET提供了物联网云平台、手机APP,不需要大家自己再去实现,可以更多地将注意力放在鸿蒙系统开发上。

当我们按下开关按钮时,可以看到开发板打印信息如下:

 云平台发送过来的时一串json字符串,key为“ledSwitch”,值为1时,可以看到开发板的LED灯亮,值为0时,开发板LED灯灭。

3.11.2 软件包

我这边已经将mqtt 和 onenet 以软件包的形式发布,两个软件包分别是:

(1)onenet——实现onenet 接入能力

(2)pahomqtt——实现MQTT协议功能

 只需要将这两个软件包放到 third_party 文件夹下即可。然后修改code-1.0\vendor\hisi\hi3861\hi3861\BUILD.gn 文件,将pahomqtt和onenet加入到编译中。

 我们来看下onenet 文件夹: 

 其中 onenet.h 是头文件

onenet_mqtt.c 是全部源码,它基于paho mqtt的MQTTClient编程模型。

另外 samples文件夹下是一个示例代码,代码内容如下:

  1. #include  
  2. #include  
  3. #include "MQTTClient.h" 
  4. #include "onenet.h" 
  5.  
  6. #define ONENET_INFO_DEVID "597952816" 
  7. #define ONENET_INFO_AUTH "202005160951" 
  8. #define ONENET_INFO_APIKEY "zgQdlB5y3Bi9pNd2bUYmS8TJHIY=" 
  9. #define ONENET_INFO_PROID "345377" 
  10. #define ONENET_MASTER_APIKEY "gwaK2wJT5wgnSbJYz67CVRGvwkI=" 
  11.  
  12. extern int rand(void); 
  13.  
  14.  
  15. void onenet_cmd_rsp_cb(uint8_t *recv_data, size_t recv_size, uint8_t **resp_data, size_t *resp_size) 
  16.     printf("recv data is %.*s\n", recv_size, recv_data); 
  17.  
  18.     *resp_data = NULL
  19.     *resp_size = 0; 
  20.  
  21. int mqtt_test(void) 
  22.      
  23.     device_info_init(ONENET_INFO_DEVID, ONENET_INFO_PROID, ONENET_INFO_AUTH, ONENET_INFO_APIKEY, ONENET_MASTER_APIKEY); 
  24.     onenet_mqtt_init(); 
  25.  
  26.     onenet_set_cmd_rsp_cb(onenet_cmd_rsp_cb); 
  27.  
  28.     while (1) 
  29.     { 
  30.         int value = 0; 
  31.          
  32.         value = rand() % 100; 
  33.  
  34.         if (onenet_mqtt_upload_digit("temperature", value) < 0) 
  35.         { 
  36.             printf("upload has an error, stop uploading"); 
  37.             //break; 
  38.         } 
  39.         else 
  40.         { 
  41.             printf("buffer : {\"temperature\":%d} \r\n", value); 
  42.         } 
  43.         sleep(1); 
  44.     } 
  45.     return 0; 

手机APP下载:https://open.iot.10086.cn/doc/art656.html#118

由于本节内容较多,将分成多个文章,陆续放出,目前规划如下:

(1)paho mqtt client移植。其实我之前已经有一篇文章讲了paho mqtt的移植,但是那篇文章只是简单的移植,并不支持多任务,这一次mqtt移植将支持多任务。

(2)onenet协议的移植与实现。主要讲如何在mqtt的基础上实现onenet接入。

(3)如何使用onenet云平台

(4)设备(鸿蒙开发板)如何接入到onenet,实现数据互传。

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com/

 

 

来源:鸿蒙社区内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯