摘要:本文主要讲述使用MQTT方式对接华为云IoT平台的具体过程。

使用的方案:目标板为STM32L431BearPI(带E53扩展板); TCPIP功能由开发板的ESP8266提供;MQTT使用Paho-Client-Embeded;IoT对接接口采用V5版本接口;Demo选择target的MQTTdemo。

整个开发分为两个部分:云端开发、设备侧开发。云端开发包括创建产品、创建设备;设备侧开发包括根据方案配置功能、编译烧录、调试。

云端开发

创建产品模型

产品模型其实就是用户设备的抽象。用编程术语来解释就是产品模型是Class,设备是对象。关于产品模型的介绍以及如何创建产品模型可以参考创建产品

本文最后创建的产品模型如下:

设备属性包括:温度、湿度、光照强度、LED状态、Motor状态。设备命令包括两条:控制LED ON/OFF,控制Motor ON/OFF。

创建设备

当产品模型创建完毕之后,我们可以创建基于该产品模型的设备。设备-->注册设备。根据对话框填写对应的信息。本文为了方便创建的设备标识为demoTest,秘钥为012345678(该设备已经删除,请勿连接)。结果如下:

注册成功之后如下:

至此,我们已经注册了端侧设备,并可以在我们的设备-->所有设备中看到我们新注册的设备。

设备端开发

设备端的开发主要包括配置工程、编译烧录、调试几个步骤。下文基于此逐一进行介绍。

工程配置

由于SDK是一个全栈的软件,包含所有的代码,因此我们需要告知编译器哪些文件需要编译、怎么编译这些文件,这个工作主要是由menuconfig完成。关于工程配置指导可以参考工程配置示范

进入到target/STM32L431_BearPi目录下,输入menuconfig(macos或者linux输入menuconfig.py)即可进入到配置界面。

确认进入SDK的配置。

开发板的串口以及DEMO选择

设置AT串口波特率和模组匹配;设置设备ID和秘钥,其和在IoT平台上创建设备时候的设置一致。

TCPIP配置

在Network下,选择TCPIP功能,并设置esp8266模式,并设置热点的SSID和PWD。

配置SSL

配置MBEDTLS的主要原因是,IoT平台生成MQTT的三元组的时候需要使用到HMAC算法。使能TLS并选择mbedtls并配置为CERT模式。

配置MQTT协议

在Network菜单下使能MQTT。此处配置的MQTT为标准MQTT协议。

配置IoT MQTT接入服务

在OC菜单下,使能OC MQTT(可以选择关闭OC COAP以及OC LWM2M)。

此处我们配置的为MQTT 接入IOT的流程;没有使能标准DEMO是因为我们使用target下的demo.

输入Q并保存退出,会发现我们刚才的配置会保存在.config文件中。

再输入genconfig(genconfig.py)会生成或者更新iot_config.h文件。Makefile依据.config文件选择哪些组件编译;编译器会根据iot_config.h文件决定怎么编译这个组件。

至此我们对于工程的配置已经完成。

编译烧录调试

编译

功能源码采用的是Makefile进行组织,理论上你有Make工具以及对应的交叉编译器都可以进行编译。本文使用的是AC6公司的SW4ST这个工具(基于Eclipse的一款工具)。其使用可以参考SW4ST使用

在SW4ST的菜单Project-->Clean下勾选清除后编译即可编译,并可以在Console下看到编译结果。

如果出现FLASH溢出行为,可以将不需要的组件(stime shell)通过配置禁用;或者在Makefile中修改优化等级从-O0 -g修改为-Os。

烧录

在SW4ST的菜单中Run-->Debug Configurations。

创建一个Ac6 STM32Debugging(使用的stlink)。

只需要保证MCU的型号一致即可。

对于BearPI而言,还需要设置重启模式,设置为软模式即可。

点击apply并debug,可以看到烧录完毕并进入调试界面。

调试

进入debug页面之后,我们可以像其他的IDE一样step into/step over/step out/run等调试。

同时可以接入串口,设置正确的波特率,会看到系统的输出信息。(wifi连接上并获取IP,向IoT平台订阅主题成功)。

联合调试

设备在线并上报信息

当端侧显示连接OK时候,我们在IoT平台可以看到对应的设备应该已经在线,并接收到对应数据。

IoT平台下发命令

在命令中选择同步命令下发,可以观测到端侧设备可以接收到相关的命令。

至此,我们将设备端和IoT平台的数据交互通道打通。

点击关注,第一时间了解华为云新鲜技术~

