一个基于异步编程的MQTT设备通信库
Project description
AIOEway - 异步MQTT设备交互库
一个基于Python异步编程的MQTT设备通信库,用于与IoT设备进行高效的双向通信。
特性
- 🚀 异步编程: 基于asyncio,支持高并发设备连接
- 🔒 安全连接: 支持TLS/SSL加密连接
- 📊 数据结构化: 内置设备信息和运行数据的结构化处理
- 🔄 双向通信: 支持设备信息查询和实时数据监控
- 📝 完整日志: 详细的连接和通信日志记录
- 🛠️ 易于使用: 简洁的API设计,快速上手
安装
pip install aioeway
快速开始
基本使用
import asyncio
from device_mqtt_client import DeviceMQTTClient
async def on_device_info(device_info):
print(f"设备信息: {device_info}")
async def on_device_data(device_data_list):
for data in device_data_list:
print(f"设备数据: 功率={data.gen_power}W, 温度={data.temperature}°C")
async def main():
# 创建客户端
client = DeviceMQTTClient(
device_model="MODEL001",
device_sn="SN123456",
username="your_username",
password="your_password",
broker_host="mqtt.example.com",
broker_port=1883,
use_tls=True
)
try:
# 连接到MQTT代理
if await client.connect():
print("连接成功!")
# 开始监控设备
await client.start_monitoring(
device_id="productCode",
device_sn="deviceNum",
info_callback=on_device_info,
data_callback=on_device_data
)
# 保持连接
await asyncio.sleep(60)
finally:
await client.disconnect()
if __name__ == "__main__":
asyncio.run(main())
同步请求设备信息
async def get_device_info():
client = DeviceMQTTClient(...)
if await client.connect():
# 同步获取设备信息
device_info = await client.request_device_info_and_wait(
device_id="productCode",
device_sn="deviceNum",
timeout=10.0
)
if device_info:
print(f"设备IP: {device_info.ip}")
print(f"WiFi: {device_info.wifi_ssid}")
print(f"固件版本: {device_info.app_firm_ver}")
await client.disconnect()
数据结构
设备信息 (DeviceInfo)
@dataclass
class DeviceInfo:
net_firm_ver: float # 网络模块固件版本
app_firm_ver: float # 主控模块固件版本
wifi_ssid: str # WiFi名称
ip: str # IP地址
wifi_is_normal: int # WiFi是否可用(0:是 1:否)
is_lock: int # 是否锁定(0:是 1:否)
board: List[Dict] # 板卡信息
设备运行数据 (DeviceData)
@dataclass
class DeviceData:
sort: int # 序号
input_voltage: float # 输入电压(V)
input_current: float # 输入电流(A)
grid_voltage: float # 电网电压(V)
grid_freq: float # 电网频率(Hz)
gen_power: float # 发电功率(W)
gen_power_today: int # 今日发电量(Wh)
gen_power_total: int # 总发电量(kWh)
temperature: float # 温度(℃)
err_code: int # 错误码
duration: int # 工作时长(s)
MQTT主题格式
- 设备信息推送:
{device_id}/{device_sn}/info/post - 设备数据推送:
{device_id}/{device_sn}/data/post - 设备信息获取:
{device_id}/{device_sn}/info/get - 设备数据获取:
{device_id}/{device_sn}/data/get - 信息请求:
{device_id}/{device_sn}/info/request - 数据请求:
{device_id}/{device_sn}/data/request
API 参考
DeviceMQTTClient
初始化参数
device_model: 设备机型码device_sn: 设备序列号username: MQTT用户名password: MQTT密码broker_host: MQTT代理服务器地址broker_port: MQTT代理服务器端口(默认1883)keepalive: 心跳间隔秒数(默认60)use_tls: 是否使用TLS加密(默认True)
主要方法
connect(): 连接到MQTT代理disconnect(): 断开连接subscribe_device_info(): 订阅设备信息subscribe_device_data(): 订阅设备数据request_device_info_and_wait(): 同步请求设备信息request_device_data_and_wait(): 同步请求设备数据start_monitoring(): 开始监控设备stop_monitoring(): 停止监控设备
要求
- Python 3.7+
- aiomqtt >= 2.0.0
许可证
MIT License
贡献
欢迎提交Issue和Pull Request!
更新日志
v1.0.0
- 初始版本发布
- 支持异步MQTT通信
- 支持TLS加密连接
- 完整的设备信息和数据结构
- 同步和异步API支持
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
aioeway-1.0.0.tar.gz
(37.5 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aioeway-1.0.0.tar.gz.
File metadata
- Download URL: aioeway-1.0.0.tar.gz
- Upload date:
- Size: 37.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9bbac07e4dc383a5df21210857d999ca1c16564a90af7589ec3f0e3f037be10b
|
|
| MD5 |
38ec06872618c1eb8f602f58a3436f9e
|
|
| BLAKE2b-256 |
18488046fdf734a68db5a4202e6aa621761f23ae326fc9233836fef4a759f845
|
File details
Details for the file aioeway-1.0.0-py3-none-any.whl.
File metadata
- Download URL: aioeway-1.0.0-py3-none-any.whl
- Upload date:
- Size: 9.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bef3d2d211ff993442f42a9a14ed311407a147db09bc1786b3ee344cfc54a413
|
|
| MD5 |
f02228e0412c01d9ed31e40239e1a36c
|
|
| BLAKE2b-256 |
9d8688687dd732df31fed4c306b8976fb729c8d738dc893879436e81f851e9fd
|