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