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. |
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 knownmale 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 possiblenone, 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 /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 /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 /api/zone/{id} HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61HTTP/1.1 200 OK
Content-Type: application/json
{"zone":{"id":1,"settings":{"name":"zone name"}}}
POST /api/zones
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}
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}
DELETE /api/zone/{id} HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Authorization: bearer 109b893ceb1c26e3e64e9abf7cdd2aa1c0d25f61HTTP/1.1 200 OK
Content-Type: application/json
{"zone":{"id":1,"settings":{"name":"zone name"}}}
PUT /api/settings
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 /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.
[{"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}}