[feat] add auto_upload_mqtt_start function
This commit is contained in:
parent
5e1923a895
commit
d78533cb37
@ -111,11 +111,8 @@ class ModbusGasAnalyzer:
|
||||
self.test_time_entry = tk.Entry(left_frame, font=('Arial', 12), width=20)
|
||||
self.test_time_entry.grid(row=1, column=1, sticky='ew', pady=10)
|
||||
# 自动填入当前时间,但如果已有信息则保留
|
||||
if self.user_info["测试时间"]:
|
||||
self.test_time_entry.insert(0, self.user_info["测试时间"])
|
||||
else:
|
||||
current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
||||
self.test_time_entry.insert(0, current_time)
|
||||
current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
||||
self.test_time_entry.insert(0, current_time)
|
||||
|
||||
# 样品信息
|
||||
tk.Label(left_frame, text="样品信息:", font=('Arial', 12), bg=self.custom_blue).grid(row=2, column=0, sticky='w', pady=10, padx=(30, 20))
|
||||
@ -329,6 +326,8 @@ class ModbusGasAnalyzer:
|
||||
tk.Button(button_frame, text="退出", font=('Arial', 12),
|
||||
command=self.root.quit, bg='red', fg='white').pack(side='right', padx=20)
|
||||
|
||||
# 自动通过MQTT上传到云
|
||||
self.auto_upload_mqtt_start()
|
||||
# 自动保存报告
|
||||
self.save_report()
|
||||
|
||||
@ -796,6 +795,66 @@ class ModbusGasAnalyzer:
|
||||
print(f"MQTT断开错误: {e}")
|
||||
return
|
||||
|
||||
def auto_upload_mqtt_start(self):
|
||||
# 将数据通过MQTT上传到服务器
|
||||
print(f"自动开始上传到MQTT");
|
||||
"""连接MQTT服务器"""
|
||||
try:
|
||||
self.mqtt_client = mqtt.Client()
|
||||
self.mqtt_client.username_pw_set(
|
||||
self.mqtt_info["用户名"],
|
||||
self.mqtt_info["密码"]
|
||||
)
|
||||
def on_connect(client, userdata, flags, rc):
|
||||
if rc == 0:
|
||||
print(f"自动上传MQTT连接成功: {rc}")
|
||||
else:
|
||||
print(f"自动上传MQTT连接失败: {rc}")
|
||||
return
|
||||
self.mqtt_client.on_connect = on_connect
|
||||
self.mqtt_client.connect(
|
||||
self.mqtt_info["服务器地址"],
|
||||
int(self.mqtt_info["端口号"]),
|
||||
1
|
||||
)
|
||||
self.mqtt_client.loop_start()
|
||||
except ValueError as e:
|
||||
# 处理端口号转换错误
|
||||
print(f"自动上传的端口号必须是数字: {str(e)}")
|
||||
return
|
||||
except Exception as e:
|
||||
print(f"自动上传MQTT连接错误: {str(e)}")
|
||||
return
|
||||
"""整理MQTT数据"""
|
||||
mqtt_payload = []
|
||||
for key, value in self.user_info.items():
|
||||
mqtt_payload.append(f"{key}: {value}")
|
||||
mqtt_payload.append(f"浓度: {max(0.0, min(self.show_concentration, 99.990)):.3f}%")
|
||||
"""上传数据到MQTT"""
|
||||
try:
|
||||
if self.mqtt_client:
|
||||
result = self.mqtt_client.publish(
|
||||
self.mqtt_info["主题"],
|
||||
"\r\n".join(mqtt_payload),
|
||||
qos=1 #服务质量等级
|
||||
)
|
||||
if result.rc == mqtt.MQTT_ERR_SUCCESS:
|
||||
print(f"自动MQTT上传成功")
|
||||
else:
|
||||
print(f"自动MQTT上传失败: {result}")
|
||||
return
|
||||
except Exception as e:
|
||||
print(f"自动MQTT上传错误: {str(e)}")
|
||||
return
|
||||
"""断开MQTT连接"""
|
||||
try:
|
||||
self.mqtt_client.loop_stop()
|
||||
self.mqtt_client.disconnect()
|
||||
self.mqtt_client = None
|
||||
except Exception as e:
|
||||
print(f"自动MQTT断开错误: {e}")
|
||||
return
|
||||
|
||||
def get_windows_serial_number():
|
||||
"""
|
||||
获取Windows系统的唯一序列号
|
||||
|
||||
Loading…
Reference in New Issue
Block a user