Events
An overview of the various event types that can be encountered throughout our services.
Last updated
Was this helpful?
An overview of the various event types that can be encountered throughout our services.
Last updated
Was this helpful?
The following table lists all event types and the triggers that generate them. An overview of event types per device can be found on the page.
Event Name
Event Type
Trigger
touch
When touched.
temperature
objectPresent
PRESENT
/NOT_PRESENT
state change.
humidity
objectPresentCount
touchCount
waterPresent
PRESENT
/NOT_PRESENT
state change.
co2
pressure
motion
MOTION_DETECTED
/ NO_MOTION_DETECTED
state change.
deskOccupancy
OCCUPIED
/ NOT_OCCUPIED
state change.
contact
OPEN
/ CLOSED
state change.
probeWireStatus
Probe wire state change.
batteryStatus
See event details.
networkStatus
labelsChanged
When a device label is created, modified, or removed.
connectionStatus
Changes in connection type.
ethernetStatus
Changes in the ethernet connection.
cellularStatus
Changes in the cellular connection.
Field
Type
Description
eventId
string
The unique identifier of the Event. This can be used to deduplicate events in case the same event is published multiple times.
targetName
string
The resource name of the source device. Includes both the identifier of the project the device is currently in, and the identifier of the device itself.
eventType
string
data
struct
timestamp
string
There are four places where events can be encountered in our services.
Here are a few notes regarding timestamps and how they are presented in our services.
All timestamps fetched using our APIs are always given in UTC and must be accounted for. DT Studio will, however, always shows timestamps depending on user locale.
2024-12-06T08:13:15.361624Z
.
A result of how our events are structured is that two different timestamp fields can be found in each event when fetching them through our API. The timestamp
and updateTime
fields are located in the outer layer and data
field of an event respectively, but will always contain the same value.
You may use either timestamp
or updateTime
when deciding when an event was received.
Event Type: touch
Trigger: When touched.
The following snippet shows the event data
field content of a touch
event.
Field
Type
Description
updateTime
string
Event Type: temperature
The following snippet shows the event data
field content of a temperature
event.
Field
Type
Description
value
float
Temperature value in Celsius.
samples
[struct]
A list of temperature samples and timestamps sampled since the previous heartbeat, ordered newest-to-oldest. Its length is equal to the configured samples per heartbeat, which is 1 by default. The first item in the array will always have the same value as the outer value
and updateTime
fields.
samples[].value
float
Sample temperature value in Celsius.
samples[].sampleTime
string
updateTime
string
isBackfilled
bool
Event Type: objectPresent
Trigger: When an object in close proximity appears or disappears.
The following snippet shows the event data
field content of an objectPresent
event.
Field
Type
Description
state
string
Indicates whether an object is "PRESENT"
or "NOT_PRESENT"
.
updateTime
string
Event Type: humidity
The following snippet shows the event data
field content of a humidity
event.
Field
Type
Description
temperature
float
Temperature value in Celsius.
relativeHumidity
float
Relative humidity in percent.
samples
[struct]
samples[].temperature
float
The sampled temperature value in Celsius.
samples[].relativeHumidity
float
The sampled relative humidity value in percent.
samples[].sampleTime
string
updateTime
string
isBackfilled
bool
Event Type: objectPresentCount
The following snippet shows the event data
field content of an objectPresentCount
event.
Field
Type
Description
total
int
The total number of times the sensor has detected the appearance or disappearance of an object over its lifetime. This can currently not be reset.
updateTime
string
Event Type: touchCount
The following snippet shows the event data
field content of a touchCount
event.
Field
Type
Description
total
int
The total number of times the sensor has been touched over its lifetime. This can currently not be reset.
updateTime
string
Event Type: waterPresent
Trigger: When the sensor detects the appearance or disappearance of water.
The following snippet shows the event data
field content of a waterPresent
event.
Field
Type
Description
state
string
Indicates whether water is "PRESENT"
or "NOT_PRESENT"
.
updateTime
string
Event Type: co2
The following snippet shows the event data
field content of a co2
event.
ppm
int
CO2 in parts per million.
updateTime
string
Event Type: pressure
The following snippet shows the event data
field content of a pressure
event.
pascal
int
Barometric pressure in Pascal.
updateTime
string
Event Type: motion
The following snippet shows the event data
field content of a motion
event.
state
string
Indicates whether MOTION_DETECTED
or NO_MOTION_DETECTED
.
updateTime
string
Event Type: deskOccupancy
Trigger: When the state changes between OCCUPIED
and NOT_OCCUPIED
.
The following snippet shows the event data
field content of a deskOccupancy
event.
state
string
Indicates whether the sensors reports OCCUPIED
or NOT_OCCUPIED
.
remarks
[string]
updateTime
string
We use the remarks
field to relay additional information to the user about the estimated state
field in the deskOccupancy
event. If the field is empty, nothing is out of the ordinary.
The remarks
field can contain none, one, or a combination of the following remarks.
Remarks are automatically highlighted in DT Studio as shown in the figure below.
Event Type: contact
Trigger: When the state of a contact
sensor changes between OPEN
and CLOSED
.
The following snippet shows the event data
field content of a contact
event.
state
string
Indicates whether the sensors reports OPEN
or CLOSED
.
updateTime
string
Event Type: probeWireStatus
Trigger: When wires are plugged in or unplugged from a temperature
probe sensor.
These are the possible state values for the event:
TWO_WIRE
A 2-wire probe has been connected to the sensor.
THREE_WIRE
A 3-wire probe has been connected to the sensor.
FOUR_WIRE
A 4-wire probe has been connected to the sensor.
INVALID_WIRE_CONFIGURATION
INVALID_COEFFICIENT_CONFIGURATION
The coefficient configuration in Studio does not match the probe that's connected to the sensor. This may happen if a PT100 probe is connected to the sensor, but the coefficients for a PT1000 probe is configured in Studio.
The following snippet shows the event data
field content of a probeWireStatus
event.
state
string
Indicates whether the probe wire state is INVALID_WIRE_CONFIGURATION
, INVALID_COEFFICIENT_CONFIGURATION
, TWO_WIRE
, THREE_WIRE
or FOUR_WIRE
.
updateTime
string
Event Type: networkStatus
This event describes the current connectivity state of a sensor. It is sent in addition to other events and contains information like the signal strength to the Cloud Connector it propagated through.
The following snippet shows the event data
field content of a networkStatus
event.
Field
Type
Description
signalStrength
int
The percentage signal strength (0% to 100%) of the strongest Cloud Connector, derived directly from the RSSI value.
rssi
int
cloudConnectors
[struct]
The Cloud Connector that forwarded the event.
cloudConnectors[].id
string
Unique Cloud Connector identifier.
cloudConnectors[].signalStrength
int
The percentage signal strength (0% to 100%) between the sensor and Cloud Connector.
cloudConnectors[].rssi
int
transmissionMode
string
Indicated whether the sensor is in "LOW_POWER_STANDARD_MODE"
or "HIGH_POWER_BOOST_MODE"
.
updateTime
string
Event Type: batteryStatus
Trigger: Approximately once per day.
The following snippet shows the event data
field content of a batteryStatus
event.
Field
Type
Description
percentage
int
A coarse percentage estimate (0% to 100%) of the remaining battery.
updateTime
string
Event Type: labelsChanged
Trigger: When a device label is added, modified, or removed.
The following snippet shows the event data
field content of a labelsChanged
event.
Field
Type
Description
added
struct
Key- and value pairs of new labels added, both of string
type.
modified
struct
Key- and value pairs of modified labels, both of string
type. The value is the new updated value.
removed
[string]
A list of keys of removed labels.
Event Type: connectionStatus
Trigger: Changes in connection for a Sensor or Cloud Connector.
This event is sent when a Sensor or Cloud Connector changes its communication protocol. This is the recommended way to determine if a device is online or offline.
These are the possible status values for a device's connection status:
SDS
ETHERNET
Used for Cloud Connectors when they are online and communicate to the Cloud through an ethernet cable.
CELLULAR
Used for Cloud Connectors when they are online and communicate to the Cloud through a cellular connection. Note that a cellular connection might have a higher latency than an ethernet connection, so prefer to use an ethernet cable whenever possible.
OFFLINE
For a Cloud Connector, if both ETHERNET
and CELLULAR
connections are available, ETHERNET
is prioritized.
The following snippet shows the event data
field content of a connectionStatus
event for a Cloud Connector that is connected through ETHERNET
.
Field
Type
Description
connection
string
Whether the current connection is SDS
, ETHERNET
, CELLULAR
, or OFFLINE
.
available
[string]
A list of the string
types of networks available to the device. For Cloud Connectors, this can contain the values ETHERNET
, CELLULAR
, or both. For Sensors, it will contain only SDS
when its online. This field will be empty when the device's connection
is OFFLINE
.
updateTime
string
Event Type: ethernetStatus
Trigger: Changes in Cloud Connector ethernet connection.
This event is sent when the ethernet status for a Cloud Connector changes, such as when it gets connected to ethernet or when it receives a new IP address. Note that this means that a Cloud Connector has to be connected to ethernet at least once to get the MAC address of the Cloud Connector through an ethernetStatus
event.
The information in this event can be useful for locating a Cloud Connector on the local network or open the necessary ports in a corporate firewall.
The following snippet shows the event data
field content of an ethernetStatus
event.
Field
Type
Description
macAddress
string
The MAC address of the local network interface.
ipAddress
string
The IP address of the Cloud Connector on the local network.
errors
[struct]
Any errors related to connecting to the local network.
errors[].code
int
Error status code.
errors[].message
string
A description of the error.
updateTime
string
Event Type: cellularStatus
Trigger: Changes in Cloud Connector cellular connection.
The following snippet shows the event data
field content of a cellularStatus
event.
Field
Type
Description
signalStrength
int
Cellular reception signal strength (0% to 100%) of the Cloud Connector.
errors
[struct]
Any errors related to connecting to the local network.
errors[].code
int
Error status code.
errors[].message
string
A description of the error.
updateTime
string
Every and when touched.
Every and when touched.
Every .
Every .
Every .
Every .
Every and together with trigger-based events.
All event types available through our API use the same outer layer structure, shown in the snippet below, where event metadata is found. Information specific to each is found in the data
field.
The .
Includes the event data and is specific for each eventType
. See the below for a detailed description of each field that can be found here.
Timestamp of when a Cloud Connector received the event, represented on the format.
The reported
field of a when .
When pushed to a client using the .
When fetching historical data through the .
When pushed by a to another server.
All sensors send a event at a predefined interval depending on sensor type. Depending on the sensor type, this heartbeat may be accompanied by additional events. For instance, the will also send a every heartbeat.
A few of our sensors are designed to send events immediately at some trigger. These are sent in addition to, but independent of, the .
for .
event for .
for .
for Motion Sensors.
for Desk Occupancy Sensors.
A accompanies each triggered event.
The format with is used for our timestamps. This is an internet-specific profile of the specification, and an example can be seen below.
A third type, sampleTime
, can only be found within the . These represent the timestamps of inter-heartbeat samples and are estimated by our cloud. .
The following event types are available in our APIs. A table of which event types are available per device type and their triggers can be found on the page.
Most of our will send a when touched. This can be useful for identification.
An exception to this is , which aggregate each touch into a sent every . To force a single , hold your finger on the sensor for 3 seconds.
Timestamp of when a Cloud Connector received the event, represented on the format.
Trigger: Every or when touched.
Note: and will only send temperature on heartbeats, and not when touched.
Estimated sample timestamp on the format. .
Timestamp of when a Cloud Connector received the event, represented on the format.
Indicates if the temperature event is backfilled. The backfill feature is supported for and . When this field is true
, the temperature value was measured while the sensor was out of reach of an online Cloud Connector, and has been backfilled automatically after getting back online. See the in our Help Center for more information about Data Backfill.
Our 2nd and 3rd generation temperature sensors can be configured to sample up to 30 samples per . If enabled, these inter-heartbeat samples will be contained in a list found under the samples
field, accompanied by a timestamp called sampleTime
. By default, if no configuration is enabled, this list contains only the single temperature value and timestamp found in the temperature event. .
Timestamp of when a Cloud Connector received the event, represented on the format.
Trigger: Every or when touched.
A list of temperature and humidity samples since the previous heartbeat, ordered newest-to-oldest. Its length is equal to the configured samples per heartbeat, which is 1 by default. The first item in the array will always have the same value as the outer temperature
and relativeHumidity
fields. Only the supports configuring the number of samples per heartbeat.
Estimated sample timestamp on the format. .
Timestamp of when a Cloud Connector received the event, represented on the format.
Indicates if the humidity event is backfilled. This feature is supported for the . When this field is true
, the humidity and temperature value was measured while the sensor was out of reach of an online Cloud Connector, and has been backfilled automatically after getting back online. See the in our Help Center for more information about Data Backfill.
Trigger: Every .
This event aggregates and sends the total lifetime count every periodic heartbeat.
Timestamp of when a Cloud Connector received the event, represented on the format.
Trigger: Every .
This event aggregates each and sends the total lifetime count every periodic heartbeat. To force a single to be sent, hold your finger on the sensor for 3 seconds.
Timestamp of when a Cloud Connector received the event, represented on the format.
Timestamp of when a Cloud Connector received the event, represented on the format.
Trigger: Every .
Timestamp of when a Cloud Connector received the event, represented on the format.
Trigger: Every .
Timestamp of when a Cloud Connector received the event, represented on the format.
Trigger: Every .
Timestamp of when a Cloud Connector received the event, represented on the format.
Additional information about the estimated state
field value. .
Timestamp of when a Cloud Connector received the event, represented on the format.
INCOMPLETE_DATA
: The model has determined that the occupancy accuracy may be degraded due to insufficient data. If your connection is poor, we recommend using a to improve the connection or adding one or more additional Cloud Connectors to extend your coverage.
Timestamp of when a Cloud Connector received the event, represented on the format.
Either too few wires are connected to the sensor, or the wires are connected to the wrong terminals. Look at the for more information.
Timestamp of when a Cloud Connector received the event, represented on the format.
Trigger: Every .
One networkStatus
event is sent for each Cloud Connector that heard the sensor. As shown in the snippet below, when fetching events through a , , or , each networkStatus
event contains only a single entry in the cloudConnectors
field. When , these individual networkStatus
events are merged and all displayed in the reported
field.
Use the event to check whether a sensor is online or offline. This event takes into account the current of the sensor and only sends out an event with the OFFLINE
connection status when one heartbeat has been dropped. When the sensor comes back online, a new connectionStatus
event will be sent out with the SDS
() connection status.
Raw as measured by the Cloud Connector with the strongest signal.
between the sensor and Cloud Connector.
Timestamp of when a Cloud Connector received the event, represented on the format.
Timestamp of when a Cloud Connector received the event, represented on the format.
Used for Sensors when they are online. SDS is the protocol.
Used for both Sensors and Cloud Connectors when they are determined to be offline. Cloud Connectors are determined to be offline 5–15 minutes after they've lost their connection to the Cloud. Sensors are determined to be offline once the Cloud hasn't received a within the expected time period, depending on the heartbeat interval of the sensor. The current threshold is max(15 min, HeartbeatInterval * 1.5)
, but this is subject to change.
Timestamp of when a Cloud Connector received the event, represented on the format.
Timestamp of when a Cloud Connector received the event, represented on the format.
Timestamp of when a Cloud Connector received the event, represented on the format.