0% found this document useful (0 votes)
52 views54 pages

Chapter 1 IOT

The document provides an introduction to Internet of Things (IoT) including definitions of IoT, characteristics of IoT systems, common IoT applications, physical and logical design of IoT devices, and enabling technologies and protocols used in IoT including Ethernet, WiFi, Bluetooth, IPv4, IPv6, HTTP, CoAP and MQTT. It discusses the layers of an IoT system from the physical layer to the application layer and provides examples of protocols used at each layer for communication and data exchange in IoT networks and applications.

Uploaded by

zamirk kao
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
52 views54 pages

Chapter 1 IOT

The document provides an introduction to Internet of Things (IoT) including definitions of IoT, characteristics of IoT systems, common IoT applications, physical and logical design of IoT devices, and enabling technologies and protocols used in IoT including Ethernet, WiFi, Bluetooth, IPv4, IPv6, HTTP, CoAP and MQTT. It discusses the layers of an IoT system from the physical layer to the application layer and provides examples of protocols used at each layer for communication and data exchange in IoT networks and applications.

Uploaded by

zamirk kao
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 54

Chapter 1

Introduction to Internet of Things

Course Faculty: Dr.C.L.Triveni


Assistant Professor
Dept Of ECE
Malnad College Of Engineering-hassan-573201
Email: [email protected]
Ph No: 9480304011
Outline 2

• IoT definition
• Characteristics of IoT
• Physical Design of IoT
• Logical Design of IoT
• IoT Enabling technologies
• IoT Levels & Deployment Templates
Introduction 3

• Unique identities.
• “Things” not associated with internet.
• By 2020 50 billion devices/things connected to
the internet.
Focus of IOT: Data Information Knowledge
Connecting things to the Raw and unprocessed Information is inferred Knowledge is inferred
internet ,communicate data obtained from from data by filtering, from information by
and exchange data. IOT devices/systems. processing, organizing and
categorizing, structuring information
condensing and and is put into action
contextualizing data. to achieve specific
objectives

Figure 1: Inferring information and knowledge from data


Applications of IOT 4
• Home
• Cities
• Environment
• Energy
• Retail
• Logistics
• Agriculture
• Industry
• Health and Lifestyle Figure 2: Applications of IOT
Applications of IOT
•Smart Lighting
5
Home •Smart Appliances
•Intrusion detection
•Smoke/Gas Detectors

•Smart Parking
•Smart roads
Cities •Structural Health Monitoring
•Emergency response

•Weather Monitoring
•Air Pollution Monitoring
Environment •Noise Pollution Monitoring
•Forest Fire Detection

•Smart Grids
Energy •Renewable Energy systems
•Prognostics

•Inventory Management
Retail •Smart Payments
•Smart Vending Machines

•Route Generation & Scheduling


•Fleet Tracking
Logistics •Shipment Monitoring
•Remote vehicle Diagnostics

•Smart irrigation
Agriculture •Green House Control

•Machine Diagnosis & Prognosis


Industry •Indoor Air Quality Monitoring

•Health and Fitness Monitoring


Health and Life style •Wearable Electronics
Definition of IoT 6

 A dynamic global network infrastructure with self-configuring


capabilities based on standard and interoperable communication
protocols where physical and virtual "things" have identities, physical
attributes, and virtual personalities and use intelligent interfaces, and
are seamlessly integrated into the information network, often
communicate data associated with users and their environments.
Characteristics of IoT 7

• Dynamic & Self-Adapting


• Have capability to adapt with changing contexts and take actions based on their operating
systems. Example: Surveillance cameras.
• Self-Configuring
• Allowing a large number of devices to work together to provide certain functionality.
• Interoperable Communication Protocols
• Unique Identity
• IP address or a URI
• Integrated into Information Network
• To communicate and exchange data with other devices and systems. Example: weather
monitoring system.
Physical Design of IoT 8

