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.
3. Switcher
QC
Monitor
Clock
Graphics
Server
Video
Servers
Video
Rou;ng
Tape
Deck
Comms
Monitoring
Scheduling
4. • 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
5. • 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
6. • 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)
8. • 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
9. 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
10. • 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
11. • 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
12. 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
14. Internet
NAS
MAM
Online
IP, Network, & SDI Infrastructure
WAN/DMZ
Remote
Vendor 1 Vendor 2 Vendor 3
Control LANArchive
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
15. 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