Zbuduj swoją pierwszą aplikację
Ten przewodnik prowadzi przez typowy przepływ pracy budowania aplikacji IronFlock, która zbiera dane z urządzeń brzegowych i wyświetla je na panelach w czasie rzeczywistym.
1. Zaprojektuj model danych
Zacznij w pliku .ironflock/data-template.yml. Pomyśl o dwóch kategoriach tabel:
- Tabele encji — śledzą aktualny stan rzeczy (urządzeń, maszyn, połączeń). Wiersze są dołączane przy każdej zmianie;
maintainLatestFlagFordeklaruje, które kolumny identyfikują encję, dzięki czemu najnowszy wiersz każdej encji można odczytać na żądanie. - Tabele szeregów czasowych — zbierają pomiary w czasie (odczyty czujników, metryki). Każdy wiersz to nowy punkt danych ze znacznikiem czasu.
data:
tables:
# Tabela encji: jeden wiersz per urządzenie, aktualny stan zawsze dostępny
- tablename: devices
maintainLatestFlagFor: ['device_key']
columns:
- id: tsp
dataType: timestamp
- id: device_key
dataType: string
- id: status
dataType: string
- id: device_name
dataType: string
- id: deleted
dataType: boolean
# Tabela szeregów czasowych: okresowe odczyty z podłączonego sprzętu
- tablename: readings
columns:
- id: tsp
dataType: timestamp
- id: server_id
dataType: string
- id: metric
dataType: string
- id: value
dataType: numeric2. Skonfiguruj środowisko testowe
Aby testować swoją aplikację, potrzebujesz środowiska deweloperskiego w projekcie z co najmniej jednym urządzeniem online:
- Kliknij Develop na stronie szczegółów aplikacji, aby otworzyć Cloud IDE.
- Wybierz urządzenie online z dowolnego projektu, do którego masz dostęp.
- Kliknij Create Backend w panelu bocznym, aby stworzyć środowisko deweloperskie w bazie danych tego projektu.
To tworzy instancje tabel zdefiniowanych w data-template.yml w bazie danych projektu.
3. Napisz kod brzegowy
Twój kontener Docker działa na urządzeniu i używa SDK IronFlock do interakcji z bazą danych projektu.
Rejestruj urządzenie przy uruchomieniu
Gdy komponent brzegowy się uruchamia, dołącz wiersz do tabeli encji devices:
Python
import asyncio
from ironflock import IronFlock
async def main():
await flock.append_to_table("devices", {
"device_key": os.environ.get('DEVICE_KEY'),
"tsp": now,
"status": "online",
"device_name": os.environ.get('DEVICE_NAME'),
"deleted": False
})
flock = IronFlock(mainFunc=main)
flock.run()Zbieraj dane szeregów czasowych
Po nawiązaniu połączeń sprzętowych przeprowadzaj cykliczne polling i zapisuj odczyty do tabeli readings:
Python
async def polling_loop(server_id, client):
while True:
values = client.read_registers()
for metric, value in values.items():
await flock.publish_to_table("readings", {
"server_id": server_id,
"metric": metric,
"value": value
})
await asyncio.sleep(5)4. Zbuduj panel
Otwórz edytor paneli i dodaj widgety połączone z tabelami backendu danych.
Pokaż status urządzenia
Dodaj widget Tabela połączony z tabelą devices. Włącz przełącznik latest w ustawieniach filtrów widgetu, aby zawsze pokazywał aktualny stan każdego urządzenia.
Wizualizuj dane szeregów czasowych
Dodaj widget Wykres liniowy połączony z tabelą readings. Ustaw oś X na kolumnę tsp i oś Y na value. Filtruj według metric, aby pokazywać odczyty dla konkretnej metryki.
5. Przetestuj i zopublikuj
- Użyj terminala Cloud IDE, aby uruchomić kod brzegowy na urządzeniu testowym.
- Sprawdź czy dane pojawiają się na panelu.
- Gdy wszystko działa, utwórz Wydanie, aby wdrożyć aplikację na urządzenia produkcyjne.