Proposed Schema and data flow for telemetry

Hey all, working on UPSat satellite, we are trying to establish a clear flow for telemetry data spanning from the actual satellite down to how we display them on DB.

The flow can be found here:
https://drive.google.com/file/d/0B9mDsApYbjUNdGhIN3ZZUHF4QkE/view?usp=sharing

The json schema proposed for internal DB usage would be this:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "id": "",
  "type": "object",
  "title": "Satellite telemetry",
  "description": "Generic satellite telemetry data for SatNOGS DB",
  "name": "/",
  "properties": {
    "satellite": {
      "id": "/satellite",
      "type": "string",
      "title": "Satellite schema.",
      "description": "Satellite NORAD Cat ID",
      "name": "satellite"
    },
    "datetime": {
      "id": "/datetime",
      "type": "string",
      "title": "Datetime schema.",
      "description": "Datetime of observation in ISO 8601, combined date and time in extended format on UTC",
      "name": "datetime"
    },
    "data": {
      "id": "/data",
      "type": "object",
      "title": "Data schema.",
      "description": "Telemetry Data",
      "name": "data",
      "properties": {
        "key": {
          "id": "/data/key",
          "type": "string",
          "title": "Key schema.",
          "description": "Data in key value format",
          "name": "key"
        }
      }
    }
  },
  "required": [
    "satellite",
    "datetime",
    "data"
  ]
}

The satellite could live outside the json schema, since we already know which satellite we render. Also datetime should not be required; we may have satellites that don’t send this and we would have just the observation satellite to plot. And we should probably include observation satellite in there to make it easier for the D3 code.

So an example could look like this:

{
    "satellite_datetime": "2016-04-08T16:30:00Z",
    "observation_datetime": "2016-04-07T11:45:23Z",
    "demod_data": {
        "key": "value",
        "key": "value",
        "key": "value",
        "key": "value",
        "key": "value"
    }
}

:thumbsup:

That should be the observation datetime? In terms of telemetry, anything the satellite sends for clock (usually uptime/mission duration) would be captured in the k:v store.

OK :slight_smile:
Updated (and hopefully final) API Json example for the DB endpoint:

{
  "norad_id": "234234",
  "transmitter": "29384",
  "appendix": [
    {
      "Key": "EPS_V",
      "Description": "EPS Voltage",
      "Unit": "Volt"
    },
    {
      "Key": "EPS_T",
      "Description": "EPS Temperature",
      "Unit": "Celsius"
    },
    {
      "Key": "COMMS_T",
      "Description": "COMMS Temperature",
      "Unit": "Celsius"
    }
  ],
  "telemetry": [
    {
      "satellite_datetime": "20160408T234900Z",
      "observation_datetime": "20160408T234900Z",
      "data_id": "234",
      "damod_data": {
        "EPS_V": "9.1",
        "EPS_T": "14",
        "COMMS_T": "24"
      }
    },
    {
      "satellite_datetime": "20160407T234900Z",
      "observation_datetime": "20160407T234900Z",
      "data_id": "224",
      "damod_data": {
        "EPS_V": "10.1",
        "EPS_T": "24",
        "COMMS_T": "34"
      }
    },
    {
      "satellite_datetime": "20160406T234900Z",
      "observation_datetime": "20160406T234900Z",
      "data_id": "214",
      "damod_data": {
        "EPS_V": "9",
        "EPS_T": "34",
        "COMMS_T": "24"
      }
    },
    {
      "satellite_datetime": "20160405T234900Z",
      "observation_datetime": "20160405T234900Z",
      "data_id": "204",
      "damod_data": {
        "EPS_V": "9.5",
        "EPS_T": "33",
        "COMMS_T": "22"
      }
    }
  ]
}
1 Like