# IoT Open Arkitektur

# Översikt

IoT Open har en arkitektur. Plattformen kör alla komponenter som docker containrar. Dessa containrar kan köras i Kubernetes eller som fristående docker installationer, vanligtvis med docker-compose.

Den öppna plattformen från IoT Open körs i vårat eget Kubernetes kluster med full redundans.

# Huvudkomponenter

Figuren här nedanför visar en schematisk skiss på huvudkomponenterna i plattformen.

Architecture

# Administrativt gränssnitt

Det administrativa gränssnittet är det gränssnitt som användare oftast använder för att modifiera data inom plattformen. All information om organisationer, användare, installationer och andra objekt kan redigeras här.

Det administrativa gränssnittet använder API:et för alla förändringar.

# MQTT-Buss

MQTT-Bussen är blodomloppet eller motorvägen i plattformen. All telemetrisk data (mätvärden) skickas via MQTT-Bussen och kan läsas av olika applikationer som prenumererar på data.

MQTT står för 'MQ Telemetry Transport'. Det är designat kring principen publicering/prenumeration, är väldigt enkelt och lätt meddelandeprotokoll. Designen lämpar sig även bra för applikationer med låg bandbredd, hög latens eller dålig uppkoppling. Principen för protokollet är att minska bandbredden och användandet av enhetens resurser samtidigt som man behåller hög tillgänglighet och leveranssäkerhet.

# Moduler för processioning av strömmande data

Inom plattformen finns det moduler som lyssnar på MQTT trafiken och hanterar meddelanden på bussen. Som exempel finns det en modul som ansvarar för lagring av alla mätvärden som sedan går att hämta ut via API:et som historik och senaste kända värde.

Andra moduler hanterar integrationer till andra system eller andra uppgifter inom plattformen. Varje komponent kan köras med hög redundans för att minimera nertid och skalning vid hög belastning på bussen.

# Kort- och lång-tids lagring av data

Data i plattformen lagras i två olika typer av databaser. En SQL-databas som lagrar konfigurationsdata och all data kopplat till användare, installationer, organisationer och andra objekt. Telemetridata lagras i en separat tidsserie-databas optimerad för sökningar i tidsspann.

# API

API:et definieras både av MQTT-Bussen och ett REST API. Mer information om API: et kan hittas här.