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

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

初始化客户端

Aws

python 复制代码
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 连接参数。

示例:

python 复制代码
>>> # 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

python 复制代码
connect()

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

返回值:

None

aws.disconnect

python 复制代码
disconnect()

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

返回值:

None

aws.subscribe

python 复制代码
subscribe(topic) 

该方法用于订阅 mqtt 主题。

参数:

  • topic (str) - 订阅主题。

返回值:

None

aws.publish

python 复制代码
publish(topic, payload)

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

参数:

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

返回值:

None

影子设备管理

aws.create_shadow

python 复制代码
create_shadow(shadow_name="", state="")

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

参数:

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

返回值:

None

aws.update_shadow

python 复制代码
update_shadow(shadow_name="", state="")

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

参数:

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

返回值:

None

aws.get_shadow

python 复制代码
get_shadow(shadow_name="")

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

参数:

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

返回值:

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

aws.delete_shadow

python 复制代码
delete_shadow(shadow_name="")

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

参数:

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

返回值:

None

aws.connect_shadow

python 复制代码
connect_shadow(shadow_name="", topics=None)

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

参数:

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

返回值:

None

aws.set_callback

python 复制代码
set_callback(topic_name, callback)

参数:

  • topic_name (str) - MQTT 主题。

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

    python 复制代码
      callback_function(msg)        
    • 回调函数参数:

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

返回值:

None

Python Example

python 复制代码
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
相关推荐
数字新视界12 小时前
如何通过数字化管理提升IT资产管理系统的效率与准确性?
物联网·数据中心·dcim·动环监控·新人首发
胡楚昊1 天前
借Polar IOTS一道困难挑战题简单入门蓝牙流量分析
物联网·蓝牙
神一样的老师2 天前
【兆易创新GD32VW553开发板试用】天气时钟设计与调试实战
单片机·嵌入式硬件·物联网
怎么就重名了2 天前
mosquitto在windows上的安装和测试
物联网
搜佛说2 天前
sfsEdgeStore用极致轻量化打破工业物联网网关的硬件瓶颈 重新定义边缘存储新标准
物联网
HiWooiot20182 天前
工厂局域网远程监测:制造企业轻量化数字化转型解决方案
物联网
云天AI实战派2 天前
Agentic AI 全流程实战:用 OpenAI on AWS 搭一个餐饮补货智能体,从 API 调用到容器化上线
人工智能·云计算·aws
电子科技圈3 天前
芯科科技在蓝牙亚洲大会展示汽车与边缘AI前沿蓝牙创新技术, 解锁车用、家居、健康及工商业等应用场景
人工智能·科技·嵌入式硬件·mcu·物联网·网络安全·汽车
三佛科技-134163842123 天前
PD65W快充电源方案LP8841SD+LP35118N(高频QR反激、BOM简洁,小体积,过认证)
单片机·嵌入式硬件·物联网·智能家居·pcb工艺
珠海西格电力3 天前
零碳园区产业园管理系统的全场景源网荷储氢协同调度功能是如何实现的
大数据·运维·人工智能·物联网·能源