Struktura aplikacji
Każda aplikacja IronFlock to folder wersjonowany przez Git zawierający kod twojej aplikacji i opcjonalny katalog konfiguracyjny .ironflock.
Układ katalogu
moja-aplikacja/
├── Dockerfile # Wymagane: definiuje obraz kontenera
├── docker-compose.yml # Opcjonalne: konfiguracja wielu kontenerów
├── main.py # Kod twojej aplikacji (dowolny język)
├── requirements.txt # Zależności
└── .ironflock/
├── board-template.yml # Układ panelu
├── data-template.yml # Schemat bazy danych dla telemetrii
├── env-template.yml # Parametry konfigurowalne przez użytkownika
├── port-template.yml # Definicje portów dostępu zdalnego
└── ai-template.yml # Definicje agentów AISześć części aplikacji
1. Kod brzegowy
Podstawowa logika aplikacji. Ten kod działa w kontenerze Docker na urządzeniu i obsługuje komunikację z czujnikami, PLC, kamerami lub dowolnym podłączonym sprzętem.
Kod brzegowy można pisać w dowolnym języku programowania — Python, JavaScript, Go, Rust, C++ lub cokolwiek innego, co działa w kontenerze Docker.
2. Panel (interfejs użytkownika)
Pulpit nawigacyjny w czasie rzeczywistym zbudowany w edytorze paneli bez kodu. Panele wyświetlają dane ze wszystkich urządzeń uruchamiających aplikację w projekcie i aktualizują się automatycznie przez system komunikatów.
Konfiguracja panelu jest przechowywana w board-template.yml i jest automatycznie generowana przez edytor.
3. Przechowywanie danych
Każdy projekt ma własną fizyczną bazę danych (obsługiwaną przez TimescaleDB). Gdy aplikacja definiuje tabele w data-template.yml, te tabele są automatycznie tworzone gdy użytkownik instaluje aplikację. Dane są prywatne per projekt — deweloperzy nie mają dostępu do danych użytkowników.
4. Obszar komunikatów
Po zainstalowaniu aplikacja otrzymuje prywatny obszar komunikatów łączący:
- Wszystkie instancje aplikacji na urządzeniach brzegowych
- Bazę danych projektu
- Interfejs użytkownika panelu
Komunikacja używa WAMP (Web Application Messaging Protocol) przez SDK IronFlock (ironflock-py dla Python, ironflock-js dla JavaScript).
5. Dostęp zdalny
Zdefiniuj porty i protokoły w port-template.yml, aby umożliwić bezpieczne tunelowanie do usług urządzenia. Użytkownicy mogą wtedy włączać/wyłączać te tunele per urządzenie. Zobacz Dostęp zdalny.
6. Agenty AI
Udostępniaj specyficzne dla domeny agenty AI przez ai-template.yml, które rozszerzają asystenta AI IronFlock. Zobacz Funkcje AI.
Trwałe przechowywanie na urządzeniach
Domyślnie dane wewnątrz kontenera są tracone przy restarcie. Dwa katalogi zachowują się między restartami:
| Ścieżka | Zakres |
|---|---|
/data | Prywatny dla tej aplikacji — inne aplikacje nie mogą uzyskać do niego dostępu |
/shared | Współdzielony między wszystkimi aplikacjami na urządzeniu |
Jeśli używasz Docker Compose, skonfiguruj trwałe wolumeny w swoim docker-compose.yml.
Dostęp do sprzętu
Jeśli twoja aplikacja wchodzi w interakcję z lokalnym sprzętem (czujniki, kamery, urządzenia szeregowe), te urządzenia są montowane w /dev wewnątrz kontenera.