自制APP连接OneNET---实现数据监控和下发控制(MQTT)

      最后更新:2022-06-10 04:58:54 手机定位技术交流文章

      文章目录

      • 前言
      • 一、前期准备
      • 二、功能介绍
        • 1.自制的APP页面显示
        • 2、串口助手界面
        • 3,OneNET平台显示
      • 3.单片端子功能的实现
        • 1. 修改 OneNET 正式提供的程序
        • 2、主函数代码
        • 上传数据到APP
        • 4、命令处理
      • APP端函数的实现
        • 1.连接MQTT服务器
        • 2、实现订阅与发布
        • 3、APP显示数据
        • 4、APP下发命令
      • 总结

      前言

      本机的主要功能是将OneNET的MQTT服务器连接到自制移动应用程序,同时接收和显示平板的数据,并远程控制平板上的LED灯。
      虽然OneNET有应用程序管理,它可以实现移动终端控制面板,但这有点简单,没有达到完成水平,教室几乎无法通过。

      一、前期准备

      1,STM32F103C8T6最低系统板
      ESP8266-01S模块
      3.在OneNET平台创建MQTT协议产品并创建两个设备
      安装E4A软件,软件不是几百万下载链接

      二、功能介绍

      1.自制的APP页面显示

      由于它是连接的OneNET MQTT服务器,地址端口是固定的和不变的。
      产品ID、设备ID和授权信息可以从OneNET平台获得,这没什么可说的。
      订阅按钮: EndTopic主题订阅主题
      发布按钮:发布主题是AppToic消息,消息内容为12345
      三个绿色框分别是轻度值、温度值和湿度值。 这里的温度湿度是自调整的,而不是实际的温度湿度。
      第一个开关:用主题AppToic,KEY:1或KEY:0发布消息
      第二个开关:发布主题AppToic,LED 1:1或LED 1:0的讯息

      2、串口助手界面

      EndTopic是单片终端消息发布主题
      "Light":152.7, "Temp":104, "Humi":104}是消息内容
      AppTopic是一个从 app 端发布的信息主题
      这是消息的内容
      在这里插入图片描述

      3,OneNET平台显示

      在APP和单片端口上的设备在线显示。
      在这里插入图片描述

      3.单片端子功能的实现

      1. 修改 OneNET 正式提供的程序

      (1)从原来的STM32F103RC变为STM32F103C8
      (2)在全球宏定义中更改STM32F10X_HD为STM32F10X_MD
      (三)替换原先的start_stm32f10x_hd。 删除s的启动文件并添加start_stm32f10x_md.s
      启动文件
      在h文件中,将HSE_VALUE宏的值从原来的12M变为8M
      在c文件上方的三个宏定义分别填充了连接平台的三个元素
      在c中,系统需要连接热点名称和密码
      (7)其他例子中的OneNet_SendData()端口;函数
      (8)端口传感器采集数据和LED(PC13)初始化代码
      在这里插入图片描述

      2、主函数代码

      上传数据到APP

      上传有关数据的代码如下:

      数据封装函数
      该功能是将数据装入JSON格式.

      4、命令处理

      当命令从APP端接收时,命令处理器OneNet_RevPro()被调用以根据消息内容控制单片机。
      该函数的内部代码部分如下:

      APP端函数的实现

      该部分主要讨论如何制作手机应用,以连接到OneNET平台,获取数据和命令来控制LED灯光。 该应用是用E4A中文Android编程开发的,编程思维和C语言非常相似,是中文编程,只需一天就能掌握。

      1.连接MQTT服务器

      访问云平台主要依靠上E4A的 mqtt通信组件,这个组件命令有八种方法,七个事件。从单片编程的角度来看,方法相当于函数,可以人为的去调用,事件相当于中断,不需人为调用。连接到OneNET的MQTT服务器使用连接服务器方法。
      调用连接服务器方法需要通过七个参数,参数一是服务器地址端口,例如OneNET的MQTT服务器地址和端口;参数2填入产品ID;参数3填入授权信息;参数4填入设备ID;通过点击连接按钮,你可以调用连接服务器的方法,实现访问云平台的功能。

      2、实现订阅与发布

      订阅和发布分别使用 mqtt 通讯组中的订阅和发布方法,并通过相应的按钮点击事件分别调用这两个方法。
      订阅和出版程序如下写.

      调用订阅消息方法必须传递两个参数,参数一是订阅对象,为了接收单片端口发出的主题消息,这里的订阅是EndTopic. 参数2是消息策略.你可以填进0,1,2,这里填入0,指示只发送一个转发消息,收不收都不关心,这是因为单片端口会发出主题消息几次,所以你不必每次收到它。
      调用释放方法必须通过四个参数,参数一是消息主题,在这里填“AppTopic”;参数二是消息内容,参数三是消息策略,在这里填1

      3、APP显示数据

      由于消息不仅是光值,而且是温度和湿度,数据在单片端口以JSON格式包装,然后再释放。
      当应用程序结束时收到消息时,它触发 mqtt通信中的接收事件,在这事件里面,我们用E4A中的JSON操作组件分析消息内容,在JSON对象中存储分析处理的内容,然后使用JSON操作组件内文本值方法获取JSON对象中指定的数据成员的值,最后, 将此值分配给相应的显示标签.
      接收消息事件程序如下:

      4、APP下发命令

      这里,例如,光开关的控制,其他控制功能类似,如下面所示,光开关组件的状态在事件程序中被更改。

      单片端口收到APP端口发出的讯息后,消息解包函数提取数据包的主题、消息内容和消息策略。如果消息策略为1,则先返回Ack到服务器上,然后判断是否有程序设计的命令字符串在消息内容中,如果这样, 执行相应的程序.

      总结

      如果你需要它,你可以请我获取源代码,如果我有的话,我会回答。

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/26939.html

          热门文章

          文章分类