本系列博客学习由 安信可科技 - 官方博客 技术分享,如有疑问请留言或联系邮箱。

  • 1、A9G环境在windows上搭建并编译,串口打印 Hello GPRS
  • 2、A9G在微信公众号上的定位功能笔记分享;
  • 3、安信可A9G模块连接机智云APP教程;
  • 4、A9G模块/开发板GPS定位注意事项 && 坐标系转换
  • 5、A9G模组AT指令MQTT接入阿里云实现APP控制

    文章目录

    • 一、前言
    • 二、创建产品
    • 三、MQTT接入
      • 3.1 MQTT接入 && 加密算法浅析
      • 3.2 订阅主题
      • 3.3 发布消息

一、前言

A9G 是安信可推出的GSM/GPRS+GPS模组,提供串口转GPRS/短信息/语音通话/GPS定位等信息传输功能,被广泛应用于物联网/车载/电力环境检测等领域。今天带大家把A9G接入阿里云实现APP远程控制。
准备工作:

  1. 安信可A9G模组/开发板
  2. USB-TTL
  3. 阿里云飞燕平台账号

二、创建产品

这里我们创建一个插座,联网方式选择蜂窝(2G/3G/4G/5G)

选择设备面板,可以选择现有的面板,也可以自己创建面板,面板一定要和功能定义一致


生成配网二维码,每台设备都是由DeviceName生成唯一的配网二维码,设备激活后用云智能APP扫码即可绑定接入APP

三、MQTT接入

阿里云关于MQTT接入介绍传送门

3.1 MQTT接入 && 加密算法浅析

阅读完官方文档我们开始接入

AT+CGATT=1 //附着网络
AT+CGDCONT=1,"IP","CMNET" //设置 PDP 参数
AT+CGACT=1,1 //激活 PDP,正确激活以后就可以上网了

MQTT直连,第一次接入后设备状态变为激活状态,激活后即可扫码(上述由DeviceName生成唯一的配网二维码)绑定app

AT+MQTTCONN="a1uDrbj3G5U.iot-as-mqtt.cn-shanghai.aliyuncs.com",1883,"12345|securemode=3,signmethod=hmacmd5|",120,0,"HfUjaa2xtA2deN7W7l0z&a1uDrbj3G5U","650FC5786F4E143E9E24783B8D31A752"

这一串字符是什么意思呢,我们来看一下,
a1uDrbj3G5U.iot-as-mqtt.cn-shanghai.aliyuncs.com这一段是接入域名,格式为
${YourProductKey}.iot-as-mqtt.${YourRegionId}.aliyuncs.com
其中${YourProductKey}为设备的ProductKey,${YourRegionId}为地域,国内可使用cn-shanghai
端口号固定为1883;
12345|securemode=3,signmethod=hmacmd5|这一段为mqttClientId,用于MQTT的底层协议报文,格式为:

${clientId}|securemode=3,signmethod=hmacmd5|
其中
${clientId}为设备的ID信息。可取任意值,长度在64字符以内;
securemode为安全模式,TCP直连模式设置为securemode=3,TLS直连为securemode=2;
signmethod为算法类型,支持hmacmd5和hmacsha1;

HfUjaa2xtA2deN7W7l0z&a1uDrbj3G5U这一段是User Name,格式为

${YourDeviceName}&${YourProductKey}
其中${YourDeviceName}为设备的DeviceName,${YourProductKey}为设备的ProductKey
650FC5786F4E143E9E24783B8D31A752这一段为Password,可用password生成小工具生成

使用Password生成小工具的输入参数:

productKey:设备所属产品Key。可在控制台设备详情页查看。
deviceName:设备名称。可在控制台设备详情页查看。
deviceSecret:设备密钥。可在控制台设备详情页查看。
timestamp:(可选)时间戳。
clientId:设备的ID信息,与Client ID中${clientId}一致。
method:选择签名算法类型,与Client ID中signmethod确定的加密方法一致。

