Interfacing the Internet of a Trillion Things

Slides:



Advertisements
Similar presentations
Three types of remote process invocation
Advertisements

Distributed Data Processing
Software Frameworks for Acquisition and Control European PhD – 2009 Horácio Fernandes.
Systems Architecture, Fourth Edition1 Internet and Distributed Application Services Chapter 13.
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 4 Web technologies: HTTP, CGI, PHP,Java applets)
DEC0905 Remote Control of Home Appliances ABSTRACT The objective of this project is to enable users to remotely control home appliances and systems over.
T Network Application Frameworks and XML Web Services and WSDL Sasu Tarkoma Based on slides by Pekka Nikander.
1 Apache. 2 Module - Apache ♦ Overview This module focuses on configuring and customizing Apache web server. Apache is a commonly used Hypertext Transfer.
Learningcomputer.com SQL Server 2008 Configuration Manager.
The group will focus on the design of a “smart” device. This includes researching the best method of design and fabricating the design to create a working.
1 Geospatial and Business Intelligence Jean-Sébastien Turcotte Executive VP San Francisco - April 2007 Streamlining web mapping applications.
Application Block Diagram III. SOFTWARE PLATFORM Figure above shows a network protocol stack for a computer that connects to an Ethernet network and.
Convert generic gUSE Portal into a science gateway Akos Balasko 02/07/
Moby Web Services Iván Párraga García MSc on Bioinformatics for Health Sciences May 2006.
Bluetooth on CE. Mid - Presentation Roman Zoltsman & Oren Haggai Group /2001 Instructor: Nir Borenshtein HSDSL Lab. Technion.
1 WWW. 2 World Wide Web Major application protocol used on the Internet Simple interface Two concepts –Point –Click.
CSIT 220 (Blum)1 Remote Procedure Calls Based on Chapter 38 in Computer Networks and Internets, Comer.
August 2003 At A Glance The IRC is a platform independent, extensible, and adaptive framework that provides robust, interactive, and distributed control.
1 G52IWS: Example Web-services Chris Greenhalgh. 2 Contents Software requirements AXIS web service run-time components Getting started with Jetty & AXIS.
Application Specific Module Tutorial Zoltán Farkas, Ákos Balaskó 03/27/
Copyright 2007, Information Builders. Slide 1 iWay Web Services and WebFOCUS Consumption Michael Florkowski Information Builders.
SOAP, Web Service, WSDL Week 14 Web site:
Microsoft Visual Basic 2015 CHAPTER ONE Introduction to Visual Basic 2015 Programming.
1 Team Skill 3 Defining the System Part 1: Use Case Modeling Noureddine Abbadeni Al-Ain University of Science and Technology College of Engineering and.
1 CASE Computer Aided Software Engineering. 2 What is CASE ? A good workshop for any craftsperson has three primary characteristics 1.A collection of.
2007/11/16 Dinh Trong Thuy RTLab
The Holmes Platform and Applications
Applications Active Web Documents Active Web Documents.
Computer & Network Security
.NET Omid Darroudi.
IoT Integration Patterns, REST, and CoAP
Working in the Forms Developer Environment
Managing The Internet of Things
Data Virtualization Demoette… Custom Java Procedures
Web Technologies IT230 Dr Mohamed Habib.
Web Programming Developing Web Applications including Servlets, and Web Services using NetBeans 6.5 with GlassFish.V3.
z/Ware 2.0 Technical Overview
HTTP Server Protocol Module :
Chapter 5 Remote Procedure Call
WEB SERVICES.
T Network Application Frameworks and XML Web Services and WSDL Sasu Tarkoma Based on slides by Pekka Nikander.
Play Framework: Introduction
PYTHON: AN INTRODUCTION
How SCADA Systems Work?.
Introduction to Programming the WWW I
Processes The most important processes used in Web-based systems and their internal organization.
Applied Cyber Infrastructure Concepts Fall 2017
Chapter 3: Windows7 Part 4.
How Data Flows through the Internet
The Internet of Things (IoT)
Anne Pratoomtong ECE734, Spring2002
CSE 451: Operating Systems Winter 2006 Module 20 Remote Procedure Call (RPC) Ed Lazowska Allen Center
Use of Mathematics using Technology (Maltlab)
CSE 451: Operating Systems Winter 2007 Module 20 Remote Procedure Call (RPC) Ed Lazowska Allen Center
CSE 451: Operating Systems Winter 2004 Module 19 Remote Procedure Call (RPC) Ed Lazowska Allen Center
Serpil TOK, Zeki BAYRAM. Eastern MediterraneanUniversity Famagusta
CSE 451: Operating Systems Spring 2012 Module 22 Remote Procedure Call (RPC) Ed Lazowska Allen Center
CSE 451: Operating Systems Autumn 2009 Module 21 Remote Procedure Call (RPC) Ed Lazowska Allen Center
Cloud-Enabling Technology
Distributed System using Web Services
Chapter 42 Web Services.
Outline System architecture Current work Experiments Next Steps
CSE 451: Operating Systems Autumn 2010 Module 21 Remote Procedure Call (RPC) Ed Lazowska Allen Center
Distributed System using Web Services
Consuming Web Services with 2E Generated Objects
OPeNDAP/Hyrax Interfaces
CSE 451: Operating Systems Messaging and Remote Procedure Call (RPC)
Web Application Development Using PHP
Exceptions and networking
DIBBs Brown Dog BDFiddle
Presentation transcript:

