update script

This commit is contained in:
2026-07-06 23:12:12 +07:00
parent 9c522fb95c
commit 5fa88eaa56

View File

@@ -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 <value>', 'speed <value>', 'resetsteps', or 'exit'")
def main():
# Создание клиента MQTT
global client
@@ -47,6 +87,7 @@ def main():
print(" turnoff - выключить управление двигателем")
print(" rpm <value> - установить скорость оборотов (например: rpm 200)")
print(" speed <value> - установить скорость шагов в секунду (например: 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 <value>', or 'exit'")
handle_command(command)
except KeyboardInterrupt:
print("\nShutting down...")