QuecPython+Aws:快速连接亚马逊 IoT 平台

news2025/5/14 19:00:25

提供一个可接入亚马逊 Iot 平台的客户端,用于管理亚马逊 MQTT 连接和影子设备。

初始化客户端 

 Aws

class Aws(client_id,server,port,keep_alive,ssl,ssl_params)

参数:

  • client_id (str) - 客户端唯一标识。
  • server (str) - 亚马逊 Iot 平台服务器地址。
  • port (int) - MQTT 服务端口(默认端口为 1883,TLS 默认端口 为 8883)。
  • keep_alive (int) - 客户端 keep-alive 超时值,单位:秒(默认 60 秒)。
  • ssl (bool) - 是否使能 SSL/TLS(默认:False。如果设置为True,则必须设置 ssl_params 参数)。
  • ssl_params (dict) - SSL/TLS 连接参数。

示例:

>>> # Create Aws object
>>> import aws
>>> aws = aws.Aws(client_id, server, port, keep_alive=60,ssl=True,ssl_params={"cert": certificate_content,"key": private_content})

MQTT 接入 

使用 umqtt 模块接口来建立 AWS 云平台连接。

 aws.connect 

connect()

该方法用于建立 AWS 平台连接。

返回值:

None

 aws.disconnect 

disconnect()

改方法用于断开 AWS 平台连接。

返回值:

None

 aws.subscribe 

subscribe(topic) 

该方法用于订阅 mqtt 主题。

参数:

  • topic (str) - 订阅主题。

返回值:

None

 aws.publish 

publish(topic, payload)

该方法用于发布消息到对应topic。

参数:

  • topic (str) - 发布主题。
  • payload (dict) - 需要发送的数据。

返回值:

None

影子设备管理 

 aws.create_shadow 

create_shadow(shadow_name="", state="")

该方法用于创建影子设备。

参数:

  • shadow_name (str) - 影子设备名称(可选)。
  • state (dict) - 影子设备的初始状态参数(可选)。

返回值:

None

 aws.update_shadow 

update_shadow(shadow_name="", state="")

该方法用于更新影子设备名称和状态。

参数:

  • shadow_name (str) - 影子设备名称。
  • state (dict) - 影子设备的状态参数(可选)。

返回值:

None

 aws.get_shadow 

get_shadow(shadow_name="")

该方法用于获取影子设备状态。

参数:

  • shadow_name (str) - 影子设备名称。

返回值:

当前影子设备的状态数据。

 aws.delete_shadow 

delete_shadow(shadow_name="")

该方法用于删除一个影子设备。

参数:

  • shadow_name (str) - 影子设备的名称。

返回值:

None

 aws.connect_shadow 

connect_shadow(shadow_name="", topics=None)

该方法用于连接影子设备。

参数:

  • shadow_name (str) - 影子设备名称(可选)。
  • topics (list) - 关联 影子设备的 MQTT 主题列表(可选)。

返回值:

None

 aws.set_callback 

set_callback(topic_name, callback)

参数:

  • topic_name (str) - MQTT 主题。

  • callback (function) - topic_name 主题对应的回调函数。 函数原型:

      callback_function(msg)        
    
    • 回调函数参数:

      • msg : 字典类型,接收到的消息。

返回值:

None

Python Example 

import usr.aws as aws
import modem
import ujson
import sim  # Check if PIN verification is needed for your SIM card
import net

# AWS IoT credentials
certificate_content = """
-----BEGIN CERTIFICATE-----

-----END CERTIFICATE-----
"""

private_content = """
-----BEGIN RSA PRIVATE KEY-----

-----END RSA PRIVATE KEY-----
"""

client_id = 'qpthing'
server = 'abgka7vzgjoa0-ats.iot.eu-west-3.amazonaws.com'
port = 8883

def aws_callback(data):
    print("HELLO from 1234 topic callback")

def shadow_callback_get(data):
    print("HELLO from get accepted callback")

def shadow_callback_update(data):
    print("HELLO from update accepted callback")

def shadow_callback_delta(data):
    print("HELLO from update delta callback")

# Create AWS object
aws_obj = aws.Aws(client_id, server, port, keep_alive=60, ssl=True,
                  ssl_params={"cert": certificate_content, "key": private_content})
print("Created AWS object")

# Connect to AWS IoT
aws_obj.connect()
print("Connected to AWS IoT")

# Subscribe and publish
aws_obj.set_callback("1234", aws_callback)
aws_obj.subscribe("1234")
aws_obj.publish("7777", "Hello from QuecPython")
aws_obj.start()

# Shadow operations
aws_obj.create_shadow()
aws_obj.connect_shadow()
aws_obj.set_callback("$aws/things/qpthing/shadow/get/accepted", shadow_callback_get)
aws_obj.set_callback("$aws/things/qpthing/shadow/update/accepted", shadow_callback_update)
aws_obj.set_callback("$aws/things/qpthing/shadow/update/delta", shadow_callback_delta)
aws_obj.get_shadow()
aws_obj.update_shadow(state={"state": {"reported": {"wel

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Day22 Kaggle泰坦尼克号训练实战

​ 作业 自行学习参考如何使用kaggle平台,写下使用注意点,并对下述比赛提交代码 kaggle泰坦里克号人员生还预测 一、流程 思路概述 数据加载 :读取泰坦尼克号的训练集和测试集。数据预处理 :处理缺失值、对分类变量进行编码、…

深入浅出之STL源码分析7_模版实例化与全特化

1.引言 显示实例话和全特化的区别,之前我们在讨论类模版的时候,讨论过,他俩不是同一个概念,类模版中你如果全特化了,还是需要实例化才能生成代码,但是对于函数模版,这个是不同的,函…

2025 Mac常用软件安装配置

1、homebrew 2、jdk 1、使用brew安装jdk: brew install adoptopenjdk/openjdk/adoptopenjdk8 jdk默认安装位置在 /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home 目录。 2、配置环境变量: vim ~/.zshrc# Jdk export JAVA_HOM…

容器技术 20 年:颠覆、重构与重塑软件世界的力量

目录 容器技术发展史 虚拟化技术向容器技术转变 Docker的横空出世 容器编排技术与Kubernetes 微服务的出现与Istio 工业标准的容器运行时 容器技术与 DevOps 的深度融合​ 无服务架构推波助澜 展望未来发展方向 从 20 世纪硬件虚拟化的笨重,到操作系统虚拟…

cmake:test project

本文主要探讨cmake在测试和项目中的应用。 add_test add_test(NAME <name> COMMAND <command> [<arg>...] [CONFIGURATIONS <config>...] [WORKING_DIRECTORY <dir>] [COMMAND_EXPAND_LISTS])  add_test(NAME test_uni COMMAND $<TARGET_F…

C++开发过程中的注意事项详解

目录 C++开发过程中的注意事项详解 一、内存管理:避免泄漏与资源浪费 1.1 使用智能指针管理动态内存 1.2 避免手动内存管理的陷阱 1.3 利用RAII机制管理资源 1.4 容器与内存分配 二、安全性:防御攻击与未定义行为 2.1 输入验证与安全编码 2.2 使用安全的通信协议 2…

第六天:Java数组

数组 数组概述 数组是相同类型数据的有序集合。数组中的元素可以是任意数据类型&#xff0c;包括基本类型和引用类型数组描述是相同类型的若干个数据&#xff0c;按照一定的先后顺序排列组合而成。数组下标从0开始。 数组声明与创建 数组的声明 int[] nums;//声明一个数组…

李沐动手深度学习(pycharm中运行笔记)——09.softmax回归+图像分类数据集+从零实现+简洁实现

09.softmax回归图像分类数据集从零实现简洁实现&#xff08;与课程对应&#xff09; 目录 一、softmax回归 1、回归 vs 分类 2、经典分类数据集&#xff1a; 3、从回归到分类——均方损失 4、从回归到多类分类——无校验比例 5、从回归到多类分类——校验比例 6、softmax和…

Qt获取CPU使用率及内存占用大小

Qt 获取 CPU 使用率及内存占用大小 文章目录 Qt 获取 CPU 使用率及内存占用大小一、简介二、关键函数2.1 获取当前运行程序pid2.2 通过pid获取运行时间2.3 通过pid获取内存大小 三、具体实现五、写在最后 ​ 一、简介 近期在使用软件的过程中发现一个有意思的东西。如下所示&a…

嵌入式学习笔记 - 运算放大器的共模抑制比

一 定义 共模抑制比&#xff08;Common Mode Rejection Ratio, ‌CMRR‌&#xff09;是衡量差分放大器&#xff08;或差分电路&#xff09;抑制共模信号能力的关键指标。它在电子工程中尤为重要&#xff0c;特别是在需要处理微弱信号或对抗环境噪声的场景中。 核心概念 ‌共…

牛客周赛 Round 92-题解

牛客周赛 Round 92-题解 A-小红的签到题 code #include<iostream> #include<string> using namespace std; string s; int main() {int n;cin >> n;cout << "a_";for (int i 0; i < n - 2; i )cout << b;return 0; }B-小红的模…

【PVE】ProxmoxVE8虚拟机,存储管理(host磁盘扩容,qcow2/vmdk导入vm,vm磁盘导出与迁移等)

【PVE】ProxmoxVE8虚拟机&#xff0c;存储管理&#xff08;host磁盘扩容&#xff0c;qcow2/vmdk导入vm&#xff0c;vm磁盘导出与迁移等&#xff09; 文章目录 1、host 磁盘扩容2、qcow2/vmdk导入vm3、vm 磁盘导出与迁移 1、host 磁盘扩容 如何给host扩容磁盘&#xff0c;如增加…

Umi+React+Xrender+Hsf项目开发总结

一、菜单路由配置 1.umirc.ts 中的路由配置 .umirc.ts 文件是 UmiJS 框架中的一个配置文件&#xff0c;用于配置应用的全局设置&#xff0c;包括但不限于路由、插件、样式等。 import { defineConfig } from umi; import config from ./def/config;export default defineCon…

C# Newtonsoft.Json 使用指南

Newtonsoft.Json (也称为 Json.NET) 是一种适用于 .NET 的常用高性能 JSON 框架&#xff0c;用于处理 JSON 数据。它提供了高性能的 JSON 序列化和反序列化功能。 安装 通过 NuGet 安装 基本用法 1. 序列化对象为 JSON 字符串 using Newtonsoft.Json;var product new Prod…

数字电子技术基础(五十七)——边沿触发器

目录 1 边沿触发器 1.1 边沿触发器简介 1.1.1 边沿触发器的电路结构 1.3 边沿触发的D触发器和JK触发器 1.3.1 边沿触发的D型触发器 1.3.2 边沿触发的JK触发器 1 边沿触发器 1.1 边沿触发器简介 对于时钟触发的触发器来说&#xff0c;始终都存在空翻的现象&#xff0c;抗…

VC++ 获取CPU信息的两种方法

文章目录 方法一&#xff1a;使用 Windows API GetSystemInfo 和 GetNativeSystemInfo (基本信息)编译和运行代码解释 方法二&#xff1a;使用 __cpuid&#xff08;CPU序列号、特性等&#xff09;代码解释&#xff1a; 开发过程中需要使用 VC获取电脑CPU信息&#xff0c;先总结…

编程技能:字符串函数02,strcpy

专栏导航 本节文章分别属于《Win32 学习笔记》和《MFC 学习笔记》两个专栏&#xff0c;故划分为两个专栏导航。读者可以自行选择前往哪个专栏。 &#xff08;一&#xff09;WIn32 专栏导航 上一篇&#xff1a;编程技能&#xff1a;字符串函数01&#xff0c;引言 回到目录 …

特励达力科LeCroy推出Xena Freya Z800 800GE高性能的800G以太网测试平台

Xena Freya Z800 800GE 是由全球领先的测试与测量解决方案提供商特励达力科公司&#xff08;Teledyne LeCroy&#xff09;开发的高性能以太网测试平台&#xff0c;专为满足从10GE到800GE数据中心互连速度的需求而设计。特励达力科公司在网络测试领域拥有超过50年的技术积累&…

docker 日志暴露方案 (带权限 还 免费 版本)

接到了一个需求&#xff0c;需求的内容是需要将测试环境的容器暴露给我们的 外包同事&#xff0c;但是又不能将所有的容器都暴露给他们。 一开始&#xff0c;我分别找了 Portainer log-pilot dpanel 它们都拥有非常良好的界面和容器情况可视化。 但&#xff0c;缺点是&am…

【软考-高级】【信息系统项目管理师】【论文基础】风险管理过程输入输出及工具技术的使用方法

风险管理概念 项目风险是一种不确定的事件或条件&#xff0c;一旦发生&#xff0c;会对项目目标产生某种正面或负面的影响。项目风险既包括对项目目标的威胁&#xff0c;也包括促进项目目标的机会。 风险源于项目之中的不确定因素&#xff0c;项目在不同阶段会有不同的风险。…