the control of media & devices in an internet of things (iot)
DESCRIPTION
The “Internet of Things” (IoT) refers to an Internet like structure consisting of uniquely identified objects that expose services. These services are typically designed using traditional Object Oriented methodologies that encourage the coalescence of features into a single consolidated endpoint. This may work well for homogeneous environments but can be problematic for heterogeneous environments, such as the Internet of Things, where objects may be modular and change their behavior dynamically. To better represent objects within the Internet of Things each endpoint should implement a single, concise feature, or capability of that object. The representation of capabilities in this fashion requires a means by which endpoint consumers can identify the list of capabilities exposed by an object. Thus adding an additional requirement to the IoT, requiring not only the unique identification of objects, but also the unique identification of the capabilities that those objects expose. Capabilities-based programming addresses the "Basket of Remotes" problem posed by the IoT by allowing applications to be developed against a set of features (Capabilities) as opposed to a specific object type. Elevating features to first-class citizen status (capabilities) allows applications to work with new objects without forehand knowledge of the object type and allows the object to change behavior dynamically at runtime without negatively impacting the application.TRANSCRIPT
Steven Posick
Controlling Objects in an Internet of Things (IoT)
Switcher
QC Monitor
Clock
Graphics Server
Video Servers
Video Rou;ng
Tape Deck
Comms
Monitoring
Scheduling
• Internet of Things (IoT) – An Internet like structure of uniquely iden;fied objects • What is an Object?
• Device – SoLware or firmware that represents a physical piece of hardware
• Service – A soLware service (e.g., SOAP and RESTful Web Services, EJB, Corba Object)
• Data Object – Related data bundled into a single Object or En;ty • Cannot perform direct ac;on, but can be acted upon by services and devices
• Iden;ty • Iden;ty is the characteris;c of an Object that dis;nguishes it from all other Objects
• Each Object is uniquely iden;fied (e.g., UUID, URI, Fully Qualified Domain Name, Namespace)
• Iden;ty does NOT indicate locality or accessibility (Where an Object is and if it can be accessed)
• Iden;ty does not describe func;onality, but it can indirectly indicate func;onality
• The IoT is a Conceptual extension of the Internet • Numerous implementa;ons, using many technologies, wired and wireless
• Internet Protocol may be used for transport & Iden;ty, but is only one facet of the IoT
• Numerous wireless protocols have been developed for small devices, such as sensors
• Basket of Remotes – Many Objects, how do we control them all?
• Object Discovery – The Automa;c Discovery of Objects over the Network • DNS Based Service Discovery (DNS-‐SD) [IETF ZeroConf & Apple’s Bonjour]
• SMPTE ST2071-‐3 Media Device Control -‐ Discovery
• Simple Service Discovery Protocol (SSDP) [UPnP]
• Proprietary Protocols using Broadcast or Mul;cast (Too common, usually poorly done)
• Object Self DescripJon – A form of Introspec;on • Provides a means by which an Object can describe its Capabili;es to others
• CapabiliJes • Uniquely Iden;fied Features
• Most powerful when defined as small concise features. (e.g., Play, Stop, Pause, Load, Eject) • Can be tradi;onal service / interface defini;ons or exis;ng defini;ons
• The size and scope of the Capability depends upon the need and what makes sense
• Feature Discovery and Object Self-‐DescripJon • Provides a means by which Objects can describe their behavior (Introspec;on)
• A Capability is a Uniquely IdenJfied Feature exposed as an Endpoint
• Most Powerful when defined as small concise features (e.g., Play, Stop, Pause, Shuale) • Allows Object behavior to be described using well-‐known, predefined interfaces
• Lego™ blocks for Programming (Object defini;on, Interface defini;ons, & SOA) • Implementers can define their own Capabili;es
• New Capabili;es can be added sta;cally or dynamically without undesired results • Without impac;ng the binary / network signature of the Object, preserving interoperability
• Clients work with CapabiliJes they understand and ignore the ones they don’t
• Why? • Tradi;onal OOP/OOD Objects are comprised of many features consolidated into a single view
• Object inheritance in strongly typed OOD environments breaks network compa;bility, changes the binary / network signature of the Object
• Clients must be updated, even those only suppor;ng the original behavior (e.g., Corba, DCOM, JRMP)
Develop to the Behavior, NOT the Object Type
• Capability Interface Repository/Registry • DNS for SoVware Interfaces
• Requires Unique Iden;ty and Namespace for each Interface
• There can be SDO Registries and Vendor Specific Registries
• Allows Plug & Play for Development • Use Service Discovery to find devices and services to develop for • Interrogate device or service for its Capabili;es • Use Capability Repository to get programma;c ar;facts for each Capability
• Documenta;on
• WSDL, WSDL Equivalent, and / or Binary Ar;facts
• WADL, YAML, Relax NG
public interface Thermostat { public enum MODE {
HEAT, COOL, AUTO; }
public float getTemperature() throws UnsupportedOperationException; public void setTemperature(float temperature) throws UnsupportedOperationException;
public MODE getMode() throws UnsupportedOperationException;
public void setMode(MODE mode) throws UnsupportedOperationException; public int[] getZones() throws UnsupportedOperationException; public int getZone() throws UnsupportedOperationException;
public void setZone(int zone) throws UnsupportedOperationException;
public String[] getZoneNames() throws UnsupportedOperationException; }
public interface TemperatureSupport { public float getTemperature();
} public interface SetTemperatureSupport {
public void setTemperature(float temperature);
} public interface ZoneSupport {
public int[] getZones();
public int getZone(); public String[] getZoneNames();
public void setZone(int zone);
} public interface SetZoneSupport {
public void setZoneName(String name); }
public interface ModeSupport {
public enum MODE { HEAT, COOL, AUTO;
}
public MODE getMode(); }
public interface SetModeSupport {
public void setMode(MODE mode); }
Tradi;onal Capability-‐based Design
• Object Discovery through Query • Object based Query Language defined in SMPTE ST2071-‐1 & 2
• Objects can be Queried
• By the CapabiliJes Exposed (Features Implemented) • By A[ributes Assigned to the Object • By RelaJonships to other Objects • By LocaJon • By Workflow
• Objects can be Queried over the network with a SQL-‐like clause • Devices • Services • Media
• Standard Operators • NOT – Performs a Boolean nega;on, inver;ng the input
• OR – Performs a Boolean comparison and is TRUE if any input is TRUE
• AND – Performs a Boolean comparison and is TRUE if all inputs are TRUE
• EQUALS – Performs an equality check, TRUE if the inputs are equal
• MATCHES – Performs a POSIX Regular Expression string match (IEEE Std. 1003.1)
• LESS_THAN – Comparison, returning TRUE if one input is less than the other
• GREATER_THAN – Comparison, returning TRUE if one input is greater than the other
• PAGE – Pagina;on, allowing for the star;ng record and number of records to be returned
• SORT_BY – Sort by ascending or descending order, depends on fields natural ordering
• Domain Specific Operators • CONTAINS – Mediacentric contains, returns TRUE for media containing the input frames
• IMPLEMENTS – Capability-‐centric, returns TRUE for objects implemen;ng the Capabili;es
public class FindMedia { public static void main(String[] args) { String query = "UMN[\"type\"] == \"media_instance\" AND Name == \" + args[0] + \" "sort by(created desc) page(0,50)" MediaList media = MDCClient.searchForMedia(query); } }
public class FindDevices { public static void main(String[] args) {
String query = "implements(\”urn:smpte:ucn:media_loader_v1\", \"urn:smpte:ucn:player_v1\", " + "\"urn:smpte:ucn:acquirable_v1\", \"urn:smpte:ucn:lockable_v1\") AND Attributes[\"Room\"] == \"PCR\” " +
“sort by UDN.Namespace, UDN.Name”;
DeviceInformation[] infos = MDCClient.searchForDevices(query);
}
}
Finding Media within a System, Network, Facility, or over the Internet
Finding Devices within a System, Network, Facility, or over the Internet
Internet
NAS
MAM
Online
SDI Infrastructure
WAN/DMZ
Remote
Vendor 1 Vendor 2 Vendor 3
Control LAN Archive Transcoder 1
Transcoder 2
Transcoder 3
Essence Control & Data Essence, Control, & Data
Internet
NAS
MAM
Online
IP, Network, & SDI Infrastructure
WAN/DMZ
Remote
Vendor 1 Vendor 2 Vendor 3
Control LAN Archive Transcoder 1
Transcoder 2
Transcoder 3
Essence Control & Data Essence, Control, & Data
QoS
QoS
IoT
A Standard Wire Protocol Makes QoS Possible!
Switch
Switch
Essence
Trunks
Control
Internet
Hardware AbstracJon Layer SMPTE ST2071 Discovery
Workflow & OrchestraJon
Device Service
IoT Standard Capability Interfaces
Clients
ST2071 Device/Service/Media Discovery & Configura;on to Find Internet Services
ST2071 Device/Service/Media Discovery & Configura;on to Find Device Services
ST2071 Device/Service/Media Discovery & Configura;on to Find Device Services
Services Media Repository
Bus
ST2071 Media Directory Capability Interface
Directory -‐ An organiza;onal unit, or container, used to organize folders and files into a hierarchical structure. Repository – A receptacle or place where things are deposited, stored, or offered for sale
Data describing Media registered or deposited
Represents the Media and its organiza;on as it is.
A window into the system
Signals and Sanity check to register or deposit Media
Signals
Sanity
ConfiguraJon & State Store
Media Directory
Media Directory