3. About Me
• Hackerpreneur
• Founder of KidoZen
• Founder of Tellago
• Board member: Mobiquity,Electric Cloud
• Advisor: Microsoft, Oracle
• Angel Investor
• Speaker, Author
http://jrodthoughts.com
https://twitter.com/jrdothoughts
4. Agenda
• A quick look at the IOT market
• A platform as a service for IOT
• Centralized IOT capabilities
• Decentralized IOT capabilities
• Foundational models of an IOT PaaS:
Cloudfoundry, Block Chain
• The current IOT solution landscape
5. Key Takeaways
• IOT PaaS models
• How to implement IOT PaaS capabilities
• State of the IOT platform market
27. Centralized IOT PaaS Model
• Smart devices talk to a central hub
• The hub provides backend capabilities to smart devices
• The hub manages and controls the IOT topology
28. Decentralized IOT Capabilities
• Capabilities that operate without a central authority
• Smart devices host a version of the IOT PaaS
• Smart devices communicate autonomously without a central
authority
33. Protocol Hub
• Enabling devices to interact with
the IOT platform using
heterogenous protocols
• Provide consistent data/message
exchange experiences across
different devices
• Unify management, discovery and
monitoring interfaces across
different devices
34. Protocol Hub: How To Implement it?
• IOTivity protocol plugin model
• IOTLab protocol manager
• Apigee Zetta
PluginManager *m_pm = new PluginManager();
std::vector<Plugin> plugins = m_pm->getPlugins();
std::string name = plugins[0].getName();
std::string id = plugins[0].getId();
<?xml version="1.0" encoding="UTF-8"?> <plugin
id="oic.plugin.hue" version="0.1" name="hue plugin"
resourcetype="oic.light" provider-name="wallace">
<runtime library="libplugin-hue-light"
funcs="hue_light"/> </plugin>
37. Event Aggregation
• Execute queries over data streams
• Compose event queries
• Distribute query results to event
consumers
38. Event Aggregation: How To Implement it?
• Apache Storm
• AWS Kinesis
• Azure Event Hubs
• + Stream Analytics
• Siddhi (WSO2)
KinesisSpoutConfig(streamName, zookeeperEndpoint).
withZookeeperPrefix(zookeeperPrefix)
.withInitialPositionInStream(initialPositionInStream)
.withRegion(Regions.fromName(regionName));
builder.setSpout("Kinesis", spout, 2);
builder.setBolt("Parse", new
ParseReferrerBolt(),6).shuffleGrouping("Kinesis");
builder.setBolt("Count", new RollingCountBolt(5,
2,elasticCacheRedisEndpoint), 6).fieldsGrouping("Parse", new
Fields("referrer"));
..
StormSubmitter.submitTopology(topologyName, topoConf,
builder.createTopology());
39. Telemetry Data Storage
• Store data streams from smart
devices in an IOT topology
• Store the output of the event
aggregator service
• Optimize access to the data based
on time stamps
• Offline data storage
• Offline data syncing
40. Telemetry Data Storage: How To Implement
it?
• Time Series: OpenTSDB,
KairosDB, InfluxDB
• Offline: Couchbase +
Couchbase lite
• IBM Bluemix Time Series API
• InfluxDB
select percentile(value, 95) from response_times group by
time(5m)
into response_times.percentiles.5m.95
select mean(value), percentile(90, value) as percentile_90,
percentile(99, value) as percentile_99
from /^stats.*/ group by time(10m) into 10m.:series_name
41. Event Simulation
• Replay streams of data in an
IOT topology
• Store data streams that
simulate real world conditions
• Detect and troubleshoot error
conditions associated with
specific data streams
43. Event Notifications
• Distribute events from a
source to different devices in
an IOT topology
• Devices can subscribe to data
notification on specific topics
44. Event Notifications: How To Implement it?
• PubNub for IOT
• Parse Notifications for IOT
• MQTT
public class SubscribeCallback implements MqttCallback
{
@Override
public void connectionLost(Throwable cause) {}
@Override
public void messageArrived(MqttTopic topic, MqttMessage
message)
{
System.out.println("Message arrived. Topic: " +
topic.getName() + " Message: " + message.toString());
if ("home/LWT".equals(topic.getName()))
{
System.err.println("Sensor gone!");
}
}
@Override
public void deliveryComplete(MqttDeliveryToken token) {}
}
45. Real Time Data Visualizations
• Visualize IOT data streams real
time
• Provide map visualizations in
an IOT topology
• Integrate with big data
platforms
• Integrate with machine and
deep learning platforms
46. Real Time Data Visualizations: How To
Implement it?
• MetricsGraphicsJS
• Graphite
• Graphene
• Cube
• Plottly
• D3JS
d3.json('data/ufo-sightings.json', function(data) {
MG.data_graphic({
title: "UFO Sightings",
description: "Yearly UFO sightings from the year 1945 to 2010.",
data: data,
width: 650,
height: 150,
target: '#ufo-sightings',
x_accessor: 'year',
y_accessor: 'sightings',
markers: [{'year': 1964, 'label': '"The Creeping Terror" released'}]
})
})
47. Other Interesting Centralized IOT Capabilities
• Device authentication
• Access control
• Integration with enterprise systems
48. Adopting Centralized IOT PaaS Capabilities
• Standard services, different implementations
• Hosting environment agnostic
• Incorporating third party services
• Centralized management and governance
49. Cloudfoundry: A Foundational Model for a
Centralized IOT PaaS
• Open PaaS architecture
• Standard set of services
• Broker model to incorporate
new services
• CF web and infrastructure
services
• CF mobile services (Pivotal CF
mobile)
• CF IOT services??????????????
51. Peer to Peer Secure Messaging
• Exchanging messages between
smart devices in an IOT
topology
• Eliminate the need of a central
hub
• Secure, fully encrypted
messaging protocol
52. Peer to Peer Secure Messaging: How To
Implement it?
• Telehash var th = require("telehash");
th.generate(function(err, endpoint){
if(err) return console.log("endpoint generation failed",err);
// endpoint contains a `keys:{}`, `secrets:{}`, and
`hashname:"..."`
});
…...
var link = mesh.link(hashname);
// will be called when link status changes, err is undefined
when link is up
link.status(function(err){
if(err) {
console.log('disconnected',err);
return;
}
console.log('connected');
// can do any other link.* methods});
53. Contract Enforcement & Messaging Trust
• Express capabilities of a device
• Enforce actions between
devices
• Maintain a trusted ledger of
actions in an IOT network
58. Adopting Decentralized IOT PaaS Capabilities
• Smart devices will host an embedded version of the IOT PaaS
• Interactions between devices need to be trusted without a
central authority
• Standard way for devices to express capabilities
59. Block Chain: A Foundational Model for a
Decentralized IOT PaaS
• Decentralized consensus
• Trusted computing
• Proof of work
62. Enterprise Software Vendors
Vendors
• Oracle IOT Platform
• IBM IOT Foundation
• Citrix
Key Characteristics
• Closed source
• On-premise
• Proprietary technology
• Hard to manage and deploy
Key Scenarios
• Vertical IOT solutions built on the platform
• Integration with enterprise systems
63. Platforms as a Service
Vendors
• Azure Stream Analytics + Event Hubs
• AWS Kinesis
Key Characteristics
• Cloud based
• Standalone services for specific IOT capabilities
• Easy to use and manage
Key Scenarios
• IOT products or solutions that require a specific service or capability
64. API and Integration Platforms
Vendors
• Apigee IOT Link (Zetta)
• MuleSoft Anypoint
• Parse IOT
Key Characteristics
• Integrating APIs with IOT telemetry data
• Missing key elements of an IOT platform
• Relatively simple to use and setup
Key Scenarios
• Integrating IOT solutions with backend APIs
• Suppporting heterogeneous IOT transports and protocols
Integration PlatformsIntegration Platforms
65. Telecommunication Operators
Vendors
• Huawei Agile IOT Platform
• <Insert your favorite telco name here…> IOT Platform
Key Characteristics
• Deep integration with operator network
• Optimized for devices and solutions provided by the network operator
• Complex to use, lack of mainstream adoption
Key Scenarios
• Industry solutions built on the platform
• Network traffic optimization
66. Hardware and Networking Solutions
Vendors
• Cisco IOT solution suite
• F5 IOT networking solutions
Key Characteristics
• Focus on networking and security
• Integration with specific network hardware topology
Key Scenarios
• Enable an efficient network topology for IOT solutions
67. Mobile OS Vendors
Vendors
• Android Brillio
• Blackberry IOT platform
Key Characteristics
• Tight integration with a specific mobile OS
• Simple developer experience
• Optimized for wearable’s
Key Scenarios
• Developing solutions for wearables
• Interoperability between mobile apps and smart devices
69. Summary
• Industrial IOT will require a new type of platform
• IOT PaaS models will be the foundation to the industrial enterprise
• IOT PaaS models can be centralized or decentralized
• Cloudfoundry architectures can be a great enabler of centralized IOT
capabilities
• The block chain provides an incredible foundation for decetrnalized
IOT
• The IOT PaaS is evolving on different segments of the market