📄 Base Platform

Base Platform

Data Structure

Interface

Information about an interface the Integrator-AI is connected to

id
array[number]
Unique ID of the interface
type
string
What type of interface it is

sensor, traffic-signal, digital-message-sign, digital-analog-hardware, v2x, custom, service
driver
string
Name of the driver the interface is using. This is essentially the product
operstate
string
Opertional state of the interface

unknown, inoperative, operational, fault

Object

Information on an object that is being tracked

id
array[number]
Unique ID of the object
type
string
Last known type of the object

unclassified, vehicle, pedestrian, cyclist, animal, aircraft, railcar
classification
string
Last known classification of the object as reported by the sensor

Values are set by the sensor, so see the sensor's documentation for possible values
speed
number
Last known speed of the object, if available, in meters per second
lwh[]
array[number]
Last known (l)ength / (w)idth / (h)eight of the object. It's stored as an array and represented in meters

lwh[0] = length
lwh[1] = width
lwh[2] = height
heading
number
Last known heading of the object, if available, represented in radians. 0.0 is north.
timestamp
number
Unix timestamp, in milliseconds, of when this object was last updated
lifespan
number
How long the object has existed, in milliseconds
state
string
Current state of the object

creation - new object
active - existing object
gone - object no longer exists
creation.timestamp
number
Unix timestamp, in milliseconds, of when this object was created
creation.position.local[]
array
Local position of the object when it was created
creation.position.wgs84{}
object
Latitude, longitude, and altitude of the object when it was created
description
object
Last known description of the object, if available. Object descriptions differ depending on the object type. Be sure to check the object type before trying to process the description data available. null if no description information is known
description(vehicle).make
string
Make of the vehicle. null or empty if not known
description(vehicle).model
string
Model of the vehicle. null or empty if not known
description(vehicle).color
string

Color of the vehilce. null or empty if not known

description(vehicle).license-plate
string
License plate of the vehicle. null or empty if not known
description(vehicle).year
number
Year of the vehicle. null or 0 if not known
description(vehicle).confidence
number
How reliable the description information is. 0.0 is unknown
description(pedestrian).gender
string
Gender of the pedestrian. null if not empty or not known

male
female
position.local[]
array
Contains local coordinates for the position of the object, as reported by the sensor. Typically the array is ordered as x, y, z. The representation is dependent on the sensor, but most of the time is in meters
position.wgs84{}
object
Latitude, longitude, and altitude of the object, if available

objects[].position.wgs84.latitude
objects[].position.wgs84.longitude
objects[].position.wgs84.altitude
path
array
A list of zones, in chronological order, that the object has interacted with. Essentially a detection zone history. Zones can appear in this list multiple times if an object repeatedly entered and exited the same zone
path[].id
number
ID of the zone
path[].headway
number
Headway time, in milliseconds, compared to the previous object of the same type
path[].gap
number
Gap time, in milliseconds, compared to the previous object of the same type
path[].dwell
number
How long the object has been in the zone, in milliseconds
path[].state
string
State of the object in the zone

ingress - the object just entered the zone
occupying - the object is still in the zone
egress - the object is no longer in the zone
path[].ingress
object
Information about when the object entered the zone
path[].ingress.tp.front
number
Unix timestamp, in milliseconds, of when the front of the object entered the zone
path[].ingress.tp.rear
number
Unix timestamp, in milliseconds, of when the rear of the object entered the zone
path[].ingress.tp.sensor
number
Unix timestamp, in milliseconds, of when the sensor reported the object entering the zone
path[].ingress.heading
number
Heading of the object, in radians, when it entered the zone. 0.0 is north
path[].ingress.position.local[]
array
Local position of the object when it entered the zone
path[].ingress.position.wgs84{}
object
Latitude, longitude, and altitude of the object when it entered the zone
path[].ingress.speed
number
Speed of the object, in meters per second, when it entered the zone
path[].egress
object
Information about when the object exited the zone. null if the object is still in the zone
path[].egress.tp.front
number

Unix timestamp, in milliseconds, of when the front of the object exited the zone

path[].egress.tp.rear
number

Unix timestamp, in milliseconds, of when the rear of the object exited the zone

