[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 = tk.Entry(left_frame, font=('Arial', 12), width=20)
|
||||||
self.test_time_entry.grid(row=1, column=1, sticky='ew', pady=10)
|
self.test_time_entry.grid(row=1, column=1, sticky='ew', pady=10)
|
||||||
# 自动填入当前时间,但如果已有信息则保留
|
# 自动填入当前时间,但如果已有信息则保留
|
||||||
if self.user_info["测试时间"]:
|
current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
||||||
self.test_time_entry.insert(0, self.user_info["测试时间"])
|
self.test_time_entry.insert(0, current_time)
|
||||||
else:
|
|
||||||
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))
|
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),
|
tk.Button(button_frame, text="退出", font=('Arial', 12),
|
||||||
command=self.root.quit, bg='red', fg='white').pack(side='right', padx=20)
|
command=self.root.quit, bg='red', fg='white').pack(side='right', padx=20)
|
||||||
|
|
||||||
|
# 自动通过MQTT上传到云
|
||||||
|
self.auto_upload_mqtt_start()
|
||||||
# 自动保存报告
|
# 自动保存报告
|
||||||
self.save_report()
|
self.save_report()
|
||||||
|
|
||||||
@ -796,6 +795,66 @@ class ModbusGasAnalyzer:
|
|||||||
print(f"MQTT断开错误: {e}")
|
print(f"MQTT断开错误: {e}")
|
||||||
return
|
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():
|
def get_windows_serial_number():
|
||||||
"""
|
"""
|
||||||
获取Windows系统的唯一序列号
|
获取Windows系统的唯一序列号
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user