2.5 KiB
Executable File
2.5 KiB
Executable File
RoggioApp - Langzeit-Vision & Hardware-Schnittstellen
1. Lokale Resilienz (Datenbank-Mirroring)
- Ziel: Die Cloud (Hetzner) darf ausfallen oder das Internet auf dem Gelände streiken, ohne dass der Betrieb komplett lahmgelegt wird.
- Ansatz: Ein lokales Mirror-System für die Datenbank.
- Architektur-Implication: PostgreSQL erlaubt logische Replikation (Master-Slave oder Master-Master Konzepte). Wir sollten das Backend so bauen, dass es (später) Offline-First / Sync-Fähigkeiten bekommt oder zumindest ein lokaler Read-Replica Server auf dem Gelände läuft. (Für den Start bauen wir Single-Node, halten uns aber die Multi-Node Replikation in Postgres offen).
2. Zentrale User-Verwaltung (Identity & Access Management - IAM)
- Ziel: Das Auth-System (Nextcloud / OIDC) soll in Zukunft der einzige Schlüssel für alles sein.
- Geplante Erweiterungen für User:
- WireGuard VPN-Profile
- VoIP / SIP-Accounts (Telefonie)
- E-Mail Accounts
- NFC / RFID Zugangskontrolle (Türen)
- Architektur-Implication: Nextcloud als OIDC-Provider ist hier bereits ein sehr guter Startpunkt. Wir dürfen in der RoggioApp keine eigenen, isolierten "User-Passwort"-Tabellen bauen. Die RoggioApp referenziert nur eine globale
user_id(z.B. aus LDAP oder Nextcloud), an der die Hardware-Schlüssel hängen.
3. Home Automation & IoT (Der Campus)
- Ziel: Smarte Steuerung und Überwachung der physischen Infrastruktur vor Ort.
- Core-Technologien: HomeAssistant, MQTT, LoRaWAN.
- Kritische Systeme:
- PV / Solar Management (Strom)
- Wasserspeicher (Infrastruktur)
- Zugangskontrolle (Smart Locks)
- Architektur-Implication: Unser Konzept der "Units" und "Traits" greift hier perfekt!
- Eine Unit (z.B. Zirkuswagen) bekommt in unserer Datenbank den Trait
has_smart_lock. - In diesem Trait speichern wir die MQTT-Topic-ID (
/house/zirkuswagen/lock). - Wenn im Event "Buchung" der Status auf "Check-in" wechselt, feuert unser Node-Backend einen MQTT-Befehl an den lokalen HomeAssistant, um den Code des Gastes auf das Schloss zu spielen.
- Eine Unit (z.B. Zirkuswagen) bekommt in unserer Datenbank den Trait
Claras Fazit
Die Weichenstellung ist klar: Das System ist kein reines "Software-Tool", sondern das Betriebssystem für ein physisches Gelände. Die strikte Trennung von Core-Logik, externem Auth-Provider und MQTT-fähigen Hardware-Layern sichert uns ab. Keine dieser Anforderungen sprengt unseren API-First / Node.js / Postgres Stack – im Gegenteil, MQTT und OIDC lassen sich in Node.js hervorragend nativ integrieren.