Durchfluss pro Zeiteinheit

In einigen Anwendungsfällen soll die Differenz zwischen zwei Messwerten auf eine bestimme Zeiteinheit normalisiert werden, z.B. um den Stromverbrauch pro Stunde zu monitoren. Dabei soll auch berücksicht werden, dass ggf. durch schlechte Signalqualität mal ein Datenpaket verloren gehen kann, d.h. der Zeitstempel beider Messwerte ist zu berücksichtigen.

Design und Implementierung

Im gewünschten Virtuellen Gerät oder Digitalen Zwilling einen neuen Datenpunkt vom Typ “Virtuelles Gerät Aggregation” anlegen. Gewünschten Datenpunkt für die Aggregation auswählen (im unten gezeigten Beispiel “kwh”). Im Transformer folgendes hinterlegen:

module.exports = (data, lastData, meta) => {
      const currentValue = _.get(data, 'kwh');
      const currentValueTime = _.get(data, 'kwh_time');
      const deltaTimeMinutes = _.get(lastData, 'value.timestamp')
        ? ((new Date(currentValueTime) - new Date(lastData.value.timestamp)) / 60000)
        : 1;
      const delta = _.get(lastData, 'value.timestamp') ? (currentValue - lastData.value.orgValue) : 0;
      const deltaPerHour = delta * (60 / deltaTimeMinutes);

      return {timestamp: currentValueTime, orgValue: currentValue, deltaPerHour};