0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于OpenHarmony的本地MQTT服务实现

福州市凌睿智捷电子有限公司 ? 2022-05-30 12:12 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一、MQTT协议简介

MQTT(消息队列遥测传输)是一个基于客户端-服务器的消息发布/订阅传输协议,是ISO标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。MQTT工作在TCP/IP协议栈上,是为硬件性能低下的远程设备以及网络状况不理想的情况下而设计的发布/订阅型消息协议。由于MQTT协议的轻量、简便、开放的特点使它适用范围非常广泛。在很多情况下,包括受限的环境中使用,广泛应用于物联网IoT)。MQTT协议在卫星链路通信传感器、医疗设备、智能家居、及一些小型化设备中已广泛使用。

本文使用小凌派RK2206开发板实现基于OpenHarmony的本地MQTT服务。小凌派RK2206开发板采用瑞芯微高性能、高性价比的RK2206芯片。RK2206芯片是一款低功耗、高集成的MCU无线局域网处理器,它可以应用于不同的应用领域,如物联网、可穿戴设备、家庭自动化、云连接等。小凌派RK2206开发板内置WIFI模块,外部接口丰富,使用一个小凌派RK2206开发板就能够轻松实现MQTT物联网多种应用。

二、硬件电路设计

如图1所示,为小凌派RK2206开发板支持的外部接口,本文使用小凌派RK2206开发板内置的WIFI和MQTT服务器通信。

87586468-dde6-11ec-b80f-dac502259ad0.png

图1 小凌派RK2206开发板

三、软件设计

1、主程序设计

在iot_mqtt_example函数中,通过LOS_TaskCreate函数创建iot_mqtt_thread线程,并设置线程优先级、线程堆栈大小等参数。


poYBAGKQJ3eAeIcXAAByrZFB5QA643.png


2、MQTT服务程序设计

iot_mqtt_thread函数中,开发板先连接WIFI,通过WIFI和PC端的MQTT服务器通信;WIFI连接成功后,初始化网络,初始化MQTT客户端;初始化完成后,连接MQTT服务端,注册消息接收函数message_receive;函数进入循环,5s向PC端MQTT服务器发送一次消息。


poYBAGKQJ62AMs_EAAHJorWKJF0077.png


3、MQTT消息接收程序设计

MQTT消息接收程序主要用于接收MQTT服务端下发的消息,接收到消息后,打印接收的信息。

pYYBAGKQJ9mAfpWTAAApi15Wo2c334.png



四、编译测试

1、修改MQTT服务端IP

PC端按键WIN + R键打开命令行CMD,执行命令ipconfig获取PC端的IP地址,如图2所示,PC端的IP地址为:192.168.1.164。

87969f08-dde6-11ec-b80f-dac502259ad0.png

图2 获取PC端IP地址

对应修改代码中的MQTT_SERVER_IP为查询到PC端IP地址192.168.1.164,MQTT_SERVER_PORT修改为MQTT服务器端口号1883。代码如下所示:


#define MQTT_SERVER_IP "192.168.1.164"

#define MQTT_SERVER_PORT 1883


2、下载MQTT代理工具mosquitto

根据PC电脑位数选择对应的安装包,32位系统下载x86后缀的安装包,64位系统下载x64后缀的安装包,本文选择mosquitto-2.0.9a-install-windows版本进行测试。

32位系统下载地址:https://mosquitto.org/files/binary/win32/,如图3所示。

87ae795c-dde6-11ec-b80f-dac502259ad0.png

图3 32位系统安装包

64位系统下载地址:https://mosquitto.org/files/binary/win64/,如图4所示。

87cafc4e-dde6-11ec-b80f-dac502259ad0.png

图4 64位系统安装包

下载mosquitto安装包后,点击安装mosquitto工具;安装完毕后,需要配置mosquitto,修改mosquitto安装路径下的mosquitto.conf文件,如图5所示。

87e12a14-dde6-11ec-b80f-dac502259ad0.png

图5 mosquitto配置文件

在mosquitto.conf文件末尾增加如下配置,其中,192.168.1.164为PC端IP地址,1883为MQTT服务器端口号,allow_anonymous为允许匿名登录。


listener 1883 192.168.1.164

listener 1883 localhost

allow_anonymous true


mosquitto安装配置完成后,需要开启mosquitto服务,右击打开我的电脑-管理-服务和应用程序-服务,找到Mosquitto Broker服务,如图6所示。

8801f3e8-dde6-11ec-b80f-dac502259ad0.png

图6 mosquitto服务

