From 5fa88eaa56752d850729028eaffdb324dc26df1b Mon Sep 17 00:00:00 2001 From: drho1y Date: Mon, 6 Jul 2026 23:12:12 +0700 Subject: [PATCH] update script --- backend_control/main.py | 77 ++++++++++++++++++++++++++--------------- 1 file changed, 49 insertions(+), 28 deletions(-) diff --git a/backend_control/main.py b/backend_control/main.py index ac7ee90..f88080d 100644 --- a/backend_control/main.py +++ b/backend_control/main.py @@ -4,17 +4,22 @@ import time # Настройки MQTT MQTT_BROKER = "192.168.31.225" # Адрес MQTT брокера -MQTT_PORT = 1883 # Порт MQTT -MQTT_USER = "test" # Имя пользователя -MQTT_PASSWORD = "1234" # Пароль +MQTT_PORT = 1883 # Порт MQTT +MQTT_USER = "test" # Имя пользователя +MQTT_PASSWORD = "1234" # Пароль + +# Топики MQTT_CONTROL_TOPIC = "motor/control/command" # Топик для управления двигателем -MQTT_DRIVER_TOPIC = "motor/control/driver" # Топик для управления драйвером -MQTT_SPEED_TOPIC = "motor/control/step_per_sec" # Топик для установки скорости шагов в секунду -MQTT_RPM_TOPIC = "motor/control/rpm" # Топик для установки скорости оборотов в минуту +MQTT_DRIVER_TOPIC = "motor/control/driver" # Топик для управления драйвером +MQTT_SPEED_TOPIC = "motor/control/step_per_sec" # Топик для установки скорости шагов в секунду +MQTT_RPM_TOPIC = "motor/control/rpm" # Топик для установки скорости оборотов в минуту +MQTT_RESET_STEPS_TOPIC = "motor/control/totalsteps/reset" # Топик для сброса шагов def on_connect(client, userdata, flags, rc): if rc == 0: print("Connected to MQTT broker") + # Подписка на все топики для получения обратной связи + client.subscribe("motor/feedback/#") else: print(f"Failed to connect, return code {rc}") @@ -23,6 +28,41 @@ def send_command(topic, command): client.publish(topic, command) print(f"Sent command: {command} to topic {topic}") +def handle_command(command): + """Обработка команд""" + parts = command.split() + if not parts: + return + + cmd = parts[0].lower() + + # Используем словарь для обработки команд + command_handlers = { + "start": lambda: send_command(MQTT_CONTROL_TOPIC, "start"), + "stop": lambda: send_command(MQTT_CONTROL_TOPIC, "stop"), + "turnon": lambda: send_command(MQTT_DRIVER_TOPIC, "turnon"), + "turnoff": lambda: send_command(MQTT_DRIVER_TOPIC, "turnoff"), + "resetsteps": lambda: send_command(MQTT_RESET_STEPS_TOPIC, "reset"), + } + + # Обработка команд с параметрами + if cmd == "rpm" and len(parts) > 1: + try: + rpm = int(parts[1]) + send_command(MQTT_RPM_TOPIC, str(rpm)) + except ValueError: + print("Invalid RPM value. Please enter a number.") + elif cmd == "speed" and len(parts) > 1: + try: + speed = int(parts[1]) + send_command(MQTT_SPEED_TOPIC, str(speed)) + except ValueError: + print("Invalid speed value. Please enter a number.") + elif cmd in command_handlers: + command_handlers[cmd]() + else: + print("Unknown command. Use 'start', 'stop', 'rpm ', 'speed ', 'resetsteps', or 'exit'") + def main(): # Создание клиента MQTT global client @@ -47,6 +87,7 @@ def main(): print(" turnoff - выключить управление двигателем") print(" rpm - установить скорость оборотов (например: rpm 200)") print(" speed - установить скорость шагов в секунду (например: speed 2000)") + print(" resetsteps - сбросить счетчик шагов") print(" exit - выход") while True: @@ -54,28 +95,8 @@ def main(): if command == "exit": break - elif command == "start": - send_command(MQTT_CONTROL_TOPIC, "start") - elif command == "stop": - send_command(MQTT_CONTROL_TOPIC, "stop") - elif command == "turnon": - send_command(MQTT_DRIVER_TOPIC, "turnon") - elif command == "turnoff": - send_command(MQTT_DRIVER_TOPIC, "turnoff") - elif command.startswith("speed "): - try: - speed = int(command.split()[1]) - send_command(MQTT_SPEED_TOPIC, str(speed)) - except ValueError: - print("Invalid speed value. Please enter a number.") - elif command.startswith("rpm "): - try: - rpm = int(command.split()[1]) - send_command(MQTT_RPM_TOPIC, str(rpm)) - except ValueError: - print("Invalid speed value. Please enter a number.") - else: - print("Unknown command. Use 'start', 'stop', 'speed ', or 'exit'") + + handle_command(command) except KeyboardInterrupt: print("\nShutting down...")