Add gate icon and remove gate type
This commit is contained in:
30
README.md
30
README.md
@@ -2,12 +2,13 @@
|
||||
|
||||
# Lagomare Gates
|
||||
|
||||
A web-based gate access management and control system. Authorized users can remotely open physical car and pedestrian gates via a mobile-friendly PWA. An admin dashboard provides full management of gates, access codes, and users.
|
||||
A web-based gate access management and control system. Authorized users can remotely open physical gates via a mobile-friendly PWA. An admin dashboard provides full management of gates, access codes, and users.
|
||||
|
||||
## Features
|
||||
|
||||
- **Keypass authentication** — users authenticate with an access code; each keypass can have a per-gate allowlist and an optional expiration date
|
||||
- **Remote gate control** — integrates with [AVConnect](https://www.avconnect.it) to trigger gate macros
|
||||
- **Remote gate control** — integrates with [AVConnect](https://www.avconnect.it) and [Shelly Cloud](https://shelly.cloud) to trigger gate macros/relays
|
||||
- **Gate icons** — each gate can be assigned any UTF-8 character or emoji as its icon, displayed on the user app button and keypass selector
|
||||
- **Role-based admin panel** — two roles (`admin`, `manager`) with different permission levels
|
||||
- **Two-factor authentication (TOTP)** — admins can enable app-based 2FA (Google Authenticator, Authy, etc.) on their account
|
||||
- **Access audit log** — every open attempt is logged with timestamp, keypass, gate, IP, and result; filterable and paginated
|
||||
@@ -26,7 +27,7 @@ A web-based gate access management and control system. Authorized users can remo
|
||||
| Auth | JWT (HS256) + bcrypt |
|
||||
| 2FA | TOTP (RFC 6238) via pyotp |
|
||||
| Credential storage | Fernet symmetric encryption |
|
||||
| Gate integration | AVConnect HTTP API |
|
||||
| Gate integration | AVConnect HTTP API / Shelly Cloud API |
|
||||
| Notifications | Telegram Bot API |
|
||||
| QR generation | qrcode + Pillow |
|
||||
| Frontend | Vanilla JS PWA |
|
||||
@@ -51,8 +52,9 @@ src/
|
||||
│ ├── stats.py # Access log / statistics (paginated, filtered)
|
||||
│ └── telegram.py # Telegram notification configuration
|
||||
├── services/
|
||||
│ ├── avconnect.py # AVConnect session management and macro execution
|
||||
│ ├── avconnect.py # AVConnect API client
|
||||
│ ├── gates.py # Gate open orchestration
|
||||
| |── shelly.py # Shelly Cloud API client
|
||||
│ └── telegram.py # Telegram Bot API client
|
||||
└── static/ # Frontend PWA (index.html, admin.html, JS, CSS)
|
||||
data/
|
||||
@@ -111,8 +113,10 @@ data/
|
||||
|
||||
| Method | Endpoint | Description |
|
||||
|---|---|---|
|
||||
| GET | `/api/admin/credentials` | View stored credentials |
|
||||
| PUT | `/api/admin/credentials` | Create or update credentials |
|
||||
| GET | `/api/admin/credentials/avconnect` | View stored AVConnect credentials |
|
||||
| PUT | `/api/admin/credentials/avconnect` | Create or update AVConnect credentials |
|
||||
| GET | `/api/admin/credentials/shelly` | View stored Shelly Cloud credentials |
|
||||
| PUT | `/api/admin/credentials/shelly` | Create or update Shelly Cloud credentials |
|
||||
| GET | `/api/admin/credentials/mock` | Get mock mode status |
|
||||
| PUT | `/api/admin/credentials/mock` | Enable or disable mock mode |
|
||||
|
||||
@@ -217,14 +221,24 @@ The application is then available at:
|
||||
|
||||
## AVConnect Integration
|
||||
|
||||
Gates are controlled through the AVConnect platform. Each gate is mapped to an AVConnect *macro ID*. When a gate open request is received, the service:
|
||||
Gates are controlled through one of two supported API providers.
|
||||
|
||||
### AVConnect
|
||||
|
||||
Each gate is mapped to an AVConnect *macro ID*. When a gate open request is received, the service:
|
||||
|
||||
1. Authenticates with AVConnect using the stored credentials (session is cached in the database)
|
||||
2. Executes the configured macro for the gate
|
||||
|
||||
Credentials (password) are stored encrypted in the database using Fernet symmetric encryption derived from `SECRET_KEY`.
|
||||
|
||||
**Mock mode** — when enabled via the admin dashboard, gate open requests always succeed without contacting AVConnect. Useful for testing.
|
||||
### Shelly Cloud
|
||||
|
||||
Each gate is mapped to a Shelly *device ID*. The service calls the Shelly Cloud API with the stored auth key to activate the device's relay.
|
||||
|
||||
The Shelly server URI and auth key are stored encrypted. Configure them under **Admin → Credentials → Shelly Cloud**.
|
||||
|
||||
**Mock mode** — when enabled via the admin dashboard, gate open requests always succeed without contacting any external API. Useful for testing.
|
||||
|
||||
## Keypass QR Codes
|
||||
|
||||
|
||||
Reference in New Issue
Block a user