New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
How UK technology is helping to make the planet smarter
1. Connecting a Smarter Planet
How UK technology is helping to
make the planet smarter
Andy Piper MBCS CITP
http://andypiper.co.uk
http://twitter.com/andypiper
2. Hello
This talk will contain:
Some (corporate) history
Some (British) technology
Some lines of code (!)
Some (exciting) ideas
8. History of IBM in the UK at Hursley Park
(pre-IBM) Vickers Aviation developed the Spitfire at Hursley
IBM moved to Hursley in 1958
Developed System/360 Model 40 in 1964
Queen’s Awards for Storage Subsystem and CICS; MacRobert Award for
WebSphere MQ
IBM Java, Service Registry, Business Events… a key set of technologies used in
businesses today, and some emerging new ones!
8
12. A world filling with devices
Pop Quiz
Grains grown each year 1,000,000,000,000,000 (1 quadrillion)
Crawling the earth 100,000,000,000,000,000 (100 quadrillion)
Manufactured each year 10,000,000,000,000,000,000 (10 quintillion)
1 billion transistors
for every one of us
13. The Internet of Things
Many smart devices
instrument our
world today
Interconnecting these
smart devices creates a
Central Nervous System
14. Building a Smarter Planet
+ + =
An opportunity to think and act in new ways—
economically, socially and technically.
15. Connecting the edges
Connectivity for Applications Head Offices,
Data centres
Transport WebSphere MQ Cloud Computing
REST/HTTP Intelligent
WS*
Mission-Critical Connectivity &
Intelligence
Regional Offices Messages WebSphere MQ
Stores, Outlets
Files WebSphere MQ File Transfer Edition
Interconnected
Transform, WebSphere Message Broker
Enrich, WebSphere ESB
Mediate DataPower
WebSphere Sensor Events
Instrumented
Catalog WebSphere Service Registry &
Repository
Connectivity for Smart Devices
Remote Systems and Devices Intelligence WebSphere Business Events
Transport MQ Telemetry Cognos. ILOG, SPSS
HTTP InfoSphere Streams
Multicast
Other InfoSphere and Tivoli products
Embedded Controllers Sensors Actuators
Filtering of duplicate read events, Store- Power meters, weather data Tag printers, status lights, Load
based HVAC & lighting controls, SCADA sensors, pressure, volume, generation, HVAC and lighting,
Industrial Network Gateways (SCADA) RFID readers, Motion detectors… Valves, switches and pumps…
17. The Connectivity Challenge
The challenges of industrial control systems
(supervisory control and data acquisition, or
SCADA) well-suited to a messaging solution
Loose coupling, multi-protocol, separation
of concerns...
Connectivity to remote field systems could be
costly
Networks could be unreliable (satellite, GPRS,
mesh, proprietary protocols)
Conditions could be constrained (environment,
hardware, power)
Thousands of sensors or devices may be
involved in monitoring a system
18. Connectivity for M2M with MQTT
■ MQ Telemetry Transport (MQTT) is designed
with the following primary intentions:
– Publish/subscribe messaging paradigm as
required by the majority of SCADA and sensor
applications.
– Minimise the on-the-wire footprint.
– Expect and cater for frequent network
disruption, cope with slow and poor quality
networks: built for low bandwidth, high
latency, unreliable, high cost networks
– Expect that client applications may have very
limited processing resources available.
– Provide traditional messaging qualities of
service where the environment allows
– Publish the protocol for ease of adoption by
device vendors and third-party client
software.
19. Show us some code!
public void sendAMessage() throws MqttException {
MqttProperties mqttProps = new MqttProperties(); Create a connection using the
mqttProps.setCleanStart( true ); connection factory, this time for a
MqttClient client = MqttClientFactory.INSTANCE. clean starting client
createMqttClient("testClient",
“tcp://localhost:1883”, mqttProps);
client.registerCallback(this);
Register the class as a listener and
client.connect(); connect to the broker
client.publish(“abc/123”,
new MqttPayload((“Hello World!”).getBytes(),0),
(byte) 2, false);
Publish a message to the
client.disconnect();
given topic and disconnect
}
public void publishArrived(String topicName,
MqttPayload payload,
byte qos, boolean retained,
On receipt of a publication, simply print
int msgId) {
out a message on the console to say we
System.out.println(“Got it!”); received it
}
21. Data-centricity
MQTT is agnostic of data content and transfers
simple byte arrays, making drip-feeds of updating
information trivial.
HTTP is (basically) document-centric.
22. Simplicity
MQTT has few methods (publish/subscribe/
unsubscribe) and is quick to learn.
HTTP can be complex (although it is often well-
understood) - there are a multitude of return codes
and methods.
REST is a great principle but not always the best for
simple data applications (POST/PUT/GET/DELETE?
er what?)
23. Light on the network
The smallest possible packet size for an MQTT
message is 2 bytes.
The protocol was optimised from the start for
unreliable, low-bandwidth, expensive, high-latency
networks.
HTTP is relatively verbose - lots of "chatter" in a
POST
24. Light on the network - example
HTTP - do an HTTP POST request to the MQTT - connect to a broker on localhost
resource '/post' on localhost. The post with client ID 'mqtt', publish to topic 'post' at
contains the text 'message'. qos 1 with payload 'message', disconnect
Size Data Size Data
Client → Server 66 bytes POST /post HTTP/1.1 Client → Server 20 bytes 101200064D51497364700302001E
00046D717474
Host: localhost
Connect
Content-Length: 7
Server → Client 4 bytes 20020000
message
Connack
Client → Server 17 bytes 3A0F0004706F737400016D657373
616765
Publish
Server → Client 75 bytes HTTP/1.1 200 OK Server → Client 4 bytes 40020001
Date: Mon, 17 Jan 2011 16:53:20 GMT Puback
Content-Length: 0
Client → Server 2 bytes E000
Disonnect
Total 141 bytes Total 47 bytes
100 x HTTP POST requests to the resource '/ 100 x MQTT publications with payload
post' containing the text 'message'. Stateless, 'message', connection open
100 complete flows required → 24+(21x100)+2 = 2126 bytes
→ 141x100 = 14100 bytes
25. Easy distribution of data
MQTT distributes 1-to-none, 1-to-1 or 1-to-n via the
publish/subscribe mechanism
→ very efficient
HTTP is point-to-point (can be mediated/clustered
but no distribution mechanism). To distribute to
multiple receivers a large number of POSTs may be
required.
26. Lightweight Stack (CPU/Mem)
MQTT has been trivially implemented on tiny to
larger platforms in very small libraries
[IBM ref implementation = ~80Kb for full broker]
HTTP (often with associated XML or JSON libraries
for SOAP and REST etc) can be relatively large on
top of OS network libraries
Plus... even if the client is small, consider whether it
is really necessary to run an HTTP server on every
device
27. Variable Quality-of-Service
MQTT supports fire-and-forget or fire-and-confirm
(aka QoS 0/1/2)
HTTP has no retry / confirmation / attempt at once-
only delivery. It is basically brittle, i.e. retry needs to
be written in at the application level. Applications
must also handle timeouts.
29. Something this useful - should be open
Client APIs in ~12 languages, for Arduino, mBed etc.
Specification published royalty-free in 2010
IBM and Eurotech open call for Standardisation
participation...
30. Going Open Source - Eclipse Paho
The scope of the Paho project is to provide open source implementations
of open and standard messaging protocols that support current and
emerging requirements of M2M integration with Web and Enterprise
middleware and applications. It will include client implementations
for use on embedded platforms along with corresponding server
support as determined by the community.
In order for M2M device and client developers to integrate, develop and
test messaging components end-to-end, Paho will address the
development of frameworks and sample code needed to support
testing and development of end-to-end device connectivity with a
server. The project will make these available in an Eclipse M2M server
“sandbox”, as recommended by the Eclipse M2M Industry Working
Group.
32. Smarter Healthcare
Medical organization created a remote pace-maker monitoring
solution to provide better patient care
Physicians needed better
monitoring of cardiac patients
Improve efficiency of checkups
Meet healthcare data capture
standards
Enables higher level of patient care and peace of mind
Improves administrative efficiency and maintenance
Helps conform to standards and ease integration of data
33. Smarter Energy
Utility company developing an Intelligent Utility Network
offering for optimizing load on electricity grids
Needs robust middleware
technology to connect to remote
smart meters
Needs to be able to rapidly scale
solution nationally
Able to offer daily energy savings of 15-20%
Enables utilities to reduce peaks and avoid punitive charges
Helps save electricity through better peak load management
39. HVAC Control Energy Monitoring
Stock Checks Chemical Trickle
POS Detection Feed
Field Force Automation Asset Management
• Sales Force Automation
And Monitoring
• Field Service Engineers
• Service Delivery
RFID
Pipeline MonitoringParking
Fire Sensors Tickets
and Control
Flood Defence Kiosks
Warning Vehicle Telematics
• Cars / Military – Diagnostics and Prognostics
Home Automation • Pay As You Drive Insurance
40. Useful links
MQTT – The Smarter Planet Protocol (blog post)
http://andypiper.co.uk/2010/08/05/mqtt-the-smarter-planet-protocol/
MQTT 3.1 specification – IBM developerWorks
http://www.ibm.com/developerworks/webservices/library/ws-mqtt/index.html
MQTT Community
http://mqtt.org
Mosquitto – an example MQTT broker
http://mosquitto.org
http://ibm100.com