Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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
languagejson
{
  "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
titleExample Message
Code Block
languagejson
{
   "
location
device_id":"1E554",
   "position":{
      "
latitude
network_id":
-12.2334134,
"00000000-0000-0000-0000-00000001e554",
      "
longitude
custom_id":
53.743789,
"",
      "
level
latitude":51.49442797732277,
3
    
},
  
"
grouping
longitude":-0.1280093119192549,
  
{
    "group_inner_id":1,
      "
zone_id
group":{
632,
         "
group_
id":
10365,
4121,
         "
group_
name":
"
Position
Test 
group
Group 
name
Delete",
      
"group_inner
   "zone_id":
16
2779
      }
   },
   "message_type":"status_change",
   "
custom
message_trace_id":
"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
}

Expand
titleDevice Info
  • device_id - device id hexadecimal

  • position

    • network_id - parking space network address;

...

    • custom_

...

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
languagejson
Code Block
{
  "
timestamp": "{iso8601(message_time)}", "message_type": "status_сhange", "message_trace_
device_id": "{
message_trace
device_id}",
  "
message
position":{
   
{
   
"
position_
network_id": "{network_id}",
      "
new
custom_
status
id": "{
"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},
      "
session
group_inner_
iterator
id": {
parsed["parking_session_iterator"]}
group_inner_id},
   
},
   "
location
group":{
    
{
      "
latitude
id": {
latitude
group_id},

    
"longitude": {longitude},
      "
level
name": "{
level} }, "grouping":
group_name}",
    
{
      "zone_id": {zone_id}
,

     
"group_id":
 
{group_id
}
,

  },
  "
group
message_
name
type": "
{group_name}
heartbeat",

  
"
group
message_
inner
trace_id": "{
group
message_
inner
trace_id}",
  "parking_session_iterator": {parsed["parking_session_iterator"]},
  "
custom_id
occupied": "{
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
titleExample Message
Code Block
languagejson
{
   "
message
device_
trace_
id": "
6c53ce93-27b3-40e4-b012-e4c3d3aea651
1E554",
   "
message
position":{
  
{
    
"
position_
network_
id 
id":
"
6eb6d7d6
00000000-
e486
0000-
45ff
0000-
a801
0000-
058765e2522a
00000001e554",
      "
heartbeat
custom_
number
id":"",
 
3,
     "
status
latitude":51.49442797732277,
      "
free
longitude":-0.1280093119192549,
      "
session
group_inner_
iterator
id":
1,
  
},
    "
location
group":{
   
{
      "
latitude
id":
-12.2334134,
4121,
         "
longitude
name":
53.743789, "level": 3
"Test Group",
      
},
   "
grouping
zone_id":2779
   
{
   
"zone_id": 632,
}
   }
   "
group
message_
id
type":
10365,
"heartbeat",
   "
group
message_trace_
name
id":
"Position group name
"5443685e-e8d9-410f-bcee-d2d82c2e8473",
   
"
group
parking_
inner
session_
id
iterator": 
16
5,
   
"
custom_id
occupied": "
Position
free",
custom
 
ID"
  "heartbeat_message_counter": 2
}
}

...

message_trace_id - system message-id;

Expand
titleDevice Info
  • device_id - device id hexadecimal

  • position

    • network_id - parking space network address;

...

    • custom_

...

status - parking occupancy status ("occupied" or "free");

...

    • id - a property "custom_id" of a position;

    • latitude, longitude - GPS coordinates;

...

level - used for multi-level parking (0 for ground level parking);

    • group_inner_id -

...

    • a device number inside of a

...

    • parking bay;

    • group

...

      • id - id of a parking bay;

...

      • name - name of a

...

group_inner_id - a device number inside of a parking bay;

...

custom_id - a property "custom_id" of a position.

Template body
Expand
title
      • position’s group;

      • zone_id - id of a group’s zone.

  • 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
languagejson
{
  "
timestamp
device_id": "{
iso8601(message_time)
device_id}",
  "position":{
      "
message
network_
type
id": "
heartbeat
{network_id}",
      "
message
custom_
trace_
id": "{
message_trace
custom_id}",
      "
message
latitude": {latitude},
      "longitude": {longitude},
    
"position_network_id": "{network_id}",
  "group_inner_id": {group_inner_id},
      "group":{
          "id": {group_id},
          "name": "{group_name}",
          "
heartbeat
zone_
number
id": {
parsed["heartbeat_message_counter"]},
zone_id}
      }
  },
  "message_type": "user_registration",
  "message_trace_id": "{message_trace_id}",
  "
status
occupied": "{"occupied" if parsed["occupation_status"] is True else "free"}",
  "auth_ble_tag": {
    "
session
tag_
iterator
id": "{parsed["
parking
user_
session_iterator
ID"]}",
    "event_time": "{iso8601(message_time)}"
  }
}

Expand
titleExample Message
Code Block
languagejson
{
   "device_id":"1E554",
   "

...

position":{
   

...

   "network_id":"00000000-0000-0000-0000-00000001e554",
      "

...

custom_id":

...

"",
      "latitude":51.49442797732277,
      "longitude":

...

-0.1280093119192549,
      "group_inner_id":1,
      "

...

group":{

...

      

...

   "

...

id":4121,
   

...

      "

...

name":

...

"Test Group Delete After 26/02/2021",
         "

...

zone_id":

...

2779
      }
   },
   "

...

message_

...

type":

...

"

...

user_

...

registration",
   "message_trace_id":"7d611a3f-f2a3-4653-b70a-7e3f07e5987f",
   "

...

parking_

...

session_

...

iterator": {

...

parsed["parking_session_iterator"]},
   "occupied":"occupied",
   "auth_ble_tag":{
      "

...

tag_id":"1A2B3C4D",
  

...

    "event_time":"2021-02-26T18:06:14.000+00:00"
   }
}
Expand
titleDevice Info
  • device_id - device id hexadecimal

  • position

    • network_id - parking space network address;

    • custom_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;

  • 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

    • tag_id - an ID of Bluetooth tag which was used for authorization;

    • event_time - message reception time.