Eventschema
Unsere Produkte (BMA, BCA, B101, B401, BMA TLC, Mobile BMA) senden strukturierte MQTT-Events, sobald ein konfigurierter Trigger auslöst, und streamen sie an Ihren eigenen Broker, wie unter Control Center → Datenübertragung konfiguriert.
Event JSON Schema
Laden Sie das verbindliche Schema unter events/schema/6.0/schema.json herunter und nutzen Sie es als Vertrag für Validatoren oder generierte Modelle. Fügen Sie Payload und Schema in ein JSON-Schema-Tool (z. B. jsonschemavalidator.net) ein, um die Kompatibilität zu prüfen.
Gemeinsame Felder
Jede Payload beginnt mit einer gemeinsamen Hülle und bettet dann einen oder mehrere eventspezifische Abschnitte ein.
version,eventSchema: identifizieren die Schemaversion (aktuell6.0) und die kanonische Referenz-URL.uuid: weltweit eindeutige Kennung je Event.tenantId: Control-Center-Tenant, dem das Gerät zugeordnet ist.node: beschreibt den Hardware-Node (Gerät), der das Event ausgelöst hat, inklusivenode.id,node.nameund optionalnode.metadata.stream: beschreibt den Video- oder Sensorstream des Nodes, inklusivestream.id,stream.nameund optionalenstream.geoLocation-Koordinaten[lat, lon].
Crossing Line Event
Ein Crossing Line-Trigger löst aus, sobald der Mittelpunkt eines Objekts die konfigurierte Linie kreuzt, und sendet ein crossingLineEvent mit den folgenden Feldern.
crossingLineEvent.classund optionalcrossingLineEvent.subClass: erkannte Objektklasse (z. B.person,car,truck) gemäß der Objektklassen-Referenz.crossingLineEvent.directionplus optionalcrossingLineEvent.directionName: normalisierte Richtung (in,out) sowie optionaler benutzerdefinierter Name aus der Trigger-Konfiguration.crossingLineEvent.lineId,crossingLineEvent.lineName: Kennung und Name der Crossing Line.crossingLineEvent.timestamp: UTC-Zeitpunkt der Überquerung im ISO-8601-Format.crossingLineEvent.trackId,crossingLineEvent.trackUuid: verknüpfen das Event mit der zugrunde liegenden Trajektorie des Objekts.
Beispiel: Crossing Line Event
{
"crossingLineEvent": {
"class": "car",
"subClass": "van",
"direction": "in",
"lineId": "e8f82efd-82bf-499d-be17-b66371f16375",
"lineName": "cl0",
"timestamp": "2025-11-05T14:07:28.918328Z",
"trackId": 1048578,
"trackUuid": "28e3681f-5398-4347-8c3d-ca64a3c25537"
},
"node": {
"id": "99031920-6239-471e-a3d7-f241b7753fd0",
"name": "BMA"
},
"stream": {
"id": "79031920-6239-471e-a3d7-f241b7753fd0",
"name": "Stream1"
},
"version": "6.0",
"eventSchema": "https://docs.bernard-gruppe.com/events/schema/6.0",
"uuid": "123456a7-dd2d-4016-b9ff-530ab24e5f98",
"tenantId": "e1df4def-6770-41bd-b3a8-9876549251e6"
}
Bewegungspfad
Wenn Bewegungspfad an Event anhängen aktiviert ist, enthält das Event eine Trajektorie mit absoluten Pixelkoordinaten des Objekts. Es werden bis zu 10 Track-Punkte gesendet; längere Pfade überspringen Zwischenpunkte.
Beispiel: Crossing Line Event mit Pfad
{
"crossingLineEvent": {
"class": "car",
"subClass": "van",
"direction": "in",
"lineId": "e8f82efd-82bf-499d-be17-b66371f16375",
"lineName": "cl0",
"timestamp": "2025-11-05T14:07:28.918328Z",
"trackId": 1048578,
"trackUuid": "28e3681f-5398-4347-8c3d-ca64a3c25537",
"path": [
{
"h": 311.0,
"timestamp": "2025-11-05T14:07:20.228986Z",
"w": 325.0,
"x": 1080.0,
"y": 355.0
},
{
"h": 348.0,
"timestamp": "2025-11-05T14:07:21.106134Z",
"w": 376.0,
"x": 1037.0,
"y": 367.0
},
{
"h": 454.0,
"timestamp": "2025-11-05T14:07:28.867676Z",
"w": 536.0,
"x": 826.0,
"y": 447.0
}
]
},
"node": {
"id": "99031920-6239-471e-a3d7-f241b7753fd0",
"name": "BMA"
},
"stream": {
"id": "79031920-6239-471e-a3d7-f241b7753fd0",
"name": "Stream1"
},
"version": "6.0",
"eventSchema": "https://docs.bernard-gruppe.com/events/schema/6.0",
"uuid": "123456a7-dd2d-4016-b9ff-530ab24e5f98",
"tenantId": "e1df4def-6770-41bd-b3a8-9876549251e6"
}
Automatic Number Plate Recognition (ANPR)
Wenn das ANPR-Modell oder die Option Parking Mode ANPR (verfügbar mit den Traffic & Parking-Modellen — Standard oder Accuracy+) für einen Stream aktiviert ist, erscheinen folgende Zusatzfelder.
crossingLineEvent.numberPlate: erkannter Kennzeichentext.crossingLineEvent.numberPlateOrigin: Land/Region des Kennzeichens (ISO 3166-1 alpha-2).crossingLineEvent.numberPlateArea: regionales Kürzel des Kennzeichentexts.crossingLineEvent.numberPlateLines: ein- oder zweizeiliges Kennzeichen.crossingLineEvent.numberPlateRect: Bounding-Box des Kennzeichens;crossingLineEvent.vehicleRect: Bounding-Box des gesamten Fahrzeugs. Nur mit Parking Mode ANPR verfügbar.
Information
Mit dem ANPR-Modell wird ausschließlich die Klasse numberplate ausgegeben; vehicleRect entfällt. Die Position des Kennzeichens im Bild wird in absoluten Koordinaten angegeben.
Beispiel: Crossing Line Event mit Parking Mode ANPR
{
"crossingLineEvent": {
"class": "car",
"subClass": "van",
"direction": "in",
"lineId": "e8f82efd-82bf-499d-be17-b66371f16375",
"lineName": "ibktwi_cl0",
"timestamp": "2025-11-05T14:07:28.918328Z",
"trackId": 1048578,
"trackUuid": "28e3681f-5398-4347-8c3d-ca64a3c25537",
"numberPlate": "I1544AM",
"numberPlateOrigin": "AT",
"numberPlateArea": "I",
"numberPlateLines": 1,
"numberPlateRect": {
"h": 47,
"w": 150,
"x": 128,
"y": 344
},
"vehicleRect": {
"h": 445,
"w": 535,
"x": 836,
"y": 437
}
},
"node": {
"id": "99031920-6239-471e-a3d7-f241b7753fd0",
"name": "test"
},
"stream": {
"id": "79031920-6239-471e-a3d7-f241b7753fd0",
"name": "streamname"
},
"version": "6.0",
"eventSchema": "https://docs.bernard-gruppe.com/events/schema/6.0",
"uuid": "123456a7-dd2d-4016-b9ff-530ab24e5f98",
"tenantId": "e1df4def-6770-41bd-b3a8-9876549251e6"
}
Beispiel: Crossing Line Event mit ANPR-Modell
{
"crossingLineEvent": {
"class": "numberplate",
"direction": "in",
"lineId": "e8f82efd-82bf-499d-be17-b66371f16375",
"lineName": "ibktwi_cl0",
"numberPlate": "I1544AM",
"numberPlateArea": "I",
"numberPlateLines": 1,
"numberPlateOrigin": "AT",
"numberPlateRect": {
"h": 36,
"w": 134,
"x": 1139,
"y": 661
},
"timestamp": "2025-11-05T12:48:09.175453Z",
"trackId": 493,
"trackUuid": "7854a1b7-c9d4-4519-b081-464a1b182cb7"
},
"node": {
"id": "99031920-6239-471e-a3d7-f241b7753fd0",
"name": "test"
},
"stream": {
"id": "79031920-6239-471e-a3d7-f241b7753fd0",
"name": "streamname"
},
"version": "6.0",
"eventSchema": "https://docs.bernard-gruppe.com/events/schema/6.0",
"uuid": "123456a7-dd2d-4016-b9ff-530ab24e5f98",
"tenantId": "e1df4def-6770-41bd-b3a8-9876549251e6"
}
Region of Interest Event
Ein Region of Interest-Trigger sendet ein regionOfInterestEvent, das belegte Objekte und Verweildauern auflistet.
regionOfInterestEvent.objects[]: aktuelle Objekte mitregionOfInterestEvent.objects[].class/subClassgemäß Objektklassen,regionOfInterestEvent.objects[].trackIdundregionOfInterestEvent.objects[].dwellTimein Sekunden.regionOfInterestEvent.roiId,regionOfInterestEvent.roiName: konfigurierte ROI-Kennung und Name.regionOfInterestEvent.state:occupied, wenn mindestens ein Objekt in der ROI ist, sonstvacant.regionOfInterestEvent.triggerType: Grund für das Event (timeoderchange).
Beispiel: Region of Interest Event
{
"eventSchema": "https://docs.bernard-gruppe.com/events/schema/6.0",
"node": {
"id": "c44d31c4-de0c-4933-b562-0d627c7db2b6",
"name": "2021110040"
},
"regionOfInterestEvent": {
"capacity": 1,
"objects": [
{
"class": "car",
"dwellTime": 0,
"trackId": 2,
"trackUuid": "e5c1606c-5b2e-41c4-a445-7a89fb3934b9"
}
],
"roiId": "cb2ed4b3-b200-4f0e-90b5-cd00aa999328",
"roiName": "roi links",
"state": "occupied",
"timestamp": "2025-12-03T16:39:07.809630Z",
"triggerType": "change"
},
"stream": {
"geoLocation": {
"coordinates": [
11.40,
47.26
]
},
"id": "f0b5f1dd-d1a5-47de-b1f7-ffe1704baf7c",
"name": "Stream1"
},
"tenantId": "3bb3ed7e-4c92-4db3-b317-1e06a4bc4995",
"uuid": "ed78e199-a306-4c13-828f-9d54b5555e44",
"version": "6.0"
}
Automatic Number Plate Recognition (ANPR)
Wenn für einen Stream das ANPR-Modell oder die Option Parking Mode ANPR (verfügbar bei den Traffic & Parking-Modellen — Standard oder Accuracy+) aktiviert ist, stehen bei ROI-Objekten die folgenden Zusatzfelder zur Verfügung.
regionOfInterestEvent.objects[].numberPlate: erkannten Kennzeichentext.regionOfInterestEvent.objects[].numberPlateOrigin: Land/Region des Kennzeichens (ISO 3166-1 alpha-2).regionOfInterestEvent.objects[].numberPlateArea: Regionalcode des Kennzeichens.regionOfInterestEvent.objects[].numberPlateLines: gibt Ein- oder Zweizeiler an.regionOfInterestEvent.objects[].numberPlateRect: Bounding-Box des Kennzeichens;regionOfInterestEvent.objects[].vehicleRect: Bounding-Box des Fahrzeugs. Nur verfügbar mit Parking Mode ANPR.
Information
Mit dem ANPR-Modell wird ausschließlich die Klasse numberplate ausgegeben; vehicleRect entfällt. Die Position des Kennzeichens im Bild wird in absoluten Koordinaten angegeben.
Beispiel: Region of Interest Event mit ANPR-Modell
{
"eventSchema": "https://docs.bernard-gruppe.com/events/schema/6.0",
"node": {
"id": "c44d31c4-de0c-4933-b562-0d627c7db2b6",
"name": "2021110040"
},
"regionOfInterestEvent": {
"capacity": 1,
"objects": [
{
"class": "numberplate",
"dwellTime": 0,
"numberPlate": "ILXXXXX",
"numberPlateArea": "IL",
"numberPlateLines": 1,
"numberPlateOrigin": "AT",
"numberPlateRect": {
"h": 28,
"w": 85,
"x": 812,
"y": 517
},
"trackId": 180355079,
"trackUuid": "119ffff9-ffa7-4fb7-b865-e957aee9bfda"
}
],
"roiId": "cb2ed4b3-b200-4f0e-90b5-cd00aa999328",
"roiName": "roi links",
"state": "occupied",
"timestamp": "2025-12-03T15:05:59.378959Z",
"triggerType": "change"
},
"stream": {
"geoLocation": {
"coordinates": [
11.40,
47.26
]
},
"id": "f0b5f1dd-d1a5-47de-b1f7-ffe1704baf7c",
"name": "Stream1"
},
"tenantId": "3bb3ed7e-4c92-4db3-b317-1e06a4bc4995",
"uuid": "b5cb3844-3743-4cc5-ac39-36448bfd47f9",
"version": "6.0"
}
Beispiel: Region of Interest Event mit Parking Mode ANPR
{
"eventSchema": "https://docs.bernard-gruppe.com/events/schema/6.0",
"node": {
"id": "c44d31c4-de0c-4933-b562-0d627c7db2b6",
"name": "2021110040"
},
"regionOfInterestEvent": {
"capacity": 1,
"objects": [
{
"class": "car",
"dwellTime": 0,
"numberPlateRect": {
"h": 18,
"w": 60,
"x": 124,
"y": 190
},
"trackId": 53477380,
"trackUuid": "7c3b0a5d-964f-4f1b-9d3c-e01b790be382",
"vehicleRect": {
"h": 222,
"w": 244,
"x": 694,
"y": 233
}
}
],
"roiId": "cb2ed4b3-b200-4f0e-90b5-cd00aa999328",
"roiName": "roi links",
"state": "occupied",
"timestamp": "2025-12-03T16:17:40.482253Z",
"triggerType": "change"
},
"stream": {
"geoLocation": {
"coordinates": [
11.40,
47.26
]
},
"id": "f0b5f1dd-d1a5-47de-b1f7-ffe1704baf7c",
"name": "Stream1"
},
"tenantId": "3bb3ed7e-4c92-4db3-b317-1e06a4bc4995",
"uuid": "3f245256-7092-417e-b488-f65dc0ba342f",
"version": "6.0"
}
Origin Destination Event
Ein Origin Destination-Trigger sendet ein originDestinationEvent, wenn die Trajektorie eines Objekts mindestens zwei OD-Zonen durchlaufen hat und nutzt die erste und letzte durchlaufene Zone für das Event.
originDestinationEvent.entry.zone.zoneId,originDestinationEvent.entry.zone.name,originDestinationEvent.entry.timestamp: Einstiegszone und Zeitpunkt des Eintritts.originDestinationEvent.exit.zone.zoneId,originDestinationEvent.exit.zone.name,originDestinationEvent.exit.timestamp: Ausgangszone und Zeitpunkt des Austritts.originDestinationEvent.movementPath[]: Objekttrajektorie mit absoluten Pixelkoordinaten.
Beispiel: Origin Destination Event
{
"version": "6.0",
"eventSchema": "https://docs.bernard-gruppe.com/events/schema/6.0",
"uuid": "123456a7-dd2d-4016-b9ff-530ab24e5f98",
"tenantId": "e1df4def-6770-41bd-b3a8-9876549251e6",
"node": {
"id": "99031920-6239-471e-a3d7-f241b7753fd0",
"name": "test"
},
"stream": {
"id": "79031920-6239-471e-a3d7-f241b7753fd0",
"name": "streamname"
},
"originDestinationEvent": {
"classification": "truck",
"subClass": "articulated-truck",
"entry": {
"zone": {
"zoneId": "56317209-9B83-43A6-A63E-58C9191A7869",
"name": "entryZoneName"
},
"timestamp": "2019-12-29T10:31:14.373202Z"
},
"exit": {
"zone": {
"zoneId": "c28ed4e8-bf1b-4c2e-9938-aeb28687f7aa",
"name": "exitZoneName"
},
"timestamp": "2019-12-29T10:31:20.373202Z"
},
"trackId": 23,
"trackUuid": "5609fb4b-cf2b-426d-8f75-0a639a932b90",
"movementPath": [
{
"timestamp": "2019-12-29T10:31:14.373202Z",
"h": 554.192138671875,
"w": 766.527587890625,
"x": 0.0,
"y": 525.807861328125
},
{
"timestamp": "2019-12-29T10:31:15.173212Z",
"h": 757.237060546875,
"w": 1013.7042236328125,
"x": 137.61514282226563,
"y": 161.38143920898438
},
{
"timestamp": "2019-12-29T10:31:16.229202Z",
"h": 757.23712158203125,
"w": 789.47369384765625,
"x": 249.73042297363281,
"y": 108.07360076904297
},
{
"timestamp": "2019-12-29T10:31:17.343202Z",
"h": 757.23712158203125,
"w": 1013.704345703125,
"x": 149.989990234375,
"y": 157.84721374511719
},
{
"timestamp": "2019-12-29T10:31:18.373202Z",
"h": 757.237060546875,
"w": 789.47369384765625,
"x": 184.40171813964844,
"y": 161.38143920898438
},
{
"timestamp": "2019-12-29T10:31:19.373202Z",
"w": 1013.7042236328125,
"h": 757.23712158203125,
"x": 131.88348388671875,
"y": 157.84721374511719
},
{
"timestamp": "2019-12-29T10:31:20.373202Z",
"h": 757.23712158203125,
"w": 1013.7042236328125,
"x": 131.88348388671875,
"y": 157.84721374511719
}
]
}
}
Raw Track Event
Der Raw Track Event Trigger zeichnet die vollständige Trajektorie eines Objekts auf und löst aus, sobald der Track beendet ist – zum Beispiel wenn das Objekt das Kamerabild verlässt.
rawTrackEvent.class: erkannte Objektklasse gemäß Objektklassen.rawTrackEvent.trackId,rawTrackEvent.trackUuid: verknüpfen das Event mit der zugrunde liegenden Trajektorie.rawTrackEvent.path[]: Objekttrajektorie mit absoluten Pixelkoordinaten.
Beispiel: Raw Track Event
{
"heatmapEvent": {
"class": "car",
"trackId": 23,
"trackUuid": "5609fb4b-cf2b-426d-8f75-0a639a932b90",
"path": [
{
"h": 554.192138671875,
"timestamp": "2019-12-29T10:31:14.373202Z",
"w": 766.527587890625,
"x": 0.0,
"y": 525.807861328125
},
{
"h": 757.237060546875,
"timestamp": "2019-12-29T10:31:14.373202Z",
"w": 1013.7042236328125,
"x": 137.61514282226563,
"y": 161.38143920898438
},
{
"h": 757.2371215820313,
"timestamp": "2019-12-29T10:31:14.373202Z",
"w": 789.4736938476563,
"x": 249.7304229736328,
"y": 108.07360076904297
},
{
"h": 757.2371215820313,
"timestamp": "2019-12-29T10:31:14.373202Z",
"w": 1013.704345703125,
"x": 149.989990234375,
"y": 157.8472137451172
},
{
"h": 757.237060546875,
"timestamp": "2019-12-29T10:31:14.373202Z",
"w": 789.4736938476563,
"x": 184.40171813964844,
"y": 161.38143920898438
},
{
"h": 757.2371215820313,
"timestamp": "2019-12-29T10:31:14.373202Z",
"w": 1013.7042236328125,
"x": 131.88348388671875,
"y": 157.8472137451172
},
{
"h": 757.2371215820313,
"timestamp": "2019-12-29T10:31:14.373202Z",
"w": 1013.7042236328125,
"x": 131.88348388671875,
"y": 157.8472137451172
}
]
},
"node": {
"id": "99031920-6239-471e-a3d7-f241b7753fd0",
"name": "test"
},
"stream": {
"id": "79031920-6239-471e-a3d7-f241b7753fd0",
"name": "streamname"
},
"version": "6.0",
"eventSchema": "https://docs.bernard-gruppe.com/events/schema/6.0",
"uuid": "123456a7-dd2d-4016-b9ff-530ab24e5f98",
"tenantId": "e1df4def-6770-41bd-b3a8-9876549251e6"
}