Web of Things - Connecting
People and Objects on the
           Web
    Workshop @ SXSW10, Austin, 14 March 2010
         Vlad Trifa & Dominique Guinard
          http://www.webofthings.com
Virtual doggy bag online:



     http://www.webofthings.com/sxsw



      Disclaimer: We are going to demo
  undergoing research, so please bear with us.


                    WoT@SXSW10
Electronic things are invading us...
       •   Increasingly powerful CPUs
       •   Sensors & actuators
       •   Web connectivity
           •   Cheap
           •   Ubiquitous




                            WoT@SXSW10
Translation for geeks:
An infinite playground.


YAAAY!
Problem is...


           How to create easily interactive
          applications that combine various
             heterogeneous devices???

                                           That is, without a
•   Tons of different devices:             PhD in Computer
                                                Science
     •   Capabilities/functions
     •   Applications/middlewares
     •   Networking protocols


                              WoT@SXSW10
We need an universal protocol
that is:

simple, lightweight, loosely-
coupled, scalable, flexible

and hopefully... standard
Sounds like the
Web
So let’s leverage it!

       Use Web standards to develop applications for
                   networked devices.
            HTTP, HTML, XML, JSON, RSS, ATOM, MIME,...



   •   TCP/IP & Web granted, WiFi routers ubiquitous
   •   Development of simple Web apps: cheap & quick
   •   Integrate real-world data on the Web
   •   Get features of the Web for free

                          WoT@SXSW10
RESTifying
Things
The Web of Things in a nutshell




  3 steps to create a basic Web of Things:
  •   Connecting things to the Internet (IPv4/IPv6)
  •   Embedded Web servers
  •   Make devices part of the Web (using REST)
      •   Model their function as RESTful resources




                            WoT@SXSW10
RESTful SunSPOTs


                   •     Properties and functions are
                         RESTful resources
                   •     Devices/services become Web
                         resources
                        •   URI-addressed
                        •   Links between them (hateoas)
                        •   Different representations (content
                            negotiation)
                        •   Uniform interface (HTTP verbs,
                            status codes)



                       WoT@SXSW10
Sunspots resources modeling


•   Services on embedded devices are adapted for resource oriented
    architectures
•   root: www.spotshost.com
•   spots list: www.spotshost.com/sunspots
•   spot #1: www.spotshost.com/sunspots/1
•   sensors list: www.spotshost.com/sunspots/1/sensors
•   LEDs : www.spotshost.com/sunspots/1/actuators/leds
•   LED #1 : www.spotshost.com/sunspots/1/actuators/leds/led1




                               WoT@SXSW10
Representations


•   XHTML ideal for browsing
http://webofthings.com/spots


•   JSON ideal for parsing (& lightweight for device)
http://webofthings.com/spots.json




•   XML ideal for business integration
http://webofthings.com/spots.xml


                               WoT@SXSW10
Uniform interface


 •   HTTP verbs
     •   GET: current temperature
     •   POST: add a timer
     •   PUT: turn a device on/off
     •   DELETE: delete a timer on a device

 •   HTTP headers
     •   Accept header for MIME types
     •   Status codes (200 ok, 401 unauthorized)




                               WoT@SXSW10
DEMO - RESTful spots




 •   Browsing the spot manager
 •   Poster with content negotiation
 •   Javascript app to change LEDs colors




                        WoT@SXSW10
Gateways to
Web-enable things
Embedded REST is not always possible




                                       N on
                                          IP es
                                           vic
                                        de

                   WoT@SXSW10
For Wireless Sensor Networks (WSN)...




                    WoT@SXSW10
Example application: Energie Visible

              Web / Mobile 
               Interface              GET http://10.1.1.5:8080/energievisible/ploggs/all


           Gateway                    [{
         (IP:10.1.1.5)                  "deviceName": "ComputerAndScreen",
                                        "currentWatts": 50.52,
                                        "KWh": 5.835,
                                        "maxWattage": 100.56
                                      },
                                        "deviceName": "Fridge",
                         Sensors        "currentWatts": 86.28.,
                         (Ploggs)       "KWh": 4.421,
                                        "maxWattage": 288.92
                                      }, {...}]
                          Electric 
                         appliances




                                      WoT@SXSW10
DEMO - Energie Visible




                                More? Webofthings.com/
                                energievisible

                   WoT@SXSW10
Devices gone
Web
Devices gone
Social
SAC: Social Access Controller



•   Access Control Lists
    not suited for real-
    world sharing
•   Leverage social
    networks for sharing
    devices
•   OAuth for delegated
    authentication


                           WoT@SXSW10
FAT: Friends and Things




   •   GWT application on top of SAC
   •   Log in using your social networks.
   •   Discover, share, and advertise devices with friends.
   •   Serves ATOM feeds of aggregated device data.




                         WoT@SXSW10