当然我们也可以在程序里面实现这个算法

  1. 拼接参数
    把clientId、deviceName、productKey依次连接起来,这里我的clientId为12345,deviceName为HfUjaa2xtA2deN7W7l0z,productKey为a1uDrbj3G5U,则拼接起来是这样的:
    clientId12345deviceNameHfUjaa2xtA2deN7W7l0zproductKeya1uDrbj3G5U
  2. 加密
    指令中我选择了signmethod=hmacmd5,即加密算法为hmacmd5 ,对拼接结果进行hmacmd5加密,加密密钥为设备的DeviceSecret,加密后得到650FC5786F4E143E9E24783B8D31A752
    前面的博客中我有对hmacmd5的代码实现有过介绍,可以参考一下,传送门

3.2 订阅主题

设备属性设置的Topic为:

/sys/${productKey}/${deviceName}/thing/service/property/set

AT+MQTTSUB="/sys/a1uDrbj3G5U/HfUjaa2xtA2deN7W7l0z/thing/service/property/set",1,0

3.3 发布消息

设备属性上报的Topic为:
/sys/${productKey}/${deviceName}/thing/event/property/post

payload的格式为:
"{"id":"123","version":"1.0","params":{"powerstate":1},"method":"thing.event.property.post"}"
其中id可以为随机值,version为版本号,“params”:{“powerstate”:1}为上报的参数,“method”:"thing.event.property.post"固定就可以了。得到上报的指令为:
AT+MQTTPUB="/sys/a1uDrbj3G5U/HfUjaa2xtA2deN7W7l0z/thing/event/property/post","{"id":"123","version":"1.0","params":{"powerstate":1},"method":"thing.event.property.post"}",0,0,0

但是以上字符在模组上是识别不了,部分字符需要转义,所以,下面是正确的格式!

原字符 转义后
" \22
\r \0D
\n \0A

转义后得到的指令为:

AT+MQTTPUB="/sys/a1uDrbj3G5U/HfUjaa2xtA2deN7W7l0z/thing/event/property/post","{\22id\22:\22123\22,\22version\22:\221.0\22,\22params\22:{\22powerstate\22:1},\22method\22:\22thing.event.property.post\22}",0,0,0

消息成功发布后,app上的状态会同步

到这里我们就已经实现了A9G接入阿里云飞燕平台,并实现APP远程控制,如果需要开通语音控制的话,在阿里云控制台开通就可以了。用同样方法我们可以接入各种物联网设备,如电工照明、家居安防、智慧农业、智能楼宇等,实现远程控制!

  • 有疑问请留言,或邮箱:support@aithinker.com