path[].egress.tp.sensor
number

Unix timestamp, in milliseconds, of when the sensor reported the object exiting the zone

path[].egress.heading
number
Heading of the object, in radians, when it exited the zone. 0.0 is north
path[].egress.position.local[]
array

Local position of the object when it exited the zone

path[].egress.position.wgs84{}
object

Latitude, longitude, and altitude of the object when it exited the zone

path[].egress.speed
number

Speed of the object, in meters per second, when it exited the zone

zones
array
A list of zones that the object is currently occupying. Use this list to find the path entry for details about the objects interaction with the zone
zones[].id
number
ID of the zone
zones[].path
number
Index of the path entry in objects[].path[] that holds details about the object's interaction with this zone so far. Use this value to get access to details of the zone interaction, for example:

.zones[].path = 3
access the information from the path
path[3] = object path information

Zone

Information about a detection zone

id
number
Unique ID of the zone
name
string

Name of the zone

geometry
object
Shape of the zone, if known. null if not known
geometry.local[]
array[xyz]
Local coordinate points to draw the zone
geometry.wgs84[]
array[wgs84]
WGS-84 coordinate points to draw the zone
heading
string
Dedicated heading of the zone. Will be set to none if no dedicated heading has been assigned, or more than one heading is possible

none, nb, sb, eb, wb

Traffic Signal : Phase

id
number
ID of the phase
ring
number

The ring this phase operates under

vehicle.indication
string
The indication that vehicles have

none, green, prepare-to-go, yellow, red, flashing-green, flashing-yellow, flashing-red, fya, fra
vehicle.aspects
array[string]
The aspects that are active for vehicles

red, yellow, green
pedestrian.indication
string
The indication that pedestrians have

none, walk, flashing-dont-walk, dont-walk
pedestrian.aspects
string
The aspects that are active for pedestrians

red, yellow, green
timing
object
Various timing configurations for the phase

Traffic Signal : Ring

id
number
ID of the ring
phase
number

Active phase number. 0 if no phase is active

next
number
Next phase coming up. 0 if not known
max
number
Max time value being used

1 = max 1, 2 = max 2, etc.
termination
string
Phase termination reason

none, force-off, gap-out, max-out
state
string
Ring state

none, min-green, extension, maximum, green-rest, yellow-change, red-clear, red-rest

Traffic Signal : Movement

id
number
ID of the movement
heading
string
Heading of the movement

nb, sb, eb, wb
type
string
Type of movement

left, through, right, u-turn, pedestrian
phase
number
Phase that is controlling this movement. 0 if no phase is currently controlling this movement
ring
number
Ring that is controlling this movement. 0 if no ring is controlling it
state
string
State of the movement

prohibited, permissive, protected, permissive-after-stop
indication
string
Indication the movement has

none, green, prepare-to-go, yellow, red, flashing-green, flashing-yellow, flashing-red, fya, fra, walk, flashing-dont-walk, dont-walk

Traffic Signal : Detector

id
number
ID of the detector
vehicle
string
Vehicle call status

clear, call, locked
pedestrian
string
Pedestrian call status

clear, call, locked


REST API

/api/integrator/objects

Raw data

GET

Snapshot of tracked objects

/api/integrator/zones

Settings

GET, PUT, POST, DELETE

Access and management of zones

/api/integrator/settings

Settings

GET, PUT, POST, DELETE

Management of generic Integrator-AI settings

/api/integrator/interfaces

Settings

GET, PUT, POST, DELETE

Management of interfaces

GET /api/objects

Get a snapshot of all tracked objects

GET /api/objects HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61

HTTP/1.1 200 OK
Content-Type: application/json