技术实践丨手把手教你使用MQTT方式对接华为IoT平台 华为云开发者社区的更多相关文章

  1. 动手实践丨手把手教你用STM32做一个智能鱼缸

    摘要:本文基于STM32单片机设计了一款基于物联网的智能鱼缸. 本文分享自华为云社区<基于STM32+华为云IOT设计的物联网鱼缸[玩转华为云]>,作者: DS小龙哥 . 1. 前言 为了 ...

  2. 【技术分享】手把手教你使用PowerShell内置的端口扫描器

    [技术分享]手把手教你使用PowerShell内置的端口扫描器 引言 想做端口扫描,NMAP是理想的选择,但是有时候NMAP并不可用.有的时候仅仅是想看一下某个端口是否开放.在这些情况下,PowerS ...

  3. .Net Core下使用MQTT协议直连IoT平台

    [摘要] .Net平台通过原生MQTT接口,作为南向设备对接OceanConnect平台 因为种种历史原因吧,目前华为平台上对.net的支持案例SDK确实比较少,当看到各种语言的SDK和Demo,唯独 ...

  4. 技术实践丨React Native 项目 Web 端同构

    摘要:尽管 React Native 已经进入开源的第 6 个年头,距离发布 1.0 版本依旧是遥遥无期."Learn once, write anywhere",完全不影响 Re ...

  5. 手把手教您将 libreoffice 移植到函数计算平台

    LibreOffice 是由文档基金会开发的自由及开放源代码的办公室套件.LibreOffice 套件包含文字处理器.电子表格.演示文稿程序.矢量图形编辑器和图表工具.数据库管理程序及创建和编辑数学公 ...

  6. Centos 7 手把手教你使用YUM方式安装并配置Nginx+php7-fpm+MySQL

    需要准备的内容 一台纯净系统的服务器 远程连接服务器的工具 (我这里使用Xshell) 安装nginx 链接上服务器后执行 yum install nginx  这里需要输入y 后回车,开始安装ngi ...

  7. 手把手教你用原始方式上传项目至GitHub

    小编GitHub:https://github.com/ds1889 首先你得注册一个自己的GitHub账号,注册网址:https://github.com/join 有了自己的账号以后,就可以进行登 ...

  8. 2021 技术展望丨AV1 在 RTC 应用实践中的现状与展望

    线上会议.在线教育.电商直播等多个场景的兴起,也使得实时互动技术从幕后走到台前,得到了更多人的关注.编解码.网络传输.计算机视觉等 RTE 相关的一系列技术也正焕发出更强的生命力.2021 年,在深度 ...

  9. 美女 Committer 手把手教你部署 Apache DolphinScheduler 单机版

    还在为如何部署Apache DolphinScheduler 发愁么?自上篇<美女 Committer 手把手教你使用海豚调度>的视频发布后,受到社区伙伴们的热烈欢迎.但个别小伙伴在部署这 ...

  10. 技术沙龙|京东云DevOps自动化运维技术实践

    自动化测试体系不完善.缺少自助式的持续交付平台.系统间耦合度高服务拆分难度大.成熟的DevOps工程师稀缺,缺少敏捷文化--这些都是DevOps 在落地过程中,或多或少会碰到的问题,DevOps发展任 ...

随机推荐

  1. java算法之排序算法大全

    ①排序 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作.排序算法,就是如何使得记录按照要求排列的方法.排序算法在很多领域得到相当地重视,尤其是在大量数据的处理方 ...

  2. 基于落点打分的井字棋智能下棋算法(C语言实现)

    本文设计了一种基于落地打分的井字棋下棋算法,能够实现电脑不败,所以如果玩家会玩的话,一般是平局. 算法核心 电脑根据对落子位置的打分,选择分数最高的位置,若不同落点分数相同则随机选择位置(随机选择就不 ...

  3. UVA908[Re-connecting Computer Sites]题解

    原题 1.题意分析 题意就是给你很多组数,对于每组数,有三组小数据.第一组小数据先输入一个n表示顶点数,然后再输入n-1条边表示初始边数.其它组小数据先输入一个数k,表示增加的边的数量,然后再输入k条 ...

  4. 虹科案例 | Redis企业版数据库帮助金融机构满足客户需求

    如今,传统银行与新兴银行正在进行激烈的竞争.随着苹果.亚马逊.谷歌等科技巨头正凭借其数字化.移动应用程序和云体验打入金融服务行业.为了进行公平竞争,传统银行也需要通过个性化的全渠道客户体验来实现交互式 ...

  5. 一些 trick 和思考收获

    2023.1.7 P1117 优秀的拆分 对于一眼看上去只能直接求解的题可以设置一些节点变为求每个节点的贡献 *2023 7.24 补充:这个 trick 也被称为设置关键点,通常用于区间长度固定或是 ...

  6. HarmonyOS UI 开发

    引言 HarmonyOS 提供了强大的 UI 开发工具和组件,使开发者能够创建吸引人的用户界面.本章将详细介绍在 HarmonyOS 中应用 JS.CSS.HTML,HarmonyOS 的 UI 组件 ...

  7. source insight 中添加指定类型文件

    以下为source insight 3.X版本的设置方法: source insight 中过滤某些格式的文件. 建立source insight工程后,先暂时不要急于添加文件. 打开options- ...

  8. python 执行脚本,并将输出打印到文件

    转载请注明出处: 在使用 python 直接执行脚本时,执行的相关输出会打印到当前的控制台,如果想输出到指定的文件,可以采用以下几种方式: 1.在启动时,使用 > 操作符,该操作符会将输出写入到 ...

  9. 使用DocumentBuilderFactory解析XML浅谈

    背景: 当使用Java解析XML时,可以使用javax.xml.parsers.DocumentBuilderFactory类.这个类提供了一种创建解析XML的文档对象的方式.DocumentBuil ...

  10. 可怕!.Net 8正式发布了,.Net野心确实不小!

    随着三天.NET Conf 2023的会议结束了,.Net 8正式发布了. .Net 8是官方号称有史以来性能最快的一个版本了. .Net 8 增加了数以千计的性能.稳定性和安全性改进,以及平台和工具 ...