#
Platform structuur
Het platform is opgebouwd uit een aantal lagen zoals afgebeeld in
#
Figuur 1: Module Structuur
Vergroten
%%{init: {'theme':'base'}}%% graph TD subgraph "Hoofdlaag (1)" A("[platform]")-->B("[system]") end subgraph "Systeemlaag (2)" B --> M(modules) B --> S(services) end subgraph "Datalaag (3)" subgraph S--> Q("[service-name]") S--> D(discovery) D--> DQ("[MAC/service-name]") DQ --> DO(online) DO-->DOT(type) DO-->DOD(description) DQ --> DE(enabled) DE-->DET(type) DE-->DED(description) DQ --> DV(version) DV-->DVT(type) DV-->DVD(description) DQ --> DT(timestamp) DT-->DTT(type) DT-->DTD(description) DQ --> DP("~") DP-->DPT(type) DP-->DPD(description) end subgraph M --> MSP("[specific-function]") MSP --> MI("[index]") MI --> MIN(inputs) MIN --> MIN_DATA("[data]") MIN_DATA --> MIN_DATA_TYPE("type") MIN_DATA_TYPE --> MIN_DATA_TYPE_RANGE("range*") MIN_DATA_TYPE_RANGE --> MIN_DATA_TYPE_RANGE_MIN("min") MIN_DATA_TYPE_RANGE --> MIN_DATA_TYPE_RANGE_MAX("max") MIN_DATA_TYPE_RANGE --> MIN_DATA_TYPE_RANGE_STEPS("steps") MIN_DATA --> MIN_DATA_DESCR("description") MI --> MCONF(config) MCONF --> MCONF_DATA("[data]") MCONF_DATA --> MCONF_DATA_TYPE("type") MCONF_DATA_TYPE --> MCONF_DATA_TYPE_RANGE("range*") MCONF_DATA_TYPE_RANGE --> MCONF_DATA_TYPE_RANGE_MIN("min") MCONF_DATA_TYPE_RANGE --> MCONF_DATA_TYPE_RANGE_MAX("max") MCONF_DATA_TYPE_RANGE --> MCONF_DATA_TYPE_RANGE_STEPS("steps") MCONF_DATA --> MCONF_DATA_DESCR("description") MI --> MOUT(outputs) MOUT --> MOUT_DATA("[data]") MOUT_DATA --> MOUT_DATA_TYPE("type") MOUT_DATA_TYPE --> MOUT_DATA_TYPE_RANGE("range*") MOUT_DATA_TYPE_RANGE --> MOUT_DATA_TYPE_RANGE_MIN("min") MOUT_DATA_TYPE_RANGE --> MOUT_DATA_TYPE_RANGE_MAX("max") MOUT_DATA_TYPE_RANGE --> MOUT_DATA_TYPE_RANGE_STEPS("steps") MOUT_DATA --> MOUT_DATA_DESCR("description") end end
#
Hoe is de structuur opgebouwd.
De structuur van het platform bestaat uit drie lagen:
- Hoofdlaag
- Systeemlaag
- Datalaag
Deze opbouw is aan het platform gegeven om de overzichtelijkheid en de leesbaarheid te kunnen waarborgen. Door de opbouw in te delen in lagen wordt het duidelijk, hoe de gelaagdheid van de data is opgebouwd.
#
Hoofdlaag
#
Figuur 2: Systeemlaag (2)
%%{init: {'theme':'base'}}%% graph TD subgraph "Hoofdlaag (1)" A("[platform]")-->B("[system]") end
De hoofdlaag geeft aan door middel van de [platform]notatie aan welk van welk platform de structuur wordt bekeken. Vanuit de deze notatie kunnen er meerde platformen aan elkaar worden gekoppeld. Dit doordat de platforms door de [platform]notatie van elkaar kunnen worden gescheiden. Dit heeft als voordeel dat de overzichtelijkheid en leesbaarheid hierdoor wordt vergroot.
#
Systeemlaag
#
Figuur 3: Systeemlaag (2)
%%{init: {'theme':'base'}}%% graph TD subgraph "Systeemlaag (2)" S(services) M(modules) end
De systeemlaag is opgebouwd uit twee subonderdelen:
- services
- modules
#
Services
De services blok dient ervoor om services binnen de systeemlaag op te kunnen nemen. Een service maakt deel uit van de functie verzameling van een platform. Echter past een functie niet binnen de structurering van de modules. Dit doordat het geen slimme module met specifieke functie met daarbij een output.
#
Discovery Service
#
Figuur 4: Discovery Service
%%{init: {'theme':'base'}}%% graph TD subgraph D(discovery) D--> DQ("[MAC/service-name]") DQ --> DO(online) DO-->DOT(type) DO-->DOD(description) DQ --> DE(enabled) DE-->DET(type) DE-->DED(description) DQ --> DV(version) DV-->DVT(type) DV-->DVD(description) DQ --> DT(timestamp) DT-->DTT(type) DT-->DTD(description) DQ --> DP(timestamp) DP-->DPT(type) DP-->DPD(description) end
De discovery service wordt gebruikt om modules en services een centrale plek te geven waarin deze statusinformatie van hunzelf kwijt kunnen. De discovery service bestaat uit de volgende datavelden:
- online (Will Topic):
Geeft aan of de module nog beschikbaar is in het systeem. Ook geeft het systeem bij abrupte ontkoppeling van de desbetreffende module weer of deze nog kan worden gevonden binnen het systeem. - enabled:
Geeft aan of de module mag worden gebruikt door andere modules. - version:
Geeft de informatie van de service of smart module. Dit kan gebruikt worden om statische hardware specificatie door te geven en/of firmware revisies in te kunnen vermelden - timestamp:
Geeft de laatste update tijd weer. - ~ (working path):
Geeft aan onder welk ‘topic’ (path) de smart module of service de informatie publiceert.
Met deze datavelden kan er worden gekeken wanneer een module of service niet meer beschikbaar is binnen de structuur. Ook is hierin versie-informatie meegenomen om onderscheid te kunnen maken tussen verschillende versies van modules en services.
#
Datastructuur
Alle data binnen het platform is gestructureerd zoals in Figuur 5 weergegeven. In deze structuur is alle data
#
Figuur 5: Datastructuur
%%{init: {'theme':'base'}}%% graph TD DATA("[data]") DATA --> DATA_TYPE("type") DATA_TYPE --> DATA_TYPE_RANGE("range*") DATA_TYPE_RANGE --> DATA_TYPE_RANGE_MIN("min") DATA_TYPE_RANGE --> DATA_TYPE_RANGE_MAX("max") DATA_TYPE_RANGE --> DATA_TYPE_RANGE_STEPS("steps") DATA --> DATA_DESCR("description")