{"objects":[{"acceleration":-4.698564340402414e-7,"behavior":false,"classification":"car","egress":false,"event":{"id":1,"name":"update"},"flags":1,"heading":false,"id":[1,1762268789035],"ingress":1762268789035,"interface":36,"lifespan":14341,"lwh":false,"model":"object","path":null,"position":{"cartesian":false,"wgs-84":{"altitude":0,"latitude":26.064572500437958,"longitude":-80.25278115009243}},"speed":0.046275679022073746,"tags":[],"timestamp":1762268803377,"type":"vehicle","update":1762268803377,"weight":false,"zones":null},{"acceleration":-3.076440937168247e-7,"behavior":false,"classification":"car","egress":false,"event":{"id":1,"name":"update"},"flags":1,"heading":false,"id":[2,1762268789035],"ingress":1762268789035,"interface":36,"lifespan":14341,"lwh":false,"model":"object","path":null,"position":{"cartesian":false,"wgs-84":{"altitude":0,"latitude":26.064561419297902,"longitude":-80.25260116831798}},"speed":0.016263850033283234,"tags":[],"timestamp":1762268803377,"type":"vehicle","update":1762268803377,"weight":false,"zones":null},{"acceleration":6.292720098753233e-9,"behavior":false,"classification":"car","egress":false,"event":{"id":1,"name":"update"},"flags":1,"heading":false,"id":[9,1762268789035],"ingress":1762268789035,"interface":36,"lifespan":14341,"lwh":false,"model":"object","path":null,"position":{"cartesian":false,"wgs-84":{"altitude":0,"latitude":26.06455204105755,"longitude":-80.25273652018289}},"speed":0.0025476657319813967,"tags":[],"timestamp":1762268803377,"type":"vehicle","update":1762268803377,"weight":false,"zones":null},{"acceleration":-6.57239654758671e-8,"behavior":false,"classification":"car","egress":false,"event":{"id":1,"name":"update"},"flags":1,"heading":false,"id":[3,1762268789035],"ingress":1762268789035,"interface":36,"lifespan":14341,"lwh":false,"model":"object","path":null,"position":{"cartesian":false,"wgs-84":{"altitude":0,"latitude":26.064582590266326,"longitude":-80.25259153210062}},"speed":0.0056118471547961235,"tags":[],"timestamp":1762268803377,"type":"vehicle","update":1762268803377,"weight":false,"zones":null},{"acceleration":-2.9366027127515088e-8,"behavior":false,"classification":"car","egress":false,"event":{"id":1,"name":"update"},"flags":1,"heading":false,"id":[5,1762268789035],"ingress":1762268789035,"interface":36,"lifespan":14341,"lwh":false,"model":"object","path":null,"position":{"cartesian":false,"wgs-84":{"altitude":0,"latitude":26.064547490386662,"longitude":-80.25280037460361}},"speed":0.005229403730481863,"tags":[],"timestamp":1762268803377,"type":"vehicle","update":1762268803377,"weight":false,"zones":null},{"acceleration":-1.2026087299839512e-7,"behavior":false,"classification":"car","egress":false,"event":{"id":1,"name":"update"},"flags":1,"heading":false,"id":[4,1762268789035],"ingress":1762268789035,"interface":36,"lifespan":14341,"lwh":false,"model":"object","path":null,"position":{"cartesian":false,"wgs-84":{"altitude":0,"latitude":26.064604622718768,"longitude":-80.25283468575313}},"speed":0.014292077161371708,"tags":[],"timestamp":1762268803377,"type":"vehicle","update":1762268803377,"weight":false,"zones":null},{"acceleration":-1.3109833539069235e-8,"behavior":false,"classification":"car","egress":false,"event":{"id":1,"name":"update"},"flags":1,"heading":false,"id":[11,1762268789035],"ingress":1762268789035,"interface":36,"lifespan":14341,"lwh":false,"model":"object","path":null,"position":{"cartesian":false,"wgs-84":{"altitude":0,"latitude":26.064556800747706,"longitude":-80.2526655257918}},"speed":0.0002976593095809221,"tags":[],"timestamp":1762268803377,"type":"vehicle","update":1762268803377,"weight":false,"zones":null},{"acceleration":7.830940567337357e-8,"behavior":false,"classification":"car","egress":false,"event":{"id":1,"name":"update"},"flags":1,"heading":false,"id":[12,1762268789035],"ingress":1762268789035,"interface":36,"lifespan":14341,"lwh":false,"model":"object","path":null,"position":{"cartesian":false,"wgs-84":{"altitude":0,"latitude":26.064573988287417,"longitude":-80.25272333391126}},"speed":0.03327091038227081,"tags":[],"timestamp":1762268803377,"type":"vehicle","update":1762268803377,"weight":false,"zones":null},{"acceleration":8.390293465004311e-9,"behavior":false,"classification":"car","egress":false,"event":{"id":1,"name":"update"},"flags":1,"heading":false,"id":[15,1762268789035],"ingress":1762268789035,"interface":36,"lifespan":14341,"lwh":false,"model":"object","path":null,"position":{"cartesian":false,"wgs-84":{"altitude":0,"latitude":26.06483475066509,"longitude":-80.25242745429495}},"speed":0.006937090307474136,"tags":[],"timestamp":1762268803377,"type":"vehicle","update":1762268803377,"weight":false,"zones":null},{"acceleration":2.7967644883347703e-8,"behavior":false,"classification":"car","egress":false,"event":{"id":1,"name":"update"},"flags":1,"heading":false,"id":[7,1762268789035],"ingress":1762268789035,"interface":36,"lifespan":14341,"lwh":false,"model":"object","path":null,"position":{"cartesian":false,"wgs-84":{"altitude":0,"latitude":26.06482706369535,"longitude":-80.25240136688227}},"speed":0.024144722148776054,"tags":[],"timestamp":1762268803377,"type":"vehicle","update":1762268803377,"weight":false,"zones":null},{"acceleration":2.1255410111344252e-7,"behavior":false,"classification":"car","egress":false,"event":{"id":1,"name":"update"},"flags":1,"heading":false,"id":[6,1762268789035],"ingress":1762268789035,"interface":36,"lifespan":14341,"lwh":false,"model":"object","path":[{"dwell":14341,"egress":false,"event":"update","gap":false,"headway":false,"id":73,"ingress":1762268789035,"speed":0.03585626929998398,"update":1762268803377}],"position":{"cartesian":false,"wgs-84":{"altitude":0,"latitude":26.064520681874804,"longitude":-80.25259542427779}},"speed":0.03586480766534805,"tags":[],"timestamp":1762268803377,"type":"vehicle","update":1762268803377,"weight":false,"zones":{"73":{"id":73,"path":0}}},{"acceleration":7.411425894087141e-8,"behavior":false,"classification":"car","egress":false,"event":{"id":1,"name":"update"},"flags":1,"heading":false,"id":[8,1762268789035],"ingress":1762268789035,"interface":36,"lifespan":14341,"lwh":false,"model":"object","path":null,"position":{"cartesian":false,"wgs-84":{"altitude":0,"latitude":26.064455898851513,"longitude":-80.25232778433433}},"speed":0.004132791422307491,"tags":[],"timestamp":1762268803377,"type":"vehicle","update":1762268803377,"weight":false,"zones":null},{"acceleration":5.034176079002586e-8,"behavior":false,"classification":"car","egress":false,"event":{"id":1,"name":"update"},"flags":1,"heading":false,"id":[13,1762268789035],"ingress":1762268789035,"interface":36,"lifespan":14341,"lwh":false,"model":"object","path":[{"dwell":14341,"egress":false,"event":"update","gap":false,"headway":false,"id":73,"ingress":1762268789035,"speed":0.019677968695759773,"update":1762268803377}],"position":{"cartesian":false,"wgs-84":{"altitude":0,"latitude":26.064531887211462,"longitude":-80.25283857921542}},"speed":0.01967613399028778,"tags":[],"timestamp":1762268803377,"type":"vehicle","update":1762268803377,"weight":false,"zones":{"73":{"id":73,"path":0}}},{"acceleration":2.1814763009011206e-7,"behavior":false,"classification":"car","egress":false,"event":{"id":1,"name":"update"},"flags":1,"heading":false,"id":[14,1762268789035],"ingress":1762268789035,"interface":36,"lifespan":14341,"lwh":false,"model":"object","path":null,"position":{"cartesian":false,"wgs-84":{"altitude":0,"latitude":26.06457839786217,"longitude":-80.2526515794329}},"speed":0.027264399453997612,"tags":[],"timestamp":1762268803377,"type":"vehicle","update":1762268803377,"weight":false,"zones":null},{"acceleration":-1.2585440197506465e-8,"behavior":false,"classification":"car","egress":false,"event":{"id":1,"name":"update"},"flags":1,"heading":false,"id":[10,1762268789035],"ingress":1762268789035,"interface":36,"lifespan":14341,"lwh":false,"model":"object","path":[{"dwell":14341,"egress":false,"event":"update","gap":false,"headway":false,"id":73,"ingress":1762268789035,"speed":0.004215881694108248,"update":1762268803377}],"position":{"cartesian":false,"wgs-84":{"altitude":0,"latitude":26.064497411750565,"longitude":-80.25258925626214}},"speed":0.004217357374727726,"tags":[],"timestamp":1762268803377,"type":"vehicle","update":1762268803377,"weight":false,"zones":{"73":{"id":73,"path":0}}}]}

