from flask import Flask, jsonify from pymodbus.client import ModbusSerialClient import serial.tools.list_ports app = Flask(__name__) # Определяем доступные COM-порты def find_arduino_port(): ports = list(serial.tools.list_ports.comports()) for port in ports: if "Arduino" in port.description or "CH340" in port.description: return port.device return None # Ищем подключенный Arduino port = find_arduino_port() if not port: print("Не найден Arduino, проверьте подключение!") exit(1) # Настройка подключения к Modbus client = ModbusSerialClient(port=port, baudrate=115200, timeout=1, stopbits=1, bytesize=8, parity='N') # Проверка подключения if not client.connect(): print(f"Ошибка подключения к {port}") exit(1) else: print(f"Подключение успешно: {port}") @app.route('/modbus-status', methods=['GET']) def modbus_status(): try: # Читаем 1 регистр, начиная с адреса 0 response = client.read_holding_registers(0, 1, slave=1) if response.isError(): return jsonify({"error": "Ошибка чтения Modbus"}), 500 return jsonify({"pin_status": response.registers[0]}) except Exception as e: return jsonify({"error": str(e)}), 500 if __name__ == '__main__': app.run(host='0.0.0.0', port=5000, debug=True)