• The "Things" in IoT usually refers to IoT devices which have unique identities and can perform
remote sensing, actuating and monitoring capabilities.
• IoT devices can:
• Exchange data with other connected devices and applications (directly or indirectly), or
• Collect data from other devices and process the data locally or
• Send the data to centralized servers or cloud-based application back-ends for processing the data, or
• Perform some tasks locally and other tasks within the IoT infrastructure, based on temporal and space
constraints
Generic block diagram of an IoT 9
Device
• An IoT device may consist of several
interfaces for connections to other
devices, both wired and wireless.
• I/O interfaces for sensors
• Interfaces for Internet
connectivity
• Memory and storage interfaces
• Audio/video interfaces.
IoT Devices 10
IoT Protocols 11
• Link Layer
• 802.3 – Ethernet
• 802.11 – WiFi
• 802.16 – WiMax
• 802.15.4 – LR-WPAN
• 2G/3G/4G
• Network/Internet
Layer
• IPv4
• IPv6
• 6LoWPAN
• Transport Layer
• TCP
• UDP
• Application Layer
• HTTP
• CoAP
• WebSocket
• MQTT
• XMPP
• DDS
• AMQP
12

IoT Protocols
IoT Protocols and Standards
13
IoT Protocols 14
Link Layer
• 802.3 –Ethernet
• IEEE 802.3 is a collection of wired Ethernet standards.
• Standard for 10Base 5.
• 802.3.i for 10Base-T, 802.3.j for 10 Base F provides data rates from 10 Mbps to 40Gbps.
• 802.11 – WiFi
• Collection of WLAN
• 802.11a and 802.11ac operates in 5GHz band, 802.11b and 802.11g operates in 2.4GHz
band,802.11n operates in both
• Data rates from 1Mbps to 6.75 Gbps.
• 802.16 – WiMax
• Collection of wireless broadband standards
• Data rates from 1.5 Mbps to 1Gbps.
• 802.15.4 – LR-WPAN
• Collection of low rate wireless personal area networks(LR-WPAN)
• Forms basis for Zigbee
• Data rates from 40 Kbps to 250Kbps
• Low cost,low speed communication for power constrained devices.
• 2G/3G/4G
• Communicate over cellular networks
• Data rates from 9.6 Kbps to 100Mbps
IoT Protocols 15
Network/Internet Layer:
• Responsible for sending IP datagrams from source network to destination network.
• Performs host addressing and packet routing.
• IPv4 :
• Used to identify devices on network and uses hierarchical addressing.
• 32-bit addressing allowing 2^32 addresses.
• IPv6
• IPv6 uses 128 bit address scheme allowing 2^128 addresses.
• 6LoWPAN
• Brings IP protocol to the low power devices which have limited processing capability.
• Operates in 2.4 GHz with data transfer of 250KHz.
IoT Protocols 16
Transport Layer:
• Provides end-to-end message transfer capability independent of the
underlying network.
• Provides functions such as error control , segmentation, flow control and
congestion control.
• TCP(Transmission Control Protocol)
• Used by web browsers(HTTP), email programs(SMTP) and file transfer (FTP)
• Connection oriented and stateful protocol, reliable transmission, provides error detection
capability, flow control capability and lastly congestion control capability.
• UDP(User datagram protocol)
• Connectionless protocol
• Useful for time sensitive applications that have very small data units to exchange and no
overhead for connection setup.
• Transaction oriented and stateless protocol.
• Does not provide guaranteed delivery, ordering of messages and duplicate elimination.
IoT Protocols 17

Most commonly used Application Layer protocols for IOT are :


• HTTP:Hyper text transfer protocol
• Foundation for WWW
• Includes commands such as GET,PUT,POST,DELETE,HEAD,TRACE,OPTIONS etc.
• Request –response model.
• Stateless protocol
• Universal Resource Identifiers(URIs) to identify HTTP resources. Application
• HTTP
Layer
• CoAP
• WebSocket
• MQTT
• XMPP
• DDS
• AMQP
IoT Protocols 18
• CoAP (Constrained Application Protocol)
• CoAP is designed for the needs of constrained devices
in constrained environments and networks.
• Eg M2M
• Web transfer protocol and uses request-response
protocol.
• CoAP runs over UDP, not TCP. Clients and servers
communicate through connectionless datagrams.
Retries and reordering are implemented in the
application stack. Removing the need for TCP may
allow full IP networking in small microcontrollers.
CoAP allows UDP broadcast and multicast to be used
for addressing.
• CoAP follows a client/server model. Clients make
requests to servers, servers send back responses.
Clients may GET, PUT, POST and DELETE
resources. Application Layer
• CoAP is designed to interoperate with HTTP and the • HTTP
RESTful web at large through simple proxies. • CoAP
• Because CoAP is datagram based, it may be used on • WebSocket
top of SMS and other packet based communications • MQTT
protocols. • XMPP
• DDS
• AMQP
Web-Socket 19

 Allows full-duplex communication


 Based on TCP and allows streams of messages between client and
