Systemöversikt
Yggio sitter mellan enheter och applikationer och fungerar som en data broker. Enheter skickar in råa payloads över vilket protokoll de nu använder; Yggio avkodar dem, lagrar dem, ger dem en gemensam form, och serverar dem till applikationer genom öppna API:er. Runt den kärnan lägger plattformen integration, visualisering och berikning, så att ett användningsfall ofta kan levereras utan att bygga någon applikation alls.
Den här sidan är en sammanfattning av hela plattformen och länkar vidare till detaljerna. För vad Yggio gör snarare än hur det är byggt, se Introduktionen.

Frontend
Frontenden är byggd på modern webbteknik och hålls kontinuerligt aktuell, med grunden förnyad i takt med att tekniken rör sig snarare än lämnad att stelna. Det är det som säkrar utvecklingstakten: eftersom marken hålls aktuell kan en ny vy, en ny widget eller en helt ny förmåga levereras snabbt i dag, och kommer fortfarande att gå snabbt att leverera om ett år.
Dashboards
Widgetbaserade dashboards, satta samman med dra och släpp, som visar KPI:er, diagram och kartor över inkommande data. Se guiden för dashboards.

Enheter, karta och vyer
Gränssnittet för enhetshantering. Vyer byggs av filter med FIWARE Q-frågor, som matchar på attributvärden snarare än enhetsnamn, så en vy kan definieras som "allt som just nu ligger utanför sitt intervall" i stället för som en fast lista. Samma frågemekanism driver kartan, där enheter visas på sin rapporterade position och geofences upptäcker in- och utpassering, och larmvyerna nedan. Ett filtreringsbegrepp, tre presentationer.


En FIWARE Q-fråga som filtrerar på en avvikelse.
Larm och loggar
Larm i Yggio är fullvärdiga driftshändelser, på den nivå en operatör förväntar sig av ett SCADA-system.
Varje post bär:
- Prioritet: severe, high, medium eller low
- Typ: error, warning, info, verbose eller debug
- Kategori: update, command, status, access, analytics, rule eller system
- Kvittering: vem som kvitterade den och när, så att det är tydligt vad som är omhändertaget och av vem. Poster kan också kvitteras i bulk
Loggar är inte begränsade till enheter. De förs för enheter, connectorer, användargrupper och organisationer, så att en ändring av åtkomsträttigheter på en organisation eller en användargrupp är spårbar på samma ställe och i samma format som en sensor som går utanför sitt intervall. Verbose- och debug-poster är dolda som standard och visas på begäran, vilket håller driftsvyn läsbar.
Det finns tre sätt att skapa ett larm, och de kan kombineras:
- Tilldela en larmöversättare. De färdiga övervakar ett fält mot tröskelvärden satta som översättarparametrar, med hysteres så att ett värde som ligger nära en gräns inte får larmet att slå av och på. Se Larmöversättare.
- Skriv en egen översättare och ladda upp den, när villkoret är specifikt för din verksamhet. Se guiden för översättarutveckling.
- Använd regelmotorn, definiera villkoret där och skriv resultatet till loggen med åtgärden "Log".
Larmövervakningsvyn är en enhetsvy filtrerad på larmfält, som ger nuläget över hela beståndet. Se Loggar.

Appar och fältverktyg
Sidan Appar rymmer applikationer från Sensative och tredje part som lagrar information, länkar och åtkomsträttigheter och samspelar med Yggio-data. De kan byggas med eller utan en egen backend; se Kom igång med Yggio-appar.
Bredvid dem finns verktyg för dem som installerar och underhåller beståndet, som Enhetsuppdateraren, byggd för en mobiltelefon så att en montör kan uppdatera en enhet stående vid den.

Backend
Backenden är en uppsättning tillståndslösa mikrotjänster, var och en ansvarig för ett jobb och var och en skalbar för sig. Eftersom de inte håller något tillstånd mellan anrop kan instanser läggas till, tas bort eller bytas ut utan samordning, vilket är det som gör plattformen både redundant och horisontellt skalbar. Tjänster kommunicerar asynkront över en meddelandemäklare, och tillståndet bor i replikerbara databaser snarare än i tjänsterna själva.
Datavägen
Vad som händer mellan att en enhet sänder och att en applikation läser resultatet, enligt standardflödet:
- Ankomst. Enhetens nätverksserver eller gateway levererar payloaden till den connector som konfigurerats för enheten.
- Ingång genom integrations-API:et. Integrationer lämnar data till integrations-API:et i stället för att skriva till lagringen själva. Det är här entiteten slås upp eller skapas, och där kalibrering tillämpas, så att det är den råa avläsningen som korrigeras och ingen konsument ser den okorrigerade siffran.
- Översättning. Översättartjänsten kör varje översättare på noden, kedjade, där var och en ser föregåendes utdata.
- Beräkningar. Härledda värden beräknas ur de översatta fälten.
- Platstjänsten. Om enhetens position har ändrats uppdateras den, och geofence-tillhörighet utvärderas där flödet innehåller det.
- Distribution. Resultatet går till kanalerna, databasen och regelmotorn tillsammans, så att prenumerationer utlöses, historik skrivs och regler utvärderas utifrån samma uppdatering.

