IoT Unit 3
IoT Unit 3
IoT Unit 3
Communication
The communication module is the device's final, but most important,
component. This is a device that connects devices to storage, either
locally or in the cloud.
Communication ports including USB, Modbus, and Ethernet/IP, to
mention a few, can be found in this module. Wireless
communication radio technology, such as Wireless fidelity, might be
included as well.
Communication ports such as USB, serial (232/485), and CAN, to
name a few, may be included in this module. It could also contain
Wi-Fi, LoRA, ZigBee, and other wireless communication
technologies
The communications module might be part of the same device as the
other modules, or it can be a distinct device dedicated to
communications only. A "gateway architecture" is a term used to
describe this approach.
If you have three sensors in a room that need to send data to the
Cloud, you could link them all to a single gateway in the same room,
which then consolidates the data and delivers it to the Cloud.
Sensing
Sensors can be found all over the place. They can be found in our
homes and businesses, as well as retail malls and hospitals. They're
built into smartphones and play a key role in the Internet of Things
(IoT).
Sensors have existed for quite some time. Infrared sensors have been
around since the late 1940s, while the first thermostat was launched in
the late 1880s. The Internet of Things (IoT) and its industrial cousin,
the Industrial Internet of Things (IIoT), are taking sensor usage to new
heights.
Sensors, in general, are devices that detect and respond to changes in
their surroundings. Light, temperature, motion, and pressure are all
examples of possible inputs. Sensors produce useful data, which they
can exchange with other connected devices and management systems
if they are connected to a network.
Sensors are vital to the success of many modern organizations. They
can alert you to possible issues before they turn into major issues,
allowing firms to do preventative maintenance and avoid costly
downtime.
A good sensor should have these three characteristics:
1. It needs to be attentive to the phenomenon it's tracking.
2. It shouldn't be affected by other bodily factors.
3. During the measuring procedure, it should not change the
phenomenon being measured.
We can use a variety of sensors to measure practically all of the physical
properties around us. Thermometers, pressure sensors, light sensors,
accelerometers, gyroscopes, motion sensors, gas sensors, and many other
common sensors are widely used in everyday life.
Properties of a sensor:
1. Range - The sensor's range refers to the phenomenon's highest and
minimum values.
2. Sensitivity - Sensitivity is defined as the smallest change in the
measured parameter that results in a noticeable change in the
output signal.
3. Resolution - The sensor's resolution is the smallest change in the
phenomenon it can detect.
Sensor classification
Several criteria can be used to classify sensors:
1. Passive or Active - Active sensors, on the other hand, require an
external power source to monitor an environment, whereas
passive sensors do not.
2. Another classification is dependent on how the property was
detected and measured (mechanical, chemical, etc.).
3. Analog or Digital - Digital sensors produce a discrete signal,
whereas analog sensors produce an analog, or continuous,
signal.
Types of sensors
There are many different types of IoT sensors, as well as numerous
applications and use cases. Here are ten of the most common types of IoT
sensors, as well as some of their applications.
1. Temperature sensors:
Temperature sensors detect temperature changes and translate
them to data by measuring the quantity of heat energy present in a
source. Manufacturing machinery frequently necessitates specific
environmental and device temperatures. Similarly, soil temperature
is an important determinant in crop growth in agriculture.
2. Humidity sensors:
These sensors determine how much water vapor is present in the
environment of air or other gases. Humidity sensors are often found in
both industrial and domestic heating, venting, and air conditioning
systems. They can also be found in a variety of different places, such
as hospitals and meteorology stations, where they record and forecast
weather.
3. Pressure sensors
Changes in gases and liquids are detected by a pressure sensor.
The sensor monitors changes in pressure and conveys them to
connected systems when they occur. Leak testing, which might
occur as a result of degradation, is a common application case.
Pressure sensors are also important in the manufacture of water
systems since they can easily detect pressure variations or dips.
4. Proximity sensors
Proximity sensors are used to detect objects that are close to the
sensor without having to touch them. Electromagnetic fields or
beams of radiation, such as infrared, are frequently emitted by these
sensors. Proximity sensors have a variety of applications. A
proximity sensor in retail can detect motion between a customer and
a product that piques his or her attention. Any discounts or special
offers on products near the sensor might be notified to the user. Mall
parking lots, stadium parking lots, and airport parking lots all use
proximity sensors to signal parking availability. They can also be
employed in production lines in the chemical, food, and a variety of
other industries.
5. Level sensors
The level of substances such as liquids, powders, and granular
materials is detected using level sensors. Level sensors are used in a
variety of industries, including oil production, water treatment, and
beverage and food manufacturing. Level sensors can measure the
amount of rubbish in a garbage can or dumpster, which is a frequent
use case for waste management systems.
6. Gyroscope sensors
The controller instructs the actuator to conduct the task depending on the
sensor data, as shown in the diagram below.
1. Hydraulic actuator
A hydraulic actuator is a mechanical device that employs hydraulic
power to complete a task. A cylinder or a fluid motor drives them.
According to the needs of the IoT device, mechanical motion is
translated to rotary, linear, or oscillatory motion.
Hydraulic actuators are used in construction equipment because
they can create a considerable amount of force.
Advantages:
● Hydraulic actuators have the ability to generate significant
amounts of force at a high rate.
● Used in welding, clamping, and other applications.
● In car transport carriers, it's used to lower or raise the vehicles.
Disadvantages
● Leaks in hydraulic fluid can reduce performance and complicate
cleanup.
● Noise reduction equipment, heat exchangers, and high-
maintenance systems are all required.
● It is expensive.
2. Pneumatic Actuators
A pneumatic actuator converts energy created by vacuum or high-
pressure compressed air into linear or rotary motion. For example,
sensors that act like human fingers and are powered by compressed
air are used in robotics.
Advantages
● They are a low-cost solution that is employed in extreme
temperatures where employing air rather than chemicals is a
safer option.
● They require little maintenance, are long-lasting, and have a
lengthy service life.
● It is quite quick to initiate and stop the action.
Disadvantages
● It can become less efficient if there is a loss of pressure.
● The air compressor should be turned on all the time.
● It is possible for air to be polluted, and it must be maintained.
3. Electrical actuators
An electric actuator works by converting electrical energy into
mechanical torque and is usually powered by a motor. A solenoid-
based electric bell is an example of an electric actuator.
Advantages
● It can automate industrial valves, which makes it useful in a variety
of sectors.
● It makes less noise and is completely safe to use because there are
no fluid leaks.
● It has the ability to be reprogrammed and delivers the highest
level of control and precision positioning.
Disadvantages
● It's not cheap.
● It is highly dependent on the surrounding environment.
I/O interfaces
The Input Output Interface (IOI) is a technique for exchanging data
between internal and external storage and I/O devices.
The term API (application programming interface) is the tool software developers use
to gather and transfer data from one application or computer to another. Or in other
words, APIs enable developers to programmatically interact with software
components both inside and outside of their own code.
In IoT specifically, APIs are used to gather and transfer data from the connected
device to an application or computer. They are also used to instruct a connected
device to take a particular action. Because connected devices can be anywhere in the
world, having an API makes it possible to remotely access a device and make the data
useful.
For Hologram specifically, we gather and transfer usage data via cellular connectivity
and share it in the Dashboard. Within the Dashboard, users can remotely pause,
activate, or deactivate devices; pull reports; and more. The Hologram API enables
users to expand on what’s done in the Dashboard as well as bring connectivity data
directly into their own applications or reports.
While the Hologram Dashboard surfaces all of this information and capabilities, users
will leverage the Hologram API to either bring data into their own tools or leverage it
as part of their application for their customers. APIs are powerful tools that take the
data created at the device level and make it usable.
An API endpoint is the source which you want to get the data from. In more technical
terms, it’s an API call. The most obvious API endpoint in IoT is at the device level,
gathering data from the connected device. This collects data usage, connectivity
status, and any other additional data an IoT application is intending to collect.
Beyond the device endpoint, there are many other useful endpoints within an IoT
deployment. For example, a team may use the API to collect data as it relates to
billing, making finance reporting programmatic.
There are four common types of APIs: Public, Partner, Internal and Composite.
Public APIs
Public APIs, also known as Open APIs, are available to the public with no
restrictions. This enables developers outside of an organization to access data to
enhance their own application. Single sign on, using your email or social media
account, is made possible through Public APIs, bringing in the email provider or
social platform code into your application.
Partner APIs
Internal APIs
APIs used by a company to build and manage their applications are internal or private
APIs. This ensures that only those working on a product have access to make changes
to a product or to the sensitive data on a platform.
Composite APIs
Composite APIs batch several API requests into a single API call. This reduces the
number of trips to a server. By grouping a chain of API calls into one API, a client
can make one API request that includes a chain of calls and end with one response.
While we discussed the different types of APIs, there are also different approaches in
how data is transferred over a network using API calls. REST and SOAP are leading
architectures, but offer different benefits to users. JSON and XML are the formats in
which the data is delivered.
SOAP API
SOAP (Simple Object Access Protocol) is a protocol specification for exchanging
data between two endpoints. SOAP is mostly used for applications that require a high
level of security – like payments. It is much complex but also well defined in terms of
security. Banking transactions or any other applications that need high security use
this. It can allow any style of programming and is based on a wide range of protocols
such as HTTP, SMTP, TCP, etc. Also, uses XML for formatting. It is one of the
established API used.
REST API
JSON and XML are two of the formats in which data is delivered. SOAP relies
exclusively on XML while REST allows XML, JSON, HTML, and plain text. JSON
is a lightweight, human-readable format that can be used with any programming
language. Most public web services use REST APIs with JSON.
It has one of the best request efficiencies. Thus, it uses JSON formatting. It is much
reliable and simple to use. Popular programming languages e.g., Java, Java-script,
Ruby, C#, PHP and Python) and application platforms provide good support for
producing and consuming JSON data. It is human-readable as well as machine-
readable and is designed in such a way that they call methods.
There are endless applications for IoT APIs. As we mentioned earlier, APIs enable
fleet operators to manage an entire IoT deployment. This includes activating and
deactivating devices, reporting and more. It also can help users prevent fraud through
alerts and data usage limits.
APIs in IoT can also send SMS messages to activate a device. Take for example a
scooter. Once a consumer uses their mobile app to start a ride, an API then sends a
message to the scooter to activate the ride.
Or, in the case of a remote patient monitoring device, an API can check the last time
someone tested a specific health metric and then alert the patient via text or email.
APIs are powerful tools. They enable users to communicate with connected devices
anywhere in the world – both to send information to and receive data from. Without
an API, it would be impossible to run an IoT deployment without having feet on the
ground with each device. By programmatically communicating with connected
devices, they provide a ton of useful data and allow new experiences for consumers.
The Arduino Rest API is a way for Arduino and other external systems to
communicate data. It is possible to operate Arduino from afar using the
Arduino Rest API framework. The confluence of APIs and IoT creates
new integration possibilities. The creation of an API ecosystem is a
fascinating topic, and the way we use APIs to access IoT services exposed
by remote IoT boards is a difficult component.
In greater detail, a client application uses the Arduino Rest API to read
or transmit data to the Arduino board. An external system or
application that retrieves sensor values is a common use case for HTTP
Rest API.
When different systems and boards are connected and share information,
the Arduino Rest API framework can be used in IoT projects. The Arduino
Rest API is used by IoT cloud companies as well. This type of method is
used when an external application (client) submits a request to Arduino,
and Arduino responds with data.
Because the Arduino Rest API uses the HTTP protocol, these queries are
synchronous. Other protocols, like as MQTT, can be utilized in IoT
applications. When Arduino is acting as a server in a client-server
scenario, the Arduino API over HTTP plays a critical role. MQTT, for
example, employs a structure known as publish-subscribe.
Arduino rest framework
There is an intriguing library called a Rest that may be used to construct a
Rest API architecture. This library is a framework for Restful services that
includes a number of useful features. This library works with a variety of
development boards, including Arduino, Raspberry Pi, and ES8266. More
information is available on the Rest website.
This library is easy to use and may be acquired from the Arduino library
directly through the Arduino IDE.
We can implement the API using this library because it supports aRest:
● Reading pin values in rest style
● Writing pin values in rest style
● Remote sketch function call
Arduino implementations
Now that we've covered the fundamentals of Arduino and how to utilize it
to connect it to an external system, we'll go through how to put it into
reality. We'll use Rest API requests to control an LED strip in this
example. Because we need to concentrate on the Arduino Rest API, the
sketch is straightforward. The LED strip is a Neopixels RGB Stick Board,
and it is able to select a single RGB led color using the Adafruit library.
The Neopixel components in this image are different, but the connections
are the same.
We want to change the color of the led strip using a Rest JSON API
call. The color is supplied as a HEX parameter to the sketch function.
This sample exemplifies the library's versatility. The Arduino code is
straightforward:
Server.begin();
Serial.println(Ethernet.localIP());
Pixels.begin();
Serial.println("Setup complete.\n");
}
Void loop() {
HexColor="0x" + hexColor;
SetColor is the Arduino function that we'd like to make available via an
Arduino HTTP Rest API. As a result, the sketch registers it as rgb at line 36.
Define an API?
An application or service consists of mashed APIs. Following are the steps for
implementing the APIs:
Column 1 of each row has the actions in sequences which occur one by one.
Column 2 may specify for each action, the authentication code or method (device
platform ID, such as MAC address) for secured communication to and from other
end (server or application). Column 2 has authentication method for use that may
involve user/password communication. User in case of IoT device platform is
device platform ID, such as MAC address. Password can be some code internally
generated at device platform using some algorithm using a secret key as input
(Example 9.8).
Column 3 specifies the API inputs for initiating the action on event.
Column 4 specifies the API outputs for the inputs. The outputs communicate to
other end and initiate the execution of methods, callback functions, generate
requests or send responses.
3. Use the standard formats for object or message exchanges: JSON, TLV or XML
or REST style of URIs or URLs for message format (Section 3.2 of Raj Kamal
Text book).
4. Use for access to remote methods standard protocols, such as SOAP (for XML-
RPC) or JSON-RPC. RPC stands for remote procedure call. Procedure also
means function in C/C++ or method in Java (Sections 3.3 and 3.4 of Raj Kamal
Text book).
6. Use the standard client and server protocol for client-server http, or CoAP or ws
protocol using client-response model of message or object exchanges (ws:// used
in place of http:// for bi-directional message exchanges) (Section 3.4 of Raj
Kamal Text book).
7. Use the standard methods for web object or message exchanges. For example,
REST request-response model methods, such as HTTP GET/POST methods or
WebSocket methods for bi-direction message exchanges (Section 3.4 of Raj
Kamal Text book).
8. Use the scripts, for example, JavaScript or Node.js framework for creating set of
codes in event model or codes for running at distributed computing systems
(device platforms or services at web/cloud). Event model calls a callback()
[onEventAction()] functions on inputs. The function may initiate sending a client
data or sending a server response. Function runs once on each input-event.
9. Use the language or scripting language framework which provides wider support
of libraries, community and test tools.
Example 9.15 explains the table for easy implementation of API. Example 9.15
Problem: Drawing an implementation table for weather web APIs: How does a table
make it easy writing codes for weather web APIs? Use the sequences shown in Figure
9.4. Solution Table 9.4 gives the actions, inputs and outputs for weather APIs. Table
9.4 Implementation table for weather web APIs
Sequence Authentication Inputs Outputs
Number and
Action
1:New API MAC Location (City Message to weather web
connection to address or Name) client to enable client
weather service deviceID/ connect to send request
ApplicationID/ for weather messages
API_ID
2:New MAC address Messages (city Subscribe to the weather
connection to or weather name, ClientID, service, if a new city
weather Service service API ID time stamp) name (messaged from
the location server)
3:New MAC address Messages of Subscription message(s)
connection to or weather weather web- on new city to the
weather service service API ID service API on weather service and
new city name messages (clientID,
weather information
with with time stamp
from messaged data)
3: New response MAC address Weather Response message(s)
of weather or weather messages and
service service ID warnings for this
and predictions of
next two days for
the city from
repository
APIs Implementation Using REST Methods:
When implementing a REST API or using REST methods in client or server, first
making a table makes the coding easy.
Column 1 of each row has the URL for communication for implementing an
action.
Column 2 may specify the action (REST methods), such as
PUT/GET/POST/DELETE for implementation.
Column 3 may specify for each action, the authentication code or method
(device platform ID, such as MAC address) for secured communication to and
from other end (server or Application). Column 3 has authentication method
for use at server/ destination end that may involve user/password session. User
in case of IoT device platform is device platform ID, such as MAC address.
Password can be some code internally generated at device platform using
some algorithm using a secret key as input (Example 9.8).
Column 4 specifies the API inputs/parameters for initiating the action.
Column 5 specifies the API outputs for the inputs. The outputs communicate
to other end and initiate the execution of methods, callback functions, generate
Cookie or response.
Protocols
1. MQTT
MQTT (Message Queuing Telemetry Transport) is an IBM-developed
lightweight messaging protocol that was initially introduced in 1999. It
interprets communications between devices, servers, and applications
using the pub/sub pattern.
The MQTT protocol was established with the goal of connecting sensors
on oil pipelines to communications satellites with the least amount of
battery loss and bandwidth use possible.
MQTT has been evolving since its creation, with version 5.0 being
released in May 2018. Version 3.1.1 was accepted as an ISO standard
after being submitted to the OASIS consortium in 2013.
Advantages
The following are some of the advantages of MQTT:
● Lightweight code footprint - The MQTT protocol requires only a few
lines of code to get up and running on devices.
● Minimized data packets - MQTT is a low-energy protocol. If a
device is battery- powered or has a low CPU, this is ideal.
● Speed - Outside of QoS, MQTT functions in real time with no delays.
● Ease of Implementation - MQTT includes libraries in a number of
programming languages, including Elixir and Python.
● Last will and testament - If a client disconnects abruptly, you can send
a message to all subscribers with information on how to fix the
problem.
● Retained messages - When a client subscribes to a topic, it will
automatically get one retained message for that subject (like a pinned
post on social media).
MQTT architecture
In the MQTT protocol, connected devices are known as "clients," and
they communicate with a server known as the "broker." Data
communication between clients is handled by the broker.
● At most once - The broker will only get the message "at most
once" after it is published. This level should not be utilized for
mission-critical information since it increases the danger of the
message not being received by the intended recipients.
● Exactly once - The publisher and the broker collaborate to ensure that
the broker receives and acts on messages only once. This necessitates
some more effort in the form of a four-part handshake. This is the safest
QoS level, but it's also the slowest, therefore it's only used when
absolutely required.
2. ZigBee
Zigbee is a standards-based wireless technology that enables low-cost, low-
power wireless M2M and internet of things (IoT) networks.
The routers in the network support Zigbee coordinators. These are data-
transfer devices that send and receive data from a variety of devices,
including televisions, doors, cameras, and thermostats.
Zigbee is known for its secure connections, which is why it's often the
chosen choice for personal area networks, particularly in corporate
networks with sensitive data.
Because of its low power consumption, Zigbee is a better choice for IoT
connectivity than Wifi. It's utilized for a variety of tasks, such as smart
building automation, temperature management, and more.
Zigbee is an ideal partner for any business where little amounts of data are
exchanged rarely, such as remote monitoring or in-building applications.
Finding ZigBee’s place in the industrial IoT
The properties of ZigBee set it unique from other conceivable IoT
protocols, allowing it to carve out its own niche in the market. Because of
its mesh topography, it can handle longer distances than Bluetooth Low
Energy, and its extremely low energy consumption makes it more IoT-
friendly than Wi-Fi.
1. Application Layer
2. Application Interface Layer
3. Security Layer
4. Network Layer
5. Medium Access Control Layer
6. Physical Layer
Physical layer: The lowest two layers i.e the physical and the
MAC (Medium Access Control) Layer are defined by the IEEE
802.15.4 specifications. The Physical layer is closest to the
hardware and directly controls and communicates with the Zigbee
radio. The physical layer translates the data packets in the over-the-
air bits for transmission and vice-versa during the reception.
Medium Access Control layer (MAC layer): The layer is
responsible for the interface between the physical and network
layer. The MAC layer is also responsible for providing PAN ID and
also network discovery through beacon requests.
Network layer: This layer acts as an interface between the MAC
layer and the application layer. It is responsible for mesh
networking.
Application layer: The application layer in the Zigbee stack is the
highest protocol layer and it consists of the application support sub-
layer and Zigbee device object. It contains manufacturer-defined
applications.
Channel Access:
1. Contention Based Method (Carrier-Sense Multiple Access with
Collision Avoidance Mechanism)
2. Contention Free Method (Coordinator dedicates a specific time
slot to each device (Guaranteed Time Slot (GTS)))
Zigbee Applications:
1. Home Automation
2. Medical Data Collection
3. Industrial Control Systems
4. meter reading system
5. light control system
6. Commercial
7. Government Markets Worldwide
8. Home Networking
3. CoAP
In the Internet of Things, the Confined Application Protocol (CoAP) is a
customized web transfer protocol for usage with constrained nodes and
constrained networks. CoAP is a protocol that allows basic, restricted
devices to connect to the Internet of Things, even across constrained
networks with poor bandwidth and availability.
Machine-to-machine (M2M) applications such as smart energy and
building automation are common uses.
HTTP TCP transfers are substantially larger than CoAP packets. To save
space, bitfields and mappings from strings to integers are frequently utilized.
Packets are simple to create and can be parsed in place on restricted devices
without spending additional RAM.
CoAP uses UDP rather than TCP. Connectionless datagrams are used to
communicate between clients and servers. In the application stack, retries
and reordering are implemented. By eliminating the need for TCP,
compact microcontrollers may be able to provide complete IP networking.
CoAP enables the usage of UDP broadcast and multicast for addressing.
Through simple proxies, CoAP is meant to work with HTTP and the
RESTful web in general.
Fig 5: CoAP
As you can see, the CoAp protocol is made up of two layers: messages
and request/response. The Messages layer is responsible for UDP and
asynchronous messages. Based on request/response messages, the
Request/Response layer manages request/response interaction.
Four different message types are supported by CoAP:
● Confirmable
● Non-confirmable
● Acknowledgment
● Reset
You must be vigilant about IoT security with UDP and be certain that
your hardware and network-level security can secure your customers' data
and keep your devices from becoming liabilities.
UDP datagrams
UDP traffic is carried in datagram packets, each of which is made up of
a single message unit. The first eight bytes hold the header information,
but the remaining bytes hold the actual message. The header of a UDP
datagram is broken into four pieces, each of which is two bytes long.
These are the components:
● Source port - This 16-bit (2-byte) information is used to identify the
data-sending sender port. The range of permitted UDP port numbers is 0
to 65535.
● Length - The length field gives the UDP packet's total length (UDP
header and UDP data). This specific field is a 16-bit field. In the absence of
UDP data, the Length field must be at least 8 bytes long.
The User Datagram Protocol offers properties that make it useful for
applications that can suffer data loss. Consider the following scenario:
The UDP/IP stack has the following benefits over the TCP/IP stack:
1) It is superior to TCP for applications that require continual data flow,
large amounts of data, and a higher level of speed than reliability.
2) Because it provides point-to-multipoint transmission, UDP is the
best choice for multicast and broadcast applications. In contrast to
TCP/IP, where the sender is responsible for each packet, the sender
does not need to keep track of data retransmission for many receivers.
3) UDP has a tiny packet header overhead (only 8 bytes), but TCP has a
header of 20 bytes.
1. TCP
TCP is used in conjunction with the Internet Protocol (IP), which
specifies how computers exchange data packets. TCP and IP are the
fundamental rules that govern the Internet. The Internet Engineering Task
Force (IETF) defines TCP in RFC 793, a Request for Comment (RFC)
standards document. TCP is a connection-oriented protocol, which means
it establishes and maintains a connection until both ends' application
programs have done exchanging messages.
The Internet of Things is a new challenge for TCP (IoT). Tens of billions
of affordable devices (e.g., sensors, actuators, etc.) attached to everyday
things will be connected to the Internet to enable smart scenarios in this
big networking trend. IoT devices, on the other hand, are frequently
constrained (in terms of memory, computation, and energy), employ low-
speed and error-prone connectivity, and have multi-hop networks.
TCP has been heavily chastised as a transport-layer protocol for the Internet
of Things due to these challenging networking settings. As a result, many
early IP-based IoT implementations had to rely on UDP for application-
layer dependability. The Constrained Application Protocol (CoAP), a
lightweight RESTful application-layer protocol designed at the IETF for the
Internet of Things, took the same approach.
Similarly, the IPv6 over Low Power Wireless Personal Area Networks
project produced enhancements for UDP header compression while
neglecting TCP.
TCP in the Internet of Things
Fig 6: HTTP
CoAP
MQTT
MQTT is a communications protocol developed by ISO/IEC for
monitoring applications. It is built on the publish-subscribe paradigm, in
which publishers (such as sensors) send data messages to a broker, who
then distributes the messages to subscribers (e.g., backend systems). The
broker becomes more complex as a result of this flexible approach.
MQTT also specifies a lightweight header format and necessitates a
minimal code footprint. A TCP connection is created between the broker
and the publisher or subscriber in MQTT.
Fig 8: MQTT
AMQP
AMQP is another ISO/IEC messaging protocol that was created with the
financial industry in mind. It is compatible with a number of broker-based
architectures, including publish subscribe. AMQP has more complicated
mechanisms than MQTT (for example, fine-grained control, queue
management, and error handling), but at the cost of more implementation
complexity and bigger message headers. TCP is also used in AMQP.
Fig 9: AMQP
Key takeaway
TCP is used in conjunction with the Internet Protocol (IP), which specifies
how computers exchange data packets.
TCP and IP are the fundamental rules that govern the Internet.
TCP (Transmission Control Protocol) is a connection-oriented transport-
layer protocol that provides end-to-end reliable and ordered data transfer
between applications operating on Internet hosts.
7. Bluetooth
Bluetooth, unlike WiFi, was designed for portable devices and related
applications, so it excels when you need to connect two devices with
minimal configuration. Furthermore, because Bluetooth uses weak
signals, there is less interference, and devices may interact even in
noisy surroundings.
Bluetooth can also be used in a smart home. Many smart home gadgets
don't require high bandwidth connections, and setting up Bluetooth is
significantly easier.
Furthermore, recent Bluetooth versions may build a self-healing mesh
network, which implies that individual devices can still interact even if
one is removed or loses power. If your door locks, HVAC system, washer,
dryer, fridge, and lights are all connected, you don't want them to all fail at
the same time.
Bluetooth Strengths and Weaknesses
For all encryption operations, BLE uses AES CCM with a 128-bit key.
It’s important to note that there’s a big difference between Bluetooth Classic
and Bluetooth Low Energy in terms of technical specification,
implementation, and the types of applications to which they’re each suited.
This is in addition to the fact that they are incompatible with each other.
Some of the notable differences are summarized in the following table:
Table 1: Bluetooth Classic vs. BLE
BLE has gone through some major revisions and changes in the short time
since its official release in 2010, with the most recent major update being
Bluetooth 5 released in December 2016. Bluetooth 5 introduced many
important upgrades to the Bluetooth specification, most of which were
focused on BLE. Some of the most important enhancements include twice
the speed, four times the range, and eight times the advertising data
capacity.
Advantages and Limitations of BLE
Every technology has its limitations, and BLE is no exception. As we mentioned
earlier, BLE is most suitable for applications with relatively short range and
infrequent low-bandwidth data transfers.
Limitations of BLE
Data Throughput
The data throughput of BLE is limited by the physical radio data rate,
which is the rate at which the radio transmits data. This rate depends on the
Bluetooth version used. For Bluetooth 4.2 and earlier, the rate is fixed at 1
Mbps. For Bluetooth 5 and later, however, the rate varies depending on the
mode and PHY (discussed later in the Physical Layer section) being used.
The rate can be at 1 Mbps like earlier versions, or 2 Mbps when utilizing
the high-speed feature. When utilizing the long-range feature, the rate
drops to either 500 or 125 Kbps.
At the application layer and for the end-user, the data rate is much lower than
the radio data rate due to the following factors:
Low-bandwidth data
For cases where a device transfers small amounts of data representing
sensor data or for controlling actuators, BLE has proven to be a
suitable wireless protocol to utilize.
Device Configuration
Even in cases where BLE doesn’t satisfy the main requirements of a
system, it can still be used as a secondary interface to configure a
device before the main wireless connection is established.
For example, some Wi-Fi-enabled devices are adding BLE as a means to
configure and establish the Wi-Fi connection of the device instead of using
a technology such as Wi-Fi direct (a technology that allows two Wi-Fi
devices to connect directly without going through a Wi-Fi router. You can
Learn more about it at its Wikipedia page here).
Using a smartphone as an interface
Small, low-power devices usually donʼt have large screens and are only
capable of displaying limited amounts of data to the end user. Due to the
proliferation of smartphones nowadays, BLE can be utilized to offer an
alternate, much richer user interface to these small devices (even if just
for this sole purpose). Another by-product benefit of using a smartphone
is that the data can be relayed up to the cloud.
Personal and wearable devices
For use cases where a device is portable and can be located in areas
where no other persistent wireless connections exist (such as WiFi),
BLE can be used (since itʼs a direct peer-to-peer connection).
Broadcast-only devices
You’ve probably heard of, and maybe seen, Beacon devices before. These
devices have one simple task: to broadcast data so other devices may
discover them and read their data. There are other technologies that have
been used for this kind of application.
However, BLE is becoming more and more popular because
most people carry smartphones which already support BLE
out-of-the-box.
Physical Layer:
The transmitter uses GFSK modulation and operates at unlicensed 2.4 GHz
frequency band.
Using this PHY layer, BLE offers data rates of 1 Mbps (Bluetooth v4.2)/2 Mbps
(Bluetooth v5.0)
It uses frequency hopping transceiver.
Two PHY layer variants are specified viz. uncoded and coded.
Link Layer:
This layer sits above the Physical layer. It is responsible for advertising,
scanning and creating/maintaining connections.
The role of BLE devices changes in peer to peer (i.e., Unicast) of broadcast
modes. The common roles are Advertiser/Scanner (Initiator), Slave/Master or
Broadcaster/Observer.
HCI: It provides communication between controller and host through standard
interface types. This HCI layer can be implemented either using API or by interfaces
such as UART/SPI/USB. Standard HCI commands and events are defined in the
Bluetooth specifications.
L2CAP: This layer offers data encapsulation services to upper layers. This allows
logical end to end data communication.
SMP: This security Manager layer provides methods for device pairing and key
distributions. It offers services to other protocol stack layers in order to securely
connect and exchange data between BLE devices.
GAP: This layer directly interfaces with application layer and/or profiles on it. It
handles device discovery and connection related services for BLE device. It also takes
care of initiation of security features.
GATT: This layer is service framework which specifies sub-procedures to use ATT.
Data communications between two BLE devices are handled through these
subprocedures. The applications and/or profiles will use GATT directly.
ATT: This layer allows BLE device to expose certain pieces of data or attributes.
Application Layer:
The BLE protocol stack layers interact with applications and profiles as desired.
Application interoperability in the Bluetooth system is accomplished by
Bluetooth profiles.
The profile defines the vertical interactions between the layers as well as the
peer-to-peer interactions of specific layers between devices.
A profile composed of one or more services to address particular use case. A
service consists of characteristics or references to other services.
Any profiles/applications run on top of GAP/GATT layers of BLE protocol stack.
It handles device recovery and connection related services for the BLE device.