Difference between revisions of "IoTGateway/CoAP-like"

From ESS-WIKI
Jump to: navigation, search
(CoAP-like Command)
(Advantech CoAP-like Packet Structure)
 
(27 intermediate revisions by one other user not shown)
Line 3: Line 3:
  
 
'''<big><big>CoAP-like Packet Format</big></big>'''<br />
 
'''<big><big>CoAP-like Packet Format</big></big>'''<br />
[[File:CoAP-like-PacketFormat.jpg|600x100px]]
+
[[File:CoAP-like-PacketFormat.jpg|600x100px]]<br />
 +
 
 +
'''<big>Header Size: 8 Bytes</big>'''<br />
 +
'''<big>Payload Size: 0 ~ 70 (Max) Bytes</big>''' <br /><br />
 +
 
  
 
'''<big><big>CoAP-like Header</big></big>'''<br />
 
'''<big><big>CoAP-like Header</big></big>'''<br />
Line 45: Line 49:
 
*'''Method Not Allowed(4.05):    133'''
 
*'''Method Not Allowed(4.05):    133'''
 
*'''Not Implemented(5.01):    161'''
 
*'''Not Implemented(5.01):    161'''
 
+
<br />
 
 
  
 
=IPSO for CoAP-like=
 
=IPSO for CoAP-like=
Line 107: Line 110:
 
| Compass Direction || 5705
 
| Compass Direction || 5705
 
|}
 
|}
 +
<br />
 +
<br />
  
 
=CoAP-like Command=
 
=CoAP-like Command=
Line 112: Line 117:
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! Group !! Description
+
! URI Resources!! Description
 
|-
 
|-
 
| /dev/info|| Information of Sensor Hub
 
| /dev/info|| Information of Sensor Hub
Line 127: Line 132:
  
  
 