Eftersom varje steg är en egen tjänst blockerar en långsam översättare inte inmatningen, och belastning i en del av vägen skalar oberoende av resten.
Flöden
Vägen ovan är inte fast. Ett flöde är den uppsättning instruktioner som avgör vilken funktionalitet som hanterar en uppdatering, och fyra standardflöden följer med plattformen: Default, General Timer, General Geo Query, och General Timer and Geo Query. Timers tillåter en fördröjning innan ett larm utlöses; geo-frågor utvärderar om en nod är innanför eller utanför ett geofence, vilket är vad de flesta spårningsfall behöver.
Flöden kan också bära transformfunktioner, egen kod som laddas upp till plattformen och körs inuti flödet i en sandlådemiljö, och de kan gå förbi funktionalitet helt för att lagra högfrekvent data direkt till databasen. Varje connector har ett standardflöde, och flödet kan ändå tilldelas per enhet. Se Dataflöden, timers och geofences.
Integrations-API:et
Integrations-API:et, historiskt även kallat Lens, är lagret som ligger direkt ovanpå databasen. Allt annat i Yggio går genom det i stället för att läsa eller skriva lagringen själv, vilket är varför det är komponenten som upprätthåller hur en entitet skapas, kalibreras, översätts och uppdateras oavsett vilken integration eller vilket API datan kom in på.
Översättning och FIWARE-datamodeller
Enhetsdata kommer oftast som ett ogenomskinligt block av bytes. En översättare gör det till en fullt formad entitet som följer FIWARE Smart Data Models, med NGSI-LD-namngivning, så att samma mätning bär samma fältnamn oavsett tillverkare.
Detaljer som spelar roll när man skriver en:
- Översättare körs i en sandlådeisolat, inte i tjänsteprocessen. De har ingen åtkomst till nätverket, filsystemet eller värden, så en uppladdad översättare kan inte kompromettera plattformen.
- Varje översättare deklarerar en spec, och sandlådan avvisar varje utsänt fält som inte finns i den. En översättare kan inte i tysthet hitta på ett fält, vilket är det som hindrar datamodellen från att glida isär.
- Översättare kedjas, och kan skriva till mer än en nod, så att en enhets data kan mata flera logiska entiteter.
- Uppdateringar är atomära, så en delvis tillämpad översättning är aldrig observerbar.
Se Översättarutveckling och Översättar-API:et.

