The document describes methods and data formats used by Nwave's cloud-based API broker to relay preprocessed pre-processed smart parking sensor events to the client's endpoints. The data can be passed with or without authorization.
...
Event of sensor occupancy status change. Occupation detection time is 5-7 seconds and vacation detection time is 3-5 seconds.
Method: POST
Template Body:
Code Block |
---|
|
{
"timestampdevice_id": "2019-10-01T18:59:11.254Z",{device_id}",
"position":{
"messagenetwork_typeid": "status{network_сhangeid}",
"messagecustom_trace_id": "6c53ce93-27b3-40e4-b012-e4c3d3aea651{custom_id}",
"messagelatitude": {latitude},
"longitude": {longitude},
"position_network_id": "6eb6d7d6-e486-45ff-a801-058765e2522a","group_inner_id": {group_inner_id},
"group":{
"id": {group_id},
"new_statusname": "occupied{group_name}",
"previous_status_duration_min":36,
zone_id": {zone_id}
}
},
"previousmessage_type": "status_duration_error_minchange",
"message_trace_id": 1,
""{message_trace_id}",
"occupied": "{"occupied" if parsed["occupation_status"] is True else "free"}",
"parking_session_iterator": 1{parsed["parking_session_iterator"]},
},"previous_status_duration_min": {parsed["previous_occupancy_status_duration_min"]}
} |
...
Expand |
---|
|
locationdevice_id":"1E554",
"position":{
" | latitude -12.2334134,"00000000-0000-0000-0000-00000001e554",
" | longitude 53.743789,levellatitude":51.49442797732277,
| 3}, groupinglongitude":-0.1280093119192549,
| {zone_id632,group_ 10365,group_ Positiongroupname"group_inner 162779
}
},
"message_type":"status_change",
" | custom "Position custom ID"
}
} |
...
message_trace_id - system message-id;
"5443685e-e8d9-410f-bcee-d2d82c2e8473",
"occupied":"free",
"parking_session_iterator":5,
"previous_status_duration_min":16
} |
|
...
...
previous_status_duration_min - duration of previous sensor status;
...
previous_status_duration_error_min - calculation error of the previous status duration;
id - a property "custom_id" of a position; latitude, longitude - GPS coordinates; group_inner_id - a device number inside of a parking bay; group id - id of a parking bay; name - name of a position’s group; zone_id - id of a group’s zone.
|
...
message_type - message type;
message_trace_id - system message-id;
occupied - parking occupancy status ("occupied" or "free");
parking_session_iterator - short serial number of parking session. Iterator (number) is incrementing when new parking session starts (0-7);
latitude, longitude - GPS coordinates;
level - used for multi-level parking (0 for ground level parking);
zone_id - id of a device zone;
group_id - id of a parking bay;
group_name - name of a position group;
group_inner_id - a device number inside of a parking bay;
custom_id - a property "custom_id" of a position.
...
previous_status_duration_min - duration of previous sensor status;
Heartbeat
The message is sent to confirm the health status of a sensor every 3 hours in case of unchanged occupancy status.
Method: PUT/POST
Template Body:
Code Block |
---|
|
Code Block |
---|
{
" timestamp": "{iso8601(message_time)}",
"message_type": "status_сhange",
"message_trace_device_id": "{ message_tracedevice_id}",
" messageposition":{
{ " position_network_id": "{network_id}",
" newcustom_ statusid": "{ "occupied" if parsed["occupation_status"] is True else "free"custom_id}",
"previous_status_duration_min "latitude": {parsed["previous_occupancy_status_duration_min"] {latitude},
"previous_status_duration_error_min "longitude": { int(parsed["time_slot_sec"]/60)longitude},
" sessiongroup_inner_ iteratorid": { parsed["parking_session_iterator"]}group_inner_id},
}, " locationgroup":{
{ " latitudeid": { latitudegroup_id},
"longitude": {longitude}, " levelname": "{ level}
},
"grouping":group_name}",
{ "zone_id": {zone_id} ,
"group_id": {group_id} ,
},
" groupmessage_ nametype": " {group_name}heartbeat",
" groupmessage_ innertrace_id": "{ groupmessage_ innertrace_id}",
"parking_session_iterator": {parsed["parking_session_iterator"]},
" custom_idoccupied": "{ custom_id}"occupied" }
} |
Heartbeat
The message is sent to confirm health status of a sensor every 3 hours in case of unchanged occupancy status.
Method: PUT/POST
Body:
{
"timestamp": "2019-10-01T18:59:11.254Zif parsed["occupation_status"] is True else "free"}",
"heartbeat_message_typecounter": {parsed["heartbeat",_message_counter"]}
} |
...
Expand |
---|
|
messagetrace_6c53ce93-27b3-40e4-b012-e4c3d3aea651message{ position_id 6eb6d7d6e48645ffa801058765e2522aheartbeatnumber3,statuslatitude":51.49442797732277,
" | freelongitude":-0.1280093119192549,
" | sessioniterator },location{latitude -12.2334134,longitude 53.743789,
"level": 3},grouping{ "zone_id": 632,groupid 10365,
groupname "Position group name"5443685e-e8d9-410f-bcee-d2d82c2e8473",
| groupinnerid16 custom_idPositioncustomID" "heartbeat_message_counter": 2
} |
} |
...
message_trace_id - system message-id;
...
...
status - parking occupancy status ("occupied" or "free");
...
...
level - used for multi-level parking (0 for ground level parking);
...
...
...
...
...
group_inner_id - a device number inside of a parking bay;
...
custom_id - a property "custom_id" of a position.
message_type - message type;
message_trace_id - system message-id;
parking_session_iterator - short number of parking session. Iterator is incrementing when parking session starts (0-7);
occupied - parking occupancy status ("occupied" or "free");
heartbeat_message_counter - the value increases for every following heartbeat during single occupancy state (0-11);
User Registration (SDI Tag)
The message is sent to inform that a user has checked using an SDI tag.
Method: PUT/POST
Template Body:
Code Block |
---|
|
{
" timestampdevice_id": "{ iso8601(message_time)device_id}",
"position":{
" messagenetwork_ typeid": " heartbeat{network_id}",
" messagecustom_ trace_id": "{ message_tracecustom_id}",
" messagelatitude": {latitude},
"longitude": {longitude},
"position_network_id": "{network_id}", "group_inner_id": {group_inner_id},
"group":{
"id": {group_id},
"name": "{group_name}",
" heartbeatzone_ numberid": { parsed["heartbeat_message_counter"]},
zone_id}
}
},
"message_type": "user_registration",
"message_trace_id": "{message_trace_id}",
" statusoccupied": "{"occupied" if parsed["occupation_status"] is True else "free"}",
"auth_ble_tag": {
" sessiontag_ iteratorid": "{parsed[" parkinguser_ session_iteratorID"]}",
"event_time": "{iso8601(message_time)}"
}
} |
Expand |
---|
|
Code Block |
---|
| {
"device_id":"1E554",
" |
|
...
...
"network_id":"00000000-0000-0000-0000-00000001e554",
" |
|
...
...
"",
"latitude":51.49442797732277,
"longitude": |
|
...
-0.1280093119192549,
"group_inner_id":1,
" |
|
...
...
...
...
...
...
...
"Test Group Delete After 26/02/2021",
" |
|
...
...
...
...
...
...
...
registration",
"message_trace_id":"7d611a3f-f2a3-4653-b70a-7e3f07e5987f",
" |
|
...
...
...
...
parsed["parking_session_iterator"]},
"occupied":"occupied",
"auth_ble_tag":{
" |
|
...
...
"event_time":"2021-02-26T18:06:14.000+00:00"
}
} |
|
message_type - message type;
message_trace_id - system message-id;
parking_session_iterator - short serial number of parking session. Iterator (number) is incrementing when new parking session starts (0-7);
occupied- parking occupancy status ("occupied" or "free");
auth_ble_tag