+
{| class="wikitable"
 
 
&nbsp;
 
 
 
 
 
{| style="border-spacing:0;width:17cm;"
 
|-
 
| style="background-color:#dddddd;border:1pt solid #000000;padding:0.049cm;" | Key
 
| style="background-color:#dddddd;border-top:1pt solid #000000;border-bottom:1pt solid #000000;border-left:none;border-right:1pt solid #000000;padding-top:0.049cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.049cm;" | Value
 
| style="background-color:#dddddd;border-top:1pt solid #000000;border-bottom:1pt solid #000000;border-left:none;border-right:1pt solid #000000;padding-top:0.049cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.049cm;" | Description
 
| style="background-color:#dddddd;border-top:1pt solid #000000;border-bottom:1pt solid #000000;border-left:none;border-right:1pt solid #000000;padding-top:0.049cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.049cm;" | Group
 
 
|-
 
|-
| style="border-top:none;border-bottom:1pt solid #000000;border-left:1pt solid #000000;border-right:1pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0.049cm;padding-right:0.049cm;" | action=
+
! Commands (Key) !! Value !! Description !! For URI Resources !! Example
| style="border-top:none;border-bottom:1pt solid #000000;border-left:none;border-right:1pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.049cm;" | list
 
| style="border-top:none;border-bottom:1pt solid #000000;border-left:none;border-right:1pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.049cm;" | List detail information
 
| style="border-top:none;border-bottom:1pt solid #000000;border-left:none;border-right:1pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.049cm;" | /sen/info, /dev/info, /net/info
 
 
|-
 
|-
| style="border-top:none;border-bottom:1pt solid #000000;border-left:1pt solid #000000;border-right:1pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0.049cm;padding-right:0.049cm;" | action=
+
| action || list || List detail information || /sen/info, /dev/info, /net/info || GET '''/sen/info?action=list'''
| style="border-top:none;border-bottom:1pt solid #000000;border-left:none;border-right:1pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.049cm;" | observe
 
| style="border-top:none;border-bottom:1pt solid #000000;border-left:none;border-right:1pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.049cm;" | Observe status
 
| style="border-top:none;border-bottom:1pt solid #000000;border-left:none;border-right:1pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.049cm;" | /sen/status, /net/status
 
 
|-
 
|-
| style="border-top:none;border-bottom:1pt solid #000000;border-left:1pt solid #000000;border-right:1pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0.049cm;padding-right:0.049cm;" | action=
+
| action || observe || Observe status || /sen/status, /net/status || GET '''/sen/status?action=observe&id=all'''
| style="border-top:none;border-bottom:1pt solid #000000;border-left:none;border-right:1pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.049cm;" | cancel
 
| style="border-top:none;border-bottom:1pt solid #000000;border-left:none;border-right:1pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.049cm;" | Cancel observe
 
| style="border-top:none;border-bottom:1pt solid #000000;border-left:none;border-right:1pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.049cm;" | /sen/status, /net/status
 
 
|-
 
|-
| style="border-top:none;border-bottom:1pt solid #000000;border-left:1pt solid #000000;border-right:1pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0.049cm;padding-right:0.049cm;" | field=
+
| action || cancel || Cancel observe || /sen/status, /net/status || GET '''/sen/status?action=cancel&id=all'''
| style="border-top:none;border-bottom:1pt solid #000000;border-left:none;border-right:1pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.049cm;" | id
 
| style="border-top:none;border-bottom:1pt solid #000000;border-left:none;border-right:1pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.049cm;" | List all sensor id
 
| style="border-top:none;border-bottom:1pt solid #000000;border-left:none;border-right:1pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.049cm;" | /sen/info
 
 
|-
 
|-
| style="border-top:none;border-bottom:1pt solid #000000;border-left:1pt solid #000000;border-right:1pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0.049cm;padding-right:0.049cm;" | field=
+
| field || id || List all sensor id || /sen/info || GET '''/sen/info?action=list&field=id'''
| style="border-top:none;border-bottom:1pt solid #000000;border-left:none;border-right:1pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.049cm;" | All
 
| style="border-top:none;border-bottom:1pt solid #000000;border-left:none;border-right:1pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.049cm;" | Get all sensor’s data
 
| style="border-top:none;border-bottom:1pt solid #000000;border-left:none;border-right:1pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.049cm;" | /sen/info, /sen/status
 
 
|-
 
|-
| style="border-top:none;border-bottom:1pt solid #000000;border-left:1pt solid #000000;border-right:1pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0.049cm;padding-right:0.049cm;" | field=
+
| field || health || Network health status || /net/status || GET '''/net/status?field=health'''
| style="border-top:none;border-bottom:1pt solid #000000;border-left:none;border-right:1pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.049cm;" | 0,1,2…
 
| style="border-top:none;border-bottom:1pt solid #000000;border-left:none;border-right:1pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.049cm;" | Get one of sensor data
 
| style="border-top:none;border-bottom:1pt solid #000000;border-left:none;border-right:1pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.049cm;" | /sen/info, /sen/status
 
 
|-
 
|-
| style="border-top:none;border-bottom:1pt solid #000000;border-left:1pt solid #000000;border-right:1pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0.049cm;padding-right:0.049cm;" | field=
+
| id || all || Get all sensor’s data || /sen/info, /sen/status || GET '''/sen/status?action=observe&id=all'''
| style="border-top:none;border-bottom:1pt solid #000000;border-left:none;border-right:1pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.049cm;" | health
 
| style="border-top:none;border-bottom:1pt solid #000000;border-left:none;border-right:1pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.049cm;" | Network health status  
 
| style="border-top:none;border-bottom:1pt solid #000000;border-left:none;border-right:1pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.049cm;" | /net/status
 
 
|-
 
|-
 +
| id || 0,1,2,3... || Get one of sensor data || /sen/info, /sen/status || GET '''/sen/status?action=observe&id=0,1'''
 
|}
 
|}
 +
<br /><br />
 +
 +
=CoAP-like Protocols=
 +
==Get SenHub Info==
 +
===Get SenHub Device info===
 +
'''Request'''
 +
GET /dev/info?action=list
 +
Direction: GW -> SenHub
 +
TP: GET
 +
Type:0
 +
Code:1
 +
PAYLOAD: /dev/info?action=list
 +
 +
'''Response'''
 +
Direction: SenHub-> GW
 +
TP  : Content
 +
Type:2
 +
Code:69
 +
PAYLOAD: </dev>;n="Room1", mdl="WISE1020", sw="1.0.01", reset=0
 +
 +
===Get SenHub Net info===
 +
'''Request'''
 +
GET /net/info?action=list
 +
Direction: GW -> SenHub
 +
TP: GET
 +
Type:0
 +
Code:1
 +
PAYLOAD: /net/info?action=list
 +
 +
'''Response'''
 +
Direction: SenHub -> GW
 +
TP  : Content
 +
Type:2
 +
Code:69
 +
PAYLOAD: </net>;n="dust", sw="1.0.01"
 +
 +
==Get Sensor Info==
 +
===Get Sensor id List===
 +
'''Request'''
 +
GET /sen/info?action=list&field=id
 +
Direction: GW -> SenHub
 +
TP: GET
 +
Type:0
 +