Publisher och prenumerationer
Publisher skickar ut händelser genom prenumerantkanaler allteftersom de sker, så att ett integrerande system får veta om en förändring i stället för att fråga efter den. Prenumerationer är avgränsade, vilket håller den utgående volymen proportionell mot vad mottagaren faktiskt bryr sig om. Se Publisher.
Enhetsövervakning
Yggio bevakar enheterna själva, inte bara deras avläsningar. En enhet som skulle ha rapporterat för en timme sedan och inte gjort det är ett fel värt att lyfta, så tystnad behandlas som en signal snarare än som frånvaron av en. Anslutningens hälsa övervakas vid sidan av.
Databaser, tidsserier och lagring
Yggio håller nuläget och metadata för varje enhet och behåller historiken vid sidan av. Både numeriska värden och strängvärden skrivs till tidsseriedatabasen, indexerade så att en intervallfråga över en enhet eller en grupp förblir snabb allteftersom historiken växer. Lagringstiden sätts per connector, från minst två dagar upp till obegränsat. Se Tidsseriedata.
Identitet och åtkomst
Identitets- och åtkomsthantering sköts av Keycloak, så att konton kan komma från en katalog du redan driver i stället för att underhållas två gånger. SAML 2.0, LDAP, Active Directory, OAuth 2.0 och OpenID stöds alla.
Ovanpå det ligger Yggios egen modell: åtkomsträttigheter per resurs med en uttalad ägare, roller som definierar vad en användare får göra (admin, editor, viewer-nivåerna, installer, eller en egen roll), användargrupper för att ändra behörigheter för många användare samtidigt, och Organisationshanteraren för att strukturera konton över en verksamhet. Delning kan vara bred genom organisationspolicyer eller smal, ned till en enskild användare.
Integrationer och connectorer
En integration lär Yggio ett protokoll; en connector är en konfigurerad instans av en, som håller inloggningsuppgifter, endpoints och prenumerationstopics för ett specifikt externt system, och är bunden till ett konto och dess enheter. Den uppdelningen är varför det är konfiguration och inte utveckling att lägga till ett andra LoRaWAN-nät, eller att flytta enheter mellan nät. Varje connector sätter också en lagringspolicy och standardflödet för enheter som skapas genom den.
LoRaWAN. Actility / Netmore ThingPark, ChirpStack v3 och v4, Netmore, The Things Network, Loriot och Helium (de två sista endast mottagande). Yggio kan också själv agera LoRaWAN join server, så att enhetsnycklar inte behöver hållas av en tredje part.
Generiskt, för NB-IoT, Cat-M, WiFi, BLE och Ethernet-enheter. MQTT, antingen på plattformens egen mäklare eller en extern, plus HTTP, CoAP och UDP.
Hubbar, för Z-Wave, Zigbee, Matter och Thread. En Hubitat-hubb ansluter över MQTT och för in allt den talar med i Yggio som vanliga enheter, inklusive Lutron samt LAN- och molnenheter som nås genom Hubitats egna och communitydrivna drivrutiner. Hubben hanterar radioprotokollet, och länken går åt båda håll, så en regel i Yggio kan slå om ett Z-Wave-relä eller sätta en nivå på en dimmer och det nya tillståndet kommer direkt tillbaka.
Fastighets- och industrisystem. BACnet IP och Modbus TCP för direkt kommunikation med fastighets- och industriutrustning, Delta Controls via EnteliWeb REST API, SIA Connect edge-gateways som når en rad BMS-plattformar, och Siemens Desigo CC, som Yggio kan förse med sensordata genom dess REST API.
Tillverkar- och tjänstespecifikt. BLE-gateways från Dusoniot, Celsiview, Elvaco CME, Klimator vägväderstationer och Open Weather Map för väder- och prognosdata.
Runt connectorerna finns ett ekosystem av partners, tjänsteleverantörer och plattformstillägg. Ytterligare protokoll kan stödjas på begäran. Se Översikt över connectorer, eller kontakta info@sensative.com.
Regler, schemaläggning och automation
Regler utvärderar villkor mot inkommande data och utlöser åtgärder, från att tända en lampa vid solnedgången till att skicka ett meddelande när en läcka upptäcks. Beräkningar härleder nya värden ur befintliga, och enheter kan skapas, uppdateras och exporteras i bulk, bland annat via CSV, så att ett bestånd på tusentals hanteras som en mängd snarare än en i taget. Schemaläggaren hanterar allt tidsbaserat, och Flow kör de resulterande uppgiftsträden, så att en utlösare kan förgrena sig i flera ordnade åtgärder.
Där logiken är omfattande är det rekommenderade mönstret att beräkna den i en översättare och låta själva regeln vara ett enkelt sant eller falskt-test. Det håller utvärderingen nära datan och regeln läsbar. Se guiden för regelmotorn.
Analys och AI
Avvikelseövervakning görs i första hand med larmöversättarna, som höjer ett larm när ett avkodat fält korsar ett tröskelvärde. Där det normala mönstret inte går att uttrycka som ett tröskelvärde tränar plattformen för driftsättning av AI-modeller en modell på en sensors egen historik och bedömer varje ny avläsning mot den. Hur som helst är resultatet ett vanligt värde, så det kan utlösa samma åtgärder som vilket annat värde som helst. AI-connectorn kopplar en LLM-assistent till plattformen. Dess samspel med Yggio går via dokumentationen: den svarar på frågor om hur plattformen fungerar och hur den används, utifrån dokumentationen och internet. Att fråga efter enhetsdata och köra automationer via API:et är planerat till en framtida release.
Rapportering och beslutsstöd
Rapporter täcker återkommande behov som mätaravläsning, nyttjandegrad och faktureringsunderlag, schemalagda av regelmotorn och levererade med e-post. Resultat kan läsas i Yggio, exporteras, eller konsumeras där organisationen redan arbetar, genom Power BI eller Grafana. Se Rapporter.


API:er och utbyggnadspunkter
- Yggio REST API, det huvudsakliga programmatiska gränssnittet, som täcker allt utanför NGSI-omfånget såsom användarhantering och regler, med interaktiv Swagger-dokumentation.
- FIWARE NGSI, som serveras vid sidan av, så att entiteter kan läsas och skrivas med FIWARE-konventioner.
- Kommandon och downlinks, för att skicka instruktioner tillbaka till enheter, inklusive LoRaWAN-downlinks och Z-Wave-inkludering.
- Geofences, med ett eget API.
- MQTT för publicera- och prenumerera-integration.
- Node.js SDK och Node-RED för att bygga på plattformen utan att börja från rå HTTP.
- Att bygga en integration, när ett protokoll eller system ännu inte stöds.

Datamarknadsplats
Datamarknadsplatsen är där dataset upptäcks och delas, oavsett om det handlar om att hitta data att bygga på eller att bidra med egen data för andra att använda.
Vart du går härnäst
- Användarguiden för att arbeta med plattformen till vardags.
- Utvecklardokumentationen för att bygga mot den.
- Utbildningsmaterialet, snabbaste sättet att se plattformen från början till slut. Det löper i tre nivåer:
- Standardarbetsflöde: att lägga till LoRaWAN-enheter, vyer, larmvyer och översättare, CSV-export och import, kartvyer, dashboards, datadelning.
- Utökat arbetsflöde: regelmotorn, beräkningar, generiska noder, enkla rapporter och Excel-rapporter, organisationer, roller, connectorer, extern datadelning och flöden.
- Avancerad användning: Grafana, Power BI, Node-RED, MQTT Explorer, Postman, curl och översättarutveckling.
- Releasenoteringar för vad som ändrats och när.
- Sensative-hårdvara: dokumentationen för LoRaWAN- och Z-Wave-sensorer.
- Juridiska avtal och policyer.