GET /api/zones

Get all configured zones
GET /api/zones HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61

HTTP/1.1 200 OK
Content-Type: application/json

{"zones":[{"id":1,"settings":{"name":"NBL-1"}},{"id":2,"settings":{"name":"NBRT-1"}},{"id":3,"settings":{"name":"NBD-1"}},...]}

GET /api/zone/{id}

Get a specific zone
GET /api/zone/{id} HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61

HTTP/1.1 200 OK
Content-Type: application/json

{"zone":{"id":1,"settings":{"name":"zone name"}}}

POST /api/zones

Create a new zone
POST /api/zones HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Content-Type: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61

{"settings":{"name":"zone name"}}

HTTP/1.1 200 OK
Content-Type: application/json

{"zone":{"id":1,"settings":{"name":"zone name"}}}
zone.id
number
ID of the new zone
zone.settings.name
string
Name of the zone

PUT /api/zone/{id}

Update an existing zone
PUT /api/zone/{id} HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Content-Type: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61

{"settings":{"name":"new zone name"}}

HTTP/1.1 200 OK
Content-Type: application/json

{"zone":{"id":1,"settings":{"name":"new zone name"}}}

DELETE /api/zone/{id}

Create a new zone
DELETE /api/zone/{id} HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61

HTTP/1.1 200 OK
Content-Type: application/json

