44 lines
1.5 KiB
Python
44 lines
1.5 KiB
Python
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)
|