Message Type Standardization

Overview

Data is transmitted to Geeny in the form of Message Types. Message Types are typically defined by data providers, who share data from their consumers’ data sources with Geeny, and consumed by application providers, who connect their IoT applications to Geeny and query the data over our API. While our data providers are free to construct their Message Types as they see fit for their use cases, we have written some guidelines and recommendations in order to harmonize the flow of data in and out of our platform.

We realize that different devices typically transmit different sets of data, even if they fall into the same device category. We wrote these guidelines in order to reduce the complexity and effort required for data providers to share data with Geeny and for application brokers to implement multiple data sources in their applications.

Guidelines

Please adhere to these guidelines for creating and using Message Types:

  1. Atomical Message Types: Only one type of information may be sent in a single Message Type. If a device records and transmits more than one parameter of data at the same time (such as a sensor that measures both temperature and humidity, or a fitness tracker that records heart rate and distance covered), then these must be split into multiple Message Types.
  2. Units: Use metric, preferably SI units. Imperial units are not allowed.
  3. Information formatting: Use a consistent formatting and syntax for data transmission. We encourage data providers format message payloads using JSON wherever possible.
  4. Reuse: We maintain a set of Message Types based on common data formats (see below). Please use these Message Types when transmitting these types of data to the Geeny platform.
    • Avoid introducing new formats or units for existing Message Types.

Standard Message Types

We have implemented the following common data formats as standard Message Types:

Boolean

Click here to view this Message Type in the Data Explorer.

Format

true or false

Example

true

Datetime

Click here to view this Message Type in the Data Explorer.

Format

Example

{
     "time": "2008-09-15T15:53:10.325+05:00"
}

Distance

Click here to view this Message Type in the Data Explorer.

Format

  • Type: float
  • Unit: meters

Example

{
    "meters": 1.75
}

Duration

Click here to view this Message Type in the Data Explorer.

Format

  • Syntax: seconds.milliseconds
  • Type: float

Example

{
    "duration": 45.345
}

Event

Click here to view this Message Type in the Data Explorer.

Format

Example

{
    "time": "2008-09-15T15:53:10.325+05:00",
    "event": "EVENTNAME"
}

Frequency (BPM)

Click here to view this Message Type in the Data Explorer.

Format

  • Type: float
  • Unit: BPM (1/60s)

Example

{
    "bpm": 120.5
}

Frequency (Hz)

Click here to view this Message Type in the Data Explorer.

Format

  • Type: float
  • Unit: Hz (1/s)

Example

{
    "frequency": 8.75
}

Illuminance

Click here to view this Message Type in the Data Explorer.

Format

  • Type: float
  • Unit: lux

Example

{
    "lux" : 200.75
}

Location

Click here to view this Message Type in the Data Explorer.

Format

  • Syntax: signed decimal degrees
  • Type: JSON object[signed floats]

Example

{
    "long": 40.689263,
    "lat": -74.044505
}

Mass

Click here to view this Message Type in the Data Explorer.

Format

  • Type: float
  • Unit: grams

Example

{
    "grams": 62456.34
}

Temperature

Click here to view this Message Type in the Data Explorer.

Format

  • Syntax: decimal degrees
  • Type: signed float
  • Unit: celsius

Example

{
    "temperature": 36.645
}

Time period

Click here to view this Message Type in the Data Explorer.

Format

Example

{
    "from": "2008-09-15T15:53:10.325+05:00",
    "to": "2008-09-16T08:21:27.985+05:00"
}