Add NFC enable/disable support; update devices, Sonoff, and Tuya
This commit is contained in:
@@ -87,6 +87,14 @@
|
||||
|
||||
<!-- Current relay & timeout -->
|
||||
<dl class="row mb-0 small">
|
||||
<dt class="col-5 text-secondary">Module state</dt>
|
||||
<dd class="col-7" id="module-state-dd">
|
||||
{% if nfc.get('nfc_enabled') %}
|
||||
<span class="badge text-bg-success"><i class="bi bi-toggle-on me-1"></i>Enabled</span>
|
||||
{% else %}
|
||||
<span class="badge text-bg-secondary"><i class="bi bi-toggle-off me-1"></i>Disabled</span>
|
||||
{% endif %}
|
||||
</dd>
|
||||
<dt class="col-5 text-secondary">Trigger relay</dt>
|
||||
<dd class="col-7 fw-semibold" id="relay-display">Relay {{ nfc.get('relay_num', 1) }}</dd>
|
||||
<dt class="col-5 text-secondary">Absence timeout</dt>
|
||||
@@ -101,6 +109,34 @@
|
||||
<div class="col-lg-7 d-flex flex-column gap-4">
|
||||
|
||||
{% if current_user.is_admin() %}
|
||||
<!-- ── Module Enable / Disable ─────────────────────────────────────── -->
|
||||
<div class="card border-0 rounded-4">
|
||||
<div class="card-header bg-transparent fw-semibold pt-3">
|
||||
<i class="bi bi-toggle-on me-1 text-primary"></i> Mifare / NFC Module
|
||||
</div>
|
||||
<div class="card-body d-flex align-items-center justify-content-between gap-3">
|
||||
<div>
|
||||
<div class="fw-semibold mb-1">Access control module</div>
|
||||
<div class="text-secondary small">When disabled the board stops polling the PN532 and will not open any relay on card presentation. The setting persists across power cycles.</div>
|
||||
</div>
|
||||
<form method="POST" action="{{ url_for('boards.nfc_enable', board_id=board.id) }}" class="flex-shrink-0">
|
||||
{% if nfc.get('nfc_enabled') %}
|
||||
<input type="hidden" name="enabled" value="0">
|
||||
<button type="submit" id="nfc-toggle-btn"
|
||||
class="btn btn-success d-flex align-items-center gap-2" style="min-width:140px">
|
||||
<i class="bi bi-toggle-on fs-5"></i><span>Enabled</span>
|
||||
</button>
|
||||
{% else %}
|
||||
<input type="hidden" name="enabled" value="1">
|
||||
<button type="submit" id="nfc-toggle-btn"
|
||||
class="btn btn-secondary d-flex align-items-center gap-2" style="min-width:140px">
|
||||
<i class="bi bi-toggle-off fs-5"></i><span>Disabled</span>
|
||||
</button>
|
||||
{% endif %}
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ── Quick Enroll ──────────────────────────────────────────────────── -->
|
||||
<div class="card border-0 rounded-4">
|
||||
<div class="card-header bg-transparent fw-semibold pt-3">
|
||||
@@ -252,6 +288,13 @@ function loadStatus() {
|
||||
if (relayDisp) relayDisp.textContent = 'Relay ' + (d.relay_num || 1);
|
||||
const pulseDisp = document.getElementById('pulse-display');
|
||||
if (pulseDisp) pulseDisp.textContent = (d.pulse_ms || 3000) + ' ms';
|
||||
// module enabled/disabled summary in left card
|
||||
const modDd = document.getElementById('module-state-dd');
|
||||
if (modDd) {
|
||||
modDd.innerHTML = d.nfc_enabled
|
||||
? '<span class="badge text-bg-success"><i class="bi bi-toggle-on me-1"></i>Enabled</span>'
|
||||
: '<span class="badge text-bg-secondary"><i class="bi bi-toggle-off me-1"></i>Disabled</span>';
|
||||
}
|
||||
})
|
||||
.catch(() => {})
|
||||
.finally(() => {
|
||||
|
||||
Reference in New Issue
Block a user