App-Struktur
Jede IronFlock-App ist ein Git-versionierter Ordner, der Ihren Anwendungscode und ein optionales .ironflock-Konfigurationsverzeichnis enthält.
Verzeichnisaufbau
my-app/
├── Dockerfile # Erforderlich: definiert das Container-Image
├── docker-compose.yml # Optional: Multi-Container-Setup
├── main.py # Ihr Anwendungscode (beliebige Sprache)
├── requirements.txt # Abhängigkeiten
└── .ironflock/
├── board-template.yml # Dashboard-Layout
├── data-template.yml # Datenbankschema für Telemetrie
├── env-template.yml # Benutzerkonfigurierbare Parameter
├── port-template.yml # Remote-Access-Port-Definitionen
└── ai-template.yml # KI-Agenten-DefinitionenDie sechs Teile einer App
1. Edge-Code
Die zentrale Anwendungslogik. Dieser Code läuft in einem Docker-Container auf dem Gerät und übernimmt die Kommunikation mit Sensoren, SPS-Steuerungen, Kameras oder anderer angeschlossener Hardware.
Der Edge-Code kann in jeder Programmiersprache geschrieben werden — Python, JavaScript, Go, Rust, C++ oder alles andere, was in einem Docker-Container läuft.
2. Board (Benutzeroberfläche)
Ein Echtzeit-Dashboard, erstellt mit dem No-Code Board-Editor. Boards zeigen Daten aller Geräte an, die die App in einem Projekt verwenden, und aktualisieren sich automatisch über das Messaging-System.
Die Board-Konfiguration wird in board-template.yml gespeichert und vom Editor automatisch generiert.
3. Datenspeicherung
Jedes Projekt hat seine eigene physische Datenbank (basierend auf TimescaleDB). Wenn eine App Tabellen in data-template.yml definiert, werden diese automatisch bereitgestellt, sobald ein Benutzer die App installiert. Daten sind pro Projekt privat — Entwickler haben keinen Zugriff auf Benutzerdaten.
4. Messaging Realm
Bei der Installation erhält die App einen privaten Message Realm, der Folgendes verbindet:
- Alle App-Instanzen auf Edge-Geräten
- Die Projektdatenbank
- Die Board-Benutzeroberfläche
Die Kommunikation erfolgt über WAMP (Web Application Messaging Protocol) mithilfe der IronFlock-SDKs (ironflock-py für Python, ironflock-js für JavaScript).
5. Remote Access
Definieren Sie Ports und Protokolle in port-template.yml, um sicheres Tunneling zu Gerätediensten zu ermöglichen. Benutzer können diese Tunnel dann pro Gerät aktivieren/deaktivieren. Siehe Remote Access.
6. KI-Agenten
Stellen Sie domänenspezifische KI-Agenten über ai-template.yml bereit, die den IronFlock-KI-Assistenten erweitern. Siehe KI-Funktionen.
Persistenter Speicher auf Geräten
Standardmäßig gehen Daten innerhalb des Containers bei einem Neustart verloren. Zwei Verzeichnisse bleiben über Neustarts hinweg erhalten:
| Pfad | Geltungsbereich |
|---|---|
/data | Privat für diese App — andere Apps können nicht darauf zugreifen |
/shared | Für alle Apps auf dem Gerät gemeinsam nutzbar |
Wenn Sie Docker Compose verwenden, konfigurieren Sie persistente Volumes stattdessen in Ihrer docker-compose.yml.
Hardware-Zugriff
Wenn Ihre App mit lokaler Hardware (Sensoren, Kameras, serielle Geräte) interagiert, sind diese Geräte unter /dev im Container eingebunden.