DEMO - FAT




                          More? tinyurl.com/
                          ygy2kwb
             WoT@SXSW10
The era of physical
Mashups
Real-world Web applications


                            REST                                               URL

                                                   REST



                                 I
                               AP




                                                                   Ja
                 P




                            ST




                                                                        va
              PH




                                                                           S
                            RE




                                                                          cr
                                                                            ipt
  [hCp://www.pachube.com]   [hCp://www.webothings.com/energievisible]          [hCp://www.clickscript.ch]




                                       WoT@SXSW10
Clickscript




• Javascript-based visual
    mashup editor
•   Firefox plugin/Web app
•   Based on DOJO/jQuery




                                          www.clickscript.ch

                             WoT@SXSW10
Clickscript component



	   csComponentContainer.push({
	   	   name : "cs.web.things.switch",
	   	   description : "switch on or off",
	   	   inputs : [{name: "IP",type: "cs.type.String"},
	   	   	         {name: "on/off",	type: "cs.type.Boolean"}],
	   	   outputs: [ ],
	   	   image: "web/things/plogg.png",
	   	   exec : function(state){
	   	   	    this.setAsync();
	   	   	    var ip = state.inputs.item(0).getValue();	
	   	   	    var aurl = "http://"+ip+":8082/EnergieVisible/ploggs/008098e7cb71/status.html";
	   	   	    var onoff = state.inputs.item(1).getValue() ? "on" : "off";
	   	   	    var component = this;




                                       WoT@SXSW10
jQuery HTTP request
	   $.ajax({
	   	    url: aurl,
	   	    type: "PUT",
	   	    data: ({status : onoff}),
	   	    success: function(html){
	   	       alert("status of Plogg : " +onoff);
	   	       component.finishAsync();
	   	    },
	   	    error: function(msg){
	   	 	 alert("Error on: "+aurl);
	   	    }
	   	 });
                                       Demo
                       WoT@SXSW10
Advanced
Web of Things
Err, what about eventing & streaming ?
The web wasn’t quite made for that...


And querying & search?
Here comes Real-Time Web


 •   Scalable pub/sub for devices is needed
     •   Many solutions (XMPP, etc....)
     •   None really integrate with the Web
     •   ATOM/ATOMpub is RESTful, but not push


 •   Push Web technologies
     •   Apply Web PUSH on devices
     •   Comet & Web hooks
     •   Bi-directional Web messaging (Websockets)




                               WoT@SXSW10
Device Discovery


 •   Devices serve semantic metadata: Microformats
     •   Similar to headers metadata for Web robots
     •   Machine-readable user manual
     •   Human-readable documentation

 •   MF describe
     •   Available resources and sub-resources
     •   Accepted methods and their input/output
     •   Keywords/tags
     •   Eventing, rules, channels



                               WoT@SXSW10
<span class="service">
    <span class="mftitle">Label: </span><span class="label"></span><br/>
    <span class="mftitle">Data Format: </span><span class="data-format">Integer</
span><br/>
    <span class="mftitle">Operation: </span><span class="operation"><br/>
    <span class="mftitle">Method: </span><span class="method">POST</span><br/>
    <span class="mftitle">Address: </span><span class="address">http://spotmanager:
8081/sunspots/Core2TestSpot/actuators/leds/led1</span><br/>
    <span class="mftitle">Input: </span><span class="input">Red</span><br/>
    <span class="mftitle">Output: </span><span class="output">The updated Resource</
span><br/>
</span>




                                   WoT@SXSW10
Does that scale?
Hierarchic gateways binding: InfraWoT



•   Gateways find and integrate mf-enabled devices
•   Gateways bind to each other and form geographical
    hierarchies
    http://europe.eu/switzerland/zurich/eth/building4
    http://usa.com/texas/austin/sxsw/ballroom/e

•   Based on OSGi and RESTlet




                        WoT@SXSW10
DEMO - InfraWoT




                  WoT@SXSW10
Enterprise
Web of Things
Browsable EPC Network
                                               Tag



                                          EPC

 •
                                       standardized
     Standards for Supply Chain          identifiers


     Management
 •   EPC Network set of RFID
     standards                                  Reader


 •   Global (closed?) network
 •   EPCIS is the information server    Reader
                                       Protocol

 •
                                       Standard
     WS-* interface
 •   RESTful EPCIS
                                                  EPCIS




                         WoT@SXSW10
RESTful EPCIS in a Nutshell

 •   On top of Fosstrak EPCIS
 •   Based on Jersey
 •   Apache Abdera for Feeds
 •   Faster than the original EPCIS (Duh!)




                          WoT@SXSW10
Widgets on top!


 •   Business intelligence
     dashboard
 •   Implemented in
     Javascript (GWT)
 •   Integrating loads of
     Web resources:
     •   Google Viz/Maps/Cal
     •   Wikipedia
     •   Twitter, etc.



                                            Demo
                               WoT@SXSW10
Take home notes


 •   It’s time for devices to join the Web
 •   Tradeoff features/performance
 •   Huge opportunities for the Web of Things


 •   Tools & best practices for Web-enabled things
     are needed
 •   Web developers need to apply their skills to
     build a programmable world



                        WoT@SXSW10
Thanks for your attention !




www.webofthings.com

Web of Things - Connecting People and Objects on the Web

  • 1.
    Web of Things- Connecting People and Objects on the Web Workshop @ SXSW10, Austin, 14 March 2010 Vlad Trifa & Dominique Guinard http://www.webofthings.com
  • 2.
    Virtual doggy bagonline: http://www.webofthings.com/sxsw Disclaimer: We are going to demo undergoing research, so please bear with us. WoT@SXSW10
  • 3.
    Electronic things areinvading us... • Increasingly powerful CPUs • Sensors & actuators • Web connectivity • Cheap • Ubiquitous WoT@SXSW10
  • 4.
    Translation for geeks: Aninfinite playground. YAAAY!
  • 5.
    Problem is... How to create easily interactive applications that combine various heterogeneous devices??? That is, without a • Tons of different devices: PhD in Computer Science • Capabilities/functions • Applications/middlewares • Networking protocols WoT@SXSW10
  • 6.
    We need anuniversal protocol that is: simple, lightweight, loosely- coupled, scalable, flexible and hopefully... standard
  • 7.
  • 8.
    So let’s leverageit! Use Web standards to develop applications for networked devices. HTTP, HTML, XML, JSON, RSS, ATOM, MIME,... • TCP/IP & Web granted, WiFi routers ubiquitous • Development of simple Web apps: cheap & quick • Integrate real-world data on the Web • Get features of the Web for free WoT@SXSW10
  • 9.
  • 10.
    The Web ofThings in a nutshell 3 steps to create a basic Web of Things: • Connecting things to the Internet (IPv4/IPv6) • Embedded Web servers • Make devices part of the Web (using REST) • Model their function as RESTful resources WoT@SXSW10
  • 11.
    RESTful SunSPOTs • Properties and functions are RESTful resources • Devices/services become Web resources • URI-addressed • Links between them (hateoas) • Different representations (content negotiation) • Uniform interface (HTTP verbs, status codes) WoT@SXSW10
  • 12.
    Sunspots resources modeling • Services on embedded devices are adapted for resource oriented architectures • root: www.spotshost.com • spots list: www.spotshost.com/sunspots • spot #1: www.spotshost.com/sunspots/1 • sensors list: www.spotshost.com/sunspots/1/sensors • LEDs : www.spotshost.com/sunspots/1/actuators/leds • LED #1 : www.spotshost.com/sunspots/1/actuators/leds/led1 WoT@SXSW10
  • 13.
    Representations • XHTML ideal for browsing http://webofthings.com/spots • JSON ideal for parsing (& lightweight for device) http://webofthings.com/spots.json • XML ideal for business integration http://webofthings.com/spots.xml WoT@SXSW10
  • 14.
    Uniform interface • HTTP verbs • GET: current temperature • POST: add a timer • PUT: turn a device on/off • DELETE: delete a timer on a device • HTTP headers • Accept header for MIME types • Status codes (200 ok, 401 unauthorized) WoT@SXSW10
  • 15.
    DEMO - RESTfulspots • Browsing the spot manager • Poster with content negotiation • Javascript app to change LEDs colors WoT@SXSW10
  • 16.
  • 17.
    Embedded REST isnot always possible N on IP es vic de WoT@SXSW10
  • 18.
    For Wireless SensorNetworks (WSN)... WoT@SXSW10
  • 19.
    Example application: EnergieVisible Web / Mobile  Interface GET http://10.1.1.5:8080/energievisible/ploggs/all Gateway  [{ (IP:10.1.1.5) "deviceName": "ComputerAndScreen", "currentWatts": 50.52, "KWh": 5.835, "maxWattage": 100.56 }, "deviceName": "Fridge", Sensors "currentWatts": 86.28., (Ploggs) "KWh": 4.421, "maxWattage": 288.92 }, {...}] Electric  appliances WoT@SXSW10
  • 20.
    DEMO - EnergieVisible More? Webofthings.com/ energievisible WoT@SXSW10
  • 21.
  • 22.
  • 23.
    SAC: Social AccessController • Access Control Lists not suited for real- world sharing • Leverage social networks for sharing devices • OAuth for delegated authentication WoT@SXSW10
  • 24.
    FAT: Friends andThings • GWT application on top of SAC • Log in using your social networks. • Discover, share, and advertise devices with friends. • Serves ATOM feeds of aggregated device data. WoT@SXSW10
  • 25.
    DEMO - FAT More? tinyurl.com/ ygy2kwb WoT@SXSW10
  • 26.
    The era ofphysical Mashups
  • 27.
    Real-world Web applications REST URL REST I AP Ja P ST va PH S RE cr ipt [hCp://www.pachube.com] [hCp://www.webothings.com/energievisible] [hCp://www.clickscript.ch] WoT@SXSW10
  • 28.
    Clickscript • Javascript-based visual mashup editor • Firefox plugin/Web app • Based on DOJO/jQuery www.clickscript.ch WoT@SXSW10
  • 29.
    Clickscript component csComponentContainer.push({ name : "cs.web.things.switch", description : "switch on or off", inputs : [{name: "IP",type: "cs.type.String"}, {name: "on/off", type: "cs.type.Boolean"}], outputs: [ ], image: "web/things/plogg.png", exec : function(state){ this.setAsync(); var ip = state.inputs.item(0).getValue(); var aurl = "http://"+ip+":8082/EnergieVisible/ploggs/008098e7cb71/status.html"; var onoff = state.inputs.item(1).getValue() ? "on" : "off"; var component = this; WoT@SXSW10
  • 30.
    jQuery HTTP request $.ajax({ url: aurl, type: "PUT", data: ({status : onoff}), success: function(html){ alert("status of Plogg : " +onoff); component.finishAsync(); }, error: function(msg){ alert("Error on: "+aurl); } }); Demo WoT@SXSW10
  • 31.
  • 32.
    Err, what abouteventing & streaming ? The web wasn’t quite made for that... And querying & search?
  • 33.
    Here comes Real-TimeWeb • Scalable pub/sub for devices is needed • Many solutions (XMPP, etc....) • None really integrate with the Web • ATOM/ATOMpub is RESTful, but not push • Push Web technologies • Apply Web PUSH on devices • Comet & Web hooks • Bi-directional Web messaging (Websockets) WoT@SXSW10
  • 34.
    Device Discovery • Devices serve semantic metadata: Microformats • Similar to headers metadata for Web robots • Machine-readable user manual • Human-readable documentation • MF describe • Available resources and sub-resources • Accepted methods and their input/output • Keywords/tags • Eventing, rules, channels WoT@SXSW10
  • 35.
    <span class="service"> <span class="mftitle">Label: </span><span class="label"></span><br/> <span class="mftitle">Data Format: </span><span class="data-format">Integer</ span><br/> <span class="mftitle">Operation: </span><span class="operation"><br/> <span class="mftitle">Method: </span><span class="method">POST</span><br/> <span class="mftitle">Address: </span><span class="address">http://spotmanager: 8081/sunspots/Core2TestSpot/actuators/leds/led1</span><br/> <span class="mftitle">Input: </span><span class="input">Red</span><br/> <span class="mftitle">Output: </span><span class="output">The updated Resource</ span><br/> </span> WoT@SXSW10
  • 36.
  • 37.
    Hierarchic gateways binding:InfraWoT • Gateways find and integrate mf-enabled devices • Gateways bind to each other and form geographical hierarchies http://europe.eu/switzerland/zurich/eth/building4 http://usa.com/texas/austin/sxsw/ballroom/e • Based on OSGi and RESTlet WoT@SXSW10
  • 38.
    DEMO - InfraWoT WoT@SXSW10
  • 39.
  • 40.
    Browsable EPC Network Tag EPC • standardized Standards for Supply Chain identifiers Management • EPC Network set of RFID standards Reader • Global (closed?) network • EPCIS is the information server Reader Protocol • Standard WS-* interface • RESTful EPCIS EPCIS WoT@SXSW10
  • 41.
    RESTful EPCIS ina Nutshell • On top of Fosstrak EPCIS • Based on Jersey • Apache Abdera for Feeds • Faster than the original EPCIS (Duh!) WoT@SXSW10
  • 42.
    Widgets on top! • Business intelligence dashboard • Implemented in Javascript (GWT) • Integrating loads of Web resources: • Google Viz/Maps/Cal • Wikipedia • Twitter, etc. Demo WoT@SXSW10
  • 43.
    Take home notes • It’s time for devices to join the Web • Tradeoff features/performance • Huge opportunities for the Web of Things • Tools & best practices for Web-enabled things are needed • Web developers need to apply their skills to build a programmable world WoT@SXSW10
  • 44.
    Thanks for yourattention ! www.webofthings.com