# Snel aan de slag

# Wat is een slimme module

Vanuit het software perspectief wordt een slimme module gezien, als een object dat met input* een voorgedefinieerde functie kan uitvoeren en het resultaat van deze functie kan terugkoppelen. Zoals hieronder afgebeeld in Figuur 1.

# Figuur 1: Module Structuur
%%{init: {'theme':'base'}}%%
graph LR 
    subgraph Smart Module
        Input["Input(*)"]-->Functie-->Output
        click Input href "#wat-zijn-inputs"
    end

# Wat zijn inputs?

Voor een slimme module kunnen inputs van belang zijn bij het uitvoeren van de functie van de module. Zo kan er bijvoorbeeld voor slimme motor module de snelheid via een input worden geregeld. Inputs kunnen dus worden gebruikt om de functie van de module te beïnvloeden. Echter kan het zo zijn dat een module geen input nodig heeft om zijn functie uit te kunnen voeren. Daarom zijn inputs ook optioneel.

# Wat is een functie?

Een functie is voor een slimme module de functionaliteit wat een module aan het een Aquabot platform kan toevoegen. Zoals in het voorbeeld hierboven beschreven met het via inputs kunnen regelen van de snelheid van een slimme motor module. Voegt een slimme motor module de functionaliteit van een motor die in snelheid geregeld kan worden toe aan het platform. Om een functie te kunnen configureren is er in de structurering van de data een configuratie mogelijkheid meegenomen.

# Wat zijn outputs?

Een slimme module geeft altijd resultaat van de uitgevoerde functie. Dit om synchronisatie van de data in het gehele platform te kunnen garanderen. Een output dient als feedback op de uitgevoerde functie. Zo wordt er vanuit het voorbeeld van de slimme motor module, de werkelijke waarde van de snelheid van de motor teruggekoppeld. Zo kan er worden gekeken of de gewilde snelheid, via een input gestuurd tegen de slimme motor module, is bereikt.