{"zone":{"id":1,"settings":{"name":"zone name"}}}


PUT /api/settings

Update settings

💡
This endpoint will only update settings you include in the request. So only include settings you intend to modify.
PUT /api/settings HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Content-Type: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61

{"units":{"distance":"ft","duration":"ms","angle":"rad","speed":"ms","weight":"lbs"},"integrator":{"name":"name of the integrator","location":{"name":"site","latitude":82.22222,"longitude":-122.02935},"google-maps-api-key":"key","google-maps-id":"id"}}

HTTP/1.1 200 OK
Content-Type: application/json

{"units":{"duration":"ms","angle":"rad","distance":"ft","speed":"mph","weight":"kg"},"integrator":{"name":"BBINT-E816046B1A7C","version":[0,0],"location":{"name":"","latitude":47.617431232908,"longitude":-122.20172775013},"google-maps-id":"id","google-maps-api-key":"key"},"time":{"zone":"America\/New_York","ntp":{"enabled":false,"host":"pool.ntp.org"}},"network":{"interfaces":[],"dns":"8.8.8.8","provider":"none"}}
units.distance
string
Unit to represent all distance inputs and displays

m, ft, yd
units.spee
string
Unit to represent all speed inputs and displays

ms, mph, kph
units.angle
string
Unit to represent all angle inputs and displays

rad, deg
units.weight
string
Unit to represent all weight inputs and displays

kg, lb
integrator.name
string
Name given to this integrator
integrator.location.name
string
Name of the location for this site
integrator.location.latitude
float
Latitude position of this site
integrator.location.longitude
float
Longitude position of this site
integrator.google-maps-api-key
string
Key for Google Maps services
integrator.google-maps-id
string
ID of the google map cloud source

GET /api/settings

Get settings

💡
This endpoint will only update settings you include in the request. So only include settings you intend to modify.
GET /api/settings HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61

HTTP/1.1 200 OK
Content-Type: application/json

