Phase 1 (Foundation): project skeleton, TOML config + Pydantic validation, MQTT bus wrapper, SQLite schema (9 tables), Click CLI, process supervisor. Phase 2 (Camera): RTSP capture via OpenCV, MOG2 motion detection with configurable sensitivity/zones, adaptive FPS recording (2fps idle/30fps motion) via FFmpeg subprocess, HLS live streaming, pre-motion ring buffer. Phase 3 (Web UI): Flask + Bootstrap 5 dark theme, 6 blueprints, Jinja2 templates (dashboard, kiosk 2x2 grid, events, sensors, recordings, settings), PWA with service worker + Web Push, full admin settings UI with config persistence. Remote Access: WireGuard tunnel configs, nginx reverse proxy with HLS caching + rate limiting, bandwidth-optimized remote HLS stream (426x240 @ 500kbps), DO droplet setup script, certbot TLS. 29 tests passing. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
40 lines
1.5 KiB
HTML
40 lines
1.5 KiB
HTML
{% extends "base.html" %}
|
|
{% block title %}Vigilar — Sensors{% endblock %}
|
|
|
|
{% block content %}
|
|
<h5 class="mb-3"><i class="bi bi-broadcast me-2"></i>Sensors</h5>
|
|
|
|
<div class="row g-3">
|
|
{% for sensor in sensors %}
|
|
<div class="col-md-4 col-lg-3">
|
|
<div class="card bg-dark border-secondary">
|
|
<div class="card-body">
|
|
<div class="d-flex justify-content-between align-items-start mb-2">
|
|
<h6 class="card-title mb-0">{{ sensor.display_name }}</h6>
|
|
<span class="badge bg-secondary">{{ sensor.protocol }}</span>
|
|
</div>
|
|
<p class="text-muted small mb-2">
|
|
<i class="bi bi-geo-alt me-1"></i>{{ sensor.location or 'Unknown' }}
|
|
</p>
|
|
<div class="d-flex justify-content-between align-items-center">
|
|
<span class="badge bg-{{ 'success' if sensor.type == 'CONTACT' else 'info' }}">
|
|
{{ sensor.type }}
|
|
</span>
|
|
<span class="text-muted small" id="sensor-state-{{ sensor.id }}">
|
|
--
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% else %}
|
|
<div class="col-12">
|
|
<div class="alert alert-secondary text-center">
|
|
<i class="bi bi-broadcast me-2"></i>
|
|
No sensors configured. Edit <code>config/vigilar.toml</code> to add sensors.
|
|
</div>
|
|
</div>
|
|
{% endfor %}
|
|
</div>
|
|
{% endblock %}
|