Hoppa till huvudinnehåll

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.