双击打开Mosquitto Broker服务,点击启动,开启Mosquitto服务,如图7所示。

88187d7a-dde6-11ec-b80f-dac502259ad0.png

图7 开启mosquitto服务

3、下载Eclipse Paho MQTT 工具

Paho MQTT工具下载地址:

https://repo.eclipse.org/content/repositories/paho-releases/org/eclipse/paho/org.eclipse.paho.ui.app/1.1.1/。

下载Paho软件包:org.eclipse.paho.ui.app-1.1.1-win32.win32.x86_64.zip。如图8所示。

88255b94-dde6-11ec-b80f-dac502259ad0.png

图8 Eclipse Paho MQTT工具下载地址

下载Paho软件包后,解压软件包,双击打开Paho.exe;进入Paho软件界面,点击右上角加号按键,添加一个MQTT服务器连接,如图9所示。

8849ba3e-dde6-11ec-b80f-dac502259ad0.png

图9 Eclipse Paho MQTT软件界面

4、WIFI连接

修改代码中的SSID和PASSWORD为使用WIFI的SSID和密匙,用于连接网络,设备通过WIFI访问PC端MQTT服务器。代码如下所示:


#define SSID "lzdz"

#define PASSWORD "12345678"


5、运行结果

例程代码编译烧写到开发板后,按下开发板的RESET按键,通过串口软件查看日志,串口打印MQTT初始化、连接等日志。


NetworkConnect...

MQTTClientInit...

MQTTConnect...

MQTTSubscribe...


连接

打开paho软件,点击连接,当连接成功时,连接状态显示为已连接;需要注意的是,如果出现连接失败,请尝试关闭PC防火墙再进行连接。

订阅

点击订阅添加按键,新增主题IOT_MQTT(主题名称需要与例程代码MQTTPublish函数传参的主题名称一致),点击订阅按键,此时,历史记录页面就开始显示接收的开发板上报信息,如图10所示。

8863ddd8-dde6-11ec-b80f-dac502259ad0.png

图10 订阅消息

发布

在发布主题栏,输入主题名称substopic(主题名称需要与例程代码MQTTSubscribe函数传参的主题名称一致),在消息栏输入消息hello world,点击发布,此时,历史记录页面显示已发布出的消息,如图11所示。

8882cce8-dde6-11ec-b80f-dac502259ad0.png

图11 发布消息

同时,开发板串口会同步显示接收到的消息日志,如下所示。


message arrived on topic substopic: hello world

