Sends device connectivity events for the message originator.
Configuration
- Device connectivity event: Specifies the type of connectivity event to send.
- Connect Event: Sends a device connection event
- Activity Event: Sends a device activity event
- Disconnect Event: Sends a device disconnection event
- Inactivity Event: Sends a device inactivity event
Device connectivity event types
Each connectivity event type performs specific actions when triggered. The keys mentioned below can be stored as either attributes or time series data depending on system configuration.
Connect Event
- Updates:
lastConnectTimekey with event timestamp - Sends:
CONNECT_EVENTmessage to device default rule chain - Activity status: Does not affect device activity status
Example CONNECT_EVENT message:
Data:
1
2
3
4
5
6
7
{
"lastConnectTime": 1758038320471,
"lastActivityTime": 1758035087437,
"lastDisconnectTime": 1757953973722,
"lastInactivityAlarmTime": 1758035693342,
"inactivityTimeout": 600000
}
Metadata:
1
2
3
4
5
6
{
"deviceLabel": "MyDeviceLabel",
"deviceName": "MyDeviceName",
"deviceType": "default",
"scope": "SERVER_SCOPE"
}
Activity Event
- Updates:
lastActivityTimekey with event timestamp - Sends:
ACTIVITY_EVENTmessage to device default rule chain (only if device activity status changed fromfalsetotrue) - Activity status: Changes device activity status to
true
Example ACTIVITY_EVENT message:
Data:
1
2
3
4
5
6
7
8
{
"active": true,
"lastConnectTime": 0,
"lastActivityTime": 1758103455789,
"lastDisconnectTime": 0,
"lastInactivityAlarmTime": 0,
"inactivityTimeout": 600000
}
Metadata: same as above
Disconnect Event
- Updates:
lastDisconnectTimekey with event timestamp - Sends:
DISCONNECT_EVENTmessage to device default rule chain - Activity status: Does not affect device activity status
Example DISCONNECT_EVENT message:
Data:
1
2
3
4
5
6
7
8
{
"active": true,
"lastConnectTime": 1758103455789,
"lastActivityTime": 1758103455789,
"lastDisconnectTime": 1758103866706,
"lastInactivityAlarmTime": 0,
"inactivityTimeout": 600000
}
Metadata: same as above
Inactivity Event
- Updates:
lastInactivityAlarmTimekey with event timestamp - Sends:
INACTIVITY_EVENTmessage to device default rule chain - Activity status: Changes device activity status from
truetofalse
Example INACTIVITY_EVENT message:
Data:
1
2
3
4
5
6
7
8
{
"active": false,
"lastConnectTime": 0,
"lastActivityTime": 1758103455789,
"lastDisconnectTime": 1758103866706,
"lastInactivityAlarmTime": 1758103974516,
"inactivityTimeout": 600000
}
JSON Schema
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "TbDeviceStateNodeConfiguration",
"type": "object",
"properties": {
"event": {
"type": "string",
"enum": [
"CONNECT_EVENT",
"ACTIVITY_EVENT",
"DISCONNECT_EVENT",
"INACTIVITY_EVENT"
],
"description": "Type of device connectivity event to trigger"
}
},
"additionalProperties": false
}
Message processing algorithm
- Validate originator: Checks if the message originator is a device entity. If not, processing fails and message is routed to
Failure. - Rate limiting check: Applies rate limiting per device to prevent excessive connectivity events. Uses configurable (using
DEVICE_STATE_NODE_RATE_LIMIT_CONFIGURATIONenvironment variable) rate limits (default:1:1,30:60,60:3600- 1 event per second, 30 events per minute, 60 events per hour). - Extract timestamp: Uses the
tsmetadata property if present, otherwise uses the message timestamp as the event timestamp. - Triggers event: Triggers the connectivity event based on the configured type.
- Route message: Routes the original message based on the result:
Successif event was triggered successfullyFailureif an error occurred during processingRate limitedif the rate limit was exceeded
Output connections
Success- Device connectivity event was successfully triggered
Failure- Message originator is not a
DEVICE - Unexpected error occurred during processing
- Message originator is not a
Rate limited- Rate limit for connectivity events was exceeded for this device
Examples
Example 1 — Activity event
Incoming message
Originator: DEVICE
Metadata:
1
2
3
{
"ts": "1694887200000"
}
Node configuration
1
2
3
{
"event": "ACTIVITY_EVENT"
}
State of the system
- Originator device is inactive (
activeis set tofalse) lastActivityTimeis set to1694887100000
Outgoing message
Same as incoming message, routed via Success connection.
Result
The following actions occur:
lastActivityTimeis updated to1694887200000- Activity status changes from
falsetotrue ACTIVITY_EVENTmessage is sent to the device’s default rule chain.