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)