Windows 10 Sensor Reading

Schema for Windows 10 sensor readings as defined by the Windows.Devices.Sensors namespace. Covers accelerometer, gyrometer, compass, inclinometer, light sensor, barometer, orientation, pedometer, proximity, and human presence sensor data.

DesktopOperating SystemUWPWin32Windows

Properties

Name Type Description
sensorType string The type of sensor
timestamp string Timestamp of the reading
reading object The sensor reading data
View JSON Schema on GitHub

JSON Schema

microsoft-windows-10-sensor-reading-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://developer.microsoft.com/schemas/windows-10/sensor-reading.json",
  "title": "Windows 10 Sensor Reading",
  "description": "Schema for Windows 10 sensor readings as defined by the Windows.Devices.Sensors namespace. Covers accelerometer, gyrometer, compass, inclinometer, light sensor, barometer, orientation, pedometer, proximity, and human presence sensor data.",
  "type": "object",
  "properties": {
    "sensorType": {
      "type": "string",
      "enum": [
        "Accelerometer",
        "Gyrometer",
        "Compass",
        "Inclinometer",
        "LightSensor",
        "Barometer",
        "Altimeter",
        "Magnetometer",
        "OrientationSensor",
        "SimpleOrientationSensor",
        "Pedometer",
        "ProximitySensor",
        "ActivitySensor",
        "HumanPresenceSensor",
        "HingeAngleSensor"
      ],
      "description": "The type of sensor"
    },
    "timestamp": {
      "type": "string",
      "format": "date-time",
      "description": "Timestamp of the reading"
    },
    "reading": {
      "oneOf": [
        { "$ref": "#/$defs/AccelerometerReading" },
        { "$ref": "#/$defs/GyrometerReading" },
        { "$ref": "#/$defs/CompassReading" },
        { "$ref": "#/$defs/InclinometerReading" },
        { "$ref": "#/$defs/LightSensorReading" },
        { "$ref": "#/$defs/BarometerReading" },
        { "$ref": "#/$defs/AltimeterReading" },
        { "$ref": "#/$defs/MagnetometerReading" },
        { "$ref": "#/$defs/OrientationReading" },
        { "$ref": "#/$defs/PedometerReading" },
        { "$ref": "#/$defs/ProximityReading" },
        { "$ref": "#/$defs/HumanPresenceReading" },
        { "$ref": "#/$defs/HingeAngleReading" }
      ],
      "description": "The sensor reading data"
    }
  },
  "required": ["sensorType", "timestamp", "reading"],
  "$defs": {
    "AccelerometerReading": {
      "type": "object",
      "description": "Accelerometer reading (AccelerometerReading class)",
      "properties": {
        "accelerationX": {
          "type": "number",
          "format": "double",
          "description": "G-force along the X axis"
        },
        "accelerationY": {
          "type": "number",
          "format": "double",
          "description": "G-force along the Y axis"
        },
        "accelerationZ": {
          "type": "number",
          "format": "double",
          "description": "G-force along the Z axis"
        }
      },
      "required": ["accelerationX", "accelerationY", "accelerationZ"]
    },
    "GyrometerReading": {
      "type": "object",
      "description": "Gyrometer reading (GyrometerReading class)",
      "properties": {
        "angularVelocityX": {
          "type": "number",
          "format": "double",
          "description": "Angular velocity around the X axis in degrees per second"
        },
        "angularVelocityY": {
          "type": "number",
          "format": "double",
          "description": "Angular velocity around the Y axis in degrees per second"
        },
        "angularVelocityZ": {
          "type": "number",
          "format": "double",
          "description": "Angular velocity around the Z axis in degrees per second"
        }
      },
      "required": ["angularVelocityX", "angularVelocityY", "angularVelocityZ"]
    },
    "CompassReading": {
      "type": "object",
      "description": "Compass reading (CompassReading class)",
      "properties": {
        "headingMagneticNorth": {
          "type": "number",
          "format": "double",
          "minimum": 0,
          "maximum": 360,
          "description": "Heading in degrees relative to magnetic north"
        },
        "headingTrueNorth": {
          "type": ["number", "null"],
          "format": "double",
          "minimum": 0,
          "maximum": 360,
          "description": "Heading in degrees relative to true north"
        },
        "headingAccuracy": {
          "type": "string",
          "enum": ["Unknown", "Unreliable", "Approximate", "High"],
          "description": "Magnetometer accuracy (MagnetometerAccuracy)"
        }
      },
      "required": ["headingMagneticNorth"]
    },
    "InclinometerReading": {
      "type": "object",
      "description": "Inclinometer reading (InclinometerReading class)",
      "properties": {
        "pitchDegrees": {
          "type": "number",
          "format": "double",
          "description": "Pitch rotation around the X axis in degrees"
        },
        "rollDegrees": {
          "type": "number",
          "format": "double",
          "description": "Roll rotation around the Y axis in degrees"
        },
        "yawDegrees": {
          "type": "number",
          "format": "double",
          "description": "Yaw rotation around the Z axis in degrees"
        },
        "yawAccuracy": {
          "type": "string",
          "enum": ["Unknown", "Unreliable", "Approximate", "High"]
        }
      },
      "required": ["pitchDegrees", "rollDegrees", "yawDegrees"]
    },
    "LightSensorReading": {
      "type": "object",
      "description": "Light sensor reading (LightSensorReading class)",
      "properties": {
        "illuminanceInLux": {
          "type": "number",
          "format": "float",
          "minimum": 0,
          "description": "Ambient light level in lux"
        },
        "chromaticity": {
          "type": "object",
          "properties": {
            "x": {
              "type": "number",
              "format": "float"
            },
            "y": {
              "type": "number",
              "format": "float"
            }
          },
          "description": "CIE xyY chromaticity coordinates"
        }
      },
      "required": ["illuminanceInLux"]
    },
    "BarometerReading": {
      "type": "object",
      "description": "Barometer reading (BarometerReading class)",
      "properties": {
        "stationPressureInHectopascals": {
          "type": "number",
          "format": "double",
          "minimum": 0,
          "description": "Atmospheric pressure in hectopascals (hPa)"
        }
      },
      "required": ["stationPressureInHectopascals"]
    },
    "AltimeterReading": {
      "type": "object",
      "description": "Altimeter reading (AltimeterReading class)",
      "properties": {
        "altitudeChangeInMeters": {
          "type": "number",
          "format": "double",
          "description": "Change in altitude relative to the first reading"
        }
      },
      "required": ["altitudeChangeInMeters"]
    },
    "MagnetometerReading": {
      "type": "object",
      "description": "Magnetometer reading (MagnetometerReading class)",
      "properties": {
        "magneticFieldX": {
          "type": "number",
          "format": "float",
          "description": "Magnetic field strength along X axis in microteslas"
        },
        "magneticFieldY": {
          "type": "number",
          "format": "float",
          "description": "Magnetic field strength along Y axis in microteslas"
        },
        "magneticFieldZ": {
          "type": "number",
          "format": "float",
          "description": "Magnetic field strength along Z axis in microteslas"
        },
        "directionalAccuracy": {
          "type": "string",
          "enum": ["Unknown", "Unreliable", "Approximate", "High"]
        }
      },
      "required": ["magneticFieldX", "magneticFieldY", "magneticFieldZ"]
    },
    "OrientationReading": {
      "type": "object",
      "description": "Orientation sensor reading (OrientationSensorReading class)",
      "properties": {
        "quaternion": {
          "type": "object",
          "properties": {
            "w": { "type": "number", "format": "float" },
            "x": { "type": "number", "format": "float" },
            "y": { "type": "number", "format": "float" },
            "z": { "type": "number", "format": "float" }
          },
          "required": ["w", "x", "y", "z"],
          "description": "Orientation as a quaternion (SensorQuaternion)"
        },
        "rotationMatrix": {
          "type": "object",
          "properties": {
            "m11": { "type": "number", "format": "float" },
            "m12": { "type": "number", "format": "float" },
            "m13": { "type": "number", "format": "float" },
            "m21": { "type": "number", "format": "float" },
            "m22": { "type": "number", "format": "float" },
            "m23": { "type": "number", "format": "float" },
            "m31": { "type": "number", "format": "float" },
            "m32": { "type": "number", "format": "float" },
            "m33": { "type": "number", "format": "float" }
          },
          "description": "3x3 rotation matrix (SensorRotationMatrix)"
        },
        "yawAccuracy": {
          "type": "string",
          "enum": ["Unknown", "Unreliable", "Approximate", "High"]
        }
      }
    },
    "PedometerReading": {
      "type": "object",
      "description": "Pedometer reading (PedometerReading class)",
      "properties": {
        "cumulativeSteps": {
          "type": "integer",
          "minimum": 0,
          "description": "Total step count since last reset"
        },
        "cumulativeStepsDuration": {
          "type": "string",
          "description": "Total duration of steps"
        },
        "stepKind": {
          "type": "string",
          "enum": ["Unknown", "Walking", "Running"],
          "description": "Type of step (PedometerStepKind)"
        }
      },
      "required": ["cumulativeSteps", "stepKind"]
    },
    "ProximityReading": {
      "type": "object",
      "description": "Proximity sensor reading (ProximitySensorReading class)",
      "properties": {
        "isDetected": {
          "type": "boolean",
          "description": "Whether an object is detected near the sensor"
        },
        "distanceInMillimeters": {
          "type": ["integer", "null"],
          "minimum": 0,
          "description": "Distance to the detected object"
        }
      },
      "required": ["isDetected"]
    },
    "HumanPresenceReading": {
      "type": "object",
      "description": "Human presence sensor reading (HumanPresenceSensorReading class)",
      "properties": {
        "presence": {
          "type": "string",
          "enum": ["Unknown", "Present", "NotPresent"],
          "description": "Whether a human is present (HumanPresence)"
        },
        "engagement": {
          "type": "string",
          "enum": ["Unknown", "Engaged", "Unengaged"],
          "description": "Whether the user is engaged (HumanEngagement)"
        },
        "distanceInMillimeters": {
          "type": ["integer", "null"],
          "description": "Distance to the user"
        },
        "headPosition": {
          "type": "object",
          "properties": {
            "azimuthInDegrees": { "type": "number", "format": "float" },
            "altitudeInDegrees": { "type": "number", "format": "float" }
          },
          "description": "User head position (HeadPosition class)"
        },
        "headOrientation": {
          "type": "object",
          "properties": {
            "pitchInDegrees": { "type": "number", "format": "float" },
            "rollInDegrees": { "type": "number", "format": "float" },
            "yawInDegrees": { "type": "number", "format": "float" }
          },
          "description": "User head orientation (HeadOrientation class)"
        },
        "detectedPersons": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "engagement": { "type": "string" },
              "distanceInMillimeters": { "type": "integer" },
              "headPosition": { "type": "object" },
              "headOrientation": { "type": "object" }
            }
          },
          "description": "List of detected persons (DetectedPerson class)"
        }
      },
      "required": ["presence"]
    },
    "HingeAngleReading": {
      "type": "object",
      "description": "Hinge angle reading for dual-screen devices (HingeAngleReading class)",
      "properties": {
        "angleInDegrees": {
          "type": "number",
          "format": "double",
          "minimum": 0,
          "maximum": 360,
          "description": "The angle of the hinge in degrees"
        }
      },
      "required": ["angleInDegrees"]
    }
  }
}