SlideShare una empresa de Scribd logo
1 de 27
Descargar para leer sin conexión
IoT	
  Toolkit	
  and	
  Smart	
  Object	
  API	
  
Tutorial	
  Introduc7on	
  
Open	
  Source	
  Internet	
  of	
  Things	
  
IoT	
  2.0	
  –	
  Interoperability	
  
M2M	
  
CoAP	
   M2M	
  
MQ	
   SOA	
  
M2M	
  
HTTP	
  
Smart	
  Object	
  API	
  
IoT	
  Toolkit	
  
Discovery	
  
Applica7ons	
  
Thing	
  
Models	
  
Resource	
  
Models	
  
•  Object	
  Model	
  
•  REST	
  +	
  Event	
  Model	
  
•  M2M	
  Abstrac<ons	
  
IoT	
  Toolkit	
  
Connected	
  Things,	
  Sensors,	
  Actuators,	
  Data	
  Sources	
  
Seman5c	
  
Repository	
  
•  Easy	
  to	
  deploy	
  new	
  
things	
  and	
  
applica7ons	
  using	
  data	
  
models	
  
•  Write	
  once	
  run	
  
anywhere,	
  any	
  app	
  to	
  
any	
  thing	
  via	
  any	
  M2M	
  
•  Network	
  effect	
  
enabled	
  
•  Allows	
  for	
  appropriate	
  
M2M	
  choice	
  
Interoperability	
  Architecture	
  
SO	
  
SO	
  
SO	
  
Gateway	
   Server	
  
Cloud	
  
Endpoints	
  
•  Sensors	
  
•  Devices	
  
Applica7on	
  	
  
Components	
  	
  
And	
  	
  
Resources	
  
Databases	
  
Instances	
  
Classes	
  
SRT	
  
• Discovery	
  
• Persistence	
  
• Replica7on	
  
• Resource	
  Access	
  
• Data	
  Models	
  	
  
• Sensor	
  Models	
  
• Machine	
  Models	
  
• Templates	
  
IoT	
  Toolkit	
  
•  IoT	
  Toolkit	
  is	
  a	
  reference	
  implementa7on	
  of	
  
the	
  Smart	
  Object	
  API	
  and	
  related	
  tools	
  
•  REST	
  API	
  with	
  real-­‐7me	
  event	
  model	
  for	
  the	
  
Internet	
  of	
  Things	
  
•  Lightweight	
  server	
  that	
  can	
  run	
  on	
  small	
  
computers	
  e.g.	
  Raspberry	
  Pi	
  
•  Work	
  in	
  progress	
  prototype	
  (limited	
  excep7on	
  
handling	
  and	
  simple	
  interfaces)	
  
Smart	
  Object	
  API	
  
•  Object	
  Model	
  –	
  Web	
  Object	
  Encapsula7on	
  	
  
•  Data	
  Models	
  –	
  Linked	
  Data	
  descrip7ons	
  
•  Event	
  Model	
  –	
  Asynchronous	
  M2M	
  and	
  
applica7on	
  soUware	
  event	
  handlers	
  
•  REST	
  API	
  using	
  JSON,	
  XML,	
  RDF	
  
representa7ons	
  
•  Web	
  standards	
  and	
  best	
  prac7ces	
  with	
  new	
  
extensions	
  
Object	
  Model	
  
Web	
  Object	
  Encapsula7on	
  	
  
Smart	
  Object	
  
Web	
  protocol	
  interfaces,	
  also	
  M2M	
  e.g.	
  MQTT	
  
Event	
  Model	
  
Links	
  data	
  with	
  ac7ons	
  
Pub-­‐Sub	
  and	
  event	
  handlers	
  
Encapsulates	
  local	
  soUware	
  	
  
components	
  and	
  handlers	
  
Self-­‐describing	
  data	
  model	
  
For	
  Resource	
  Discovery	
  	
  
and	
  Linkage	
  
Sensor	
  or	
  other	
  data	
  	
  
JSON,	
  XML,	
  data	
  feeds	
  
Smart	
  Object	
  Structure	
  –	
  Object	
  Model	
  
Smart	
  Object	
  
Descrip7on	
  
ObservableProperty	
  
ObservableProperty…	
  
Agent	
  
Publisher	
  
Subscriber	
  
Handler	
  
PropertyOfInterest	
  
Descrip7on	
  
Observers	
  
Handler	
  Instance	
  
Daemon	
  
Default	
  Property	
  
REST	
  API	
  
•  Python	
  API	
  –	
  Local	
  SoUware,	
  Agents	
  and	
  Handlers	
  
–  Resources	
  (objects)	
  are	
  hierarchical	
  proper7es	
  of	
  other	
  
resources	
  
–  self.indoorTempValue = sensors.weather.indoor_temp.get()!
•  Web	
  API	
  –	
  HYp	
  REST	
  Client	
  access	
  
–  Resources	
  are	
  organized	
  in	
  hierarchical	
  path	
  
–  GET http:my_server:8000/sensors/weather/indoor_temp!
•  Default	
  Property	
  
–  Returns	
  a	
  resource	
  associated	
  with	
  a	
  higher	
  level	
  resource	
  
–  GET	
  of	
  Smart	
  Object	
  returns	
  it’s	
  Descrip7on;	
  GET	
  of	
  
Observable	
  Property	
  returns	
  it’s	
  Observa7on	
  Value	
  
API	
  –	
  Descrip7on	
  (Data	
  Model)	
  
•  Contains	
  graphs	
  describing	
  the	
  resource	
  data	
  
model	
  	
  
•  RDF	
  in	
  many	
  popular	
  representa7ons	
  
– create	
  (POST)	
  loads	
  a	
  graph	
  into	
  the	
  descrip7on	
  
delete	
  (DELETE)	
  removes	
  a	
  graph	
  or	
  subgraph	
  from	
  
the	
  descrip7on	
  
– set	
  (PUT)	
  updates	
  a	
  graph	
  or	
  subgraph	
  
– get	
  (GET)	
  returns	
  a	
  graph	
  or	
  subgraph	
  
API	
  –	
  Observable	
  Property	
  	
  
•  Represents	
  sensor	
  data	
  or	
  a	
  data	
  feed	
  
•  Can	
  be	
  JSON,	
  xml,	
  text,	
  or	
  other	
  content	
  type	
  
– create	
  (POST):	
  make	
  new	
  observable	
  property	
  
– delete	
  (DELETE)	
  remove	
  observable	
  property	
  
– set	
  (PUT)	
  update	
  Observa7on	
  Value	
  or	
  data	
  feed	
  
– get	
  (GET)	
  returns	
  the	
  current	
  Observa7on	
  Value	
  
API	
  –	
  Observers	
  
•  Contains	
  graphs	
  which	
  define	
  endpoints	
  of	
  
event	
  driven	
  processing	
  
•  Publish,	
  Subscribe,	
  and	
  Event	
  Handler	
  paYerns	
  
•  Reference	
  Implementa7on	
  
– create	
  (POST)	
  makes	
  a	
  new	
  Observer	
  	
  
•  Publisher,	
  Subscriber,	
  or	
  Handler	
  Class	
  
– set	
  (PUT)	
  updates	
  an	
  Observer’s	
  seangs	
  
– get	
  (GET)	
  returns	
  an	
  Observer’s	
  seangs	
  
– delete	
  (DELETE)	
  removes	
  an	
  observer	
  graph	
  
API	
  –	
  Agent	
  
•  Container	
  for	
  Event	
  Handlers,	
  soUware	
  
components	
  invoked	
  within	
  the	
  local	
  context	
  of	
  
the	
  Smart	
  Object	
  
•  Observer	
  class	
  invokes	
  Event	
  Handler	
  code	
  
•  Reference	
  Implementa7on	
  
–  create	
  (POST)	
  makes	
  a	
  new	
  code	
  object	
  instance	
  
