# mqtt.py 函数文档 MQTT客户端实现模块,负责与远程服务器的数据通信。 ## mqttClient 类 ### 初始化
python
def __init__(self, mqttaddr, AccessToken, ProjectKey, serverport)

- 功能: 初始化MQTT客户端
- 参数:
- mqttaddr: MQTT服务器地址
- AccessToken: 访问令牌
- ProjectKey: 项目密钥
- serverport: 服务器端口
- 初始化内容:
- 通信主题设置
- 连接状态标志
- 计数器初始化
- 回调函数注册 ### 通信功能 #### connect(self)
python
def connect(self)

- 功能: 首次连接MQTT服务器
- 实现:
1. 调用reconnect()建立连接
2. 添加MQTT任务到调度器
3. 设置2秒周期的任务监控 #### reconnect(self)
python
def reconnect(self)

- 功能: 重新连接MQTT服务器
- 实现:
1. 生成客户端ID
2. 创建MQTTClient实例
3. 设置回调函数
4. 建立连接
5. 订阅主题
6. 发送ping包 #### update(self, json_data)
python
def update(self, json_data)

- 功能: 发送数据到MQTT服务器
- 参数:
- json_data: 要发送的JSON格式数据
- 特性:
- 自动JSON序列化
- 异常处理保护 ### 数据处理 #### on_subcribe(self, topic, msg)
python
def on_subcribe(self, topic, msg)

- 功能: 订阅消息回调处理
- 参数:
- topic: 消息主题
- msg: 消息内容
- 处理流程:
1. JSON解析
2. 类型检查
3. 回调函数调用
4. 键值对处理 #### task_mqtt(self)
python
def task_mqtt(self)

- 功能: MQTT任务处理函数
- 实现:
- 检查新消息
- 定期ping服务器
- 异常重连处理 ### 辅助功能 #### send_info(self, dic_info, delay_Time)
python
def send_info(self, dic_info, delay_Time)

- 功能: 延时发送信息
- 参数:
- dic_info: 要发送的字典数据
- delay_Time: 延时时间(秒)
- 返回值: 是否成功发送 #### reg_callback(self, reg_addr, value)
python
def reg_callback(self, reg_addr, value)

- 功能: 注册回调函数
- 参数:
- reg_addr: 回调地址
- value: 回调函数 ## 全局函数 ### init_mqtt()
python
def init_mqtt()

- 功能: 初始化MQTT客户端
- 实现:
1. 读取配置文件
2. 创建MQTT客户端
3. 建立连接
- 返回值: MQTT客户端实例 ## 配置文件格式
json
{ "mqttaddr": "mqtt服务器地址",
"AccessToken": "访问令牌",
"ProjectKey": "项目密钥",
"serverport": 端口号
}
## 数据格式示例
python
send_data = {
"Flow01": 4.503, # 流量1
"Flow02": 1.501, # 流量2
...
"Flow12": 2.501, # 流量12
"Temperature": 120.01, # 温度
"Status": "start heating", # 状态
"TimeRemaining": "500:00:00" # 剩余时间
}
## 使用示例 ### 基本使用
python
from mqtt import init_mqtt # 初始化MQTT
mqtt_client = init_mqtt() # 准备数据
data = {
"Temperature": 25.5,
"Status": "Running"
} # 发送数据
if mqtt_client:
mqtt_client.update(data)
### 带回调的使用
python
def on_message(data):
print(f"Received: {data}") mqtt_client = init_mqtt()
mqtt_client.reg_callback('_recv_callback', on_message)
## 注意事项 1. 网络连接
- 使用前需确保4G网络已连接
- 断线自动重连机制
- 每40秒ping一次服务器 2. 数据发送
- JSON格式数据
- 支持延时发送机制
- 异常保护处理 3. 配置文件
- 必须存在config.json
- 包含完整的连接参数
- 端口号必须为整数 4. 任务调度
- 使用task模块管理
- 2秒周期检查消息
- 支持后台运行 5. 安全性
- 使用AccessToken认证
- 支持SSL/TLS(如配置)
- 错误重试机制 6. 性能考虑
- 避免频繁发送
- 支持消息缓存
- 异常自动恢复