Loggen von Datenpunkten


 

Allgemein
Datenpunkte können geloggt und anschließend in einem JSON-Array zusammengefasst werden. Ein einzelner Log-Eintrag ist per Default ein JSON-Objekt mit einem Zeitstempel-Key "ts" und dem Wert "value".

Zeitstempel ‘ts‘ 
Der Zeitstempel entspricht der Zeit, zu der der Eintrag in den Log übernommen wurde. Alternativ kann jedoch auch ein JSON-Template angegeben werden, aus dem der Log-Eintrag dann erstellt wird. Andere Templates als JSON werden aktuell nicht unterstützt.

Buffer
Die Datenpunkt-Logs werden gebuffert und wenn der Buffer voll ist, auf der SD-Karte gespeichert. Die Logs gehen daher auch bei Neustart des Gateways nicht verloren, es sei denn der Buffer konnte nicht mehr auf die SD-Karte geschrieben werden.

Versionierung
Die Logs sind versioniert und beim Öffnen des Logs wird überprüft, ob die Version kompatibel ist. Sollte durch ein Update die Version nicht mehr kompatibel sein, wird der Log nach dem Update gelöscht.

Löschen (manuell)
Sollen die Logs manuell gelöscht werden, so muss beim Neustart über die Weboberfläche die Option "delete trendlog data" aktiviert werden.

Konfiguration
Zur Konfiguration wird der Datenpunkt im format-String mit dem Eintrag "Log:X" erweitert, wobei X eine Intervall-Angabe äquivalent zu „Customizable Payload“ ist. In jedem Intervall wird in den Log geschrieben. Wenn X = 0 ist, so wird nur bei Wertänderung in den Log geschrieben.

Zusätzlich zu "Log:" sollte auch immer "T:" gesetzt sein (siehe auch „Customizable Payload“), sonst wird der Log bei jeder Wertänderung gepublisht.

 [S value TempLog]
name  = UGW Temperature
query = pe
format = Log:1 template:simple.json 

[S value CPULog]
name  = UGW Temperature
query = pe
format = Log:1 

[A publish ugw/LogSys]
name = UGW Temperature
query = pe
format = T:60 template:systemLog.json

Dafür werden noch die folgenden beiden Templates benötigt:
simple.json

{"changed": "<$LASTCHANGED>", "val": "<$VALUE>"}

systemLog.json

{
"CPU":  "<value CPULog>",
  "Temp": "<value TempLog>"
}

Ergebnis
Das Ergebnis wird im Folgenden aus Platzgründen unterbrochen und damit nicht vollständig dargestellt. Der Beginn der Bereiche CPU und Temp sowie der Zeitpunkt zu dem das Gateway neu gestartet sind gut zu erkennen:

{
  "CPU": [
    {
      "ts": 1652186004,
      "value": 8
    },
    {
      "ts": 1652186005,
      "value": 8
    },

 

    {
      "ts": 1652186038,
      "value": 8
    },
    {
      "ts": 1652186039,
      "value": 10
    },
    {
      "ts": 1652186040,
      "value": 10
    },
    {
      "ts": 1652186041,
      "value": 10
    },
    {
      "ts": 1652186042,
      "value": 10
    },

 

    {
      "ts": 1652186128,
      "value": 8
    },
    {
      "ts": 1652186129,
      "value": 8
    }
  ],
  "Temp": [
    {
      "changed": "2022-05-10T12:33:24+0000",
      "val": 39
    },
    {
      "changed": "2022-05-10T12:33:25+0000",
      "val": 39
    },
    {

 

    },
    {
      "changed": "2022-05-10T12:34:18+0000",
      "val": 39
    },
    {
      "changed": "2022-05-10T12:34:31+0000",
      "val": null
    },
    {
      "changed": "2022-05-10T12:34:32+0000",
      "val": null
    },

 

    {
      "changed": "2022-05-10T12:35:27+0000",
      "val": 39
    },
    {
      "changed": "2022-05-10T12:35:28+0000",
      "val": 39
    },
    {
      "changed": "2022-05-10T12:35:29+0000",
      "val": 39
    }
  ]
}

 

    {
      "changed": "2022-05-10T12:35:27+0000",
      "val": 39
    },
    {
      "changed": "2022-05-10T12:35:28+0000",
      "val": 39
    },
    {
      "changed": "2022-05-10T12:35:29+0000",
      "val": 39
    }
  ]
}