•  type	
  handler	
  or	
  daemon	
  
–  delete	
  (DELETE)	
  removes	
  	
  code	
  instance	
  
–  set	
  (PUT)	
  updates	
  seangs	
  of	
  a	
  code	
  instance	
  
–  get	
  (GET)	
  returns	
  seangs	
  of	
  a	
  code	
  instance	
  
Weather	
  Sensor	
  Example	
  
•  Weather	
  Sensor	
  hardware	
  from	
  Sparkfun	
  
•  Arduino	
  connects	
  hardware	
  sensors	
  to	
  
gateway	
  via	
  ethernet	
  
•  Raspberry	
  Pi	
  gateway	
  runs	
  Smart	
  Object	
  API	
  	
  
•  Arduino	
  uses	
  hYp	
  POST	
  of	
  JSON	
  value	
  to	
  
update	
  Smart	
  Object	
  Observable	
  Proper7es	
  
•  Smart	
  Object	
  built	
  using	
  python	
  code	
  	
  
Weather	
  sensor	
  example	
  
Sensor	
  
(Arduino)	
  
Gateway	
  
(Rpi)	
  
Sensor	
  Hardware	
  
•  Wind	
  Speed	
  
•  Wind	
  Direc7on	
  
•  Rainfall	
  
•  Temperature	
  
•  Humidity	
  
•  Barometer	
  
Reads	
  sensor	
  elements	
  and	
  creates	
  sensor	
  output	
  	
  
values	
  to	
  update	
  Smart	
  Object	
  in	
  the	
  Gateway	
  	
  
using	
  a	
  simple	
  hYp	
  client	
  
Gateway	
  runs	
  Smart	
  Object	
  API	
  and	
  exposes	
  HTTP	
  
	
  interface,	
  adds	
  descrip7onand	
  other	
  resources,	
  	
  
Observers	
  send	
  updates	
  to	
  cloud	
  server	
  
Local	
  
Ethernet	
  
Cloud	
  Server	
  acts	
  as	
  Gateway-­‐as-­‐a-­‐Service	
  for	
  Xively	
  
Receives	
  updates	
  from	
  the	
  gateway,	
  Observers	
  	
  
Send	
  periodic	
  updates	
  to	
  Xively	
  feed	
  
Cloud	
  	
  
Server	
  
Internet	
  
Client	
  
(Xively)	
  
Internet	
  
Xively	
  acts	
  as	
  client	
  applica7on	
  and	
  receives	
  	
  
updates	
  from	
  the	
  cloud	
  service	
  ac7ng	
  as	
  GaaS	
  
Arduino	
  Sketch	
  
	
  	
  	
  PString jsonObject(objectBuffer, sizeof(objectBuffer));!
