OpenHarmony轻量系统开发【12】OneNET云接入

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

  1. 基本概念
  2. 构建第一个ArkTS应用
  3. ……

开发基础知识:https://qr21.cn/FV7h05

  1. 应用基础知识
  2. 配置文件
  3. 应用数据管理
  4. 应用安全管理
  5. 应用隐私保护
  6. 三方应用调用管控机制
  7. 资源分类与访问
  8. 学习ArkTS语言
  9. ……

基于ArkTS 开发:https://qr21.cn/FV7h05

  1. Ability开发
  2. UI开发
  3. 公共事件与通知
  4. 窗口管理
  5. 媒体
  6. 安全
  7. 网络与链接
  8. 电话服务
  9. 数据管理
  10. 后台任务(Background Task)管理
  11. 设备管理
  12. 设备使用信息统计
  13. DFX
  14. 国际化开发
  15. 折叠屏系列
  16. ……

鸿蒙开发面试真题(含参考答案):https://qr18.cn/F781PH

鸿蒙开发面试大盘集篇(共计319页):https://qr18.cn/F781PH

1.项目开发必备面试题
2.性能优化方向
3.架构方向
4.鸿蒙开发系统底层方向
5.鸿蒙音视频开发方向
6.鸿蒙车载开发方向
7.鸿蒙南向开发方向

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/139.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在阿里云主机上安装FreeBSD14系统

文章目录 在阿里云主机上安装FreeBSD14系统准备阿里云云主机识别目标磁盘下载 FreeBSD14解压缩 FreeBSD14系统镜像创建可启动的磁盘启动 FreeBSD14在阿里云主机上安装FreeBSD14系统 阿里云主机不支持 FreeBSD14 系统的镜像,因此需要手动进行安装。 准备阿里云云主机 在阿里云…

项目_预览和模拟器运行_真机运行鸿蒙应用---HarmonyOS4.0+鸿蒙NEXT工作笔记002

然后再来看如何使用预览,可以看到 右侧有个preview,点开就可以了 然后再有一个tools,这里 Device Manager,这个是模拟器 点开以后可以看到让我们连接,本地模拟器,还是远程模拟器,还是远程设备 这里我们选择phone 如果选择remote device,这个需要登录华为账号,会自动弹出来登…

前端网络---http协议演变

http协议的演变 什么是http协议&#xff1f; HTTP 协议全称为 Hypertext Transfer Protocol&#xff0c;即超文本传输协议&#xff0c;是互联网上应用最为广泛的一种网络传输协议 http协议演变 1991年0.9版本-------1996年1.0版本-------1997年1.1版本--------2015年2版本-…

探索SQL深入理解数据库操作的关键概念与技巧【文末送书】

文章目录 SQL语言从入门到精通入门篇进阶篇高级篇深入理解SQL SQL语言从入门到精通&#xff08;软件开发视频大讲堂&#xff09;【文末送书】 SQL语言从入门到精通 SQL&#xff08;Structured Query Language&#xff0c;结构化查询语言&#xff09;是一种用于管理关系型数据库…

Linux命令-du命令(显示每个文件和目录的磁盘使用空间)

说明 du命令 也是查看使用空间的&#xff0c;但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间 的查看&#xff0c;还是和df命令有一些区别的 语法 du(选项)(参数)选项 -a, --all 显示目录中个别文件的大小。 -B, --block-size大小 使用指定字节数的块 -b, -…

数据结构-贪心策略(贪心算法)

贪心算法 1.贪心算法的核心思想 局部最优思想:在每一步决策时做出对当前看起来最优的解,并且期望这些局部最优的选择能成全全局最优解.全局最优构造:对于给定的问题&#xff0c;其全局最优解可以通过将问题分解为一系列子问题&#xff0c;然后在每个子问题上独立做出贪心选择来…

李飞飞团队发布《2024年人工智能指数报告》,预测人工智能未来发展趋势

昨天&#xff0c;斯坦福大学 Human-Center Artificial Intelligence (HAI)研究中心发布了《2024年人工智能指数报告》。 由斯坦福大学发起的人工智能指数&#xff08;AI Index&#xff09;是一个追踪 AI 动态和进展的非营利性项目&#xff0c;旨在全面研究 AI 行业状况&#xf…

Android Framework 常见解决方案(29)添加应用开发的共享库

1 原理说明 通过设置配置文件public.libraries.txt以及在system分区下添加so动态库的方式&#xff0c;让系统扩展动态库。关于动态库的拷贝较为简单&#xff0c;直接配置即可&#xff0c;这里主要解读下配置文件public.libraries.txt。 1.1 public.libraries.txt配置文件是什…

