Modeller
Det finns sex huvudmodeller i Yggio:
- User
- Usergroup
- Iotnode
- Channel
- Location
Enheter av dessa modeller kan hämtas, skapas, ändras och raderas via REST API:er.
Varje skapad modellentitet får en _id
för referensändamål. En Id är en 24 tecken lång hex-sträng (t.ex. 507f1f77bcf86cd799439011).
Användare
En användare skapas när en person skapar ett konto i Yggio. Den används för autentisering och åtkomstkontroll till andra resurser.
Datastruktur för användare:
{
username: String,
displayName: String,
email: String,
password: String,
globalVisibility: Boolean
}
username
och password
används för autentisering.
displayName
kan ställas in om användaren inte vill att deras användarnamn ska visas offentligt.
email
är ett obligatoriskt fält som måste vara en giltig e-postadress.
globalVisibility
kontrollerar om användarnamnet kan sökas efter och ses av andra Yggio-användare. Detta är inställt på false som standard vid skapandet av en ny användare.
Användargrupp
En användargrupp är en uppsättning användare. Den används för två saker: iotnodåtkomsträttigheter och appfilter.
Att använda en användargrupp för att ange iotnodåtkomsträttigheter gör det enklare att kontrollera åtkomsträttigheter för en iotnod för flera användare samtidigt. Se avsnittet om iotnod för mer information.
Datastruktur för användargrupp:
{
owner: Id,
name: String,
members: [Id],
appFilter: {
enabled: Boolean,
allowedApps: [String]
}
}
owner
är en referens till användaren som äger användargruppen. När en ny användargrupp skapas kommer ägaren att vara den användare som skapade den.
name
används för visningsändamål.
members
innehåller referenser till alla användare som är medlemmar i användargruppen. När en ny användargrupp skapas kommer användaren som skapade den att läggas till medlemmarna.
appFilter
används för att kontrollera vilka appar (dvs. RPer) som är synliga för medlemmarna i användargruppen.
Iotnod
En iotnod är vanligtvis en representation av en fysisk enhet. Det kan dock också vara en virtuell enhet.
Datastruktur för iotnod:
{
name: String,
description: String,
category: String,
rabbitRouting: Object,
updatedAt: Date,
reportedAt: Date
}
Observera att modellen kommer att innehålla ytterligare attribut baserat på vilken typ av enhet det är.
name
och description
är för visningsändamål.
category
används för att gruppera iotnoder för att möjliggöra enkel filtrering.
rabbitRouting
används endast internt och bör inte ändras av externa utvecklare.
updatedAt
är en tidsstämpel som anger när något attribut senast uppdaterades (t.ex. namn, värde etc.).
reportedAt
är en tidsstämpel som anger när iotnoden senast fick en rapport från den fysiska enheten.
Kanal
En kanal används av publiceraren för att skicka uppdateringar till en extern tjänst (t.ex. en applikation) när en iotnodes data uppdateras. Data kan skickas antingen genom HTTP eller MQTT. Förfrågningens kropp kommer att inkludera iotnoden samt information om vilka attribut som uppdaterades.
Datastruktur för kanal:
{
name: String,
iotnode: Id,
// either http
http: {
url: String
}
// or mqtt
mqtt: {
type: String,
recipient: String
}
}
name
är en godtycklig sträng.
iotnode
är en referens till iotnoden.
http.url
är URL:en som meddelandena kommer att POSTas till.
mqtt
kommer att fyllas med mqtt.recipient
som anger en keycloakUser eller en basicCredentialsSet.
Location
Platsmodellen används för att gruppera iotnoder tillsammans och binda dem till en plats på världskartan.
Datastruktur för Location:
{
name: String,
description: String,
user: Id,
lat: Number,
lng: Number,
layers: [LocationLayer]
defaultLayer: LocationLayer,
}
Observera att det finns några ytterligare UI-relaterade attribut. Dessa är föråldrade och kommer att tas bort i framtiden.
name
och description
är för visningsändamål.
user
är en referens till användaren som skapade platsen.
lat
och lng
är koordinater för var platsen är belägen i världen.
layers
inkluderar alla tillagda lager och defaultLayer
är det lager som visas först när du går in i en plats. Se avsnittet om LocationLayer nedan.
LocationLayer
LocationLayer används för att gruppera objekt (iotnoder) på en plats. Till exempel: om en plats är en byggnad kan en LocationLayer ses som en våning i den byggnaden.
{
name: String,
items: [LocationItem]
}
LocationItem
LocationItem är en wrapper för en enskild iotnod på en Location.
{
name: String,
deviceId: Id,
}
name
is for display purposes.
deviceId
is a reference to an iotnode.
BasicCredentialsSet
BasicCredentialsSet är en uppsättning användarnamn och lösenord som kan användas i Yggio. För närvarande används den endast när publishing MQTT-messages to Yggio.
{
username: String,
password: String,
}
username
password
ReservedMqttTopic
ReserveradMqtt-ämne används för att reservera topics på Yggio och parar ihop det med en BasicCredentialsSet. Detta säkerställer att endast auktoriserade användare och enheter har åtkomst till denna topic.
{
topic: String,
basicCredentialsSetId: Id,
}
topic
den reserverade topic.
basicCredentialsSetId
är en referens till en BasicCredentialsSet.