一、mqtt介绍

1.1 概述

  MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和致动器(比如通过Twitter让房屋联网)的通信协议。

1.2 应用

  IBM和St. Jude医疗中心通过MQTT开发了一套Merlin系统,该系统使用了用于家庭保健的传感器。St. Jude医疗中心设计了一个叫做Merlin@home的心脏装置,这种无线发射器可以用来监控那些已经植入复律-除颤器和起搏器(两者都是基本的传感器)的心脏病人。   该产品利用MQTT把病人的即时更新信息传给医生/医院,然后医院进行保存。这样的话,病人就不用亲自去医院检查心脏仪器了,医生可以随时查看病人的数据,给出建议,病人在家里就可以自行检查。   IBM称该发射器包括一个大型触摸屏,一个嵌入式键盘平台,以及一个Linux操作系统。   在未来几年,MQTT的应用会越来越广,值得关注。   通过MQTT协议,目前已经扩展出了数十个MQTT服务器端程序,可以通过PHP,JAVA,Python,C,C#等系统语言来向MQTT发送相关消息。   此外,国内很多企业都广泛使用MQTT作为Android手机客户端与服务器端推送消息的协议。其中Sohu,Cmstop手机客户端中均有使用到MQTT作为消息推送消息。据Cmstop主要负责消息推送的高级研发工程师 李文凯称,随着移动互联网的发展,MQTT由于开放源代码,耗电量小等特点,将会在移动消息推送领域会有更多的贡献,在物联网领域,传感器与服务器的通信,信息的收集,MQTT都可以作为考虑的方案之一。在未来MQTT会进入到我们生活的各各方面。   如果需要下载MQTT服务器端,可以直接去MQTT官方网站点击software进行下载MQTT协议衍生出来的各个不同版本。

二、调试工具

2.1 消息代理工具mosquitto

  eclipse mosquitto是一个开源(EPL/EDL许可)的消息代理,它实现了MQTT协议版本5.0、3.1.1和3.1。Mosquitto是轻量级的,适用于从低功耗单板计算机到全服务器的所有设备。   MQTT协议提供了一种使用发布/订阅模型执行消息传递的轻量级方法。这使得它适用于物联网消息传递,如低功耗传感器或移动设备,如电话、嵌入式计算机或微控制器。   Mosquitto项目还提供了一个用于实现MQTT客户机的C库,以及非常流行的Mosquitto\u pub和Mosquitto\u子命令行MQTT客户机。   Mosquitto是Eclipse基金会的一部分,是一个由cedalao管理的iot.eclipse.org项目。   下载地址

三、OneNET介绍

3.1 概述

  OneNET定位为PaaS服务,即在物联网应用和真实设备之间搭建高效、稳定、安全的应用平台:面向设备,适配多种网络环境和常见传输协议,提供各类硬件终端的快速接入方案和设备管理服务;面向应用层,提供丰富的API和数据分发能力以满足各类行业应用系统的开发需求,使物联网企业可以更加专注于自身应用的开发,而不用将工作重心放在设备接入层的环境搭建上,从而缩短物联网系统的形成周期,降低企业研发、运营和运维成本。   OneNET已构建“云-网-边-端”整体架构的物联网能力,具备接入增强、边缘计算、增值能力、AI、数据分析、一站式开发、行业能力、生态开放8大特点。全新版本OneNET平台,向下延展终端适配接入能力,向上整合细分行业应用,可提供设备接入、设备管理等基础设备管理能力,以及位置定位LBS、远程升级OTA、数据可视化View、消息队列MQ等PaaS能力。同时随着5G网络的到来,平台也在打造5G+OneNET新能力,重点提供并优化视频能力Video、人工智能AI、边缘计算Edge等产品能力,通过高效、稳定、多样的组合式服务,让各项应用实现轻松上云,完美赋能行业端到端应用。。

3.2 OneNET主要功能

设备接入
  • 支持多种行业及主流标准协议的设备接入,提供如NB-IoT(LWM2M)、MQTT、EDP、Modbus、HTTP等物联网套件,满足多种应用场景的使用需求
  • 提供多种语言开发SDK,帮助开发者快速实现设备接入
  • 支持用户协议自定义,通过TCP透传方式上传解析脚本来完成协议的解析

设备管理

  • 提供设备生命周期管理功能,支持用户进行设备注册,设备更新,设备查询、设备删除
  • 提供设备在线状态管理功能,提供设备上下线的消息通知,方便用户管理设备的在线状态 提供设备数据存储能力,便于用户进行设备海量数据存储于查询
  • 提供设备调试工具以及设备日志,便于用户快速调试设备以及定位设备问题
位置定位LBS
  • 提供基于基站的定位能力,支持三网的2G/3G/4G基站定位,覆盖大陆及港澳台地区
  • 支持NB-IoT基站定位,满足NB设备的位置定位场景
  • 提供7天连续时间段位置查询,可查询在定位时间段内任意7天段的历史轨迹
远程升级OTA
  • 提供对终端模组的远程FOTA升级,支持2G/3G/4G/NB-IoT/WIFI等类型模组
  • 提供对终端MCU的远程SOTA升级,满足用户对应用软件的迭代升级需求
  • 支持升级群组以及策略设置,支持完整包和差分包升级
消息队列MQ

基于分布式技术架构,具有高可用性、高吞吐量、高扩展性等特点 支持TLS加密传输,提高传输安全性 支持多个客户端对同一队列进行消费 支持业务缓存功能,具有削峰去谷特性

数据可视化View
  • 免编程,可视化拖拽配置,10分钟完成物联网可视化大屏开发
  • 提供丰富的物联网行业定制模版和行业组件 支持对接OneNET内置数据、第三方数据库、Excel静态文件多种数据源
  • 自动适配多种分辨率的屏幕,满足多种场景使用
