-
Notifications
You must be signed in to change notification settings - Fork 43
Plenario Sensor Data
I dumped my first thoughts on this topic here. Here are my current thoughts. I'm writing this out so I have more to go in in conversations with stakeholders. None of this is final, but I'm trying to get to something concrete we can implement.
This document concerns the web developer-focused sensor data API. I think the needs of this community are different enough from the needs of the scientific community that they'll need different access methods (I'm skeptical that both can be reconciled in a single API, but I'm open to suggestions). I'll assume here that the Array of Things data producer will have a publication module that can export the data in different formats to different consumers. One such consumer will be a document store to distribute static data dumps with DOIs for scientific citation. Another consumer might be the NOAA Meteorological Assimilation Data Ingest System, with its own metadata requirements.
The sensor network (AoT is an instance of this class) is the top level object. It contains nodes
(physical objects at a fixed location) and can report on featuresOfInterest
(topics of observation). A feature of interest can contain multiple observedProperties
, each reporting the value of a different aspect of the feature of interest. In addition to lists of its nodes and features of interest, the network metadata also contains basic reference information about the network.
Note: The featureOfInterest
and observedProperty
titles (along with procedure
and result
discussed later) are derived from the Observations and Measurements standard (https://en.wikipedia.org/wiki/Observations_and_Measurements) in order to allow easier integration with clients complying to this system. The question of whether or not complying with an existing data format is worthwhile is still an open one.
Sample Metadata JSON for a Sensor Network
ArrayOfThings = {
'name': 'ArrayOfThings',
'maintainer-email': '[email protected]',
'description': 'Brief description of this sensor network.'
'info-link': 'https://arrayofthings.github.io/developers'
'nodes': ['ArrayOfThings1', 'ArrayOfThings2',...],
'featuresOfInterest': [
'temperature': {
'observedProperties': [
'temperature': {
'type': 'numeric',
'unit': 'degrees Fahrenheit',
...
},
...
],
...
},
'numPeople': {
'observedProperties': [
'numPeople': [
'type': 'numeric',
'unit': 'people seen on camera',
...
],
'certainty': [
'type': 'numeric',
'unit': 'certainty of person count as a fraction',
...
],
...
],
...
},
...
],
};
Sample Metadata JSON for a Node
ArrayOfThings1 = {
'id': 'ArrayOfThings1',
'version': '1.2.5',
'location': [-87.91372618, 41.64625754],
'featuresOfInterest': ['temperature', 'numPeople',...],
'procedures': [
'temperature': [
{
'sensor type': 'temperature sensor',
'sensor description': 'model DS18B20+ with +- .5 degree accuracy',
...
},
{
'sensor type': 'temperature sensor',
'sensor description': 'model TMP36 with +- .3 degree accuracy',
...
},
...
],
'numPeople': [
{
'sensor type': 'camera',
'sensor description': 'OV7670 300KP camera',
'height': 3.5,
'direction': 'NE',
'algorithm': 'Szeliski 2.5.46'
...
},
...
],
...
]
};
Sample Observation JSON
{
'id': 'ArrayOfThings1',
'version': '1.2.5',
'time': 1467314815,
'results': [
'temperature': {
'temperature': 89.7,
...
},
'numPeople': {
'numPeople': 14,
'certainty': 0.83,
...
}
...
],
};
Remaining Questions:
-Do we want single element lists for attributes and derivations?
-Does complying with OGC observation formatting standards, such as the SensorThings API (https://en.wikipedia.org/wiki/SensorThings_API), allow us to integrate into existing systems more easily?