【安信可A9G专题⑤】A9G模组AT指令MQTT接入阿里云实现APP控制相关推荐

  1. 移远 EC200x/EC600x/EG912Y 4G 系列模组 AT 命令 MQTT 接入 ThingsCloud 云平台

    移远 4G 系列模组 AT 命令 MQTT 接入 移远 4G 系列模组的 AT 命令支持 MQTT,请参考以下步骤,只需几分钟就可以接入云平台并上报数据,还可以从云平台下发命令实现远程实时控制. 如果 ...

  2. 安信可PB-01/02蓝牙模组实现远程OTA无线升级功能介绍,剖析整个实现原理和代码介绍。

    文章目录 一.安信可PB-01/02蓝牙模组 OTA简介 二.安信可PB-01/02蓝牙模组 FOTA实现流程 三.通过手机APP 完成安信可PB-01/02蓝牙模组的OTA演示 联系我们 一.安信可 ...

  3. ESP32/ESP8266/ESP32C3系列模组 AT固件MQTT 对接阿里物联网平台

    文章目录 一.前言 二.一机一密接入 三.一型一密接入 四.订阅&发布 4.1 订阅 4.2 发布 五.总结 一.前言 本文介绍如何使用AT指令MQTT接入阿里云物联网平台,包括一机一密.一型 ...

  4. 安信可的GPRS+GSM模组A9连接机智云的教程

    安信可的GSM+GPR模组连接机智云搭建教程,官网给的文档也有相应的教程.我这里纯数对于个人连接机智云的过程中做一个记录. 1.首次先准备好好模组+USB转TTL串口工具+安信可官网的串口助手. 2. ...

  5. 【AT指令使用】安信可ESP-32-S3/ESP-32-C3系列模组AT固件应用之Web Captive portal功能

    目录 前言 一.Captive portal功能原理 二.操作过程 1.烧录带有Captive portal功能的AT固件 2.模组开启Captive portal功能操作过程 3.手机部分的操作过程 ...

  6. 001-STM32+Air724UG(4G模组)基本控制篇(阿里云物联网平台)-使用MQTT接入阿里云物联网平台

    前言 这节测试下使用STM32+Air724UG 和 Android 和 微信小程序 和 网页端 接入阿里云物联网平台 当前的各种物联网平台整体思想是提供一个网页端让用户去注册设备 这个设备就对应一个 ...

  7. 【离线语音专题①】安信可最新离线语音模组VC系列出厂固件使用教程——SDK开源?

    文章目录 前言 一.使用前准备 1.通讯接口连接 2.开发板硬件说明 3.烧录说明 (1)JTAG烧录接线及烧录介绍 (2)UART串口升级接线及烧录介绍 二.模组出厂固件使用 1.指令词及指令码 2 ...

  8. 【 安信可海思Hi-12F模组】AT指令入门教程 接入鸿蒙智联

    文章目录 一.前言 二.创建产品 三.产品信息配置 3.1 AT+SYSVER 设置产品系统信息 3.2 AT+SYSPRAM 配置产品详细信息 3.3 AT+SYSTOKEN 设置产品 token ...

  9. 安信可PB系列蓝牙模组 APP Ble Mesh组网教程

    文章目录 一.前言 二.硬件准备 三.软件准备 四.AT指令集 五.APP组网示例 六.数据通信 一.前言 本文以PB-02开发板为例,介绍PB系列蓝牙模组通过安卓"PHY Mesh&quo ...

最新文章

  1. 快讯 | 首期“医工结合系列研讨会”汇聚清华力量,共促医工融合发展
  2. 配置Haproxy增加日志记录功能
  3. mysql5.6.4以下不支持多个字段类型为timestamp
  4. 请求的转发:RequestDispatcher对象处理请求的两个方法--forward和include
  5. 【Visual C++】游戏开发笔记二十一 游戏基础物理建模(三) 摩擦力系统模拟
  6. java小程序:求完全数
  7. 数据结构-排序基础代码
  8. c 语言比较三个字符串,C语言字符篇(三)字符串比较函数
  9. JDK5.0新特性系列---11.5.4线程 同步装置之Exchanger
  10. shell基础之pxe批量部署
  11. 检索计算机中word文件的词,电脑word搜索工具
  12. 硬件设计——串联直流稳压电源
  13. mysql实体完整性实现方法_MySQL数据库高级(一)——数据完整性
  14. 会计基础-会计账簿+对账+结账+财产清查+财务会计报告+会计核算程序
  15. No converter for [class xxx] with preset Content-Type ‘multipart/form-data’
  16. 秒杀场景的九个细节,细思极恐!
  17. 【wrodpress】wordpress发表文章后无法显示
  18. Java面试题基础系列228道(2),查漏补缺
  19. [博弈] LOJ#2471. 「九省联考 2018」一双木棋
  20. 第四章 照相机模型与增强现实

热门文章

  1. 小米笔记本 12.4 二合一 评测
  2. 关于Mysql使用时出现部分错误的总结
  3. 前端不止眼前的苟且,还有手中的泡面和西瓜
  4. 内核自带的基于GPIO的LED驱动学习(一)
  5. word 删除所有 ActiveX控件,重新启用word自动保存
  6. 大学毕业4年-回顾和总结(2)-钱,收入和支出
  7. Eclipse 使用 Maven 构建动态 Web 工程,默认无 java 目录的解决方法
  8. CSS基础介绍(三)
  9. idea 返回快捷键 屏幕 转动
  10. Microsoft Flow | 微信 | LDP 整合开发