阿里云物联网平台python ADK 发布/订阅

基础知识学习参考:
1、使用消息通讯Topic
2、python link SDK

一、环境变量配置

1、python3.6:下载安装
2、安装paho-mqtt 1.4.0版本

pip install paho-mqtt==1.4.0

3、安装安装Link SDK最新版本

pip install aliyun-iot-linkkit     

4、下载python ADK demo文件:下载
5、解压pycharm打开

二、MQTT订阅

1、填入了ProductKey、DeviceName等参数信息
在这里插入图片描述
2、订阅信息替换
通过lk.to_full_topic(“xxx/xxx”)快速生成一个topic。to_full_topic是一个Topic自动生成接口,在上一步已经填入了ProductKey、DeviceName等参数,该接口调用后将返回一个字符串,其值等同于/YourProductKey/YourDeviceName/xxx/xxx。
在这里插入图片描述

3、订阅结果通过on_subscribe_topic通知用户:

lk.on_subscribe_topic = on_subscribe_topic
def on_subscribe_topic(mid, granted_qos, userdata):
    print("on_subscribe_topic mid:%d, granted_qos:%s" %
          (mid, str(','.join('%s' % it for it in granted_qos))))
    pass
            

granded_qos为订阅Topic列表对应的QoS返回结果,正常值为0或1,128表示订阅失败。
4、接收与处理来自云端的消息,通过on_topic_message()回调告知用户:

lk.on_topic_message = on_topic_message
def on_topic_message(topic, payload, qos, userdata):
    print("on_topic_message:" + topic + " payload:" + str(payload) + " qos:" + str(qos))
    pass
            

5、通过物联网平台在线调试测试代码,先运行代码再调试顺序不要错:
在这里插入图片描述
输入3,granded_qos为订阅Topic列表对应的QoS返回结果,128表示订阅失败了。在这里插入图片描述
在这里插入图片描述

原因是通过lk.to_full_topic(“xxx/xxx”)快速生成的topic缺少前面的sys/
在这里插入图片描述
此时我们不使用lk.to_full_topic(“xxx/xxx”)方法生成topic,直接输入正常的topic
在这里插入图片描述
在这里插入图片描述
运行代码后输入3,granded_qos为订阅Topic列表对应的QoS返回结果,正常值为0或1,这里返回了1就是正常订阅了,通过日志也可以看到成功了。
在这里插入图片描述
再次调试
在这里插入图片描述
控制台可查看到调试的订阅结果
在这里插入图片描述
至此订阅代码调试完成了。

三、MQTT发布

1、比如发布设备属性上报主题
在这里插入图片描述
2、发布消息逻辑
(1)通过调用publish_topic()实现将消息发送到云端:

rc, mid = lk.publish_topic(topic, payload)     

(2)消息发送后,云端是否成功接收通过on_publish_topic回调通知用户:

lk.on_publish_topic = on_publish_topic
def on_publish_topic(mid, userdata):
    print("on_publish_topic mid:%d" % mid)
            

publish_topic rc返回值为0则表明已经写入到了发送缓冲区,回调on_publish_topic表明publish成功。

(3)代码修改,保证topic正确,消息格式可以从日志中复制
在这里插入图片描述
3、运行代码输入5,控制台日志可以看到topic拼接得到正确,rc返回的0

在这里插入图片描述
4、日志中确认是否有发布成功日志
在这里插入图片描述
至此,订阅/发布代码逻辑都已调通。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/651291.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

自定义函数python:深入解析与实操

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言:函数的命名与规范 二、函数命名:遵循规范,易于…

Linux 批量网络远程PXE

一、搭建PXE远程安装服务器 1、yum -y install tftp-server xinetd #安装tftp服务 2、修改vim /etc/xinetd.d/tftpTFTP服务的配置文件 systemctl start tftp systemctl start xinetd 3、yum -y install dhcp #---安装服务 cp /usr/share/doc/dhc…

springboot 集成 es--未完结

基于es7.10.x版本 一、前提知识 常见的两种方式:spring boot提供的API 和 ES 官方提供的API ES官方: RestHighLevelClient: 适用于复杂、更细粒度控制的Elasticsearch 操作 spring boot: ElasticsearchRestTemplate&#xff1a…

arXiv AI 综述列表(2024.05.20~2024.05.24)

公众号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群) 每周末更新,完整版进群获取。 Q 群在群文件,VX 群每周末更新。 目录 1. Beyond Traditional Single Object Tracking: A …

OSPF减少LSA更新量1

