From cc5bf0d18c3da2464d28a1d4202d67266a877a4e Mon Sep 17 00:00:00 2001 From: zart Date: Fri, 3 Jan 2025 10:14:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E8=BF=9B=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cp_file.sh | 11 +++++++++ delete_service.sh | 13 +++++++++++ download_and_execute.service | 5 ++-- edu_coder/extur_edu.py | 2 +- edu_coder/mqtt_edu.py | 11 ++++++--- smp_coder/extur_smp.py | 12 ++++++---- smp_coder/mqtt_smp.py | 3 ++- smp_init.sh | 45 +++++++++++++++++++++--------------- test_reload.sh | 22 ++++++++++++++++++ 9 files changed, 94 insertions(+), 30 deletions(-) create mode 100644 cp_file.sh create mode 100644 delete_service.sh create mode 100644 test_reload.sh diff --git a/cp_file.sh b/cp_file.sh new file mode 100644 index 0000000..bc547fd --- /dev/null +++ b/cp_file.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +# 转移文件 + +# 定义变量 + +cp ../smp_pc_20240625/download_and_execute.service ./ + +cp ../smp_pc_20240625/smp_init.sh ./ + +cp ../smp_pc_20240625/test_reload.sh ./ diff --git a/delete_service.sh b/delete_service.sh new file mode 100644 index 0000000..aabc8fa --- /dev/null +++ b/delete_service.sh @@ -0,0 +1,13 @@ +#!/usr/bin + +sudo systemctl status download_and_execute.service + +sudo systemctl stop download_and_execute.service + +sudo systemctl disable download_and_execute.service + +sudo rm /etc/systemd/system/download_and_execute.service + +sudo systemctl daemon-reload + +echo "Service deleted successfully!" \ No newline at end of file diff --git a/download_and_execute.service b/download_and_execute.service index 623a9de..dd6f53a 100644 --- a/download_and_execute.service +++ b/download_and_execute.service @@ -3,8 +3,9 @@ Description=Run download_and_execute script at startup After=network.target [Service] -ExecStart=/home/pi/smp_pc/smp_init.sh -Type=oneshot +ExecStart=bash /home/pi/smp_pc/test_reload.sh +Type=simple +WorkingDirectory=/home/pi/smp_pc Restart=on-failure RestartSec=10s RemainAfterExit=true diff --git a/edu_coder/extur_edu.py b/edu_coder/extur_edu.py index cc6aaa9..7b503cf 100644 --- a/edu_coder/extur_edu.py +++ b/edu_coder/extur_edu.py @@ -61,7 +61,7 @@ client.loop_start() response_received = False while not response_received: print("等待响应...") - client.publish("request/{}".format(user_id), "image produce", qos=2) + client.publish("request/{}".format(user_id), "image produce", qos=0) time.sleep(3) # 停止网络循环并断开连接 diff --git a/edu_coder/mqtt_edu.py b/edu_coder/mqtt_edu.py index 086f4d7..bbbc0b3 100644 --- a/edu_coder/mqtt_edu.py +++ b/edu_coder/mqtt_edu.py @@ -2,11 +2,14 @@ import paho.mqtt.client as mqtt import time import os +# 检查是否存在edu_coder/user.txt文件,如果不存在则执行get_user.sh脚本 if not os.path.exists("edu_coder/user.txt"): os.system("cd edu_coder && bash get_user.sh") # os.system("bash edu_coder/get_user.sh") +# MQTT代理地址 broker = '121.40.129.71' +# MQTT代理端口 port = 48835 # 回调函数,当客户端收到连接响应时被调用 @@ -19,6 +22,7 @@ def on_connect(client, userdata, flags, rc, properties=None): def on_message(client, userdata, msg): print("收到消息: " + msg.topic + " " + str(msg.payload)) + # 如果收到的消息是"Set user.txt success!",则设置response_received为True if msg.payload.decode() == "Set user.txt success!": global response_received response_received = True @@ -39,7 +43,8 @@ client.connect(broker, port, 60) # 启动一个后台线程来处理网络流量和回调 client.loop_start() -with open("edu_coder/user.txt", "r") as f: +# 读取edu_coder/user.txt文件中的用户信息 +with open("edu_coder/user.txt", "r", encoding="utf8") as f: user = f.read().strip() # # 发布消息 @@ -49,7 +54,7 @@ with open("edu_coder/user.txt", "r") as f: response_received = False while not response_received: # 发布消息 - client.publish("request/topic", user, qos=2) + client.publish("request/topic", user, qos=0) print("等待响应...") time.sleep(1) @@ -57,4 +62,4 @@ while not response_received: client.loop_stop() client.disconnect() -print("收到响应,客户端退出。") +print("收到响应,客户端退出。") \ No newline at end of file diff --git a/smp_coder/extur_smp.py b/smp_coder/extur_smp.py index 2094ada..4ab84e5 100644 --- a/smp_coder/extur_smp.py +++ b/smp_coder/extur_smp.py @@ -13,6 +13,8 @@ with open("smp_coder/user.txt", "r") as f: user_id = f.read().strip() user_id = user_id.split("=")[-1] + print("user_id: ", user_id) + # topic = "request/{}".format(user_id) # 回调函数,当客户端收到连接响应时被调用 @@ -21,6 +23,8 @@ def on_connect(client, userdata, flags, rc, properties=None): # 订阅请求主题 client.subscribe("request/{}".format(user_id), qos=2) + print("订阅请求主题: request/{}".format(user_id)) + # 回调函数,当客户端收到消息时被调用 def on_message(client, userdata, msg): print("收到消息: " + msg.topic + " " + str(msg.payload)) @@ -63,11 +67,11 @@ while not response_received: time.sleep(2) -# 停止网络循环并断开连接 -client.loop_stop() -client.disconnect() +# # 停止网络循环并断开连接 +# client.loop_stop() +# client.disconnect() -print("收到响应,客户端退出。") +# print("收到响应,客户端退出。") diff --git a/smp_coder/mqtt_smp.py b/smp_coder/mqtt_smp.py index 82ceb9d..bdf3a4c 100644 --- a/smp_coder/mqtt_smp.py +++ b/smp_coder/mqtt_smp.py @@ -55,7 +55,8 @@ client.publish("response/topic", "Set user.txt success!", qos=2) -command = ["sudo", "myenv/bin/python3", "smp_coder/extur_smp.py"] +# command = ["sudo", "/home/pi/smp_pc/myenv/bin/python", "/home/pi/smp_pc/smp_coder/extur_smp.py"] +command = ["sudo", "myenv/bin/python", "smp_coder/extur_smp.py"] with open("logex.txt", "w") as log_file: process = subprocess.Popen(command, stdout=log_file, stderr=log_file, bufsize=1, universal_newlines=True) diff --git a/smp_init.sh b/smp_init.sh index f708844..4c45049 100644 --- a/smp_init.sh +++ b/smp_init.sh @@ -1,21 +1,16 @@ #!/bin/bash - - - - -# 检查服务是否已启用 -if sudo systemctl is-enabled download_and_execute.service; then - echo "开机重载服务已启动" -else - echo "开机重载服务未启动" - echo "正在启动开机重载服务" - sudo cp download_and_execute.service /etc/systemd/system || { echo "无法复制文件"; exit 1; } - sudo systemctl enable download_and_execute.service || { echo "无法启用服务"; exit 1; } -# sudo systemctl start download_and_execute.service || { echo "无法启动服务"; exit 1; } +# 检查test_reload.sh是否存在 +if [ -f "test_reload.sh" ]; then + # 如果没有执行权限,尝试添加执行权限 + if [ ! -x "test_reload.sh" ]; then + echo "test_reload.sh 没有执行权限,尝试添加执行权限..." + chmod +x "test_reload.sh" || { echo "无法添加执行权限"; exit 1; } + fi fi +echo "test_reload.sh 存在,并具有执行权限" #!/bin/bash # 创建一个目录用于存放虚拟环境 @@ -54,15 +49,27 @@ fi # 提示如何退出虚拟环境 echo "要退出虚拟环境,请运行 'deactivate'" +# 检查服务是否已启用 +if sudo systemctl is-enabled download_and_execute.service; then + echo "开机重载服务已启动" +else + echo "开机重载服务未启动" + echo "正在启动开机重载服务" + sudo cp download_and_execute.service /etc/systemd/system || { echo "无法复制文件"; exit 1; } + sudo systemctl enable download_and_execute.service || { echo "无法启用服务"; exit 1; } + sudo systemctl start download_and_execute.service || { echo "无法启动服务"; exit 1; } +fi + + # 运行第一关的mqtt_client.py # 运行第一关的mqtt_client.py -nohup sudo $env_dir/bin/python3 smp_coder/mqtt_smp.py > log.txt 2>&1 & -if [ $? -eq 0 ]; then - echo "mqtt_smp.py 启动成功" -else - echo "mqtt_smp.py 启动失败" -fi +#nohup sudo $env_dir/bin/python3 smp_coder/mqtt_smp.py > log.txt 2>&1 & +#if [ $? -eq 0 ]; then +# echo "mqtt_smp.py 启动成功" +#else +# echo "mqtt_smp.py 启动失败" +#fi # 运行第二关的extur_smp.py #nohup sudo $env_dir/bin/python3 smp_coder/extur_smp.py > logex.txt 2>&1 & diff --git a/test_reload.sh b/test_reload.sh new file mode 100644 index 0000000..f569b26 --- /dev/null +++ b/test_reload.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +cd /home/pi/smp_pc|| exit + + +# 检测某个文件是否存在 +if [ -f smp_coder/user.txt ]; then + echo "User file exists" +else + sudo myenv/bin/python smp_coder/mqtt_smp.py +fi + +if [ $? -eq 0 ]; then + echo "MQTT SMP is running" +else + echo "MQTT SMP is not running" + exit 1 +fi + +sudo myenv/bin/python smp_coder/extur_smp.py + +