Files
ozone-tech_owl_prime/backend_control/main.py
2026-07-06 21:36:58 +07:00

90 lines
3.9 KiB
Python

# mqtt_motor_control.py
import paho.mqtt.client as mqtt
import time
# Настройки MQTT
MQTT_BROKER = "192.168.31.225" # Адрес MQTT брокера
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" # Топик для установки скорости оборотов в минуту
def on_connect(client, userdata, flags, rc):
if rc == 0:
print("Connected to MQTT broker")
else:
print(f"Failed to connect, return code {rc}")
def send_command(topic, command):
"""Отправка команды в MQTT топик"""
client.publish(topic, command)
print(f"Sent command: {command} to topic {topic}")
def main():
# Создание клиента MQTT
global client
client = mqtt.Client()
# Установка учетных данных
client.username_pw_set(MQTT_USER, MQTT_PASSWORD)
# Установка функции обратного вызова при подключении
client.on_connect = on_connect
# Подключение к брокеру
try:
client.connect(MQTT_BROKER, MQTT_PORT, 60)
client.loop_start() # Запуск цикла обработки в отдельном потоке
print("MQTT Motor Controller")
print("Commands:")
print(" start - запустить двигатель")
print(" stop - остановить двигатель")
print(" turnon - включить управление двигателем")
print(" turnoff - выключить управление двигателем")
print(" rpm <value> - установить скорость оборотов (например: rpm 200)")
print(" speed <value> - установить скорость шагов в секунду (например: speed 2000)")
print(" exit - выход")
while True:
command = input("\nEnter command: ").strip()
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'")
except KeyboardInterrupt:
print("\nShutting down...")
except Exception as e:
print(f"Error: {e}")
finally:
client.loop_stop()
client.disconnect()
print("Disconnected")
if __name__ == "__main__":
main()