message arrived on topic substopic: hello world


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • MQTT
    +关注

    关注

    5

    文章

    697

    浏览量

    23856
  • OpenHarmony
    +关注

    关注

    30

    文章

    3865

    浏览量

    18973
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【创龙TL3562-MiniEVM开发板试用体验】6、mosquitto实现MQTT

    清晰。 我瘫倒在地,笑了。 下面用mosquitto实现MQTT,点燃希望的LED Mosquitto 是一个轻量级的开源 MQTT 代理服务器(M
    发表于 08-03 17:11

    实战指南:AirTalk+MQTT实现双向语音对讲的开发全流程

    稳定高效的对讲系统。 Air8000 系列的 Airtalk 是基于 LuatOS 核心库的对讲方案,采用 MQTT 协议实现设备端、手机端、网页端的跨终端对讲,支持服务器搭建与三端系统部署。 对讲方案的核心特点包括:采用 8b
    的头像 发表于 07-28 17:41 ?205次阅读
    实战指南:AirTalk+<b class='flag-5'>MQTT</b><b class='flag-5'>实现</b>双向语音对讲的开发全流程

    《DNESP32S3使用指南-IDF版_V1.6》第五十五章 基于MQTT协议连接阿里云服务

    第五十五章 基于MQTT协议连接阿里云服务器 本章主要学习lwIP提供的MQTT协议文件使用,通过 MQTT 协议将设备连接到阿里云服务
    发表于 03-18 09:22

    MQTT物联网平台有哪些?有哪些功能?

    MQTT(Message Queuing Telemetry Transport)是一种基于客户端-服务器架构的发布/订阅模式的消息传输协议,它广泛应用于机器与机器的通信(M2M)以及物联网环境
    的头像 发表于 03-15 14:23 ?905次阅读
    <b class='flag-5'>MQTT</b>物联网平台有哪些?有哪些功能?

    【教程】使用NE2系列串口服务MQTT模式接入云平台实例

    在物联网技术持续发展的当下,设备之间的高效通信成为关键。亿佰特NE2系列串口服务器的MQTT模式,为众多设备的互联互通提供了便捷且可靠的解决方案。一设备与MQTT模式简介NE2系列串口服务
    的头像 发表于 02-27 19:35 ?662次阅读
    【教程】使用NE2系列串口<b class='flag-5'>服务</b>器<b class='flag-5'>MQTT</b>模式接入云平台实例

    服务本地网关的选择

    在当今的数字化时代,企业面临着越来越多的数据管理和处理需求。为了满足这些需求,企业可以选择使用云服务本地网关。这两种技术各有优势和劣势,企业在选择时需要根据自身的业务需求、成本预算、安全性要求等
    的头像 发表于 01-02 17:47 ?779次阅读

    采用华为云 Flexus 云服务器 X 实例部署 MQTT 服务器完成设备上云

    一、前言 1.1 开发需求 这篇文章讲解: 采用华为云最新推出的 Flexus 云服务器 X 实例 EMQX 服务器,搭建 MQTT 服务器,完成设备上云,
    的头像 发表于 12-26 18:12 ?641次阅读
    采用华为云 Flexus 云<b class='flag-5'>服务</b>器 X 实例部署 <b class='flag-5'>MQTT</b> <b class='flag-5'>服务</b>器完成设备上云

    如何使用HTTP服务器搭建本地Web网站

    最近在学习 ETH 模块,ETH 模块具有 HTTP 服务的功能,我将在本帖中探讨如何使用 HTTP 服务搭建一个本地 Web网站,并分享一些我所获得的经验。
    的头像 发表于 12-24 09:54 ?2792次阅读
    如何使用HTTP<b class='flag-5'>服务</b>器搭建<b class='flag-5'>本地</b>Web网站

    梯度科技成为AI Cloud MSP技术服务实验室首批成员单位

    近日,2024全球数字经济大会云·AI·计算国际合作论坛成功召开。会上,公布了AI Cloud MSP技术服务实验室首批成员单位,梯度科技凭借在人工智能云管理服务领域的卓越实力成为AI Cloud MSP技术服务实验室首批成员单
    的头像 发表于 12-18 10:07 ?780次阅读

    百问MQTT协议分析 - MQTT简述及协议报文格式组成

    16.1 mqtt协议介绍 16.1.1 概述 ?MQTT是一个客户端服务端架构的发布/订阅模式的消息传输协议。它的设计思想是轻巧、开放、简单、规范,易于实现。这些特点使得它对很多场景
    发表于 12-13 09:29

    全新NVIDIA NIM微服务实现突破性进展

    全新 NVIDIA NIM 微服务实现突破性进展,可助力气象技术公司开发和部署 AI 模型,实现对降雪、结冰和冰雹的预测。
    的头像 发表于 11-21 10:07 ?752次阅读

    HarmonyOS NEXT应用元服务开发Intents Kit(意图框架服务本地搜索方案概述

    一、概述 本地搜索是在HarmonyOS归一化搜索特性,开发者将应用/元服务内的功能和内容通过意图框架共享到HarmonyOS,即可实现“一步搜索,内容直达”。 二、典型场景 以“音乐垂域”的“歌曲
    发表于 11-06 10:59

    通过物通博联工业智能网关实现MQTT穿透

    MQTT服务器与网关下挂设备建立一个穿透通道,下发的指令可以直接到达设备而不需要经过网关,反之亦然。 这样做的好处在于可以减少数据中转的耗时,提升数据传输的效率,无论是数据上传和指令下达都能快速实现,对于特定场景的数据监控管理
    的头像 发表于 10-19 17:20 ?899次阅读
    通过物通博联工业智能网关<b class='flag-5'>实现</b><b class='flag-5'>MQTT</b>穿透

    ESP8266 通过 MQTT 协议实现 LED 的远程控制

    本文简要介绍了搭建 EMQX 服务实现基于 MQTT 协议远程控制 NodeMCU ESP8266 板载 LED 的解决方案。
    的头像 发表于 09-25 09:11 ?3265次阅读
    ESP8266 通过 <b class='flag-5'>MQTT</b> 协议<b class='flag-5'>实现</b> LED 的远程控制

    MQTT网关:物联网中的关键桥梁

    基于发布/订阅模式的轻量级通信协议,特别适用于低带宽、不稳定网络环境下的数据传输。MQTT网关则是连接物联网设备与消息代理服务器之间的桥梁,通过它,物联网设备能够高效、可靠地进行通信和数据交换。 MQTT网关的定义与功能
    的头像 发表于 08-22 14:15 ?863次阅读
    <b class='flag-5'>MQTT</b>网关:物联网中的关键桥梁