Ga naar inhoud

Berekende kanalen

Kanalen met aggregatie methode DERIVED tonen berekende gegevens. Deze berekening is op basis van gegevens van andere kanalen. De berekening vindt plaats op de CEMM op het moment dat de gegevens nodig zijn. Kanalen met aggregatie methode DERIVED zijn te gebruiken in tijdreeksen, notificatie triggers, exports en in de meeste widgets. Enkele bewerkingen zijn niet beschikbaar, zoals de MIN en MAX waardes in een bepaalde periode.

Situaties waarin een DERIVED een oplossing kan bieden zijn onder andere:

  • Optellen van twee of meer zon-meters
  • Verbruik van een laadpaal aftrekken van het totale verbruik
  • Normaliseren van de productie van een zonnesysteem
  • Drempelwaarde instellen voor een pulsmeter

De berekening van een DERIVED kanaal is een formule waar één of meer kanalen en constanten in voor kunnen komen. Ook zijn er een aantal functies beschikbaar. Dit systeem is vergelijkbaar met een Excel formule.

Voordat de berekening wordt uitgevoerd, worden gegevens opgevraagd van de kanalen die in de formule voorkomen. Vervolgens wordt de formule voor ieder datapunt uitgevoerd. Stel dat een tijdreeks van een maand wordt opgevraagd, wordt de formule voor iedere dag van die maand uitgevoerd.

Omdat er geen gegevens worden opgeslagen voor een DERIVED kanaal, wordt er ook geen ruimte in de database gereserveerd. Hierdoor zijn ze geschikt om mee te experimenteren. Verwijderen heeft geen negatieve invloed op de werking van de CEMM.

Formule

De formule bestaat uit:

  • variabelen, waaronder de waardes van de gerelateerde kanalen
  • operatoren, zoals +, -, *, /, ^ (macht) en % (modulo). Als deze operatoren worden gebruikt en een lege waarde tegenkomt, zal een foutmelding optreden. Dat is niet erg, maar zorgt er wel voor dat de berekening niet kan worden uitgevoerd.
  • onderstaande functies
functie beschrijving bij NULL waarde
sum(x, ...) Optellen van meerdere waardes wordt genegeerd
filternull(x, ...) Filtert alle NULL waardes uit de lijst -
coalesce(x, ...) Geeft de eerste niet-NULL waarde terug -
min(x, ...) en max(x, ...) Geeft de minimale of maximale waarde terug foutmelding
min(filternull(x, ...)) en max(filternull(x, ...)) Geef de minimale of maximale waarde terug wordt genegeerd
avg(x, ...) Gemiddelde van de waardes wordt genegeerd
abs(x) Absolute waarde van x wordt genegeerd
round(x[, n]) Afronden van x op n decimalen, n is optioneel en standaard 0 wordt genegeerd
  • een "shorthand-if" statement is ook mogelijk, bijvoorbeeld: 0 if x < 20 else x
  • gebruik een punt . als decimaalteken, bijvoorbeeld 3.14
  • haakjes () kunnen worden gebruikt om de volgorde van de berekening te bepalen, bijvoorbeeld 3 * (2 + 4)

Voorbeeld

Twee of meer zon-meters optellen is een voorbeeld van het gebruik van berekende kanalen. Hier worden de vermogens en energie van twee zon-meters bij elkaar opgeteld. De opgetelde productie wordt weergegeven als nieuwe meter met zijn eigen grafieken.

Enkele voorbeelden van formules:

  • sum(ch33, ch34) : Optellen van twee kanalen
  • ch33 + ch34 : Optellen van twee kanalen, maar als één van beide NULL (leeg) is, is de optelling ook leeg
  • ch4 / 5.3 : Delen van een kanaal door een constante, bijvoorbeeld om een genormaliseerde productie uit te rekenen (kWh/kW)
  • ch4 - ch6 : Verschil tussen twee kanalen, bijvoorbeeld om het verbruik van een laadpaal af te trekken van het totale verbruik
  • 0 if ch4 < 20 else ch4 : Drempelwaarde van 20. Handig voor een pulsmeter die 's nachts verbruik van de omvormer meet. Als de "productie" onder de 20W is, wordt het op 0 gezet.'