1. THE SMART DEVICE
SPECIFICATION
FOR REMOTE LABS
Christophe Salzmann, Sten Govaerts,
Wissam Halimi, & Denis Gillet
Anjo Anjewierden, Lars Bollen,Augustín Caminero, Manuel Castro, German Carro, Gabriel Díaz, Danilo Garbi Zutin,
Miguel Latorre, Irene Lequerica Zorrozua, Pablo Orduna,Antonio Robles, Elio San Crístobal, and Simon Schwantzer
2. AGENDA
• What are Smart Devices?
• What do we want to achieve?
• The specification
• An example
• Implementation
• Conclusion
7. SMART DEVICES?
1. communication
2. sensing & actuating
3. reasoning & learning
4. identity & kind
5. memory & status tracking
Smart Devices are connected to the internet with
some or all of these capabilities:
Thompson, C.W., "Smart devices and soft controllers,"
Internet Computing, IEEE , 2005.
24. THE SPECIFICATION
• services, e.g. to control actuators & sensors
• service description and metadata
…consists of:
and:
• internal functionality best practices & guidelines
• easily extensible with new services
28. METADATA CHARACTERISTICS
• lab info & lab owner
• concurrency & authorization
• provided services & API info
• sensor & actuator metadata is a service
The metadata describes:
…and:
35. AN EXAMPLE
client smart device
Hey! What can you do?
http://serverIP/metadata
{ name…,“services”: […], …}
Here is what I do!
…
…
36. AN EXAMPLE
client smart device
Hey! What can you do?
http://serverIP/metadata
{ name…,“services”: […], …}
Here is what I do!
services=[…]
…
…
37. AN EXAMPLE
client smart device
Hey! What can you do?
http://serverIP/metadata
{ name…,“services”: […], …}
Here is what I do!
Which sensors do you have?
{“method”:“getSensorMetadata”}
services=[…]
…
…
38. AN EXAMPLE
client smart device
Hey! What can you do?
http://serverIP/metadata
{ name…,“services”: […], …}
Here is what I do!
Which sensors do you have?
{“method”:“getSensorMetadata”}
services=[…]
{“method”:“getSensorMetadata”,“sensors": [
{ "sensorId":“disc pos”, "values": [
{…"rangeMinimum": 0, "rangeMaximum": 10,…} ],…}
These are my sensors:
…
…
39. AN EXAMPLE
client smart device
Hey! What can you do?
http://serverIP/metadata
{ name…,“services”: […], …}
Here is what I do!
Which sensors do you have?
{“method”:“getSensorMetadata”}
services=[…]
{“method”:“getSensorMetadata”,“sensors": [
{ "sensorId":“disc pos”, "values": [
{…"rangeMinimum": 0, "rangeMaximum": 10,…} ],…}
These are my sensors:
sensors=[{
id:“disc pos”,
min:0,
max:10}];
…
…
42. AN EXAMPLE CONTINUED
client
Which actuators do you have?
{“method”:“getActuatorMetadata”}
{“method”:“getActuatorMetadata”,“actuators": [
{ ”actuatorId":“motor”, …"values": [
{…"rangeMinimum": -5, "rangeMaximum": 5,…} ]}
These are my actuators:
…
…
smart device
43. AN EXAMPLE CONTINUED
client
Which actuators do you have?
{“method”:“getActuatorMetadata”}
{“method”:“getActuatorMetadata”,“actuators": [
{ ”actuatorId":“motor”, …"values": [
{…"rangeMinimum": -5, "rangeMaximum": 5,…} ]}
These are my actuators:
actuators=[{
id:“motor”,
min:-5,
max:5}];
…
…
smart device
44. AN EXAMPLE CONTINUED
client
Which actuators do you have?
{“method”:“getActuatorMetadata”}
{“method”:“getActuatorMetadata”,“actuators": [
{ ”actuatorId":“motor”, …"values": [
{…"rangeMinimum": -5, "rangeMaximum": 5,…} ]}
These are my actuators:
actuators=[{
id:“motor”,
min:-5,
max:5}];
Yay! I can
make a UI!
…
…
smart device
45. AN EXAMPLE CONTINUED
client
Which actuators do you have?
{“method”:“getActuatorMetadata”}
{“method”:“getActuatorMetadata”,“actuators": [
{ ”actuatorId":“motor”, …"values": [
{…"rangeMinimum": -5, "rangeMaximum": 5,…} ]}
These are my actuators:
actuators=[{
id:“motor”,
min:-5,
max:5}];
Yay! I can
make a UI!
motor:
disc pos:
…
…
smart device
46. AN EXAMPLE CONTINUED
client
Which actuators do you have?
{“method”:“getActuatorMetadata”}
{“method”:“getActuatorMetadata”,“actuators": [
{ ”actuatorId":“motor”, …"values": [
{…"rangeMinimum": -5, "rangeMaximum": 5,…} ]}
These are my actuators:
actuators=[{
id:“motor”,
min:-5,
max:5}];
Yay! I can
make a UI!
motor:
disc pos:
…
…
Give me the current disc pos…
{“method”:“getSensorData”,“sensorId”:“disc pos”}
smart device
48. AN EXAMPLE CONTINUED
client
…
…
Here is the current position:
{“method”:“getSensorData”,“sensorId”:“disc pos”,
“data”:[6.2],“lastMeasured”:[“18:28”]…}
smart device
49. AN EXAMPLE CONTINUED
client
…
…
Here is the current position:
{“method”:“getSensorData”,“sensorId”:“disc pos”,
“data”:[6.2],“lastMeasured”:[“18:28”]…}
motor:
disc pos:
6.2
smart device
50. AN EXAMPLE CONTINUED
client
…
…
Here is the current position:
{“method”:“getSensorData”,“sensorId”:“disc pos”,
“data”:[6.2],“lastMeasured”:[“18:28”]…}
Here is the current position:
{“method”:“getSensorData”,“sensorId”:“disc pos”,
“data”:[7.1],“lastMeasured”:[“18:30”]…}
motor:
disc pos:
6.2
smart device
51. AN EXAMPLE CONTINUED
client
…
…
Here is the current position:
{“method”:“getSensorData”,“sensorId”:“disc pos”,
“data”:[6.2],“lastMeasured”:[“18:28”]…}
Here is the current position:
{“method”:“getSensorData”,“sensorId”:“disc pos”,
“data”:[7.1],“lastMeasured”:[“18:30”]…}
motor:
disc pos:
6.2
motor:
disc pos:
7.1
smart device
52. AN EXAMPLE CONTINUED
client
…
…
Here is the current position:
{“method”:“getSensorData”,“sensorId”:“disc pos”,
“data”:[6.2],“lastMeasured”:[“18:28”]…}
Here is the current position:
{“method”:“getSensorData”,“sensorId”:“disc pos”,
“data”:[7.1],“lastMeasured”:[“18:30”]…}
motor:
disc pos:
6.2
motor:
disc pos:
7.1
…
smart device
53. AN EXAMPLE CONTINUED
client
…
…
Set the motor to 3
{“authToken”:”42FE36”, method”:“sendActuatorData”,
“actuatorId”:“motor”,…“data”:[3], …}
Here is the current position:
{“method”:“getSensorData”,“sensorId”:“disc pos”,
“data”:[6.2],“lastMeasured”:[“18:28”]…}
Here is the current position:
{“method”:“getSensorData”,“sensorId”:“disc pos”,
“data”:[7.1],“lastMeasured”:[“18:30”]…}
motor:
disc pos:
6.2
motor:
disc pos:
7.1
…
smart device
54. AN EXAMPLE CONTINUED
client
…
…
Set the motor to 3
{“authToken”:”42FE36”, method”:“sendActuatorData”,
“actuatorId”:“motor”,…“data”:[3], …}
Here is the current position:
{“method”:“getSensorData”,“sensorId”:“disc pos”,
“data”:[6.2],“lastMeasured”:[“18:28”]…}
Here is the current position:
{“method”:“getSensorData”,“sensorId”:“disc pos”,
“data”:[7.1],“lastMeasured”:[“18:30”]…}
motor:
disc pos:
6.2
motor:
disc pos:
7.1
…
smart device
55. AN EXAMPLE CONTINUED
client
…
…
Set the motor to 3
{“authToken”:”42FE36”, method”:“sendActuatorData”,
“actuatorId”:“motor”,…“data”:[3], …}
Here is the current position:
{“method”:“getSensorData”,“sensorId”:“disc pos”,
“data”:[6.2],“lastMeasured”:[“18:28”]…}
Here is the current position:
{“method”:“getSensorData”,“sensorId”:“disc pos”,
“data”:[7.1],“lastMeasured”:[“18:30”]…}
motor:
disc pos:
6.2
motor:
disc pos:
7.1
…
authenticate(42FE36)
smart device
56. AN EXAMPLE CONTINUED
client
…
…
Set the motor to 3
{“authToken”:”42FE36”, method”:“sendActuatorData”,
“actuatorId”:“motor”,…“data”:[3], …}
Here is the current position:
{“method”:“getSensorData”,“sensorId”:“disc pos”,
“data”:[6.2],“lastMeasured”:[“18:28”]…}
Here is the current position:
{“method”:“getSensorData”,“sensorId”:“disc pos”,
“data”:[7.1],“lastMeasured”:[“18:30”]…}
motor:
disc pos:
6.2
motor:
disc pos:
7.1
…
authenticate(42FE36)
YES!
smart device
57. AN EXAMPLE CONTINUED
client
…
…
Set the motor to 3
{“authToken”:”42FE36”, method”:“sendActuatorData”,
“actuatorId”:“motor”,…“data”:[3], …}
Here is the current position:
{“method”:“getSensorData”,“sensorId”:“disc pos”,
“data”:[6.2],“lastMeasured”:[“18:28”]…}
Here is the current position:
{“method”:“getSensorData”,“sensorId”:“disc pos”,
“data”:[7.1],“lastMeasured”:[“18:30”]…}
motor:
disc pos:
6.2
motor:
disc pos:
7.1
…
authenticate(42FE36)
set motor to 3
YES!
smart device
58. BUT…IS IT A SMART DEVICE?
1. communication
2. sensing & actuating
3. reasoning & learning
4. identity & kind
5. memory & status tracking
Smart Devices are connected to the internet with
some or all of these capabilities:
59. BUT…IS IT A SMART DEVICE?
1. communication
2. sensing & actuating
3. reasoning & learning
4. identity & kind
5. memory & status tracking
Smart Devices are connected to the internet with
some or all of these capabilities:
✔
60. BUT…IS IT A SMART DEVICE?
1. communication
2. sensing & actuating
3. reasoning & learning
4. identity & kind
5. memory & status tracking
Smart Devices are connected to the internet with
some or all of these capabilities:
✔
✔
61. BUT…IS IT A SMART DEVICE?
1. communication
2. sensing & actuating
3. reasoning & learning
4. identity & kind
5. memory & status tracking
Smart Devices are connected to the internet with
some or all of these capabilities:
✔
✘
✔
62. BUT…IS IT A SMART DEVICE?
1. communication
2. sensing & actuating
3. reasoning & learning
4. identity & kind
5. memory & status tracking
Smart Devices are connected to the internet with
some or all of these capabilities:
✔
✘
✔
✔
63. BUT…IS IT A SMART DEVICE?
1. communication
2. sensing & actuating
3. reasoning & learning
4. identity & kind
5. memory & status tracking
Smart Devices are connected to the internet with
some or all of these capabilities:
✔
✘
✔
✔
✔✘
72. …WHAT IFYOU DO NOT WANT
TO REIMPLEMENTYOUR LAB?
client
legacy lab
server
73. …WHAT IFYOU DO NOT WANT
TO REIMPLEMENTYOUR LAB?
then go with Gateway4Labs!
https://github.com/gateway4labs
client
legacy lab
server
74. …WHAT IFYOU DO NOT WANT
TO REIMPLEMENTYOUR LAB?
then go with Gateway4Labs!
https://github.com/gateway4labs
client
legacy lab
server
smart
gateway
75. …WHAT IFYOU DO NOT WANT
TO REIMPLEMENTYOUR LAB?
then go with Gateway4Labs!
https://github.com/gateway4labs
client
legacy lab
server
smart
gateway
76. …WHAT IFYOU DO NOT WANT
TO REIMPLEMENTYOUR LAB?
then go with Gateway4Labs!
https://github.com/gateway4labs
client
legacy lab
server
smart
gateway
acts as a smart device!
77. CONCLUSION
• the Smart Device specification decouples client-
server through well-defined services & metadata,
creating:
• interoperability between clients and other Smart Devices
• a machine readable specification that allows
the generation of simple client UIs
• platform agnostic & implementations
are available
78. STANDARDISATION
• the specification is taken up by the IEEE working
group P1876 as a candidate for the final spec.
http://ieee-sa.centraldesktop.com/1876public/
79. 2
slides will appear on http://www.slideshare.net/stengovaerts
slides will appear on http://www.slideshare.net/stengovaerts 22
contact: sten.govaerts@gmail.com