Redis主从复制及其原理

为什么要有主从复制 为了避免服务的单点故障&#xff0c;通过给主从复制可以把数据复制多个副本放在不同的服务器上&#xff0c;拥有数据副本的服务器可以用于处理客户端的读请求&#xff0c;扩展整体的性能 Redis的主从复制搭建 准备3台机器&#xff0c;主服务器ip为192.16…

云服务器租用一年、1个月优惠价格表,阿里/腾讯/京东/华为云

现在租一个服务器多少一个月&#xff1f;优惠价格低至3.8元1个月&#xff0c;租用一个月云服务器收费价格表&#xff1a;阿里云和腾讯云2核2G3M服务器优惠价格61元一年&#xff0c;折合一个月5元&#xff0c;京东云轻量云主机5.8元一个月&#xff0c;华为云服务器优惠价格3.8元…

未来交通:UWB模块引领智能交通系统的发展方向

随着城市化进程的加速和交通需求的不断增长&#xff0c;智能交通系统正成为解决城市交通问题的重要途径之一。UWB不断发展正在引领智能交通系统的发展方向。UWB模块作为UWB技术的核心组成部分&#xff0c;具有精准定位、快速响应、抗干扰等特点&#xff0c;为智能交通系统的构建…

Swift-19-基础入门

从本章开始大概用10篇左右文章介绍下Swift语言的基本用法。 简介 Objective-C作为一门比较老的语言&#xff0c; 缺少很多现代语言所具备的高级特性。Swift是目标是比C&#xff0c;C, ObjC更安全可靠&#xff0c;从而减少开发者对在应用运行时出错的代码进行调试的时间成本。本…

github,raw.githubusercontent.com 等网址登陆不上不去的设置方法

目录 提示域名解析错误&#xff1a; 出现的现象&#xff1a; 解决办法&#xff1a;修改host host改完不生效 解决方案1&#xff1a; 解决方案2&#xff1a; 提示域名解析错误&#xff1a; 出现的现象&#xff1a; 登陆github&#xff0c;raw.githubusercontent.com 等网…

Jmeter 接口造10w条用户数据

1、将mysql-connector-java-5.1.22-bin.jar放到D:\apache-jmeter-5.5\lib\ext目录下 2、在测试计划中&#xff0c;添加mysql-connector-java-5.1.22-bin.jar包路径 3、添加-线程组-添加-配置元件-jdbc connection configuration 4、配置jdbc连接参数 设置变量名称&#xff1a;…

pyqt之QNetworkAccessManager

QNetworkAccessManager是Qt自带的一个网络请求库&#xff0c;网上很多说的很模糊&#xff0c;在这总结一下 # coding: utf-8 import json import sys from pathlib import Path from typing import Union from urllib.parse import urlencodefrom PyQt5.QtNetwork import QNetw…

关于 AssertionError: Torch not compiled with CUDA enabled 问题

你好&#xff0c;我是 shengjk1&#xff0c;多年大厂经验&#xff0c;努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注&#xff01;你会有如下收益&#xff1a; 了解大厂经验拥有和大厂相匹配的技术等 希望看什么&#xff0c;评论或者私信告诉我&#xff01; 文章目录 一…

javaWeb智能医疗管理系统

简介 在当今快节奏的生活中&#xff0c;智能医疗系统的崛起为医疗行业带来了一场革命性的变革。基于JavaWeb技术开发的智能医疗管理系统&#xff0c;不仅为医疗机构提供了高效、精准的管理工具&#xff0c;也为患者提供了更便捷、更个性化的医疗服务。本文将介绍一个基于SSM&a…

vue快速入门(二十九)echarts在vue中的使用

注释很详细&#xff0c;直接上代码 上一篇 新增内容 echarts.js的下载途径echarts的饼图示范 echarts.js&#xff0c;点击跳转&#xff0c;右键另存即可 源码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><m…

python内置函数frozenset()详解

Python 内置函数 frozenset() 1. 概述 frozenset() 是 Python 中的一个内置函数&#xff0c;用于创建一个不可变的集合&#xff08;frozenset&#xff09;。与普通的集合&#xff08;set&#xff09;不同&#xff0c;frozenset 不能被修改&#xff0c;也不能添加或删除元素。…

小试牛刀!

1.从双倍数组中还原原数组&#xff08;力扣&#xff0c;vector&#xff09; java式c解法。 class Solution { public:vector<int> findOriginalArray(vector<int>& changed) {int n changed.size();if(n % 2 1) return {};map<int, int> mp;for(int c…