人工智能AI

提供人脸对比、人脸检测、图像增强、图像抄表、车牌识别、运动检测等多种人工智能能力 通过API的方式为用户提供,方便能力集成和使用

视频能力Video
  • 提供视频平台,直播以及端到端解决方案等多种视频能力 提供设备侧和应用侧的SDK,帮助快速实现视频监控、直播等设备及应用能力
  • 支持Onvif视频的设备通过视频网关盒子可实现接入平台

边缘计算Edge

  • 支持私有化协议适配、协议转换能力,满足各类设备接入平台需求
  • 支持设备侧就近部署,提供低时延、高安全、本地自治的网关能力
  • 支持“云-边”协同,可实现例如AI能力云侧推理,在边缘侧执行

应用开发环境

  • 提供全云端在线应用构建能力,帮助用户快速定制云上应用
  • 支持SaaS应用托管于云端,提供开发、测试、打包、一键部署等能力
  • 提供通用领域服务沉淀至环境,如支付、地图等领域服务能力
  • 提供行业业务建模基础模型,可视化UI拖拽流程编排

3.3 资源模型

产品(product)

用户的最大资源集为产品,产品下资源包括设备、设备数据、设备权限、数据触发服务以及基于设备数据的应用等多种资源,用户可以创建多个产品。

设备(device)

设备为真实终端在平台的映射,真实终端连接平台时,需要与平台设备建立一一对应关系,终端上传的数据被存储在数据流中,设备可以拥有一个或者多个数据流。

数据流与数据点

数据流用于存储设备的某一类属性数据,例如温度,湿度,坐标等信息;平台要求设备上传并存储数据时,必须以key-value的格式上传数据,其中key即为数据流名称,value为实际存储的数据点,value格式可以为int、float、string、json等多种自定义格式。

APIkey

APIkey为用户进行API调用时的密钥,用户访问产品资源时,必须使用该产品目录下对应的APIkey。

触发器(trigger)

触发器为产品目录下的消息服务,可以进行基于数据流的简单逻辑判断并触发HTTP请求或者邮件。

应用(application)

应用编辑服务,支持用户以拖拽控件并关联设备数据流的方式,生成简易网页展示应用。

四、bearpi HarmonyOS设备开发

4.1 OneNET操作

进入控制台

物联网mqtt 属于哪一层 mqtt在物联网中的应用_嵌入式

选择多协议设备

物联网mqtt 属于哪一层 mqtt在物联网中的应用_上传_02

添加产品

物联网mqtt 属于哪一层 mqtt在物联网中的应用_物联网_03

物联网mqtt 属于哪一层 mqtt在物联网中的应用_物联网_04

物联网mqtt 属于哪一层 mqtt在物联网中的应用_#define_05

物联网mqtt 属于哪一层 mqtt在物联网中的应用_物联网mqtt 属于哪一层_06

物联网mqtt 属于哪一层 mqtt在物联网中的应用_物联网_07

添加设备

物联网mqtt 属于哪一层 mqtt在物联网中的应用_#define_08

物联网mqtt 属于哪一层 mqtt在物联网中的应用_上传_09

物联网mqtt 属于哪一层 mqtt在物联网中的应用_物联网_10

物联网mqtt 属于哪一层 mqtt在物联网中的应用_嵌入式_11

4.2 修改源码里的onenet配置信息

物联网mqtt 属于哪一层 mqtt在物联网中的应用_#define_12

物联网mqtt 属于哪一层 mqtt在物联网中的应用_上传_13

图中的配置信息与下面的宏对应

#define ONENET_INFO_DEVID "707810448"  //设备ID 信息1
#define ONENET_INFO_AUTH "20210416" //鉴权 信息4
#define ONENET_INFO_APIKEY "BGt8pSwgctLeSbpYtEu7q2rr4Uc="  //设备API 信息5
#define ONENET_INFO_PROID "434217" //产品ID 信息1
#define ONENET_MASTER_APIKEY "7=wUMI=w3hc4HLV5VcKRbtertfQ=" //产品apikey 信息2

#define Wifi_SSID "TPLINl" //自己的wifi名称
#define Wifi_PASSWORD "ppoopnnnm"  //wifi密码

4.2 核心API

通过一下的API将hi3861的数据通过mqtt上传到OneNET。

//mqtt 上传数据到指定主题
int onenet_mqtt_publish(const char *topic, const uint8_t *msg, size_t len);
//mqtt 上传字符串到 OneNET
int onenet_mqtt_upload_string(const char *ds_name, const char *str);
//mqtt 上传数字到 OneNET
int onenet_mqtt_upload_digit(const char *ds_name, const double digit);
//mqtt 上传二进制文件到 OneNET
int onenet_mqtt_upload_bin(const char *ds_name, const uint8_t *bin, size_t len);
//mqtt 通过路径上传二进制文件到 OneNET
int onenet_mqtt_upload_bin_by_path(const char *ds_name, const char *bin_path);

4.3 编译

hpm dist

4.4 下载

物联网mqtt 属于哪一层 mqtt在物联网中的应用_#define_14

4.5 测试

通过点击设备列表里,查看数据流

物联网mqtt 属于哪一层 mqtt在物联网中的应用_嵌入式_15

可以看到数据从设备端传到了云端。

物联网mqtt 属于哪一层 mqtt在物联网中的应用_物联网_16

五 扩展

OneNET还有很多特性可以满足不同的应用场合。

物联网mqtt 属于哪一层 mqtt在物联网中的应用_上传_17

用onenet studio搭建一个可视化平台。

物联网mqtt 属于哪一层 mqtt在物联网中的应用_物联网_18