добавил gui

This commit is contained in:
2026-06-25 17:25:41 +03:00
parent cdd8fc3f71
commit 41a50a1d1e
19 changed files with 5696 additions and 32 deletions

View File

@@ -0,0 +1,72 @@
<!doctype html>
<html lang="ru">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Тепло и клапаны — управление</title>
<link rel="stylesheet" href="styles.css?v=20260625-ds18b20-id-1" />
</head>
<body>
<div class="shell">
<header class="header">
<h1>Панель температуры и клапанов</h1>
<p>Мониторинг датчиков, управление уставками и ручным/авто управлением клапанов.</p>
</header>
<section class="panel">
<label for="apiBase">API endpoint</label>
<div class="api-row">
<input id="apiBase" placeholder="http://127.0.0.1:1923 (пусто = демо)" value="" />
<button id="refreshBtn">Обновить</button>
<button id="saveApiBtn">Сохранить адрес API</button>
<span id="status" class="status">Режим: не подключен</span>
</div>
<p class="hint">Если API не задан, интерфейс работает в автономном демо-режиме с локальным хранением.</p>
<div class="serial-block">
<div class="serial-row">
<label for="modbusTransport">Обмен</label>
<select id="modbusTransport">
<option value="rtu">Modbus RTU / COM</option>
<option value="tcp">Modbus TCP / IP</option>
</select>
<label for="modbusSlaveId">Slave ID</label>
<input id="modbusSlaveId" type="number" min="1" max="247" value="3">
</select>
<label class="rtu-field" for="comPortSelect">COM порт</label>
<select id="comPortSelect" class="rtu-field">
<option value="">Порт не выбран</option>
</select>
<button id="refreshPortsBtn" class="rtu-field">Обновить порты</button>
<label class="tcp-field hidden" for="tcpHost">IP</label>
<input id="tcpHost" class="tcp-field hidden" type="text" value="192.168.0.10" placeholder="192.168.0.10">
<label class="tcp-field hidden" for="tcpPort">TCP порт</label>
<input id="tcpPort" class="tcp-field hidden" type="number" min="1" max="65535" value="502">
<button id="connectPortBtn">Подключить</button>
<button id="calibrateAllBtn">Калибровать все</button>
<span id="serialStatus" class="status status-warn">COM: не подключён</span>
</div>
</div>
</section>
<section class="panel grid">
<article class="card">
<h2>Датчики температуры</h2>
<div id="sensors" class="list"></div>
</article>
<article class="card">
<h2>Клапаны</h2>
<div id="valves" class="list"></div>
</article>
</section>
<footer class="footer">
<span>Статус: </span>
<span id="globalStatus">Ожидание...</span>
</footer>
</div>
<script src="app.js?v=20260625-setpoint-draft-1"></script>
</body>
</html>