{"units":{"duration":"ms","angle":"rad","distance":"ft","speed":"mph","weight":"kg"},"integrator":{"name":"BBINT-E816046B1A7C","version":[0,0],"location":{"name":"","latitude":47.617431232908,"longitude":-122.20172775013},"google-maps-id":"id","google-maps-api-key":"key"},"time":{"zone":"America\/New_York","ntp":{"enabled":false,"host":"pool.ntp.org"}},"network":{"interfaces":[],"dns":"8.8.8.8","provider":"none"}}


Edge Link (MQTT)

integrator/objects [JSON]

This topic provides snapshots of tracked objects. This topic is a continuous output stream, set at a rate of 10Hz (every 100ms) whether there are objects being tracked or not.

⚠️

This topic is a high volume stream

[{"classification":"car","heading":0.07436305626341434,"id":[2938,1767714489506],"position":[40.64247442526547,-111.8888613115023],"speed":13.703374862670898,"timestamp":1767714492271,"type":"vehicle","zones":null,"description":null},{"classification":"car","heading":1.0940455642819784,"id":[2937,1767714489301],"position":[40.64348946547901,-111.88870247052874],"speed":0.130054771900177,"timestamp":1767714492271,"type":"vehicle","zones":null,"description":{"color":"red","make":null,"model":null,"year":null,"license-plate":"abc-123","confidence":0.76}},{"classification":"car","heading":1.5978485465346681,"id":[2660,1767714376798],"position":[40.64293812823515,-111.88919498660081],"speed":0.02340521477162838,"timestamp":1767714492271,"type":"vehicle","zones":[20,44],"description":null}]

integrator/interface/$id [JSON]

This topic provides information on a specific interface. Anytime the state of the interface changes, this topic will be updated and you'll be notified.

$id
ID of the interface
{"created":1751479503,"driver":"blue-band-bb-sdlc","id":1,"model":"interface.traffic-signal","name":"DR BIU","operstate":{"duration":273,"message":"","name":"operational","timestamp":1767714796}}


Integrator : Traffic Signal

integrator/interface/$id/movement/$heading/$type [JSON]

This topic will publish when the state of the movement changes

$id
ID of the interface

$heading

The heading of the movement

values: nb, sb, eb, wb

$type

The movement type

values: left, right, through, u-turn
{"heading":"sb","id":131076,"indication":{"duration":0,"name":"yellow","timestamp":1767712906049},"phase":8,"ring":2,"state":{"duration":25093,"name":"permissive","timestamp":1767712880955},"type":"right"}


integrator/interface/$id/phase/$phase [JSON]

This topic will publish when the state of the phase changes

$id
ID of the interface

$phase

Phase number

{"id":2,"pedestrian":{"aspects":[],"indication":{"duration":4449,"name":"flashing-dont-walk","timestamp":1767713337138}},"ring":1,"timing":{"added-initial":0,"dont-walk":19,"max":[20,0,0],"max-initial":0,"min-gap":0,"min-green":0,"red-clear":2500,"time-before-reduction":0,"time-to-reduce":0,"vehicle-extension":0,"walk":4,"yellow-change":3000},"vehicle":{"aspects":["green"],"indication":{"duration":11817,"name":"green","timestamp":1767713329771}}}


integrator/interface/$id/ring/$ring [JSON]

This topic will publish when the state of the ring changes

$id
ID of the interface

$ring

Ring number

{"forceoff":false,"id":2,"max":0,"next":0,"phase":{"duration":0,"id":7,"timestamp":1767713482827},"state":{"duration":174688,"name":"none","timestamp":1767713308139},"termination":"none"}


integrator/interface/$id/detector/$detector [JSON]

This topic will publish when the state of the detector changes

$id
ID of the interface

$detector

Detector number

{"id":34,"pedestrian":{"state":{"duration":227798,"name":"clear","timestamp":1767713308139}},"vehicle":{"state":{"duration":0,"name":"call","timestamp":1767713535938}}}


Integrator : Digital Message Sign

integrator/interface/$id/message [JSON]

This topic will publish when the message changes

$id
ID of the interface
{"message":"test message"}


Integrator : Digital Analog Hardware

integrator/interface/$id/channel/$channel [JSON]

This topic will publish when the state of the channel changes

$id
ID of the interface

$channel

Channel number
{"id":1,"name":"di1","mode":"di","state":{"value":1.0,"duration":0,"timestamp":1767712880955}}