QuecPython-阿里云接入介绍

引言:

文档主要介绍如何使用“企业物联网平台”,企业物联网平台提供全托管的实例服务,无需自建物联网的基础设施即可便捷地接入和管理设备,具有低成本、高可靠、高性能、易运维的优势。下面主要从MQTT连接方式讲解,通过阅读本文,您将了解到QuecPython连接“企业物联网平台”的过程操作和平台与模组的实验操作。

硬件准备

本实验硬件需求:一块QuecPython开发板即可。

云端设置

阿里云首页:阿里云-计算,为了无法计算的价值

读者自行注册账号,开通《物联网平台》实例,实例分公共实例和企业版实例,主要区别如下:

公共实例:公共实例一般供测试环境使用,部署于阿里云经典网络;不支持固定接入IP。

企业版实例:部署于阿里云VPC网络的物联网平台,独享每个实例资源;支持固定接入IP。

更详细的可以到阿里云帮助文档查阅。

下面给大家展示下从注册账号到设备连接阿里云的图文解说:

进入阿里云首页,注册账号:一般填入邮箱、密码、手机号。

注册完成后,进入到“物联网平台”

创建实例

使用限制

地域

实例类型

限制

华东2(上海)、日本(东京)、新加坡、美国(弗吉尼亚)、德国(法兰克福)、美国(硅谷)

企业版实例

查看实例的可用资源:由已购买的同时在线设备数规格决定。

旧版公共实例

10,000,000

华东2(上海)

新版公共实例

500

华北2(北京)、华南1(深圳)

企业版实例

查看实例的可用资源:由购买的同时在线设备数规格决定。

本文的介绍使用的是公共示例

这里的地域选择要特别注意,连接阿里云时会使用到。

SERVER:${YourProductKey}.iot-as-mqtt.${YourRegionId}.aliyuncs.com

其中:${YourProductKey}:请替换为设备所属产品的的ProductKey,可从物联网平台控制台设备详情页获取。

${YourRegionId}:在创建实例时选择的地区,替换为您的 Region ID。

在QuecPython套件API中,底层已经自动适配SERVER的连接地址了。

创建产品

添加设备

获取三元组

点进“设备”可以获取DeviceName,用于三元组登录平台。

点进“产品”可以获取ProductKey、ProductSecret,用于三元组登录平台。

三元组ProductKey、ProductSecret、DeviceName用于下个步骤生成连接密码

代码编写

在QuecPython开发之前确保开发板已经烧录Python固件。此部分有疑问的看官请自行到官网了解。

QuecPython官网-文档中心:https://python.quectel.com/doc

API 参考手册:https://python.quectel.com/doc/API_reference/zh/index.html

aLiYun套件介绍

实现接入可以使用QuecPython提供的API:

初始化阿里 IoT平台

aliyun = aLiYun(productKey, productSecret, DeviceName, DeviceSecret, MqttServer)

配置阿里 IoT 平台物联网套件的产品信息和设备信息

参数描述:

  1. productKey - 产品标识,字符串类型
  2. ProductSecret - 产品密钥,字符串类型,一机一密认证方案时,此参数传入None,同时云平台要开启动态注册开关。

    一型一密认证方案时,此参数传入真实的产品密钥
  3. devicename - 设备名称 ,字符串类型
  4. DeviceSecret - 可选参数,默认为None,设备密钥(一型一密认证方案时此参数传入None),字符串类型
  5. MqttServer - 可选参数,需要连接的服务器名称,默认为"{productKey}.iot-as-mqtt.cn-shanghai.aliyuncs.com",字符串类型

返回值描述:

返回aLiYun连接对象

        # 创建aliyun连接对象

        self.ali = aLiYun(

            self.productKey,

            self.productSecret,

            self.DeviceName,

            self.DeviceSecret)

        # 设置mqtt连接属性

        clientID = b'clientID'  # 自定义字符(不超过64)

        ret = self.ali.setMqtt(

            clientID,

            clean_session=False,

            keepAlive=60,

            reconn=True)  # False True

        # 设置回调函数

        self.ali.setCallback(self.sub_cb)

修改官方demo

把上面获取到的三元组信息填入代码中相对应的变量,即完成。

        self.productKey = "a1llZotKkCm"  

        self.productSecret = 'mj7qKfEn73y07gyK'

        self.DeviceSecret = None

        self.DeviceName = "Chic_001"

至此,代码完成,完整代码如下:

import utime

import checkNet

from aLiYun import aLiYun

import _thread

class aliyun_Class(object):

    def __init__(self):

        self.productKey = "a1llZotKkCm"  # 产品标识(参照阿里云应用开发指导)

        # 产品密钥(使用一机一密认证时此参数传入None,参照阿里云应用开发指导)

        self.productSecret = 'mj7qKfEn73y07gyK'

        self.DeviceSecret = None

        self.DeviceName = "Chic_001"  # 设备名称(参照阿里云应用开发指导)

        # self.subscribe_topic1 = "/" + self.productKey + "/" + self.DeviceName + "/user/123"

        # self.subscribe_topic2 = "/" + self.productKey + "/" + self.DeviceName + "/user/qq"

        # self.publish_topic1 = "/" + self.productKey + "/" + self.DeviceName + "/user/qq"

        self.subscribe_topic1 = "/broadcast" + "/" + self.productKey + "/" + "123"

        self.subscribe_topic2 = "/broadcast" + "/" + self.productKey + "/" + "123"

        self.publish_topic1 = "/broadcast" + "/" + self.productKey + "/" + "123"

       

        # 创建aliyun连接对象

        self.ali = aLiYun(

            self.productKey,

            self.productSecret,

            self.DeviceName,

            self.DeviceSecret)

        # 设置mqtt连接属性

        clientID = b'clientID'  # 自定义字符(不超过64)

        ret = self.ali.setMqtt(

            clientID,

            clean_session=False,

            keepAlive=60,

            reconn=True)  # False True

        # 设置回调函数

        self.ali.setCallback(self.sub_cb)

    def sub_cb(self, topic, msg):  # 回调函数

        print(

            "Subscribe Recv: Topic={},Msg={}".format(

                topic.decode(),

                msg.decode()))

    def ali_start(self):

        # 运行

        self.ali.start()

        print('Runing')

        # aLiYun.disconnect()

    def ali_subscribe_topic(self):

        # 订阅主题

        self.ali.subscribe(self.subscribe_topic1, qos=0)

        self.ali.subscribe(self.subscribe_topic2, qos=0)

    def ali_publish_topic(self):

        while True:

            ret = self.ali.getAliyunSta()

            print(ret)

            if ret == 0:

                try:

                    self.ali.publish(self.publish_topic1, "hello world", qos=0)

                except BaseException:

                    print('!!!!!!!!!!发送失败')

            utime.sleep_ms(500)

if __name__ == '__main__':

    # _thread.stack_size(8 * 1024)

   

    aliyunClass = aliyun_Class()

    aliyunClass.ali_subscribe_topic()

    aliyunClass.ali_start()

    _thread.start_new_thread(aliyunClass.ali_publish_topic, ())

下载验证

本实验的只有一个代码文件《Aliyun_file_class.py》,把脚本下载到模组中,运行起来,可以看到模组连上阿里云后,会不停进行自收发广播。

至此模组上云功能便已实现完成。

总结:

本次实验还是很简单的一个演示,只填写了三元组,利用QuecPython提供的aliyun套件接入平台,并没有过多的逻辑控制,相信大家上手后很容易能写出自己想要实现的逻辑功能。

附言:

后期小Q也会陆续分享其他QuecPython学习心得,欢迎各位看官沟通交流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值