阿里云物联网平台最完全的使用教程 您所在的位置:网站首页 物联网平台怎么搭建服务 阿里云物联网平台最完全的使用教程

阿里云物联网平台最完全的使用教程

2023-09-30 09:39| 来源: 网络整理| 查看: 265

简介:包括内容如下(详细到每一个细节和步骤,如果还不清楚,可以进入阿里云控制台创建工单,请教阿里的工程师) 使用环境:(使用蜂窝网进行过测试,和WiFi直连并无差别,可以直接使用)

在这里插入图片描述

一、阿里云账号说明 1、基本功能说明 进入阿里云官网创建主账号

https://www.aliyun.com/?spm=a2c4g.11186623.amxosvpfn.2.15f5293ewZtPYC 创建完成之后,进入控制台并选择Access Key管理,如图所示 在这里插入图片描述

创建子账号,并将物联网平台的所有权限给予子账号,以后我们就用子账号进行各类操作,注意保存得到的三元组,这是接入物联网平台的关键之一 在这里插入图片描述 在这里插入图片描述

2、开通物联网服务

https://www.aliyun.com/product/iot?spm=5176.10695662.J_3717714080.2.1ce83318Gaytdw 选择开通即可,前两个月赠送的免费消息足够用了,选择进入管理控制台 在这里插入图片描述

https://iot.console.aliyun.com/lk/summary 在这里插入图片描述

指出来的这几个是需要用到的功能

二、物联网平台的基本使用 1、创建产品,如下图

在这里插入图片描述 在这里插入图片描述

2、添加设备

在这里插入图片描述 在这里插入图片描述

三、设备接入物联网平台 1、开发环境设置

https://help.aliyun.com/document_detail/98292.html?spm=a2c4g.11186623.6.683.7d5b1f19UYzxqv 环境win10,pycharm2020,python3.8(Ubuntu16 64-bit和Ubuntu18 arm架构同理) (1)python3.8的安装和pycharm的安装略过(python3.8需要安装pip下载工具) (2)环境配置 无需参考官方文档配置虚拟环境,直接用pycharm就好了 直接win+R进入win10命令行控制环境 输入:

pip install aliyun-iot-linkkit 2、连接

https://help.aliyun.com/document_detail/98293.html?spm=a2c4g.11186623.6.684.61c84912ccMTDp 使用一机一密方式进行

from linkkit import linkkit import sys #一机一密认证 lk = linkkit.LinkKit( host_name="cn-shanghai", product_key="aG*******k", device_name="Test1", device_secret="****************") #连接上物联网平台后的回调,成功连接session_flag和rc返回0 def onconnect(sessionflag, rc, userdata): print("onconnect:%d,rc:%d:" % (sessionflag, rc)) pass #断开连接物联网平台后的回调,断开后rc返回1 def on_disconnect(rc, userdata): print("on_disconnect:rc:%d:" % rc) #当出现网络波动时,程序会自动循环调用连接,显示的效果为这两个回调函数会被一直调用 lk.onconnect = onconnect lk.ondisconnect = ondisconnect lk.connect_async() # 连接物联网平台 lk.startworkerloop() # 保持连接 print("connected") 注意

1、lk后面的是你创建产品设备对应的三元组| 2、注意所有的回调函数放在连接之前,程序会一直执行,只要出现相应的操作回调函数就会被调用,即只要连接上时,就输出rc=0,只要断开连接时,就输出rc=1 | 在这里插入图片描述

3、自定义MQTT通信 (1)创建自定义的Topic(注意:Topic的权限与代码中的函数要一一对应,例如权限为订阅,那么在通信时选择的应该是subscribe回调,可以接收到云端消息,发布同理)

在这里插入图片描述

Topic的名字是作为通信的凭证

(2)实现(首先需要连接上阿里云物联网平台,再构造逻辑进行相应操作,https://help.aliyun.com/document_detail/98295.html?spm=a2c4g.11186623.6.685.6d596dc9OWMDE9) from linkkit import linkkit import sys import time #一机一密认证 lk = linkkit.LinkKit( host_name="cn-shanghai", product_key="a*************Gk", device_name="Test1", device_secret="****************************") #连接上物联网平台后的回调,成功连接session_flag和rc返回0 def onconnect(sessionflag, rc, userdata): print("onconnect:%d,rc:%d:" % (sessionflag, rc)) pass #断开连接物联网平台后的回调,断开后rc返回1 def on_disconnect(rc, userdata): print("on_disconnect:rc:%d:" % rc) #订阅topic回调 def onsubscribetopic(mid, granted_qos, userdata): print("onsubscribetopic mid:%d, granted_qos:%s" % (mid, str(','.join('%s' % it for it in granted_qos)))) pass #取消订阅回调 def onunsubscribetopic(mid, userdata): print("onunsubscribetopic mid:%d" % mid) pass #接收消息回调,调用函数时会一直执行print,效果为:如果调用该方法,发布消息的topic每次发布消息都会被输出到控制台并打印出来 def ontopicmessage(topic, payload, qos, userdata): print("ontopicmessage:" + topic + " payload:" + str(payload) + " qos:" + str(qos)) pass #当出现网络波动时,程序会自动循环调用连接,显示的效果为这两个回调函数会被一直调用 lk.onconnect = onconnect lk.ondisconnect = ondisconnect lk.onsubscribetopic = onsubscribetopic # 订阅topic回调 lk.onunsubscribetopic = onunsubscribetopic # 取消订阅topic回调 lk.ontopicmessage = ontopicmessage # 接收topic消息回调 lk.connect_async() # 连接物联网平台 lk.startworkerloop() # 保持连接 print("connected") #增加while循环的作用:保证物联网平台是连接上之后再进行通信的 while True: try: msg = input() # 获取从控制台的输入 except KeyboardInterrupt: sys.exit() else: if msg == "1": lk.disconnect() elif msg == "2": lk.connect_async() elif msg == "3": # 输入为3时,订阅get这个topic,每个订阅的topic只需订阅一次即可,会在物联网平台的设备topic列表中显示 rc, mid = lk.subscribetopic(lk.tofull_topic("user/get")) # 注意topic只需要写成这样的格式即可,格式需要完全一致,全称会自动补全,不需要输入设备名 if rc == 0: # rc返回值为0时则表示订阅成功 print("subscribe topic success:%r, mid:%r" % (rc, mid)) else: print("subscribe topic fail:%d" % rc) elif msg == "4": # 取消订阅 rc, mid = lk.unsubscribetopic(lk.tofull_topic("user/get")) if rc == 0: print("unsubscribe topic success:%r, mid:%r" % (rc, mid)) else: print("unsubscribe topic fail:%d" % rc) elif msg == "5": # 发布消息“123”给自定义的reciver这个topic rc, mid = lk.publishtopic(lk.tofull_topic("user/test"), "123") if rc == 0: print("publish topic success:%r, mid:%r" % (rc, mid)) else: print("publish topic fail:%d" % rc) elif msg == "6": # 同时订阅多个topic rc, mid = lk.subscribetopic([(lk.tofull_topic("user/sender"), 1), (lk.tofulltopic("user/get"), 1), (lk.tofulltopic("user/test"), 1)]


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有