server while TCP connection open.
 Most browsers support the protocol, including Google
Chrome, Microsoft Edge, Internet Explorer, Firefox, Safari and Opera.

Application Layer
• HTTP
• CoAP
• WebSocket
• MQTT
• XMPP
• DDS
• AMQP
MQTT(Message Queue Telemetry
Transport)
20

MQTT is a Client Server


publish/subscribe
messaging transport
protocol
More features:
Simple to implement
(especially at the sensor
side)
QoS Support
Lightweight and
bandwidth efficient and Application Layer
Data agnostic • HTTP
Session awareness • CoAP
• WebSocket
• MQTT
• XMPP
• DDS
• AMQP
21

 MQTT is a publish/subscribe messaging


protocol designed for lightweight M2M
MQTT(Message communications. It was originally
Queue Telemetry developed by IBM and is now an open
standard.
Transport)
 MQTT has a client/server model, where
every sensor is a client and connects to
a server, known as a broker, over TCP.
 MQTT is message oriented. Every
message is a discrete chunk of data,
opaque to the broker.
 Every message is published to an
Application Layer address, known as a topic. Clients may
• subscribe to multiple topics. Every client
subscribed to a topic receives every
HTTP
• CoAP message published to the topic.
• WebSocket
• MQTT
• XMPP
• DDS
• AMQP
XMPP(Extensible  Bi-directional streaming XML for real time 22
Messaging and communication.

Presence Protocol)  All about sending XML messages over a network to do


a wide variety of things. An XMPP message may be
used to communicate between people (a chat
application) or might be used by a sensor to report on
its state.
 Applications include messaging, presence, data
syndication, gaming, multi-party and voice/video
calls.
 XMPP allows sending small chunks of XML data from
one network to another.
 Supports both client-to-server and server-to-server
communication paths.
 Who uses XMPP?
• Cisco Webex
• WhatsApp uses a trimmed down version Application Layer
• Google’s Firebase and Google’s Android • HTTP
• CoAP
• WebSocket
• MQTT
• XMPP
• DDS
• AMQP
23

 DDS (Data Distribution Service for Real time


Systems)
 DDS standard for device to device or M2M.
DDS(Data Distribution  Data centric publish and subscribe(DCPS) layer
allows configuration from small scale to large
Service) scale systems
 Use APIs that present a set of standardized
“profiles” targeting real time information
availability from small scale to large scale
systems
 A DDS interoperability wire protocol (dynamic
DSI)
 An extensible and dynamic topic types for DDS
standard.
 DDS is both language and OS independent
 DCPS APIs has been implemented in a range of