OSPF的LSA优化 一、汇总——优化骨干区域 (1)域间汇总ABR设备基于某个区域的1/2类LSA计算所得的最佳路由,共享给其他区域时,进行汇总传递。 [r2]ospf 1 [r2-ospf-1]area 1——明细路由所在区域,该ABR设备必须和明细路由在同一区域 [r2-ospf…

flink程序本地运行报: A JNI error has occurred和java.lang.NoClassDefFoundError

1.问题描述 在idea中运行flink job程序出现如下错误: Error: A JNI error has occurred, please check your installation and try again Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/flink/api/common/io/FileInputFormat …

再见PS,Canva Create正式上线

再见,Photoshop! Canva Create 正式上线,太疯狂了!! Canva是一款著名的免费在线AI图像生成器 构想你的创意,然后将其添加到你的设计中。使用最佳的AI图像生成器,观察你的文字和短语变换成美丽…

关于搜索引擎链路

一、搜索引擎的的链路 简单流程如下,一般都包括query理解,召回,粗排,精排,重排。 二、query理解,查询词处理 对于进来的query需要有很多道工序做处理。才能让搜索引擎的效果更好、更智能。 2.1 分词 分词…

OrangePi AIpro 开箱初体验及语音识别样例

OrangePi AIpro 开箱初体验及语音识别样例 一、 前言 首先非常感谢官方大大给予这次机会,让我有幸参加此次活动。 OrangePi AIpro联合华为精心打造,采用昇腾AI技术路线,具体为4核64位处理器AI处理器,集成图形处理器,…

Lin网络一:DHCP与FTP

目录 1、了解DHCP服务 2、使用DHCP服务有哪些好处 3、DHCP的分配方式 4、DHCP的租约过程 客户机请求IP地址 服务器确定租约 重新登陆 上述总结 配置: 5、传输文件到Linux服务器的常用工具: 1、FTP 文件传输协议 2、FTP传输模式: 3、FTP控制…

maven的下载以及配置的详细教程(附网盘下载地址)

文章目录 下载配置IDEA内部使用配置 下载 1.百度网盘下载 链接: https://pan.baidu.com/s/1LD9wOMFalLL49XUscU4qnQ?pwd1234 提取码: 1234 2.解压即可 配置 1.打开安装文件下conf下的settings.xml文件,我的如下 2.修改配置信息(目的是为了修改本地…

Linux 磁盘管理命令tune2fs mkisofs cfdisk sfdisk parted

文章目录 3.Linux 磁盘管理命令3.26 tune2fs:文件系统调整案例练习 3.27 mkisofs:建立ISO9660 映象文件案例练习 3.28 cfdisk:磁盘分区案例练习 3.29 sfdisk:硬盘分区工具程序案例练习 3.30 parted:磁盘分区工具案例练习 3.Linux 磁盘管理命令 3.26 tune2fs:文件系统调整 作用…

汇编:比较跳转

在16位汇编语言(如x86汇编)中,比较指令用于比较两个操作数的大小,通常用于条件跳转、循环控制等逻辑操作,比较指令(如CMP)会根据操作数的比较结果设置标志寄存器中的相关标志位 比较指令影响的…

深入理解布瑞克(break)逻辑与嵌套循环的奥秘

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言:布瑞克逻辑是什么? 二、布瑞克逻辑在嵌套循环中的应用 1.…

倩女幽魂手游攻略:赚银搬砖干货分享,轻松从0开始!

在倩女幽魂手游中,搬砖是许多玩家用来赚取银两和其他资源的主要方式之一。通过完成各种任务、参与活动以及合理利用市场交易,玩家可以积累大量的财富。以下是详细的搬砖攻略,帮助你在游戏中获得更多收益。 一、日常搬砖任务 日常任务 每天的…

找不到vcruntime140.dll等140dll的解决方法,怎么才能快速的修复?

找不到vcruntime140.dll等140dll要怎么办?以上这两个其实都是属于dll文件来的,它们的缺失会导致某些程序直接运行不了,你需要重新的进行修复,然后程序才可以运行下去,下面一起来了解一下找不到vcruntime140.dll等140dl…

深度神经网络——什么是自动编码器?

自动编码器 自动编码器(Autoencoders)是无监督学习领域中一种重要的神经网络架构,它们主要用于数据压缩和特征学习。 自动编码器的定义: 自动编码器是一种无监督机器学习算法,它通过反向传播进行训练,目标…

二叉树尾部分

1.二叉树的销毁 2.二叉树的层序遍历 3.判断二叉树是否为完全二叉树 4.二叉树的性质 1.二叉树的销毁 以后序的方式遍历销毁左右子数,因为前序和中序销毁的话根会被销毁而找不到左右子树的位置,后序的根访问在最后,可以找到左右的子树位置。…

基于C#开发web网页管理系统模板流程-主界面管理员录入和编辑功能完善

前言 紧接上篇->基于C#开发web网页管理系统模板流程-登录界面和主界面_c#的网页编程-CSDN博客 已经完成了登录界面和主界面,本篇将完善主界面的管理员录入和编辑功能,事实上管理员录入和编辑的设计套路适用于所有静态表的录入和编辑 首先还是介绍一下…

声学特征在膝关节健康诊断中的应用分析

关键词:膝关节声发射、膝关节生物标志物、因果关系、机器学习 声学膝关节健康评估长期以来一直被看作是一种替代临床可用医学成像工具的替代方法,如声发射技术是通过检测膝关节在运动过程中产生的微小裂纹或损伤引起的声波信号,从而评估关节的…