Interfacing the Internet of a Trillion Things Brad Campbell, Pat Pannuto, and Prabal Dutta University of Michigan SWEC’15 – April 13, 2015

TerraSwarm Research Center 2

Kevo: BLE controlled deadbolt

Implementing “When I enter my house, turn the AC on.” Kevo 25 ft Nest Clumsy, and two companies now know that I unlocked my door.

Finding a better way to create applications Peer-to-peer Device to device Local infrastructure-mediated Devices in a room

The cloud is not essential for many applications Direct device communication Local applications +

Initial setup, configuration, and authorization may require complex interactions and cloud interaction Nest Kevo …but device interactions likely do not.

But, in practice, connecting devices is not as simple as drawing arrows Devices use a wide range of protocols Unclear if standardization will happen https://entrepreneurshiptalk.wordpress.com/2014/01/29/the-internet-of-thing-protocol-stack-from-sensors-to-business-value/

Occupancy Event Service But how can we get to a point where it is? (At least at the application level) Example: control lighting based on occupancy Overhead lights “Room occupied” “Mark entered” “Mark left” “Room empty” Occupancy Event Service Mark’s Hue Bulb

One step further: allow many types of application creation tools Pictorially Voice commands “Siri, make sure my garage door is closed when no one is home” Automatic Learn and copy behaviors Based on logic expressions ( Person ∧ Nighttime ) ⇒ Lighting In code Write functions directly Others

Application Description Breakdown the high level application creation problem to enable progress on many layers NLP Inference Optimization Application Description Partitioning Discovery Devices

What layers have we been focusing on? Device Wrappers Application Specifications Implementation Platforms SB

Accessors (UofM Version) Device APIs and protocols are not standardized Goal: provide applications common device interfaces input output Device observe

Port Model for devices Why ports? input output Device observe Why ports? URLs: http://swarmbox.local/device001/ports/Power Pictorial representation Multiple devices can each have the same port

Ports are grouped into interfaces /onoff { ports: { Power: { direction: inout } /lighting/light { extends: [ /onoff ], ports: { Brightness: { direction: inout } /lighting/light Devices provide interfaces Allows for fanout applications: “Control all devices that implement /lighting/light” “Turn off all devices that implement /onoff” /onoff B P

Each device is described by a JavaScript file GenericPowerMeter.js: function init () { provide_interface('/onoff'); provide_interface('/sensor/powermeter'); } function Power (state) { rt.http.post(get_parameter('URL') + '/Power', state); function PowerMeter () { return rt.coap.get(get_parameter('URL') + '/Meter'); Designed to be easily written when adding a new device

That JavaScript file is parsed to generate a full description of the device { name: Generic Meter, ports: [ Power, PowerMeter, … ], parameters: [ URL, dependencies: { accessors: …, } Accessor JavaScript Compiler Designed to be easily parsed by any application that wants to use the accessor

Accessors operate inside of a runtime Execute the JavaScript accessor Provide the standard library for use inside of accessors import accessors meter = accessors.new(“GenericPowerMeter”) Meter.Power(true) p = Meter.PowerMeter() Node.js, Java, Python, web browser via RPC

Much more goes into how this works What does this get us? Model for devices Code for communicating with devices The ability to embed control inside of applications Much more goes into how this works Accessor Host Server Synchronous JavaScript More details at the poster session

Occupancy Event Service Using accessors to build an application that controls the lighting in a room Occupancy Event Service Match “Room occupied” “Mark entered” “Mark left” “Room empty” Power Overhead lights Events Power Mark’s Hue Bulb Manual Override Events

This application can be described in some common format { blocks: [ Occupancy Events, Match, Overhead Lights, Mark’s Hue ], connections: [ Occupancy -> Match, Match.1 -> Overhead, Match.2 -> Mark’s Hue ] } Accessors, logic blocks, etc. How they connect

Decoupling application description from implementation Pictorially, connecting blocks Natural language processing Automated, based on inferences Describing Applications Application Description SwarmBox Distributed computation Direct device-to-device Implementing Applications

Implementation 1: Cloudlet processing Occupancy Understanding BLE Sniffing SB Run Application Logic Control

Implementation 2: Direct device-to-device CoAP POST AC Relay Power Meter

There is much to be done Currently a manual process to adapt implementations Not sure what the application description should be Partitioning, optimization, correctness

Accessors as a way to interface things and build applications Port model for describing devices JavaScript + runtime for interacting with devices Ports help build an application description Application can be executed in a variety of ways Brad Campbell University of Michigan https://github.com/lab11/accessors