update script
This commit is contained in:
@@ -4,17 +4,22 @@ import time
|
|||||||
|
|
||||||
# Настройки MQTT
|
# Настройки MQTT
|
||||||
MQTT_BROKER = "192.168.31.225" # Адрес MQTT брокера
|
MQTT_BROKER = "192.168.31.225" # Адрес MQTT брокера
|
||||||
MQTT_PORT = 1883 # Порт MQTT
|
MQTT_PORT = 1883 # Порт MQTT
|
||||||
MQTT_USER = "test" # Имя пользователя
|
MQTT_USER = "test" # Имя пользователя
|
||||||
MQTT_PASSWORD = "1234" # Пароль
|
MQTT_PASSWORD = "1234" # Пароль
|
||||||
|
|
||||||
|
# Топики
|
||||||
MQTT_CONTROL_TOPIC = "motor/control/command" # Топик для управления двигателем
|
MQTT_CONTROL_TOPIC = "motor/control/command" # Топик для управления двигателем
|
||||||
MQTT_DRIVER_TOPIC = "motor/control/driver" # Топик для управления драйвером
|
MQTT_DRIVER_TOPIC = "motor/control/driver" # Топик для управления драйвером
|
||||||
MQTT_SPEED_TOPIC = "motor/control/step_per_sec" # Топик для установки скорости шагов в секунду
|
MQTT_SPEED_TOPIC = "motor/control/step_per_sec" # Топик для установки скорости шагов в секунду
|
||||||
MQTT_RPM_TOPIC = "motor/control/rpm" # Топик для установки скорости оборотов в минуту
|
MQTT_RPM_TOPIC = "motor/control/rpm" # Топик для установки скорости оборотов в минуту
|
||||||
|
MQTT_RESET_STEPS_TOPIC = "motor/control/totalsteps/reset" # Топик для сброса шагов
|
||||||
|
|
||||||
def on_connect(client, userdata, flags, rc):
|
def on_connect(client, userdata, flags, rc):
|
||||||
if rc == 0:
|
if rc == 0:
|
||||||
print("Connected to MQTT broker")
|
print("Connected to MQTT broker")
|
||||||
|
# Подписка на все топики для получения обратной связи
|
||||||
|
client.subscribe("motor/feedback/#")
|
||||||
else:
|
else:
|
||||||
print(f"Failed to connect, return code {rc}")
|
print(f"Failed to connect, return code {rc}")
|
||||||
|
|
||||||
@@ -23,6 +28,41 @@ def send_command(topic, command):
|
|||||||
client.publish(topic, command)
|
client.publish(topic, command)
|
||||||
print(f"Sent command: {command} to topic {topic}")
|
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():
|
def main():
|
||||||
# Создание клиента MQTT
|
# Создание клиента MQTT
|
||||||
global client
|
global client
|
||||||
@@ -47,6 +87,7 @@ def main():
|
|||||||
print(" turnoff - выключить управление двигателем")
|
print(" turnoff - выключить управление двигателем")
|
||||||
print(" rpm <value> - установить скорость оборотов (например: rpm 200)")
|
print(" rpm <value> - установить скорость оборотов (например: rpm 200)")
|
||||||
print(" speed <value> - установить скорость шагов в секунду (например: speed 2000)")
|
print(" speed <value> - установить скорость шагов в секунду (например: speed 2000)")
|
||||||
|
print(" resetsteps - сбросить счетчик шагов")
|
||||||
print(" exit - выход")
|
print(" exit - выход")
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
@@ -54,28 +95,8 @@ def main():
|
|||||||
|
|
||||||
if command == "exit":
|
if command == "exit":
|
||||||
break
|
break
|
||||||
elif command == "start":
|
|
||||||
send_command(MQTT_CONTROL_TOPIC, "start")
|
handle_command(command)
|
||||||
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'")
|
|
||||||
|
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
print("\nShutting down...")
|
print("\nShutting down...")
|
||||||
|
|||||||
Reference in New Issue
Block a user