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
{
  "timestamp": "2019-10-01T18:59:11.254Z",
  "message_typedevice_id": "status_сhange",
  "message_trace_id": "6c53ce93-27b3-40e4-b012-e4c3d3aea651"{device_id}",
  "messageposition":
  {
{      "position_network_id": "6eb6d7d6-e486-45ff-a801-058765e2522a{network_id}",
      "newcustom_statusid": "occupied{custom_id}",
     "previous_status_duration_min":36,
     "previous_status_duration_error_min "latitude": 1{latitude},
      "session_iteratorlongitude": 1
   {longitude},
  "location":    {
     "latitude": -12.2334134,"group_inner_id": {group_inner_id},
      "longitudegroup":{
53.743789,      "level": 3    },
  "groupingid":
   {
     "zonegroup_id": 632},
     "group_id": 10365,      "group_name": "Position {group _name}",
     "group_inner_id": 16,      "customzone_id": "Position custom ID" {zone_id}
      }
}
  • message_trace_id - system message-id;

  • position_network_id - parking space network address;

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

  • previous_status_duration_min - duration of previous sensor status;

  • previous_status_duration_error_min - calculation error of the previous status duration;

  • 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.

{

  },
  "message_type": "status_change",
  "message_trace_id": "{message_trace_id}",
  "occupied": "{"occupied" if parsed["occupation_status"] is True else "free"}",
,

  "parking_session_iterator": {parsed["parking_session_iterator"]},
  "previous_status_duration_min": {parsed["previous_occupancy_status_duration_min"]}
, "voltage_V": float,

}
Expand
titleTemplate body
Code Block
languagejson
Expand
titleExample Message
Code Block
languagejson
{
   "device_id": "string1E554",
   "position":{
      "network_id": "{network_id}"00000000-0000-0000-0000-00000001e554",
      "custom_id": "{custom_id}",
      "latitude": {latitude}51.49442797732277,
      "longitude": {longitude}-0.1280093119192549,
      "group_inner_id": {group_inner_id}1,
      "group":{

         "id": {group_id}4121,
          "name":"Test Group Delete"{group_name}",
          "zone_id": {zone_id},
    2779
     "custom_id": "{group_custom_id}"
      }
}

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

Body:

...

Code Block
{
},
  
"timestamp":
 "
2019-10-01T18:59:11.254Z", "
message_type":
"
heartbeat
status_change",
   "message_trace_id":
"
6c53ce93
5443685e-
27b3
e8d9-
40e4
410f-
b012
bcee-
e4c3d3aea651
d2d82c2e8473",
  
"message": {
 
"position_network_id 
"occupied":
"6eb6d7d6-e486-45ff-a801-058765e2522a
"free",
   
"
heartbeat_number": 3, "status": "free", "
parking_session_iterator":
1
5,

 
},
  
"location": { "latitude": -12.2334134, "longitude": 53.743789, "level": 3 }, "grouping": { "zone_id": 632, "group_id": 10365, "group_name": "Position group name", "group_inner_id": 16, "custom_id": "Position custom ID" } }

...

message_trace_id - system message-id;

...

position_network_id - parking space network address;

...

heartbeat_number - the value increases for every following heartbeat during single occupancy state (0-11);

"previous_status_duration_min":16
}

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;

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

  • parking_session_iterator - short serial number of parking session. Iterator is 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
{
  "

...

device_id": "{

...

device_id}",
  "

...

position":

...

{
      "

...

network_

...

id": "{

...

network_id}",
  

...

    "

...

custom_id": "{

...

custom_id}",
      "

...

latitude": {

...

latitude},
      "

...

longitude": 

...

{longitude},
      "

...

group_inner_

...

id": {

...

group_inner_id},
  

...

    "

...

group":{
   

...

       "

...

id": {

...

group_id},
   

...

 

...

      "

...

name": "{

...

group_name}",
    

...

      "zone_id": {zone_id}

...


     

...

 

...

}

...


  },
  "

...

message_

...

type": "

...

heartbeat",
  

...

"

...

message_

...

trace_id": "{

...

message_

...

trace_id}",
  "parking_session_iterator": {parsed["parking_session_iterator"]},
  "

...

occupied": "{

...

"occupied" if 

...

User Registration (SDI Tag)

The message is sent to inform that a user has checked using an SDI tag.

Method: PUT/POST

Body:

Code Block
{
  "timestamp": "2019-10-01T18:59:11.254Zparsed["occupation_status"] is True else "free"}",
  "heartbeat_message_typecounter": "status_сhange",{parsed["heartbeat_message_counter"]}
}
Expand
titleExample Message
Code Block
languagejson
{
   "
message_trace
device_id": "
6c53ce93-27b3-40e4-b012-e4c3d3aea651
1E554",
   "
message
position":{
   
{
   
"
position_
network_id":
"
6eb6d7d6
00000000-
e486
0000-
45ff
0000-
a801
0000-
058765e2522a
00000001e554",
      "
sdi_tag
custom_id":
"
occupied
",
     
"previous_status_duration_min":36
 "latitude":51.49442797732277,
      "
session_iterator
longitude":-0.1280093119192549,
1
    
},
  
"
location
group_inner_id":1,
   
{
   "group":{
  
"latitude":
 
-12.2334134,
      "
longitude
id":
53.743789
4121,
     
"level":
 
3
   
}, "grouping
"name":"Test Group",
  
{
       "zone_id":
632,
2779
      }
   }
   "
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": "free"
Position
,
custom
 
ID"
  "heartbeat_message_counter": 2
}
}

...

Expand
titleDevice Info
  • device_id -

...

  • device id

...

  • hexadecimal

  • position

...

    • network_id - parking space network address;

...

    • custom_

...

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

...

    • 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

...

      • position’s group;

...

group_inner_id - a device number inside of a parking bay;

...

custom_id - a property "custom_id" of a position.

      • 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
{
  "

...

device_id": "{

...

device_id}",
  "position":{
      "

...

network_

...

id": "

...

{network_

...

id}",
  

...

    "custom_id": "{

...

custom_

...

id}",
      "

...

latitude": {latitude},
      "longitude": {longitude},
     

...

 "group_inner_id": {group_inner_id},
      "group":{
          "id": {group_id},
          "name": "{group_name}",
          "zone_id": {zone_id}
      }
  },
  "message_type": "user_registration",
  "message_trace_id": "{message_trace_id}",
  "occupied": "{"occupied" if parsed["occupation_status"] is True else "free"}",
  "auth_ble_tag": {
    "

...

tag_id": "{parsed["user_ID"]}",

...


    "

...

event_

...

time": 

...

"{iso8601(message_time)}"
  }
}

Expand
titleExample Message
Code Block
languagejson
{
   }"device_id":"1E554",
   "locationposition":{
     { "network_id":"00000000-0000-0000-0000-00000001e554",
      "latitudecustom_id": {latitude}"",
      "latitude":51.49442797732277,
      "longitude": {longitude}-0.1280093119192549,
      "group_inner_id":1,
      "levelgroup":{
{level}      },   "groupingid":4121,
   {      "zone_idname": {zone_id},"Test Group Delete After 26/02/2021",
         "groupzone_id": {group_id},2779
      }
   },
   "groupmessage_nametype": "{groupuser_name}registration",
   "message_trace_id":"7d611a3f-f2a3-4653-b70a-7e3f07e5987f",
   "groupparking_innersession_iditerator": {group_inner_id}parsed["parking_session_iterator"]},
   "occupied":"occupied",
   "auth_ble_tag":{
      "customtag_id":"1A2B3C4D",
"{custom_id}      "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.