diff --git a/backend_control/main.py b/backend_control/main.py index f88080d..062b775 100644 --- a/backend_control/main.py +++ b/backend_control/main.py @@ -9,12 +9,18 @@ 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_RESET_STEPS_TOPIC = "motor/control/totalsteps/reset" # Топик для сброса шагов +# Топики для управления TMC2209 +MQTT_TMC_CURRENT_TOPIC = "motor/control/tmc/current_percent" # Топик для установки тока TMC2209 +MQTT_TMC_MICROSTEPS_TOPIC = "motor/control/tmc/microsteps" # Топик для установки микрошагов TMC2209 +MQTT_TMC_STALLGUARD_TOPIC = "motor/control/tmc/stallguard" # Топик для установки StallGuard TMC2209 +MQTT_TMC_ENABLE_TOPIC = "motor/control/tmc/enable" +MQTT_TMC_STEALTHCHOP_TOPIC = "motor/control/tmc/stealthchop" +MQTT_TMC_COOLSTEP_TOPIC = "motor/control/tmc/coolstep" + def on_connect(client, userdata, flags, rc): if rc == 0: print("Connected to MQTT broker") @@ -38,8 +44,6 @@ def handle_command(command): # Используем словарь для обработки команд 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"), @@ -52,16 +56,55 @@ def handle_command(command): send_command(MQTT_RPM_TOPIC, str(rpm)) except ValueError: print("Invalid RPM value. Please enter a number.") - elif cmd == "speed" and len(parts) > 1: + elif cmd == "current" and len(parts) > 1: try: - speed = int(parts[1]) - send_command(MQTT_SPEED_TOPIC, str(speed)) + current = int(parts[1]) + send_command(MQTT_TMC_CURRENT_TOPIC, str(current)) except ValueError: - print("Invalid speed value. Please enter a number.") + print("Invalid current value. Please enter a number.") + elif cmd == "microsteps" and len(parts) > 1: + try: + microsteps = int(parts[1]) + send_command(MQTT_TMC_MICROSTEPS_TOPIC, str(microsteps)) + except ValueError: + print("Invalid microsteps value. Please enter a number.") + elif cmd == "stallguard" and len(parts) > 1: + try: + stallguard = int(parts[1]) + send_command(MQTT_TMC_STALLGUARD_TOPIC, str(stallguard)) + except ValueError: + print("Invalid stallguard value. Please enter a number.") + elif cmd == "enable" and len(parts) > 1: + try: + enable = parts[1].lower() + if enable in ["on", "off"]: + send_command(MQTT_TMC_ENABLE_TOPIC, enable) + else: + print("Invalid enable value. Please use 'on' or 'off'.") + except ValueError: + print("Invalid enable value. Please use 'on' or 'off'.") + elif cmd == "stealthchop" and len(parts) > 1: + try: + stealthchop = parts[1].lower() + if stealthchop in ["on", "off"]: + send_command(MQTT_TMC_STEALTHCHOP_TOPIC, stealthchop) + else: + print("Invalid stealthchop value. Please use 'on' or 'off'.") + except ValueError: + print("Invalid stealthchop value. Please use 'on' or 'off'.") + elif cmd == "coolstep" and len(parts) > 1: + try: + coolstep = parts[1].lower() + if coolstep in ["on", "off"]: + send_command(MQTT_TMC_COOLSTEP_TOPIC, coolstep) + else: + print("Invalid coolstep value. Please use 'on' or 'off'.") + except ValueError: + print("Invalid coolstep value. Please use 'on' or 'off'.") elif cmd in command_handlers: command_handlers[cmd]() else: - print("Unknown command. Use 'start', 'stop', 'rpm ', 'speed ', 'resetsteps', or 'exit'") + print("Unknown command. Use 'start', 'stop', 'rpm ', 'speed ', 'resetsteps', 'current ', 'microsteps ', 'stallguard ', 'enable ', 'stealthchop ', 'coolstep ', or 'exit'") def main(): # Создание клиента MQTT @@ -81,13 +124,16 @@ def main(): print("MQTT Motor Controller") print("Commands:") - print(" start - запустить двигатель") - print(" stop - остановить двигатель") print(" turnon - включить управление двигателем") print(" turnoff - выключить управление двигателем") print(" rpm - установить скорость оборотов (например: rpm 200)") - print(" speed - установить скорость шагов в секунду (например: speed 2000)") print(" resetsteps - сбросить счетчик шагов") + print(" current - установить ток в % TMC2209 (например: current 50)") + print(" microsteps - установить микрошаги TMC2209 (например: microsteps 16)") + print(" stallguard - установить StallGuard TMC2209 (например: stallguard 5)") + print(" enable - включить/выключить TMC2209") + print(" stealthchop - включить/выключить stealthchop") + print(" coolstep - включить/выключить coolstep") print(" exit - выход") while True: