Telemetriedatenformat v2

Einleitung

Nachdem unser bisher verwendetes Telemetriedatenformat v1 – das den Namen kaum verdient, denn es ist einfach ein flacher JSON-Container – ein wenig aus den Nähten platzt, wollen wir an einer Version 2 arbeiten.

Ziel: Nicht zu groß und nicht zu knapp und weiterhin einigermaßen flexibel auf Basis von Konventionen und Heuristiken. Bei Bedarf aber auch detaillierter, um bestimmte Dinge spezifischer festnageln zu können.

Das vor Kurzem diskutierte designierte Telemetriedatenformat v2 sieht beispielsweise folgendermaßen aus. Es gibt zwei Varianten – weiterhin eine kompakte und eine ausführliche.

Variante 1 – kompakt

{
  "meta": {
    "version": "2.0.0",
    "time": "({RFC3339} | {Unixtime})",
    "geohash": "u33dbtdck",
    "location": "Out in the woods near Wedding, Berlin, Germany"
  },
  "system": {
    "mcu.memfree": 2291968,
    "mcu.temperature": 42.42,
    "wifi.rssi": -75
  },
  "observations": {
    "humidity.outside": 33.46,
    "temperature.outside": 22.67,
    "temperature.inside": 23.5,
    "temperature.lane:1": 22.67,
    "temperature.lane:2": 22.67,
    "temperature.lane:3": 22.67,
    "temperature.lane:4": 22.67,
    "weight": 42.42
  }
}

Variante 2 – ausführlich

{
  "meta": {
    "version": "2.0.0",
    "time": "({RFC3339} | {Unixtime})",
    "geohash": "u33dbtdck",
    "location": "Out in the woods near Wedding, Berlin, Germany"
  },
  "system": [
    {"name": "mcu.memfree", "unit": "bytes", "value": 2291968},
    {"name": "mcu.temperature", "unit": "celsius", "value": 42.42},
    {"name": "wifi.rssi", "unit": "decibel", "value": -75}
  ],
  "observations": [
    {"name": "humidity.outside", "unit": "percentage", "value": 33.46},
    {"name": "temperature.outside", "unit": "celsius", "value": 22.67},
    {"name": "temperature.inside", "unit": "celsius", "value": 23.5},
    {"name": "temperature.body:1", "unit": "celsius", "value": 22.67, "description": "Temperatur Brutraum 1"},
    {"name": "temperature.body:2", "unit": "celsius", "value": 22.67, "description": "Temperatur Brutraum 2"},
    {"name": "temperature.super:1", "unit": "celsius", "value": 22.67, "description": "Temperatur Honigraum 1"},
    {"name": "temperature.super:2", "unit": "celsius", "value": 22.67, "description": "Temperatur Honigraum 2"},
    {"name": "temperature.lane:1", "unit": "celsius", "value": 22.67, "description": "Temperatur Wabengasse 1"},
    {"name": "temperature.body:1.lane:5", "unit": "celsius", "value": 22.67, "description": "Temperatur Brutraum 1, Wabengasse 5"},
    {"name": "weight:1", "unit": "kilogram", "value": 42.42}
  ]
}
1 Like