!
   if(nextPushPoint==0) {!
     nextPushPoint=1;!
/* use Pstring.print to format JSON string from integer */!
     jsonObject.println(daily_rain,1); !
/* PUT update to Smart Object server property using JSON */!
     client.print("PUT ");!
     client.print(serverPath);!
     client.print(”daily_rain");!
     client.println(" HTTP/1.1");!
     client.println("Content-Type: application/json");!
     client.print("Content-Length: ");!
     client.println(jsonObject.length()-2);!
     client.println("Connection: close");!
     client.println();!
     client.println(jsonObject);!
   }!
Demo	
  Code	
  for	
  Weather	
  Sensor	
  –	
  
Smart	
  Object	
  and	
  Service	
  Crea7on	
  
	
  	
  baseObject	
  =	
  SmartObject()	
  #	
  create	
  a	
  Smart	
  Object	
  to	
  serve	
  as	
  the	
  base	
  container	
  
for	
  other	
  Smart	
  Objects	
  and	
  resources	
  
	
  	
  	
  	
  server	
  =	
  SmartObjectService(baseObject)	
  #	
  make	
  an	
  instance	
  of	
  the	
  service,	
  
baseObject	
  is	
  the	
  object	
  root	
  
	
  	
  	
  	
  server.start(8000)	
  #	
  forks	
  a	
  server	
  thread	
  to	
  listen	
  on	
  port	
  8000	
  
	
  	
  	
  	
  print	
  'hDpd	
  started	
  at',	
  baseObject.Proper<es.get('hDpService’)	
  
	
  
#	
  top	
  level	
  object	
  container	
  for	
  sensors,	
  class	
  is	
  SmartObject	
  
sensors	
  =	
  baseObject.create({'resourceName':	
  'sensors',	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
   	
   	
  	
  	
  	
  	
  	
  	
  'resourceClass':	
  'SmartObject'})	
  
	
  
#weather	
  sensor	
  Smart	
  Object	
  under	
  sensors	
  for	
  the	
  weather	
  sensor	
  	
  	
  	
  	
  
	
  	
  	
  	
  weather	
  =	
  sensors.create({'resourceName':	
  'rhvWeather-­‐01',	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
   	
   	
   	
  	
  	
  	
  	
  'resourceClass':	
  'SmartObject’}!
Data	
  Model	
  –	
  Descrip7on	
  	
  
for	
  object	
  discovery	
  and	
  linkage	
  
	
  	
  	
  #	
  make	
  a	
  reference	
  to	
  the	
  weather	
  sensor	
  object	
  Descrip7on	
  and	
  build	
  an	
  example	
  
graph	
  (could	
  use	
  the	
  built-­‐in	
  reference	
  as	
  well)	
  
	
  	
  	
  	
  weather.descrip7on	
  =	
  weather.Resources.get('Descrip<on')	
  
	
  
	
  	
  	
  	
  weather.descrip7on.set((URIRef('sensors/rhvWeather-­‐01/outdoor_temperature'),	
  
RDFS.Resource,	
  Literal('sensor')))	
  
	
  	
  	
  	
  weather.descrip7on.set((URIRef('sensors/rhvWeather-­‐01/outdoor_temperature'),	
  
RDF.type,	
  Literal('temperature')))	
  
	
  	
  	
  	
  weather.descrip7on.set((URIRef('sensors/rhvWeather-­‐01/outdoor_humidity'),	
  
RDFS.Resource,	
  Literal('sensor')))	
  
	
  	
  	
  	
  weather.descrip7on.set((URIRef('sensors/rhvWeather-­‐01/outdoor_humidity'),	
  
RDF.type,	
  Literal('humidity')))	
  
	
  	
  	
  	
  weather.descrip7on.set((URIRef('sensors/rhvWeather-­‐01/sealevel_pressure'),	
  
RDFS.Resource,	
  Literal('sensor')))	
  
	
  	
  	
  	
  weather.descrip7on.set((URIRef('sensors/rhvWeather-­‐01/sealevel_pressure'),	
  
RDF.type,	
  Literal('pressure')))!
Encapsula7on:	
  Observable	
  Property,	
  
Observer,	
  and	
  Subscriber	
  
	
  sealevel_pressure	
  =	
  weather.create({'resourceName':	
  'sealevel_pressure',	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
   	
   	
   	
   	
  	
  	
  	
  	
  	
  	
  'resourceClass':	
  'ObservableProperty'})	
  
	
  	
  	
  	
  	
  
	
  	
  sealevel_pressure.Observers.create({'resourceName':'demoServiceObserver',	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
   	
   	
   	
  'resourceClass':	
  'hDpPublisher',	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
   	
   	
   	
  'targetURI':	
  'hDp://smartobjectservice.com:
	
   	
   	
   	
   	
   	
   	
  8000/sensors/rhvWeather-­‐01/sealevel_pressure'})	
  
	
  
	
  #	
  make	
  a	
  named	
  subscriber	
  resource	
  
	
  	
  	
  	
  outdoor_humidity.Observers.create({'resourceName':	
  'humiditySubscriber',	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  'resourceClass':	
  'hDpSubscriber',	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  'observerURI':	
  'hDp://localhost:8000/sensors/rhvWeather-­‐01/
	
   	
   	
   	
   	
   	
   	
   	
   	
   	
   	
   	
   	
  indoor_humidity',	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  'observerName':	
  'humiditySubObserver'	
  })	
  
Event	
  Model	
  –	
  
Xively	
  Publisher	
  -­‐	
  Observer	
  
sealevel_pressure.Observers.create({'resourceName':	
  'xivelyObserver',	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
   	
   	
   	
  	
  'resourceClass':	
  'xivelyPublisher',	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
   	
   	
   	
  	
  'apiBase':	
  'hDps://api.xively.com/v2/feeds',	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
   	
   	
   	
  	
  'feedID':	
  '2141862995',	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
   	
   	
   	
  	
  'streamID':	
  'sealevel_pressure’,	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
   	
   	
   	
   	
   	
   	
  	
  'apiKey’:'QYourApiKeyGoesHEresjhgrjgo56',	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
   	
   	
   	
  	
  'updateInterval':	
  pushInterval	
  })	
  
	
  
Event	
  Model	
  –	
  
Handler	
  and	
  Callback	
  No7fier	
  
	
  	
  #addHandler	
  class	
  adds	
  2	
  proper7es	
  values	
  together	
  and	
  stores	
  in	
  a	
  third	
  
	
  	
  	
  	
  weather.Agent.create({'resourceName':	
  'addHandler',	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  'resourceClass':	
  'addHandler',	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  'addendLink1':'sensors/rhvWeather-­‐01/indoor_temperature',	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  'addendLink2':	
  'sensors/rhvWeather-­‐01/indoor_temperature',	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  'sumOutLink':	
  'sensors/rhvWeather-­‐01/outdoor_humidity'})	
  
	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  #	
  now	
  create	
  a	
  callback	
  observer	
  endpoint	
  	
  
	
  	
  	
  	
  indoor_temperature.Observers.create({'resourceName':	
  'callbackTempObserver',	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  'resourceClass':	
  'callbackNo<fier',	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  'handlerURI':	
  'callback:///sensors/rhvWeather-­‐01/Agent/
	
   	
   	
   	
   	
   	
   	
   	
   	
   	
   	
   	
   	
   	
  addHandler'})	
  
IoT	
  Toolkit	
  Project	
  
•  Smart	
  Object	
  API	
  is	
  nominally	
  complete	
  and	
  
stable	
  
•  Development	
  priori7es	
  
–  Web	
  UI	
  for	
  debug	
  and	
  demo,	
  simple	
  applica7ons	
  
•  Navigator,	
  Dashboard,	
  Analy7cs,	
  Graphs	
  and	
  Charts	
  
–  M2M	
  Endpoints	
  for	
  CoAP,	
  MQTT,	
  and	
  others	
  
–  Test	
  code	
  for	
  API	
  	
  
–  Internal	
  features	
  development	
  
•  Build	
  SmartObject	
  Instances	
  from	
  Resource	
  Models	
  
•  Object	
  Persistence	
  
•  Data	
  persistence	
  and	
  storage	
  
MQTT	
  Observer	
  
•  Publish,	
  Subscribe,	
  or	
  Pub+Sub	
  using	
  the	
  
mqYObserver	
  resource	
  class	
  
•  Prototype	
  opens	
  a	
  connec7on	
  to	
  a	
  specified	
  
broker	
  for	
  each	
  endpoint	
  
	
  
Observers.create({'resourceName': 'mqttTestObserver',!
! ! ! ! ! 'resourceClass': 'mqttObserver',!
'connection': 'smartobjectservice.com',!
'pubTopic': ’sealevel_pressure',!
'subTopic': None,!
'QoS': 0,!
'keepAlive': 60 })!
MQTT	
  Observer	
  
MQTT	
  Broker	
  
REST	
  Endpoint	
  
ObservableProperty	
  
mqYObserver	
  
PUT	
   GET	
  
Publish	
  from	
  
data	
  producer	
  
Publish	
  From	
  
REST	
  API	
  
Publish	
  to	
  Other	
  
Subscribers	
  
SUB	
  
Publish	
  to	
  
REST	
  API	
  	
  
Connects	
  REST	
  Resource	
  to	
  MQTT	
  Topic	
  
Publish	
  and	
  Subscribe	
  
MQTT	
  Observer	
  
MQTT	
  Broker	
  
REST	
  Endpoint	
  
ObservableProperty	
  
mqYObserver	
  
PUT	
   GET	
  
Publish	
  from	
  
data	
  producer	
  
Publish	
  From	
  
REST	
  API	
  
Publish	
  to	
  Other	
  
Subscribers	
  
SUB	
  
Publish	
  to	
  
REST	
  API	
  	
  
Publisher	
  	
  
Publishes	
  REST	
  Resource	
  updates	
  to	
  the	
  broker	
  
MQTT	
  Observer	
  
MQTT	
  Broker	
  
REST	
  Endpoint	
  
ObservableProperty	
  
mqYObserver	
  
PUT	
   GET	
  
Publish	
  from	
  
data	
  producer	
  
Publish	
  From	
  
REST	
  API	
  
Publish	
  to	
  Other	
  
Subscribers	
  
SUB	
  
Publish	
  to	
  
REST	
  API	
  	
  
Subscriber	
  	
  
Makes	
  last	
  published	
  data	
  available	
  at	
  the	
  REST	
  endpoint	
  
MQTT	
  Observer	
  
MQTT	
  Broker	
  
REST	
  Endpoint	
  
ObservableProperty	
  
mqYObserver	
  
PUT	
   GET	
  
Publish	
  from	
  
data	
  producer	
  
Publish	
  From	
  
REST	
  API	
  
Publish	
  to	
  Other	
  
Subscribers	
  
SUB	
  
Publish	
  to	
  
REST	
  API	
  	
  
Pub+Sub	
  
Repeats	
  data	
  updates	
  in	
  both	
  direc7ons	
  
MQTT	
  Bridge	
  to	
  mul7ple	
  REST	
  endpoints	
  
MQTT	
  Broker	
  
REST	
  Endpoint	
  
ObservableProperty	
  
mqYObserver	
  
PUT	
   GET	
  
Publish	
  from	
  
data	
  producer	
  
Publish	
  to	
  Other	
  
Subscribers	
  
REST	
  Endpoint	
  
ObservableProperty	
  
mqYObserver	
  
PUT	
   GET	
  

Más contenido relacionado

La actualidad más candente

Ipso application templates
Ipso application templatesIpso application templates
Ipso application templatesMichael Koster
 
OMA LwM2M Workshop - Michael Koster, IPSO Alliance Objects
OMA LwM2M Workshop - Michael Koster, IPSO Alliance ObjectsOMA LwM2M Workshop - Michael Koster, IPSO Alliance Objects
OMA LwM2M Workshop - Michael Koster, IPSO Alliance ObjectsOpen Mobile Alliance
 
Orion Context Broker 20210907
Orion Context Broker 20210907Orion Context Broker 20210907
Orion Context Broker 20210907Fermin Galan
 
Restful Asynchronous Notification
Restful Asynchronous NotificationRestful Asynchronous Notification
Restful Asynchronous NotificationMichael Koster
 
Hypermedia System Architecture for a Web of Things
Hypermedia System Architecture for a Web of ThingsHypermedia System Architecture for a Web of Things
Hypermedia System Architecture for a Web of ThingsMichael Koster
 
Orion Context Broker 20220127
Orion Context Broker 20220127Orion Context Broker 20220127
Orion Context Broker 20220127Fermin Galan
 
Apache Eagle Strata Hadoop World London 2016
Apache Eagle Strata Hadoop World London 2016Apache Eagle Strata Hadoop World London 2016
Apache Eagle Strata Hadoop World London 2016Arun Karthick Manoharan
 
Orion Context Broker 20190214
Orion Context Broker 20190214Orion Context Broker 20190214
Orion Context Broker 20190214Fermin Galan
 
Orion Context Broker 20210412
Orion Context Broker 20210412Orion Context Broker 20210412
Orion Context Broker 20210412Fermin Galan
 
Orion Context Broker 20220301
Orion Context Broker 20220301Orion Context Broker 20220301
Orion Context Broker 20220301Fermin Galan
 
NGSIv2 Overview for Developers That Already Know NGSIv1
NGSIv2 Overview for Developers That Already Know NGSIv1NGSIv2 Overview for Developers That Already Know NGSIv1
NGSIv2 Overview for Developers That Already Know NGSIv1Fermin Galan
 
FIWARE: Managing Context Information at large scale
FIWARE: Managing Context Information at large scaleFIWARE: Managing Context Information at large scale
FIWARE: Managing Context Information at large scaleFermin Galan
 
Durable functions 2.0 (2019-10-10)
Durable functions 2.0 (2019-10-10)Durable functions 2.0 (2019-10-10)
Durable functions 2.0 (2019-10-10)Paco de la Cruz
 
Hypermedia System Architecture for a Web of Things
Hypermedia System Architecture for a Web of ThingsHypermedia System Architecture for a Web of Things
Hypermedia System Architecture for a Web of ThingsMichael Koster
 

La actualidad más candente (16)

Osiot14 buildout
Osiot14 buildoutOsiot14 buildout
Osiot14 buildout
 
Ipso application templates
Ipso application templatesIpso application templates
Ipso application templates
 
OMA LwM2M Workshop - Michael Koster, IPSO Alliance Objects
OMA LwM2M Workshop - Michael Koster, IPSO Alliance ObjectsOMA LwM2M Workshop - Michael Koster, IPSO Alliance Objects
OMA LwM2M Workshop - Michael Koster, IPSO Alliance Objects
 
Orion Context Broker 20210907
Orion Context Broker 20210907Orion Context Broker 20210907
Orion Context Broker 20210907
 
Embedded to connected
Embedded to connectedEmbedded to connected
Embedded to connected
 
Restful Asynchronous Notification
Restful Asynchronous NotificationRestful Asynchronous Notification
Restful Asynchronous Notification
 
Hypermedia System Architecture for a Web of Things
Hypermedia System Architecture for a Web of ThingsHypermedia System Architecture for a Web of Things
Hypermedia System Architecture for a Web of Things
 
Orion Context Broker 20220127
Orion Context Broker 20220127Orion Context Broker 20220127
Orion Context Broker 20220127
 
Apache Eagle Strata Hadoop World London 2016
Apache Eagle Strata Hadoop World London 2016Apache Eagle Strata Hadoop World London 2016
Apache Eagle Strata Hadoop World London 2016
 
Orion Context Broker 20190214
Orion Context Broker 20190214Orion Context Broker 20190214
Orion Context Broker 20190214
 
Orion Context Broker 20210412
Orion Context Broker 20210412Orion Context Broker 20210412
Orion Context Broker 20210412
 
Orion Context Broker 20220301
Orion Context Broker 20220301Orion Context Broker 20220301
Orion Context Broker 20220301
 
NGSIv2 Overview for Developers That Already Know NGSIv1
NGSIv2 Overview for Developers That Already Know NGSIv1NGSIv2 Overview for Developers That Already Know NGSIv1
NGSIv2 Overview for Developers That Already Know NGSIv1
 
FIWARE: Managing Context Information at large scale
FIWARE: Managing Context Information at large scaleFIWARE: Managing Context Information at large scale
FIWARE: Managing Context Information at large scale
 
Durable functions 2.0 (2019-10-10)
Durable functions 2.0 (2019-10-10)Durable functions 2.0 (2019-10-10)
Durable functions 2.0 (2019-10-10)
 
Hypermedia System Architecture for a Web of Things
Hypermedia System Architecture for a Web of ThingsHypermedia System Architecture for a Web of Things
Hypermedia System Architecture for a Web of Things
 

Destacado

IFBC Food Trends from Allrecipes.com
IFBC Food Trends from Allrecipes.comIFBC Food Trends from Allrecipes.com
IFBC Food Trends from Allrecipes.comSheri Wetherell
 
Social Media Gastcollege - Hogeschool Zuyd, Facility Management - Bart van de...
Social Media Gastcollege - Hogeschool Zuyd, Facility Management - Bart van de...Social Media Gastcollege - Hogeschool Zuyd, Facility Management - Bart van de...
Social Media Gastcollege - Hogeschool Zuyd, Facility Management - Bart van de...Bart van der Kooi
 
Stephanie_Wacker_Resume word document
Stephanie_Wacker_Resume word documentStephanie_Wacker_Resume word document
Stephanie_Wacker_Resume word documentStephanie Wacker
 
FINAL DISEÑO DE CAMPAÑAS PUBLICITARIAS
FINAL DISEÑO DE CAMPAÑAS PUBLICITARIASFINAL DISEÑO DE CAMPAÑAS PUBLICITARIAS
FINAL DISEÑO DE CAMPAÑAS PUBLICITARIASchrismcvalenz
 
Proyecto wichi cantado
Proyecto wichi  cantadoProyecto wichi  cantado
Proyecto wichi cantadoTacún Lazarte
 
Las mejores motos de baja cilindrada
Las mejores motos de baja cilindradaLas mejores motos de baja cilindrada
Las mejores motos de baja cilindradaCesar Augusto Niño
 
Intensiv Ausbildung Gewaltfreie Kommunikation nach Dr. Marshall Rosenberg, 20...
Intensiv Ausbildung Gewaltfreie Kommunikation nach Dr. Marshall Rosenberg, 20...Intensiv Ausbildung Gewaltfreie Kommunikation nach Dr. Marshall Rosenberg, 20...
Intensiv Ausbildung Gewaltfreie Kommunikation nach Dr. Marshall Rosenberg, 20...Markus Fischer
 
Raid Aventura
Raid AventuraRaid Aventura
Raid AventuraMONTARAZ
 
Presentación Jornada de Trabajo Diagnóstico de la Axarquía como Destino Turís...
Presentación Jornada de Trabajo Diagnóstico de la Axarquía como Destino Turís...Presentación Jornada de Trabajo Diagnóstico de la Axarquía como Destino Turís...
Presentación Jornada de Trabajo Diagnóstico de la Axarquía como Destino Turís...maiaconsultores
 
Youstice - App inteligente para administrar reclamos
Youstice - App inteligente para administrar reclamosYoustice - App inteligente para administrar reclamos
Youstice - App inteligente para administrar reclamosMundoYoustice
 
Presentación-SoloFutbol-SquadraGames
Presentación-SoloFutbol-SquadraGamesPresentación-SoloFutbol-SquadraGames
Presentación-SoloFutbol-SquadraGamesSquadra Games
 
L L E G E N D A P O W E R
L L E G E N D A  P O W E RL L E G E N D A  P O W E R
L L E G E N D A P O W E Rguesta23ef5
 
Dr jekyll ymr. hyde 2
Dr jekyll ymr. hyde 2Dr jekyll ymr. hyde 2
Dr jekyll ymr. hyde 2PROFEMARA
 
AEC Excellence Awards 2016 Finalists
AEC Excellence Awards 2016 FinalistsAEC Excellence Awards 2016 Finalists
AEC Excellence Awards 2016 FinalistsAutodesk AEC
 
Mobilní život - iCON Prague 2013
Mobilní život - iCON Prague 2013Mobilní život - iCON Prague 2013
Mobilní život - iCON Prague 2013Tomas Pflanzer
 

Destacado (20)

IFBC Food Trends from Allrecipes.com
IFBC Food Trends from Allrecipes.comIFBC Food Trends from Allrecipes.com
IFBC Food Trends from Allrecipes.com
 
Social Media Gastcollege - Hogeschool Zuyd, Facility Management - Bart van de...
Social Media Gastcollege - Hogeschool Zuyd, Facility Management - Bart van de...Social Media Gastcollege - Hogeschool Zuyd, Facility Management - Bart van de...
Social Media Gastcollege - Hogeschool Zuyd, Facility Management - Bart van de...
 
Stephanie_Wacker_Resume word document
Stephanie_Wacker_Resume word documentStephanie_Wacker_Resume word document
Stephanie_Wacker_Resume word document
 
FINAL DISEÑO DE CAMPAÑAS PUBLICITARIAS
FINAL DISEÑO DE CAMPAÑAS PUBLICITARIASFINAL DISEÑO DE CAMPAÑAS PUBLICITARIAS
FINAL DISEÑO DE CAMPAÑAS PUBLICITARIAS
 
Proyecto wichi cantado
Proyecto wichi  cantadoProyecto wichi  cantado
Proyecto wichi cantado
 
Las mejores motos de baja cilindrada
Las mejores motos de baja cilindradaLas mejores motos de baja cilindrada
Las mejores motos de baja cilindrada
 
Intensiv Ausbildung Gewaltfreie Kommunikation nach Dr. Marshall Rosenberg, 20...
Intensiv Ausbildung Gewaltfreie Kommunikation nach Dr. Marshall Rosenberg, 20...Intensiv Ausbildung Gewaltfreie Kommunikation nach Dr. Marshall Rosenberg, 20...
Intensiv Ausbildung Gewaltfreie Kommunikation nach Dr. Marshall Rosenberg, 20...
 
Raid Aventura
Raid AventuraRaid Aventura
Raid Aventura
 
Presentación Jornada de Trabajo Diagnóstico de la Axarquía como Destino Turís...
Presentación Jornada de Trabajo Diagnóstico de la Axarquía como Destino Turís...Presentación Jornada de Trabajo Diagnóstico de la Axarquía como Destino Turís...
Presentación Jornada de Trabajo Diagnóstico de la Axarquía como Destino Turís...
 
Adelco Profile
Adelco ProfileAdelco Profile
Adelco Profile
 
Youstice - App inteligente para administrar reclamos
Youstice - App inteligente para administrar reclamosYoustice - App inteligente para administrar reclamos
Youstice - App inteligente para administrar reclamos
 
Presentación-SoloFutbol-SquadraGames
Presentación-SoloFutbol-SquadraGamesPresentación-SoloFutbol-SquadraGames
Presentación-SoloFutbol-SquadraGames
 
L L E G E N D A P O W E R
L L E G E N D A  P O W E RL L E G E N D A  P O W E R
L L E G E N D A P O W E R
 
HIGIENE Y SEGURIDAD
HIGIENE Y SEGURIDADHIGIENE Y SEGURIDAD
HIGIENE Y SEGURIDAD
 
Dr jekyll ymr. hyde 2
Dr jekyll ymr. hyde 2Dr jekyll ymr. hyde 2
Dr jekyll ymr. hyde 2
 
La pecera..
La pecera..La pecera..
La pecera..
 
Tabaquismo
TabaquismoTabaquismo
Tabaquismo
 
AEC Excellence Awards 2016 Finalists
AEC Excellence Awards 2016 FinalistsAEC Excellence Awards 2016 Finalists
AEC Excellence Awards 2016 Finalists
 
Unit 1c
Unit 1cUnit 1c
Unit 1c
 
Mobilní život - iCON Prague 2013
Mobilní život - iCON Prague 2013Mobilní život - iCON Prague 2013
Mobilní život - iCON Prague 2013
 

Similar a IoT Toolkit Tutorial: Build Connected Things with Smart Object API

M2M Protocol Interoperability using IoT Toolkit
M2M Protocol Interoperability using IoT ToolkitM2M Protocol Interoperability using IoT Toolkit
M2M Protocol Interoperability using IoT ToolkitMichael Koster
 
M2M Protocol Interoperability using IoT Toolkit
M2M Protocol Interoperability using IoT ToolkitM2M Protocol Interoperability using IoT Toolkit
M2M Protocol Interoperability using IoT ToolkitMichael Koster
 
IoT Toolkit and the Smart Object API - Architecture for Interoperability
IoT Toolkit and the Smart Object API - Architecture for InteroperabilityIoT Toolkit and the Smart Object API - Architecture for Interoperability
IoT Toolkit and the Smart Object API - Architecture for InteroperabilityMichael Koster
 
IoT Toolkit and the Smart Object API - Architecture for Interoperability
IoT Toolkit and the Smart Object API - Architecture for InteroperabilityIoT Toolkit and the Smart Object API - Architecture for Interoperability
IoT Toolkit and the Smart Object API - Architecture for InteroperabilityMichael Koster
 
Open Horizontal Platform - Web Scale Interoperability for the Internet of Thi...
Open Horizontal Platform - Web Scale Interoperability for the Internet of Thi...Open Horizontal Platform - Web Scale Interoperability for the Internet of Thi...
Open Horizontal Platform - Web Scale Interoperability for the Internet of Thi...Michael Koster
 
Open Horizontal Platform - Web Scale Interoperability for IoT - CCNA 2013
Open Horizontal Platform - Web Scale Interoperability for IoT - CCNA 2013Open Horizontal Platform - Web Scale Interoperability for IoT - CCNA 2013
Open Horizontal Platform - Web Scale Interoperability for IoT - CCNA 2013Michael Koster
 
MQTT-REST Bridge using the Smart Object API
MQTT-REST Bridge using the Smart Object APIMQTT-REST Bridge using the Smart Object API
MQTT-REST Bridge using the Smart Object APIMichael Koster
 
MQTT - REST Bridge using the Smart Object API
MQTT - REST Bridge using the Smart Object APIMQTT - REST Bridge using the Smart Object API
MQTT - REST Bridge using the Smart Object APIMichael Koster
 
MQTT REST Bridge using the Smart Object API
MQTT REST Bridge using the Smart Object APIMQTT REST Bridge using the Smart Object API
MQTT REST Bridge using the Smart Object APIMichael Koster
 
CCNA-Open-Platform-IoT
CCNA-Open-Platform-IoTCCNA-Open-Platform-IoT
CCNA-Open-Platform-IoTMichael Koster
 
Ietf91 ad hoc-coap-lwm2m-ipso
Ietf91 ad hoc-coap-lwm2m-ipsoIetf91 ad hoc-coap-lwm2m-ipso
Ietf91 ad hoc-coap-lwm2m-ipsoMichael Koster
 
A Modular Open Source Platform for Web Scale IoT Interoperability
A Modular Open Source Platform for Web Scale IoT InteroperabilityA Modular Open Source Platform for Web Scale IoT Interoperability
A Modular Open Source Platform for Web Scale IoT InteroperabilityMichael Koster
 
Ietf91 ad hoc-coap-lwm2m-ipso
Ietf91 ad hoc-coap-lwm2m-ipsoIetf91 ad hoc-coap-lwm2m-ipso
Ietf91 ad hoc-coap-lwm2m-ipsoMichael Koster
 
A Modular Open Source Platform for Web Scale IoT Interoperability
A Modular Open Source Platform for Web Scale IoT InteroperabilityA Modular Open Source Platform for Web Scale IoT Interoperability
A Modular Open Source Platform for Web Scale IoT InteroperabilityMichael Koster
 
From System Engineer to Gopher
From System Engineer to GopherFrom System Engineer to Gopher
From System Engineer to GopherI-Fan Wang
 
[DataCon.TW 2018] Metadata Store: Generalized Entity Database for Intelligenc...
[DataCon.TW 2018] Metadata Store: Generalized Entity Database for Intelligenc...[DataCon.TW 2018] Metadata Store: Generalized Entity Database for Intelligenc...
[DataCon.TW 2018] Metadata Store: Generalized Entity Database for Intelligenc...Jeff Hung
 
Android application architecture
Android application architectureAndroid application architecture
Android application architectureRomain Rochegude
 

Similar a IoT Toolkit Tutorial: Build Connected Things with Smart Object API (20)

M2M Protocol Interoperability using IoT Toolkit
M2M Protocol Interoperability using IoT ToolkitM2M Protocol Interoperability using IoT Toolkit
M2M Protocol Interoperability using IoT Toolkit
 
M2M Protocol Interoperability using IoT Toolkit
M2M Protocol Interoperability using IoT ToolkitM2M Protocol Interoperability using IoT Toolkit
M2M Protocol Interoperability using IoT Toolkit
 
IoT Toolkit and the Smart Object API - Architecture for Interoperability
IoT Toolkit and the Smart Object API - Architecture for InteroperabilityIoT Toolkit and the Smart Object API - Architecture for Interoperability
IoT Toolkit and the Smart Object API - Architecture for Interoperability
 
IoT Toolkit and the Smart Object API - Architecture for Interoperability
IoT Toolkit and the Smart Object API - Architecture for InteroperabilityIoT Toolkit and the Smart Object API - Architecture for Interoperability
IoT Toolkit and the Smart Object API - Architecture for Interoperability
 
Open Horizontal Platform - Web Scale Interoperability for the Internet of Thi...
Open Horizontal Platform - Web Scale Interoperability for the Internet of Thi...Open Horizontal Platform - Web Scale Interoperability for the Internet of Thi...
Open Horizontal Platform - Web Scale Interoperability for the Internet of Thi...
 
Open Horizontal Platform - Web Scale Interoperability for IoT - CCNA 2013
Open Horizontal Platform - Web Scale Interoperability for IoT - CCNA 2013Open Horizontal Platform - Web Scale Interoperability for IoT - CCNA 2013
Open Horizontal Platform - Web Scale Interoperability for IoT - CCNA 2013
 
MQTT-REST Bridge using the Smart Object API
MQTT-REST Bridge using the Smart Object APIMQTT-REST Bridge using the Smart Object API
MQTT-REST Bridge using the Smart Object API
 
MQTT - REST Bridge using the Smart Object API
MQTT - REST Bridge using the Smart Object APIMQTT - REST Bridge using the Smart Object API
MQTT - REST Bridge using the Smart Object API
 
MQTT REST Bridge using the Smart Object API
MQTT REST Bridge using the Smart Object APIMQTT REST Bridge using the Smart Object API
MQTT REST Bridge using the Smart Object API
 
CCNA-Open-Platform-IoT
CCNA-Open-Platform-IoTCCNA-Open-Platform-IoT
CCNA-Open-Platform-IoT
 
Ietf91 ad hoc-coap-lwm2m-ipso
Ietf91 ad hoc-coap-lwm2m-ipsoIetf91 ad hoc-coap-lwm2m-ipso
Ietf91 ad hoc-coap-lwm2m-ipso
 
A Modular Open Source Platform for Web Scale IoT Interoperability
A Modular Open Source Platform for Web Scale IoT InteroperabilityA Modular Open Source Platform for Web Scale IoT Interoperability
A Modular Open Source Platform for Web Scale IoT Interoperability
 
Ietf91 ad hoc-coap-lwm2m-ipso
Ietf91 ad hoc-coap-lwm2m-ipsoIetf91 ad hoc-coap-lwm2m-ipso
Ietf91 ad hoc-coap-lwm2m-ipso
 
A Modular Open Source Platform for Web Scale IoT Interoperability
A Modular Open Source Platform for Web Scale IoT InteroperabilityA Modular Open Source Platform for Web Scale IoT Interoperability
A Modular Open Source Platform for Web Scale IoT Interoperability
 
AWS IoT Deep Dive
AWS IoT Deep DiveAWS IoT Deep Dive
AWS IoT Deep Dive
 
Ipso eclipse-summary
Ipso eclipse-summaryIpso eclipse-summary
Ipso eclipse-summary
 
Design patternsforiot
Design patternsforiotDesign patternsforiot
Design patternsforiot
 
From System Engineer to Gopher
From System Engineer to GopherFrom System Engineer to Gopher
From System Engineer to Gopher
 
[DataCon.TW 2018] Metadata Store: Generalized Entity Database for Intelligenc...
[DataCon.TW 2018] Metadata Store: Generalized Entity Database for Intelligenc...[DataCon.TW 2018] Metadata Store: Generalized Entity Database for Intelligenc...
[DataCon.TW 2018] Metadata Store: Generalized Entity Database for Intelligenc...
 
Android application architecture
Android application architectureAndroid application architecture
Android application architecture
 

Más de Michael Koster

Hypermedia design for machine apis
Hypermedia design for machine apisHypermedia design for machine apis
Hypermedia design for machine apisMichael Koster
 
Hypermedia for Machine APIs
Hypermedia for Machine APIsHypermedia for Machine APIs
Hypermedia for Machine APIsMichael Koster
 
Web of Things to the edge
Web of Things to the edgeWeb of Things to the edge
Web of Things to the edgeMichael Koster
 
Ipso smart objects for iot
Ipso smart objects for iotIpso smart objects for iot
Ipso smart objects for iotMichael Koster
 
IP based standards for IoT
IP based standards for IoTIP based standards for IoT
IP based standards for IoTMichael Koster
 
REST APIs for an Internet of Things
REST APIs for an Internet of ThingsREST APIs for an Internet of Things
REST APIs for an Internet of ThingsMichael Koster
 
The Network Effect - Open Source and the Internet Of Things - Helsinki Keynote
The Network Effect - Open Source and the Internet Of Things - Helsinki KeynoteThe Network Effect - Open Source and the Internet Of Things - Helsinki Keynote
The Network Effect - Open Source and the Internet Of Things - Helsinki KeynoteMichael Koster
 
Tools for the Open Source Internet of Things
Tools for the Open Source Internet of ThingsTools for the Open Source Internet of Things
Tools for the Open Source Internet of ThingsMichael Koster
 
Open Standards for IoT - GSM Workshop on IoT Standards Atlanta 2013
Open Standards for IoT - GSM Workshop on IoT Standards Atlanta 2013Open Standards for IoT - GSM Workshop on IoT Standards Atlanta 2013
Open Standards for IoT - GSM Workshop on IoT Standards Atlanta 2013Michael Koster
 
Personal Agency on the IoT
Personal Agency on the IoTPersonal Agency on the IoT
Personal Agency on the IoTMichael Koster
 
Friend Of A Thing and IoT Resource access control #OSIOT
Friend Of A Thing and IoT Resource access control #OSIOTFriend Of A Thing and IoT Resource access control #OSIOT
Friend Of A Thing and IoT Resource access control #OSIOTMichael Koster
 

Más de Michael Koster (12)

Hypermedia design for machine apis
Hypermedia design for machine apisHypermedia design for machine apis
Hypermedia design for machine apis
 
Hypermedia for Machine APIs
Hypermedia for Machine APIsHypermedia for Machine APIs
Hypermedia for Machine APIs
 
Web of Things to the edge
Web of Things to the edgeWeb of Things to the edge
Web of Things to the edge
 
Osiot13 IoT buildout
Osiot13 IoT buildoutOsiot13 IoT buildout
Osiot13 IoT buildout
 
Ipso smart objects for iot
Ipso smart objects for iotIpso smart objects for iot
Ipso smart objects for iot
 
IP based standards for IoT
IP based standards for IoTIP based standards for IoT
IP based standards for IoT
 
REST APIs for an Internet of Things
REST APIs for an Internet of ThingsREST APIs for an Internet of Things
REST APIs for an Internet of Things
 
The Network Effect - Open Source and the Internet Of Things - Helsinki Keynote
The Network Effect - Open Source and the Internet Of Things - Helsinki KeynoteThe Network Effect - Open Source and the Internet Of Things - Helsinki Keynote
The Network Effect - Open Source and the Internet Of Things - Helsinki Keynote
 
Tools for the Open Source Internet of Things
Tools for the Open Source Internet of ThingsTools for the Open Source Internet of Things
Tools for the Open Source Internet of Things
 
Open Standards for IoT - GSM Workshop on IoT Standards Atlanta 2013
Open Standards for IoT - GSM Workshop on IoT Standards Atlanta 2013Open Standards for IoT - GSM Workshop on IoT Standards Atlanta 2013
Open Standards for IoT - GSM Workshop on IoT Standards Atlanta 2013
 
Personal Agency on the IoT
Personal Agency on the IoTPersonal Agency on the IoT
Personal Agency on the IoT
 
Friend Of A Thing and IoT Resource access control #OSIOT
Friend Of A Thing and IoT Resource access control #OSIOTFriend Of A Thing and IoT Resource access control #OSIOT
Friend Of A Thing and IoT Resource access control #OSIOT
 

Último

Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 

Último (20)

Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 

IoT Toolkit Tutorial: Build Connected Things with Smart Object API

  • 1. IoT  Toolkit  and  Smart  Object  API   Tutorial  Introduc7on   Open  Source  Internet  of  Things  
  • 2. IoT  2.0  –  Interoperability   M2M   CoAP   M2M   MQ   SOA   M2M   HTTP   Smart  Object  API   IoT  Toolkit   Discovery   Applica7ons   Thing   Models   Resource   Models   •  Object  Model   •  REST  +  Event  Model   •  M2M  Abstrac<ons   IoT  Toolkit   Connected  Things,  Sensors,  Actuators,  Data  Sources   Seman5c   Repository   •  Easy  to  deploy  new   things  and   applica7ons  using  data   models   •  Write  once  run   anywhere,  any  app  to   any  thing  via  any  M2M   •  Network  effect   enabled   •  Allows  for  appropriate   M2M  choice  
  • 3. Interoperability  Architecture   SO   SO   SO   Gateway   Server   Cloud   Endpoints   •  Sensors   •  Devices   Applica7on     Components     And     Resources   Databases   Instances   Classes   SRT   • Discovery   • Persistence   • Replica7on   • Resource  Access   • Data  Models     • Sensor  Models   • Machine  Models   • Templates  
  • 4. IoT  Toolkit   •  IoT  Toolkit  is  a  reference  implementa7on  of   the  Smart  Object  API  and  related  tools   •  REST  API  with  real-­‐7me  event  model  for  the   Internet  of  Things   •  Lightweight  server  that  can  run  on  small   computers  e.g.  Raspberry  Pi   •  Work  in  progress  prototype  (limited  excep7on   handling  and  simple  interfaces)  
  • 5. Smart  Object  API   •  Object  Model  –  Web  Object  Encapsula7on     •  Data  Models  –  Linked  Data  descrip7ons   •  Event  Model  –  Asynchronous  M2M  and   applica7on  soUware  event  handlers   •  REST  API  using  JSON,  XML,  RDF   representa7ons   •  Web  standards  and  best  prac7ces  with  new   extensions  
  • 6. Object  Model   Web  Object  Encapsula7on     Smart  Object   Web  protocol  interfaces,  also  M2M  e.g.  MQTT   Event  Model   Links  data  with  ac7ons   Pub-­‐Sub  and  event  handlers   Encapsulates  local  soUware     components  and  handlers   Self-­‐describing  data  model   For  Resource  Discovery     and  Linkage   Sensor  or  other  data     JSON,  XML,  data  feeds  
  • 7. Smart  Object  Structure  –  Object  Model   Smart  Object   Descrip7on   ObservableProperty   ObservableProperty…   Agent   Publisher   Subscriber   Handler   PropertyOfInterest   Descrip7on   Observers   Handler  Instance   Daemon   Default  Property  
  • 8. REST  API   •  Python  API  –  Local  SoUware,  Agents  and  Handlers   –  Resources  (objects)  are  hierarchical  proper7es  of  other   resources   –  self.indoorTempValue = sensors.weather.indoor_temp.get()! •  Web  API  –  HYp  REST  Client  access   –  Resources  are  organized  in  hierarchical  path   –  GET http:my_server:8000/sensors/weather/indoor_temp! •  Default  Property   –  Returns  a  resource  associated  with  a  higher  level  resource   –  GET  of  Smart  Object  returns  it’s  Descrip7on;  GET  of   Observable  Property  returns  it’s  Observa7on  Value  
  • 9. API  –  Descrip7on  (Data  Model)   •  Contains  graphs  describing  the  resource  data   model     •  RDF  in  many  popular  representa7ons   – create  (POST)  loads  a  graph  into  the  descrip7on   delete  (DELETE)  removes  a  graph  or  subgraph  from   the  descrip7on   – set  (PUT)  updates  a  graph  or  subgraph   – get  (GET)  returns  a  graph  or  subgraph  
  • 10. API  –  Observable  Property     •  Represents  sensor  data  or  a  data  feed   •  Can  be  JSON,  xml,  text,  or  other  content  type   – create  (POST):  make  new  observable  property   – delete  (DELETE)  remove  observable  property   – set  (PUT)  update  Observa7on  Value  or  data  feed   – get  (GET)  returns  the  current  Observa7on  Value  
  • 11. API  –  Observers   •  Contains  graphs  which  define  endpoints  of   event  driven  processing   •  Publish,  Subscribe,  and  Event  Handler  paYerns   •  Reference  Implementa7on   – create  (POST)  makes  a  new  Observer     •  Publisher,  Subscriber,  or  Handler  Class   – set  (PUT)  updates  an  Observer’s  seangs   – get  (GET)  returns  an  Observer’s  seangs   – delete  (DELETE)  removes  an  observer  graph  
  • 12. API  –  Agent   •  Container  for  Event  Handlers,  soUware   components  invoked  within  the  local  context  of   the  Smart  Object   •  Observer  class  invokes  Event  Handler  code   •  Reference  Implementa7on   –  create  (POST)  makes  a  new  code  object  instance   •  type  handler  or  daemon   –  delete  (DELETE)  removes    code  instance   –  set  (PUT)  updates  seangs  of  a  code  instance   –  get  (GET)  returns  seangs  of  a  code  instance  
  • 13. Weather  Sensor  Example   •  Weather  Sensor  hardware  from  Sparkfun   •  Arduino  connects  hardware  sensors  to   gateway  via  ethernet   •  Raspberry  Pi  gateway  runs  Smart  Object  API     •  Arduino  uses  hYp  POST  of  JSON  value  to   update  Smart  Object  Observable  Proper7es   •  Smart  Object  built  using  python  code    
  • 14. Weather  sensor  example   Sensor   (Arduino)   Gateway   (Rpi)   Sensor  Hardware   •  Wind  Speed   •  Wind  Direc7on   •  Rainfall   •  Temperature   •  Humidity   •  Barometer   Reads  sensor  elements  and  creates  sensor  output     values  to  update  Smart  Object  in  the  Gateway     using  a  simple  hYp  client   Gateway  runs  Smart  Object  API  and  exposes  HTTP    interface,  adds  descrip7onand  other  resources,     Observers  send  updates  to  cloud  server   Local   Ethernet   Cloud  Server  acts  as  Gateway-­‐as-­‐a-­‐Service  for  Xively   Receives  updates  from  the  gateway,  Observers     Send  periodic  updates  to  Xively  feed   Cloud     Server   Internet   Client   (Xively)   Internet   Xively  acts  as  client  applica7on  and  receives     updates  from  the  cloud  service  ac7ng  as  GaaS  
  • 15. Arduino  Sketch        PString jsonObject(objectBuffer, sizeof(objectBuffer));! !    if(nextPushPoint==0) {!      nextPushPoint=1;! /* use Pstring.print to format JSON string from integer */!      jsonObject.println(daily_rain,1); ! /* PUT update to Smart Object server property using JSON */!      client.print("PUT ");!      client.print(serverPath);!      client.print(”daily_rain");!      client.println(" HTTP/1.1");!      client.println("Content-Type: application/json");!      client.print("Content-Length: ");!      client.println(jsonObject.length()-2);!      client.println("Connection: close");!      client.println();!      client.println(jsonObject);!    }!
  • 16. Demo  Code  for  Weather  Sensor  –   Smart  Object  and  Service  Crea7on      baseObject  =  SmartObject()  #  create  a  Smart  Object  to  serve  as  the  base  container   for  other  Smart  Objects  and  resources          server  =  SmartObjectService(baseObject)  #  make  an  instance  of  the  service,   baseObject  is  the  object  root          server.start(8000)  #  forks  a  server  thread  to  listen  on  port  8000          print  'hDpd  started  at',  baseObject.Proper<es.get('hDpService’)     #  top  level  object  container  for  sensors,  class  is  SmartObject   sensors  =  baseObject.create({'resourceName':  'sensors',                                                                                  'resourceClass':  'SmartObject'})     #weather  sensor  Smart  Object  under  sensors  for  the  weather  sensor                  weather  =  sensors.create({'resourceName':  'rhvWeather-­‐01',                                                                          'resourceClass':  'SmartObject’}!
  • 17. Data  Model  –  Descrip7on     for  object  discovery  and  linkage        #  make  a  reference  to  the  weather  sensor  object  Descrip7on  and  build  an  example   graph  (could  use  the  built-­‐in  reference  as  well)          weather.descrip7on  =  weather.Resources.get('Descrip<on')            weather.descrip7on.set((URIRef('sensors/rhvWeather-­‐01/outdoor_temperature'),   RDFS.Resource,  Literal('sensor')))          weather.descrip7on.set((URIRef('sensors/rhvWeather-­‐01/outdoor_temperature'),   RDF.type,  Literal('temperature')))          weather.descrip7on.set((URIRef('sensors/rhvWeather-­‐01/outdoor_humidity'),   RDFS.Resource,  Literal('sensor')))          weather.descrip7on.set((URIRef('sensors/rhvWeather-­‐01/outdoor_humidity'),   RDF.type,  Literal('humidity')))          weather.descrip7on.set((URIRef('sensors/rhvWeather-­‐01/sealevel_pressure'),   RDFS.Resource,  Literal('sensor')))          weather.descrip7on.set((URIRef('sensors/rhvWeather-­‐01/sealevel_pressure'),   RDF.type,  Literal('pressure')))!
  • 18. Encapsula7on:  Observable  Property,   Observer,  and  Subscriber    sealevel_pressure  =  weather.create({'resourceName':  'sealevel_pressure',                                                                                      'resourceClass':  'ObservableProperty'})                sealevel_pressure.Observers.create({'resourceName':'demoServiceObserver',                                                                                          'resourceClass':  'hDpPublisher',                                                                                          'targetURI':  'hDp://smartobjectservice.com:              8000/sensors/rhvWeather-­‐01/sealevel_pressure'})      #  make  a  named  subscriber  resource          outdoor_humidity.Observers.create({'resourceName':  'humiditySubscriber',                                                                                  'resourceClass':  'hDpSubscriber',                                                                                  'observerURI':  'hDp://localhost:8000/sensors/rhvWeather-­‐01/                          indoor_humidity',                                                                                    'observerName':  'humiditySubObserver'  })  
  • 19. Event  Model  –   Xively  Publisher  -­‐  Observer   sealevel_pressure.Observers.create({'resourceName':  'xivelyObserver',                                                                                        'resourceClass':  'xivelyPublisher',                                                                                        'apiBase':  'hDps://api.xively.com/v2/feeds',                                                                                        'feedID':  '2141862995',                                                                                        'streamID':  'sealevel_pressure’,                                                                                      'apiKey’:'QYourApiKeyGoesHEresjhgrjgo56',                                                                                        'updateInterval':  pushInterval  })    
  • 20. Event  Model  –   Handler  and  Callback  No7fier      #addHandler  class  adds  2  proper7es  values  together  and  stores  in  a  third          weather.Agent.create({'resourceName':  'addHandler',                                                    'resourceClass':  'addHandler',                                                    'addendLink1':'sensors/rhvWeather-­‐01/indoor_temperature',                                                      'addendLink2':  'sensors/rhvWeather-­‐01/indoor_temperature',                                                      'sumOutLink':  'sensors/rhvWeather-­‐01/outdoor_humidity'})                        #  now  create  a  callback  observer  endpoint            indoor_temperature.Observers.create({'resourceName':  'callbackTempObserver',                                                                                    'resourceClass':  'callbackNo<fier',                                                                                    'handlerURI':  'callback:///sensors/rhvWeather-­‐01/Agent/                            addHandler'})  
  • 21. IoT  Toolkit  Project   •  Smart  Object  API  is  nominally  complete  and   stable   •  Development  priori7es   –  Web  UI  for  debug  and  demo,  simple  applica7ons   •  Navigator,  Dashboard,  Analy7cs,  Graphs  and  Charts   –  M2M  Endpoints  for  CoAP,  MQTT,  and  others   –  Test  code  for  API     –  Internal  features  development   •  Build  SmartObject  Instances  from  Resource  Models   •  Object  Persistence   •  Data  persistence  and  storage  
  • 22. MQTT  Observer   •  Publish,  Subscribe,  or  Pub+Sub  using  the   mqYObserver  resource  class   •  Prototype  opens  a  connec7on  to  a  specified   broker  for  each  endpoint     Observers.create({'resourceName': 'mqttTestObserver',! ! ! ! ! ! 'resourceClass': 'mqttObserver',! 'connection': 'smartobjectservice.com',! 'pubTopic': ’sealevel_pressure',! 'subTopic': None,! 'QoS': 0,! 'keepAlive': 60 })!
  • 23. MQTT  Observer   MQTT  Broker   REST  Endpoint   ObservableProperty   mqYObserver   PUT   GET   Publish  from   data  producer   Publish  From   REST  API   Publish  to  Other   Subscribers   SUB   Publish  to   REST  API     Connects  REST  Resource  to  MQTT  Topic   Publish  and  Subscribe  
  • 24. MQTT  Observer   MQTT  Broker   REST  Endpoint   ObservableProperty   mqYObserver   PUT   GET   Publish  from   data  producer   Publish  From   REST  API   Publish  to  Other   Subscribers   SUB   Publish  to   REST  API     Publisher     Publishes  REST  Resource  updates  to  the  broker  
  • 25. MQTT  Observer   MQTT  Broker   REST  Endpoint   ObservableProperty   mqYObserver   PUT   GET   Publish  from   data  producer   Publish  From   REST  API   Publish  to  Other   Subscribers   SUB   Publish  to   REST  API     Subscriber     Makes  last  published  data  available  at  the  REST  endpoint  
  • 26. MQTT  Observer   MQTT  Broker   REST  Endpoint   ObservableProperty   mqYObserver   PUT   GET   Publish  from   data  producer   Publish  From   REST  API   Publish  to  Other   Subscribers   SUB   Publish  to   REST  API     Pub+Sub   Repeats  data  updates  in  both  direc7ons  
  • 27. MQTT  Bridge  to  mul7ple  REST  endpoints   MQTT  Broker   REST  Endpoint   ObservableProperty   mqYObserver   PUT   GET   Publish  from   data  producer   Publish  to  Other   Subscribers   REST  Endpoint   ObservableProperty   mqYObserver   PUT   GET