Application Layer
different programming languages (C, C++, • HTTP
Java, Javascript etc. • CoAP
• WebSocket
• MQTT
• XMPP
• DDS
• AMQP
24

AMQP(Advanced
Message Queuing
Protocol)

 Open application layer protocol


for business messaging.
 Supports point-to-point and
publisher/subscriber models,
routing and queuing.
Logical Design of IoT 25
• Logical design of an IoT system refers to an
abstract representation of the entities and
processes without going into the low-level
specifics of the implementation.
IOT Functional Blocks
• An IoT system comprises of a number of
functional blocks that provide the system the
capabilities for identification, sensing,
actuation, communication, and management.
• Device: Provides sensing, actuation,
monitoring and control functions.
• Communication: Handles the
communication for IOT system.
• Services: Device monitoring, device
control services, data publishing services.
• Management: Governs the IOT system.
• Security: Provides functions such as
authentication,authorization,message and
content integrity. Figure: Functional blocks of IOT
• Application: Users can control and
monitor of the IOT system.
IoT Communication Models: 26
Request-Response communication model
• Request-Response is a communication model
in which the client sends requests to the
server and the server responds to the requests.

• When the server receives a request, it


decides how to respond, fetches the data,
retrieves resource representations, prepares
the response, and then sends the response
to the client.
Publish-Subscribe communication 27
model
• Publish-Subscribe is a communication model
that involves publishers, brokers and
consumers.
• Publishers are the source of data. Publishers send
the data to the topics which are managed by the
broker. Publishers are not aware of the
consumers.
• Consumers subscribe to the topics which are
managed by the broker.
• When the broker receives data for a topic from the
publisher, it sends the data to all the subscribed
consumers.
Push-Pull communication 28
model
• Push-Pull is a communication model in which
the data producers push the data to queues
and the consumers pull the data from the
queues. Producers do not need to be aware
of the consumers.
• Queues help in decoupling the messaging between
the producers and consumers.
• Queues also act as a buffer which helps in
situations when there is a mismatch between the
rate at which the producers push data and the
rate rate at which the consumers pull data.
Exclusive Pair communication 29
model
• Exclusive Pair is a bidirectional, fully
duplex communication model that uses a
persistent connection between the client
and server.
• Once the connection is setup it remains
open until the client sends a request to
close the connection.
• Client and server can send messages to
each other after connection setup.
REST-based Communication 30
APIs
• Representational State Transfer (REST) is a set of
architectural principles by which you can design
web services and web APIs that focus on a
system’s resources and how resource states are
addressed and transferred.
• REST APIs follow the request- response
communication model.
• The REST architectural constraints apply to the
components, connectors, and data elements,
within a distributed hypermedia system.
Rest based Communication APIs 31
architectural constraints

 Client-Server: The principle behind the client-server constraint is the separation of


concerns
 for example client should not be concerned with the storage of data which is a
concern of the server similarly the server should not be concerned about the user
interface which is a concern of the client separation allows client and server to be
independently developed and updated.
 Stateless: Each request from client to server must contain all the information
necessary to understand the request and cannot take advantage of any stored
context on the server.
 The server state is kept entirely on the client
 Cache –able: This constraint requires that the data within a response to a
request be implicitly or explicitly labeled as cache able or non- cache-able.
 if the response is cache-able then the client cache is given the right to reuse that
response data for later, equivalent requests.
 caching can partially or completely eliminate some interactions and improve
efficiency and scalability.
Rest based Communication APIs 32
architectural constraints
 Layered system: This constrains the behavior of components such as each
component cannot see beyond the immediate layer with which they are
interacting.
 For example: a client cannot tell whether it is connected directly to the and server or
to an intermediary along the way.
 System scalability can be improved by allowing interview media queries to respond to
request instead of any server without the client having to do anything different.
 Uniform interface: This constraint requires that the method of communication
between a client and the server must be uniform
 Resources are identified in the request and are themselves separate from the
representations of the resources that are returned to the client.
 When a client holds a representation of a resource it has all the information required to
update or delete the resource (provided the client has required permissions)
 Each message includes enough information to describe how to process the message
 Code on demand: Service can provide executable code or scripts for clients to
execute in this context which is optional
HTTP request methods and actions 33
HTTP method Resource Type Action Example

GET Collection URI List all the resources in the http://example.com/api/tasks/


collection (list all tasks)

GET Element URI Get information about a resource http://example.com/api/tasks/1/


(get information on task-1)

POST Collection URI Create a new resource http://example.com/api/tasks/


(create a new task from data
provided in the request)
POST Element URI Generally not used

PUT Collection URI Replace the entire collection with http://example.com/api/tasks/


another collection (replace entire collection with data
provided in the request)
PUT Element URI Update a resource http://example.com/api/tasks/1/
(update task-1with data provided
in the request)
DELETE Collection URI Delete the entire collection http://example.com/api/tasks/
(delete all tasks)

DELETE Element URI Delete a resource http://example.com/api/tasks/1/


(delete task-1)
WebSocket-based 34
Communication APIs
• WebSocket APIs allow bi-
directional, full duplex
communication between clients and
servers.
• WebSocket APIs follow the exclusive
pair communication model
• IOT applications of low latency and
high throughput requirements
A Comparison of REST and Web Socket 35
Comparison REST WebSocket

Stateless/stateful Stateless in nature Stateful in nature

Unidirectional/Bi- Operate over HTTP and Bi-directional protocol


directional Uni-directional

Request-response/Full Uses request –response Uses full duplex


Duplex communication model communication model

TCP connections Each HTTP request Involves a single TCP


involves setting up a connection over full
new TCP connection duplex mode.
Header Overhead Due to HTTP overhead ,it Suitable for real time
can not be used for real applications
time applications
Scalability Horizontal and vertical Vertical scaling is easier
scaling is possible than horizontal.
IoT Levels & Deployment 36
Templates
An IoT system comprises of the following components:
• Device: An IoT device allows identification, remote sensing, actuating and remote monitoring capabilities. You
learned about various examples of IoT devices in previous section
• Resource: Resources are software components on the IoT device for accessing, processing, and storing
sensor information, or controlling actuators connected to the device. Resources also include the software
components that enable network access for the device.
• Controller Service: Controller service is a native service that runs on the device and interacts with the web
services. Controller service sends data from the device to the web service and receives commands from the
application (via web services) for controlling the device.
IoT Levels & Deployment 37
Templates
• Database: Database can be either local or in the cloud and stores the data generated by the IoT device.
• Web Service: Web services serve as a link between the IoT device, application, database and analysis
components. Web service can be either implemented using HTTP and REST principles (REST service) or
using WebSocket protocol (WebSocket service).
• Analysis Component: The Analysis Component is responsible for analyzing the IoT data and generate results
in a form which are easy for the user to understand.
• Application: IoT applications provide an interface that the users can use to control and monitor various aspects
of the IoT system. Applications also allow users to view the system status and view the processed data.
IoT Level-1 38

• A level-1 IoT system has a single


node/device that performs sensing and/or
actuation, stores data, performs analysis
and hosts the application
• Level-1 IoT systems are suitable for
modeling low- cost and low-
complexity solutions where the data
involved is not big and the analysis
requirements are not computationally
intensive.
• REST based web service.
• For example :home automation
IoT Level-2 39

• A level-2 IoT system has a single node


that performs sensing and/or actuation and
local analysis.
• Data is stored in the cloud and application is
usually cloud- based.
• Level-2 IoT systems are suitable for
solutions where the data involved is big,
however, the primary analysis requirement is
not computationally intensive and can be
done locally itself.
• REST based web service
• For eg : Smart irrigation
IoT Level-3 40

• A level-3 IoT system has a single


node.Data is stored and analyzed in the
cloud and application is cloud- based.
• Level-3 IoT systems are suitable for
solutions where the data involved is
big and the analysis requirements are
computationally intensive.
• Websocket based service
• Eg: Tracking package handling
IoT Level-4 41

• A level-4 IoT system has multiple nodes that


perform local analysis. Data is stored in the cloud
and application is cloud-based.
• Level-4 contains local and cloud- based observer
nodes which can subscribe to and receive
information collected in the cloud from IoT
devices.
• Level-4 IoT systems are suitable for solutions
where multiple nodes are required, the data
involved is big and the analysis requirements are
computationally intensive.
• Observer node can process information and use it
for various applications.
• For example : noise monitoring
IoT Level-5 42
• A level-5 IoT system has multiple end
nodes and one coordinator node.
• The end nodes that perform sensing
and/or actuation.
• Coordinator node collects data from the
end nodes and sends to the cloud.
• Data is stored and analyzed in the
cloud and application is cloud-based.
• Level-5 IoT systems are suitable for
solutions based on wireless sensor
networks, in which the data involved
is big and the analysis requirements
are computationally intensive.
• For example : Forest fire detection
• Temperature, humidity and co2
IoT Level-6 43
• A level-6 IoT system has multiple
independent end nodes that perform
sensing and/or actuation and send data
to the cloud.
• Data is stored in the cloud and
application is cloud-based.
• Websocket based service
• The analytics component analyzes the
data and stores the results in the cloud
database.
• The results are visualized with the
cloud-based application.
• The centralized controller is aware of
the status of all the end nodes and
sends control commands to the nodes.
• For example : weather monitoring
IOT Enabling Technologies 44

 Wireless Sensor Network


 Cloud Computing
 Big Data Analytics
 Communication Protocols
 Embedded Systems
45
Wireless Sensor  Distributed Devices with sensors used to
monitor the environmental and
Network physical conditions
Or
 It is a network formed by large no. of
sensor nodes to detect light, heat ,
pressure etc. i.e. used to monitor
environmental and physical conditions.
 Each node can have several sensors
attached to it.
 Each node can also acts as a routers
 Coordinator collects data from all
nodes
 Coordinator acts as gateway that
connects WSN to the internet.
Wireless Sensor Network 46

 Examples of WSNs
 Indoor Air Quality Monitoring system
 Weather Monitoring System
 Soil Moisture Monitoring System
 Surveillance Systems
 Smart grids
 Structure Health Monitoring Systems
 Protocols used
 WSNs are enabled by wireless communication protocols such as IEEE802.15.4
 Zigbee is one of the most popular wireless technology used by WSNs.
 Zigbee specifications are based on IEEE802.15.4 which is used for low powered
devices.
 Data rate: up to 250KBps. Range: up to 100 Meters
47
Cloud  Deliver applications and services over internet
Computing  Internet based Vs local storage computing Cloud
Computing is a way of making use of virtual
computer world wide using the same personalized
experience.
 Provides computing, networking and storage
resources on demand.
 Types of Cloud services
 IaaS(Infrastructure as a Service),
 PaaS(Platform as a Service) and
 SaaS(Software as a Services)
Types of Cloud
computing services 48
 IaaS: Clients can use storage to install
and manage operating systems and any
desired applications.( i.e Virtual machines
+ virtual storage) Ex: Web Hosting.
 Saas : Clients can access and use
software at remote location using a web
browser. Ex: Google documents
 Paas : Clients can install, build and
modify or control applications. Ex: App
cloud, Google App Engine
 Benefits of Cloud Computing
 It doesn’t require you to maintain or
manage it(no need to have an IT
expert).
 Effectively infinite size, so no need
to worry about running out of
capacity.
 You can access cloud based
applications and services from
anywhere( Device independent).
Big Data Analytics 49

 Collection of data whose volume, velocity or variety is too large and


difficult to store, manage, process and analyze the data using
traditional databases.
 Data cleansing : Correcting Removing Replacing
 Data munging (Data Wrangling) : Converting data from one format
to other
 Data Processing and
 Data Visualization
Big data Analytics 50
involves
Characteristics of Big  Variety Includes different types of data such as
Data is 3V  Structured Unstructured Semi-Structured All of
above -text, audio , video
 Velocity Refers to speed at which data is
processed
 Batch, Real-time, Streams
 Volume refers to the amount of data
 Terabyte, Records Transactions ,Files, Tables .
 Acc to IBM in 2012: 2.5 Billion GB data was
generated everyday! Forbes states: in 2020, 1.7
MB of new information is will be created
 Lots of data is being collected and
warehoused
 Web data, e-commerce • purchases at
department/ grocery stores • Bank/Credit
Card transactions • Social Network Examples
Communication Protocols 51

 Backbone of IOT system


 Allows devices to exchange data over networks.
 Define data exchange formats
 Data encoding
 Addressing Schemes
 Routing of packets from sources to destination
 Other Functions
 Sequence control(ordering data packets)
 Flow control(controlling transfer rate)
 Retransmission of lost packets
Embedded Systems 52

 A microcontroller-based, software-driven, reliable, real- time control system, What is the


designed to perform a specific task. difference
 It can be thought of as a computer hardware system having software between a
embedded in it. PC and an
 An embedded system can be either an independent system or a part of a Embedded
large system. system?
 PCs perform all tasks but
embedded systems perform
Embedded Systems found in.
single task.
53

Video
On
IOT
Application
References

https://www.youtube.com/watch?v=ZTM9GA-4nBA

Text Book:

•ArshdeepBahga and Vijay Madisetti, “Internet of Things - A


Hands on Approach”,Universities Press, 2015

Reference Book:

•Olivier Hersent, David Boswarthick, Omar Elloumi, “The Internet


of Things: Key Applications and Protocols”, 2nd Edition, Wiley
ISBN: 978-1-119-99435-0, 370 pages, January 2012.

Thank You

You might also like