Code:1
 +
PAYLOAD: /sen/info?action=list&field=id
 +
 +
'''Response'''
 +
Direction: SenHub -> GW
 +
TP  : Content
 +
Type:2
 +
Code:69
 +
PAYLOAD: </sen>;0,1,2,3,4,5
 +
 +
===Get Detail Info of Sensor===
 +
'''Request'''
 +
GET /sen/info?action=list&id=0
 +
Direction: GW -> SenHub
 +
TP: GET
 +
Type:0
 +
Code:1
 +
PAYLOAD: /sen/info?action=list&id=0
 +
 +
'''Response'''
 +
Direction: SenHub -> GW
 +
TP: Content
 +
Type:2
 +
Code:69
 +
PAYLOAD: </0>;n="Room_Tempature", mdl="mp6050", sid="3303"
 +
 +
===Get Sensor Properties===
 +
'''Request''' 
 +
GET /sen/info?query=list&sid=3303
 +
Direction: GW -> SenHub
 +
TP: GET
 +
Type:0
 +
Code:1
 +
PAYLOAD: /sen/info?query=list&sid=3303
 +
 +
'''Response'''
 +
Direction: SenHub -> GW
 +
TP: Content
 +
Type:2
 +
Code:69
 +
PAYLOAD: </3303>;asm="r", rt="ucum.Cel", type="d", st="ipso", u="Cel"
 +
 +
===Get Sensor Model===
 +
'''Request''' 
 +
GET /sen/info?query=list&id=0&mdl=mp6050
 +
Direction: GW -> SenHub
 +
TP: GET
 +
Type:0
 +
Code:1
 +
PAYLOAD: /sen/info?query=list&id=0
 +
 +
'''Response'''
 +
Direction: SenHub -> GW
 +
TP: Content
 +
Type:2
 +
Code:69
 +
PAYLOAD: </0>;min="-20", max="100"
 +
 +
==Get Sensor Value==
 +
===Observe all sensors' value===
 +
'''Request'''
 +
GET /sen/status?action=observe&id=all
 +
Direction: GW -> SenHub
 +
TP: GET
 +
Type:0
 +
Code:1
 +
PAYLOAD: /sen/status?action=observe&id=all
 +
 +
'''Response'''
 +
Direction: SenHub -> GW
 +
TP: Content
 +
Type:2
 +
Code:69
 +
PAYLOAD: 0 36.2,1 26.5,2 9000,3 100,4 0, 5 10 20 30
 +
                      .
 +
                      .
 +
                      .
 +
          0 36,1 26.5,2 9100,3 380,4 1, 5 10 20 20
 +
 +
===Cancel all sensors' value===
 +
'''Request'''
 +
GET /sen/status?action=cancel&id=all
 +
Direction: GW -> SenHub
 +
TP: GET
 +
Type:0
 +
Code:1
 +
PAYLOAD: /sen/status?action=cancel&id=all
 +
 +
'''Response'''
 +
Direction: SenHub-> GW
 +
TP: Change
 +
Type:2
 +
Code:68
 +
PAYLOAD: cancel /sen/status?id=all
 +
 +
===Observe sensors' value===
 +
'''Request'''
 +
GET /sen/status?action=observe&id=0,1
 +
Direction: GW -> SenHub
 +
TP: GET
 +
Type:0
 +
Code:1
 +
PAYLOAD: /sen/status?action=observe&id=0,1
 +
 +
'''Response'''
 +
Direction: SenHub -> GW
 +
TP: Content
 +
Type:2
 +
Code:69
 +
PAYLOAD: 0 36.2, 1 9000
 +
                .
 +
                .
 +
                .     
 +
          0 35, 1 9236
 +
 +
===Cancel sensors' value===
 +
'''Request'''
 +
GET /sen/status?action=cancel&id=0,1
 +
Direction: GW -> SenHub
 +
TP: GET
 +
Type:0
 +
Code:1
 +
PAYLOAD: /sen/status?action=cancel&id=0,1
 +
 +
'''Response'''
 +
Direction: SenHub -> GW
 +
TP: Change
 +
Type:2
 +
Code:68
 +
PAYLOAD: cancel /sen/status?id=0,1
 +
 +
==Set SenHub Value==
 +
===Set Device Name===
 +
