标题: 安信可A9/A9G GPRS模块10分钟使用机智云开发M2M应用教程 [打印本页]

作者: 机智小子    时间: 2018-1-3 10:34
标题: 安信可A9/A9G GPRS模块10分钟使用机智云开发M2M应用教程
前言安信可 A9/A9G GPRS(GPS) 模块因为有GPRS,相比WIFI,它可以随时随地联网,实现24小时稳定在线,不受地理位置限制,而且提供基站定位和GPS定位功能。提供AT固件使用起来也非常简单,几条命令就快速配置成功。
另外,AT指令固件集成了机智云接入协议,使用简单的几条命令就可以快速接入机智云,从而在非常短的时间内实现M2M应用。
因此这里介绍如何使用A9/A9G模块快速建立一个简单的M2M应用。
目标准备



A9G






A9





A9/A9G pudding开发板(链接稍后放出)





物联网卡





USB转串口模块

开发过程


注册登录机智云




产品




产品创建




创建数据点




数据点




应用数据点

ATOK


READY AT




设备在线




上下线信息

定长产品:
[td]
命令数值(十六进制)数值(十进制)含义



ACTION_CONTROL0x011App控制命令,设备收到手需要根据数据改变状态,然后上报状态
ACTION_READ_STATUS0x022App读取状态,设备收到后上报状态
ACTION_READ_STATUS_ACK0x033App读取状态后,设备返回状态
ACTION_REPORT_STATUS0x044设备主动上报状态
ACTION_TRANS_RECV0x055接收到MQTT原始数据
ACTION_TRANS_SEND0x066MQTT原始数据发送
ACTION_PUSH_OTA0xfe254OTA
变长产品:
[td]
命令数值(十六进制)数值(十进制)含义



ACTION_CONTROL0x1117App控制命令,设备收到手需要根据数据改变状态,然后上报状态
ACTION_READ_STATUS0x1218App读取状态,设备收到后上报状态
ACTION_READ_STATUS_ACK0x1319App读取状态后,设备返回状态
ACTION_REPORT_STATUS0x1420设备主动上报状态
ACTION_TRANS_RECV0x1521接收到MQTT原始数据
ACTION_TRANS_SEND0x1622MQTT原始数据发送
ACTION_PUSH_OTA0xfe254OTA
发送数据的方式有三种格式,类似AT+CIPSEND,如下图,更详细说明见AT指令文档



设备推送数据

在后台可以看到数据已经成功推送



后台数据记录

上面的数据推送是随便推送的,在这里没有任何含义!
那么如何推送数据点呢,我们创建了一个数据点,且因为是变长产品,根据协议(最后会详细说明,这里可以先不深入探究),我们需要发送两个字节的数据,报告灯为开:0x0101,报告灯为关:0x0100;因为是设备主动报告数据而且产品是变长,action为20:



上传数据点


在后台可以看到,推送数据点成功




后台数据




机智云App




扫描二维码




已绑定设备




设备页面




设备收到消息(这里收到ACTION为18的数据即读取命令,数据内容没显示是因为是非ASCII码)

点击控制开关,设备会收到控制命令



点击App中的开关,发送控制命令




设备收到控制命令(这里收到ACTION为17的数据即控制命令,数据内容没显示是因为是非ASCII码)

如果设备推送设备状态(定长ACTION为4,变长ACTION为20)或者响应App的查询命令推送状态(定长ACTION为3,变长ACTION为19),App界面也会实时更新状态



设备推送数据


在App可以看到数据发生了变化



App灯从关变成了开状态

在后台也可以看到数据内容




后台数据内容

关于机智云的定长数据和变长数据定长定长就是每次传输都传输所有数据点的信息(相对简单,如果编程经验比较少,或者数据量不大或者通信频率不高建议直接选择这种方式),比如建了2个数据点,长度分别为4个字节,则每次推送都要推送两个数据点的数据即8个字节,如图:



定长传输

变长变长相对来说复杂一些!
在推送数据时,由于数据时变长的,服务器需要知道硬件上传的是哪些数据点的数据,所以需要有标志位来表示传输的是哪些数据点,所以在数据的开头会有数据点标志位,每位代表一个数据点(位数不足8位高位补0补足8位,即传输的单位是字节)。举个例子:
创建了一个数据点,数据点类型为bool类型(1位),则传输数据应该为:
0x0100(False) 或者 0x0101(True)
创建了两个数据点,数据点类型为bool类型,
当只传输第一个数据点:
0x0100(False) 或者 0x0101(True)
当只传输第二个数据点:
0x0200(False) 或者 0x0201(True)
当传输两个数据点:
0x0300(False False) 或者 0x0301(False True)或者0x0302(True False)或者0x0303(True True)
同理,三个数据点标志位占3位,比如同时传输三个数据点数据,且三个数据点的数据都为1,数据为:0x0707
如果数据点不是bool类型,比如有一个bool 类型和一个2个字节的数据



两个数据

可以使用虚拟设备可以方便地进行调试,:




虚拟设备


实际发送的数据为:



后台数




作者: 向日葵男人    时间: 2020-10-28 10:30
这个挺好,就是没有图片啊,
作者: 向日葵男人    时间: 2020-10-28 10:31
写的不错!就是看不到图片啊
作者: nmgbtzyf    时间: 2021-7-29 12:57
AT+GIZSTART="345e7431159646bbaa96e3ff50227bfe","a7276d3d6ea043d181f8017586e41ae9"

+GIZWITS: register fail

+CME ERROR: 50
Dns,fail,try url

failure, pelase check your network!

作者: nmgbtzyf    时间: 2021-7-29 12:58
这样的错误,登陆失败是什么意思

作者: nmgbtzyf    时间: 2021-7-29 12:58
可以打电话CCID都没问题
作者: 毛豆111111    时间: 2022-1-26 14:24
nmgbtzyf 发表于 2021-7-29 12:57
AT+GIZSTART="345e7431159646bbaa96e3ff50227bfe","a7276d3d6ea043d181f8017586e41ae9"

+GIZWITS: regis ...

层主解决了这个问题没有,同样遇到这样的问题了




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1