文档历史

修订记录

版本 日期 作者 变更表述
1.0 2023-04-24 Pawn.zhou 初始版本

QuecPython接入阿里云操作文档

简介

基于MQTT协议连接到阿里云物联网平台,设备快速连云,支持“一机一密和“一型一密”两种认证方式。

应用场景说明

通过阿里云物联网平台对同一产品下的设备进行管理,处理设备事件,完成消息转发,OTA升级等应用功能。

功能应用流程

阿里云物联网平台

详细文档请查看:https://help.aliyun.com/document_detail/145493.html

名称解释

连接三元组:三元组指的是ProductKey(产品标识)DeviceName(设备名)DeviceSecret(设备密钥),是设备与物联网平台建立连接时的认证信息。

一机一密:每个设备烧录其唯一的设备证书(ProductKey、DeviceName 和 DeviceSecret),当设备与物联网平台建立连接时,物联网平台对其携带的设备证书信息进行认证。

一型一密:同一产品下所有设备可以烧录相同产品证书(即 ProductKey 和 ProductSecret ),设备发送激活请求时,物联网平台进行产品身份确认,认证通过,下发该设备对应的 DeviceSecret

平台地址

创建实例

  • 进入物联网平台

    aliyun_2.png

  • 选择实例,根据需求选择,试用选择公共实例即可

    image-20230322101737405

  • 实例概览

    image-20230322102046889

创建产品

  • 点击实例进行产品创建

    image-20230322102235862

  • 按需填写产品创建信息

    image-20230322102434008

  • 产品列表展示

    image-20230322102516271

查看产品信息

  • 产品信息包含ProductKey 和 ProductSecret

    image-20230322102731999

创建设备

  • 选择产品进行设备创建

    image-20230322102731999

  • 添加设备

    image-20230322102805164

  • 手动编辑设备信息

    image-20230322102932866

  • 设备创建完成后处于未激活状态

    image-20230322103049475

查看设备信息

  • 查看设备信息,设备信息包含ProductKey(产品标识)DeviceName(设备名)DeviceSecret(设备密钥)

    image-20230322103634903

QuecPython连接阿里云

QuecPython 官网地址:https://python.quectel.com

开发环境搭建

设备调试

  • 打开电脑设备管理器,查看端口

    image-20230322114434665

  • 选择 Quectel USB MI05 COM Port串口,使用QPYcom工具打开该串口

    image-20230322114711697

  • 查询SIM卡状态和拨号状态

    API 使用以及说明查阅Wiki文档:https://python.quectel.com/doc/API_reference/zh

    >>> import sim
    >>> sim.getStatus()  # 返回1表示SIM状态正常
    1
    >>> import dataCall
    >>> dataCall.getInfo(1,2)  # 成功返回拨号信息
    (1, 0, [1, 0, '10.145.246.10', '211.138.180.2', '211.138.180.3'], [1, 0, '::', '::', '::'])
    >>> 
    

设备连云

阿里云API 使用以及说明查阅Wiki文档:https://python.quectel.com/doc/API_reference/zh

  • 导入阿里云API

    >>> from aLiYun import aLiYun
    
  • 创建aliyun连接对象

    >>> from aLiYun import aLiYun
    
    >>> productKey = "a1YoiRfLSbV"
    >>> DeviceName = "QuecPyhon_Dev"						
    >>> DeviceSecret = "a86aadbbe78de7b8248adfc09e458bb9"
    >>> productSecre = None
    >>>
    >>> ali_obj = aLiYun(productKey, productSecre, DeviceName, DeviceSecret)
    
  • 注册事件回调函数

    >>> def event_callback(topic, data):
    ...     print("aliyun callback recv: {}".format(data))
    ...     
    ...     
    ... 
    >>> ali_obj.setCallback(event_callback)
    
  • 设置连接参数并连接平台,state为0时表示连接成功,连接成功后调用start方法

    >>> clientID = "Quecpython"
    >>> clean_session = False
    >>> keepAlive = 300
    >>> reconn = True
    
    >>> state = ali_obj.setMqtt(clientID, clean_session=False, keepAlive=300,reconn=True)
    >>> state
    0
    >>> ali_obj.start()
    

    云端查看设备状态,由创建时未激活状态变成在线状态

    image-20230322133745959

订阅Topic

  • 根据平台订阅规则选择操作权限为订阅的Topic

    /a1YoiRfLSbV/${deviceName}/user/get:$ {deviceName}替换成我们的设备名称即可,例如"/a1YoiRfLSbV/QuecPyhon_Dev/user/get"

    image-20230322134239010

    >>> ali_obj.subscribe("/a1YoiRfLSbV/QuecPyhon_Dev/user/get")
    0
    >>> 
    

数据上行

  • 发布主题消息到平台,Topic选择操作权限为发布的进行数据上报

    >>> ali_obj.publish("/a1YoiRfLSbV/QuecPyhon_Dev/user/update", "Hello, Aliyun!")
    True
    >>> 
    

    云端查看设备上行消息

    image-20230322135259133

    image-20230322135342205

数据下行

  • 找到设备订阅的Topic,选择发布消息

    image-20230322135552300

    image-20230322135630333

    设备查看平台下行数据,通过我们注册的回调函数接收数据

    image-20230322135957158

注意事项

  • 设备进行云连接时需确认网络状态,例如SIM卡是否能够注网,设备是否拨号成功
  • 确保所用模组包含阿里云连接API可供使用
  • Topic注意操作权限