''Request'''
 +
PUT /dev/info?n="Demo 1"
 +
Direction: GW -> SenHub
 +
TP: PUT
 +
Type:0
 +
Code:3
 +
PAYLOAD: /dev/info?n="Demo 1"
 +
 +
'''Response'''
 +
Direction: SenHub -> GW
 +
TP:Change
 +
Type:2
 +
Code:68
 +
PAYLOAD: n="Demo1"
 +
 +
===Reset SenHub===
 +
'''Request'''
 +
PUT /dev/info?reset=1
 +
Direction: GW -> SenHub
 +
TP: PUT
 +
Type:0
 +
Code:3
 +
PAYLOAD: /dev/info?reset=1
 +
 +
'''Response'''
 +
Direction: SenHub -> GW
 +
TP:Change
 +
Type:2
 +
Code:68
 +
PAYLOAD: reset=1
 +
 +
==Set Sensor Value==
 +
===Set Sensor value by id===
 +
'''Request'''
 +
PUT /sen/status?id=5&bv=1     
 +
Direction: GW -> SenHub
 +
TP: PUT
 +
Type:0
 +
Code:3
 +
PAYLOAD: /sen/status?id=5&bv=1
 +
 +
'''Response'''
 +
Direction: SenHub -> GW
 +
TP:Change
 +
Type:2
 +
Code:68
 +
PAYLOAD: id=5, bv=1

Latest revision as of 05:06, 11 March 2016

Advantech CoAP-like Packet Structure


CoAP-like Packet Format
CoAP-like-PacketFormat.jpg

Header Size: 8 Bytes
Payload Size: 0 ~ 70 (Max) Bytes


CoAP-like Header
CoAP-like-Header.jpg

Name Size ( bits )
Ver 2
Type (T) 2
TKL: Token Length 4
Code 8
Message ID 16
Length 32

Type (T) : 2-bit unsigned integer Transaction Type field. Indicates if this message is

  • Confirmable (0): Some messages require an acknowledgment
  • Non-Confirmable (1): Some other messages do not require an acknowledgment
  • Acknowledgment (2): An Acknowledgment message acknowledges that a specific Confirmable message (identified by its Transaction ID) arrived
  • Reset (3): A Reset message indicates that a specific Confirmable message was received, but some context is missing to properly process it. This condition is usually caused when
the receiving node has rebooted and has forgotten some state that would be required to interpret the message

Code : : 8-bit unsigned integer
Request

  • GET(0.01): 1
  • PUT(0.03): 3

Response

  • Change(2.04): 68
  • Content(2.05): 69
  • Bad Request(4.00): 128
  • Unauthorized(4.01): 129
  • Not Found(4.04): 132
  • Method Not Allowed(4.05): 133
  • Not Implemented(5.01): 161


IPSO for CoAP-like

IPSO RESTful API Rule: /{Object ID}/{Object Instance}/{Resource ID}/


IPSO Smart Object ID

Sensor Object ID
Temperature 3303
Humidity 3304
Magnetic 3314
Accelerometer 3313
Light Sensor 3301
Digital Output 3201
Digital Input 3200
CO2 9001
CO 9002
Ultrasonic 9200


IPSO Smart Resource ID

Resource Object ID
DI Status 5500
DO Status 5550
Min Range Value 5603
Max Range Value 5604
Sensor Value 5700
Sensor Units 5701
X Value 5702
Y Value 5703
Z Value 5704
Compass Direction 5705



CoAP-like Command

URI Resources Description
/dev/info Information of Sensor Hub
/net/info Information of Net Communication
/net/status Status of Network
/sen/info Information of Sensor
/sen/status Status of Sensors


Commands (Key) Value Description For URI Resources Example
action list List detail information /sen/info, /dev/info, /net/info GET /sen/info?action=list
action observe Observe status /sen/status, /net/status GET /sen/status?action=observe&id=all
action cancel Cancel observe /sen/status, /net/status GET /sen/status?action=cancel&id=all
field id List all sensor id /sen/info GET /sen/info?action=list&field=id
field health Network health status /net/status GET /net/status?field=health
id all Get all sensor’s data /sen/info, /sen/status GET /sen/status?action=observe&id=all
id 0,1,2,3... Get one of sensor data /sen/info, /sen/status GET /sen/status?action=observe&id=0,1



CoAP-like Protocols

Get SenHub Info

Get SenHub Device info

Request
GET /dev/info?action=list
Direction: GW -> SenHub
TP: GET
Type:0
Code:1				
PAYLOAD: /dev/info?action=list
Response
Direction: SenHub-> GW
TP   : Content
Type:2
Code:69				
PAYLOAD: </dev>;n="Room1", mdl="WISE1020", sw="1.0.01", reset=0

Get SenHub Net info

Request
GET /net/info?action=list
Direction: GW -> SenHub
TP: GET
Type:0
Code:1				
PAYLOAD: /net/info?action=list
Response
Direction: SenHub -> GW
TP   : Content
Type:2
Code:69				
PAYLOAD: </net>;n="dust", sw="1.0.01"

Get Sensor Info

Get Sensor id List

Request 
GET /sen/info?action=list&field=id
Direction: GW -> SenHub
TP: GET
Type:0
Code:1				
PAYLOAD: /sen/info?action=list&field=id
Response 
Direction: SenHub -> GW
TP   : Content
Type:2
Code:69				
PAYLOAD: </sen>;0,1,2,3,4,5

Get Detail Info of Sensor

Request 
GET /sen/info?action=list&id=0
Direction: GW -> SenHub
TP: GET
Type:0
Code:1				
PAYLOAD: /sen/info?action=list&id=0
Response
Direction: SenHub -> GW		
TP: Content 
Type:2
Code:69				
PAYLOAD: </0>;n="Room_Tempature", mdl="mp6050", sid="3303"

Get Sensor Properties

Request  
GET /sen/info?query=list&sid=3303
Direction: GW -> SenHub
TP: GET
Type:0
Code:1				
PAYLOAD: /sen/info?query=list&sid=3303
Response 
Direction: SenHub -> GW		
TP: Content 
Type:2
Code:69				
PAYLOAD: </3303>;asm="r", rt="ucum.Cel", type="d", st="ipso", u="Cel"

Get Sensor Model

Request  
GET /sen/info?query=list&id=0&mdl=mp6050
Direction: GW -> SenHub
TP: GET
Type:0
Code:1				
PAYLOAD: /sen/info?query=list&id=0
Response 
Direction: SenHub -> GW		
TP: Content 
Type:2
Code:69				
PAYLOAD: </0>;min="-20", max="100"

Get Sensor Value

Observe all sensors' value

Request 
GET /sen/status?action=observe&id=all
Direction: GW -> SenHub
TP: GET
Type:0
Code:1				
PAYLOAD: /sen/status?action=observe&id=all
Response
Direction: SenHub -> GW
TP: Content
Type:2
Code:69					
PAYLOAD: 0 36.2,1 26.5,2 9000,3 100,4 0, 5 10 20 30
                      .
                      .
                      .
         0 36,1 26.5,2 9100,3 380,4 1, 5 10 20 20

Cancel all sensors' value

Request 
GET /sen/status?action=cancel&id=all
Direction: GW -> SenHub
TP: GET
Type:0
Code:1					
PAYLOAD: /sen/status?action=cancel&id=all
Response 
Direction: SenHub-> GW
TP: Change
Type:2
Code:68					
PAYLOAD: cancel /sen/status?id=all

Observe sensors' value

Request
GET /sen/status?action=observe&id=0,1
Direction: GW -> SenHub
TP: GET
Type:0
Code:1				
PAYLOAD: /sen/status?action=observe&id=0,1
Response 
Direction: SenHub -> GW
TP: Content
Type:2
Code:69					
PAYLOAD: 0 36.2, 1 9000
               .
               .
               .      
         0 35, 1 9236 

Cancel sensors' value

Request 
GET /sen/status?action=cancel&id=0,1
Direction: GW -> SenHub
TP: GET
Type:0
Code:1					
PAYLOAD: /sen/status?action=cancel&id=0,1
Response 
Direction: SenHub -> GW
TP: Change
Type:2
Code:68					
PAYLOAD: cancel /sen/status?id=0,1

Set SenHub Value

Set Device Name

Request'
PUT /dev/info?n="Demo 1"
Direction: GW -> SenHub
TP: PUT
Type:0
Code:3					
PAYLOAD: /dev/info?n="Demo 1"

Response
Direction: SenHub -> GW
TP:Change
Type:2
Code:68				
PAYLOAD: n="Demo1"

Reset SenHub

Request 
PUT /dev/info?reset=1
Direction: GW -> SenHub
TP: PUT
Type:0
Code:3					
PAYLOAD: /dev/info?reset=1
Response
Direction: SenHub -> GW
TP:Change
Type:2
Code:68				
PAYLOAD: reset=1

Set Sensor Value

Set Sensor value by id

Request 
PUT /sen/status?id=5&bv=1      
Direction: GW -> SenHub
TP: PUT
Type:0
Code:3					
PAYLOAD: /sen/status?id=5&bv=1
Response 
Direction: SenHub -> GW
TP:Change
Type:2
Code:68				
PAYLOAD: id=5, bv=1