Table of Contents |
---|
Key Points
- Iot payback hits automation, service and efficiencies within and between organizations and systems
- who is the oldest IoT developer I know? me - 1980 - DuPont automated order inventory management real-time
Resources
Resource____________________________________________________ | Notes____________________________________________________________ |
---|---|
https://networklessons.com/cisco/evolving-technologies/iot-standards-and-protocols | IoT network and data standards |
https://www.ubuntupit.com/top-15-standard-iot-protocols-that-you-must-know-about/ | Top 15 IoT protocols |
https://www.sam-solutions.com/blog/internet-of-things-iot-protocols-and- connectivity-options-an-overview/ | IoT protocols overview |
https://www.avsystem.com/blog/iot-protocols-and-standards/ | IoT protocols and standards bloghttps |
MQTT | pub sub data solutions for IoT |
http://objectcomputingmqtt.comorg/products/openddsOpenDDS basic concepts | a machine-to-machine (M2M)/"Internet of Things" connectivity protocol. It was designed as an extremely lightweight publish/subscribe messaging transport. |
https://objectcomputingdrive.google.com/productsfile/d/opendds/resources#techOpenDDS resources1zQzn9wEPG91T7PQOrl0vX7K1mDrkR2du/view?usp=sharing | MQTT v5 docs |
objectcomputing.com/resources/publications/mnb/code-generation-with-opendds-part-i | OpenDDS code generation - part 1 ( OLD ) |
http://mnb.ociweb.com/mnb/MiddlewareNewsBrief-201007.html | OpenDDS code generation - part 2 |
https://en.wikipedia.org/wiki/Comparison_of_real-time_operating_systems | Comparison of IoT / Real time OS options |
https://en.wikipedia.org/wiki/FreeRTOS https://www.www.cirrus-link.com/wp-content/uploads/2020/07/White-Paper_IIoT-Protocols- https://drive.google.com/file/d/1KFNQU-ZnUT83x2Wp8M4-sDJeELbI2eW-/view?usp=sharing | |
https://objectcomputing.com/products/opendds | OpenDDS basic concepts |
https://objectcomputing.com/products/opendds/resources#tech | OpenDDS resources |
https://objectcomputing.com/resources/publications/mnb/code-generation- with-opendds-part-i | OpenDDS code generation - part 1 ( OLD ) |
http://mnb.ociweb.com/mnb/MiddlewareNewsBrief-201007.html | OpenDDS code generation - part 2 |
Iot Devices - Testers | |
ELECROW CrowPi Raspberry Pi 4B 3B+ Learning Computer Sensor Kit for Learning Coding and Electronics(Basic Kit, RPI Not Included, Black) | |
IoT OS services | |
https://en.wikipedia.org/wiki/Comparison_of_real-time_operating_systems | Comparison of IoT / Real time OS options |
Free RTOS, MIT license | |
MyNewt - Apache free RTOS supports wireless apps | |
RTAI - real time extension of Linux Kernel supports IA-32, x86-64, PowerPC, ARM and MIPS | |
Linux Kernel |
Key Concepts
...
- is tunable for any workload ( vs Windows ) | |
IoT Platforms | |
...
...
...
...
...
There are many protocols that have a direct or indirect role in IoT. We’ll focus on two protocol types in particular:
- Network protocols
- Data protocols
Network Protocols
The network protocols we use for IoT should be open standards because our IoT network has to support devices from multiple vendors. Proprietary protocols increase complexity because you then need devices that can translate between the different protocols.
The Internet Protocol (IP) is well established and we have been using IP for IT networks for a long time. This is one of the reasons why IP is also the main choice for IoT networks.
Using IPv6 is encouraged because there are no address space limitations as there are with IPv4. Solutions such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPAN) or IPv6 Routing Protocol for LLNs (RPL) don’t even support IPv4, only IPv6.
Data Protocols
We need to transfer data between our devices and other systems such as an IoT platform. Some devices have sensors that push data at a regular interval. Other sensors work with a pull model where you have to request the information. There are several data protocols we can use in IoT. Here are three popular protocols:
- Message Queuing Telemetry Transport (MQTT)
- Constrained Application Protocol (CoAP)
- Extensible Message and Presence Protocol (XMPP)
MQTT
MQTT is probably the most used protocol in IoT. It’s a lightweight message protocol that uses publish and subscribe operations to transmit data between a client and server. It uses TCP as the transport protocol.
Packets are tiny and require little bandwidth. MQTT uses a client-server model. The server is called a broker. There are two operations:
- Publish: a device (client) sends data to a broker (server).
- Subscribe: a device (client) wants to receive data from a broker (server).
CoAP
CoAP is also a lightweight protocol and was developed as a standard (RFC 7252). It’s based on a REST model. A server makes resources available under a URL and clients access these resources with GET, PUT, POST, and DELETE methods. It is easy to get started with CoAP because many developers are familiar with REST.
CoAP can carry different payload types including XML and JSON and uses UDP as the transport protocol.
XMPP
XMPP is an open standard (RFC6120) and is based on XML technology for real-time communication. It’s used for a range of applications including VoIP, instant messaging, and IoT.
XMPP has been around for a while and has proven scalability and security. There are many servers that have used XMPP for many years. Software is available for any programming language making it easy to get started. Because XMPP was originally an instant messaging protocol and uses XML, it has more overhead compared to a lightweight protocol like MQTT.
IoT protocols overview
Types of IoT connections
Network Toplogies
Wireless nets can also be categorized according to their topology, i.e. a connectivity configuration. There may be various combinations of connections between nodes: line, ring, star, mesh, fully connected, tree, bus.
Network requirements for IoT
- The capacity to connect a large number of heterogeneous elements
- High reliability
- Real-time data transmission with minimum delays
- The ability to protect all data flows
- The ability to configure applications
- Monitoring and traffic management at the device level
- Cost-effectiveness for a large number of connected objects
IoT Protocols
MQTT
MQTT (Message Queue Telemetry Transport) is a lightweight protocol for sending simple data flows from sensors to applications and middleware.
The protocol functions on top of TCP/IP and includes three components: subscriber, publisher and broker. The publisher collects data and sends it to subscribers. The broker tests publishers and subscribers, checking their authorization and ensuring security.
MQTT suits small, cheap, low-memory and low-power devices.
Open DDS from OMG
DDS (Data Distribution Service) is an IoT standard for real-time, scalable and high-performance machine-to-machine communication. It was developed by the Object Management Group (OMG).
You can deploy DDS both in low-footprint devices and in the cloud.
The DDS standard has two main layers:
- Data-Centric Publish-Subscribe (DCPS), which delivers the information to subscribers
- Data-Local Reconstruction Layer (DLRL), which provides an interface to DCPS functionalities
AMQP for middleware
AMQP (Advanced Message Queuing Protocol) is an application layer protocol for message-oriented middleware environments. It is approved as an international standard.
The processing chain of the protocol includes three components that follow certain rules.
- Exchange — gets messages and puts them in the queues
- Message queue — stores messages until they can be safely processed by the client app
- Binding — states the relationship between the first and the second components
OpenDDS concepts
https://objectcomputing.com/products/opendds
OpenDDS was developed by Object Computing, Inc., working closely with key customers, users, and other researchers at various universities and other locations around the globe.
FEATURES
- Broad platform support, including real-time and non-real time operating systems on a variety of hardware platforms.
- Operating systems include Linux, Windows™, Mac OS™, VxWorks™, LynxOS™, and others
- Hardware platforms include the Intel Core Processor Family, ARM, Raspberry Pi, and others
- Complies with the OMG DCPS layer of the Data Distribution Service for Real-Time Systems (DDS) specification.
- A Pluggable Transport Layer that allows data transmission across a variety of transport protocols. OpenDDS currently implements simple TCP, UDP, reliable multicast, and unreliable multicast transports. In addition, application developers may implement their own custom transport protocols and plug them into OpenDDS.
- Interoperability with other DDS implementations through the RTPS transport.
- Support for Java bindings through JNI and the option of inclusion with JBoss (ESB) frameworks by means of a JMS wrapper.
BENEFITS
OpenDDS is free Open Source software (FOSS), which means no vendor lock-in and maximum user control. There are no license fees whatsoever.
Full source code available (also at no cost).
The OpenDDS Modeling Software Development Kit (SDK), built on top of the Eclipse Modeling Framework, simplifies the use of OpenDDS, leaving the developer free to devote more time to application issues rather than the details of internal middleware plumbing.
Efficient marshaling and demarshalling of user-defined data types.
Robust federated information repository that allows publishers and subscribers to discover one another, to support registration of participants and creation of topics, and to support publication of built-in topics for meta-data propagation.
Scalable, multi-threaded architecture.
Includes an easy-to-use run-time configuration framework that supports configuration via a combination of files, options, and application programming interfaces.
...
S-xHrvpjwHhnw3/view?usp=sharing 10 Best IoT Platforms To Watch Out In 2020-softwaretestinghelp.com.pdf | Iot Platforms - 2020 - what are they - compared |
OpenHorizon LF eos IOT platform Quick start docs | |
IoT Impacts | |
https://medium.com/@iskerrett/five-takeaways-from-ms-iot-signals-report-ef1f4ae2db09 | Five Takeaways from MS IoT Signals Report - 2020 - Ian Skerrett |
Microsoft IoT signals report 2020 - Iot Trends, investments, results | |
Key Concepts
IoT Networking and Data Standards
https://networklessons.com/cisco/evolving-technologies/iot-standards-and-protocols
There are many protocols that have a direct or indirect role in IoT. We’ll focus on two protocol types in particular:
- Network protocols
- Data protocols
Network Protocols
The network protocols we use for IoT should be open standards because our IoT network has to support devices from multiple vendors. Proprietary protocols increase complexity because you then need devices that can translate between the different protocols.
The Internet Protocol (IP) is well established and we have been using IP for IT networks for a long time. This is one of the reasons why IP is also the main choice for IoT networks.
Using IPv6 is encouraged because there are no address space limitations as there are with IPv4. Solutions such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPAN) or IPv6 Routing Protocol for LLNs (RPL) don’t even support IPv4, only IPv6.
Data Protocols
We need to transfer data between our devices and other systems such as an IoT platform. Some devices have sensors that push data at a regular interval. Other sensors work with a pull model where you have to request the information. There are several data protocols we can use in IoT. Here are three popular protocols:
- Message Queuing Telemetry Transport (MQTT)
- Constrained Application Protocol (CoAP)
- Extensible Message and Presence Protocol (XMPP)
MQTT
MQTT is probably the most used protocol in IoT. It’s a lightweight message protocol that uses publish and subscribe operations to transmit data between a client and server. It uses TCP as the transport protocol.
Packets are tiny and require little bandwidth. MQTT uses a client-server model. The server is called a broker. There are two operations:
- Publish: a device (client) sends data to a broker (server).
- Subscribe: a device (client) wants to receive data from a broker (server).
MQTT Docs
https://docs.oasis-open.org/mqtt/mqtt/v5.0/mqtt-v5.0.pdf
https://drive.google.com/file/d/1zQzn9wEPG91T7PQOrl0vX7K1mDrkR2du/view?usp=sharing
CoAP
CoAP is also a lightweight protocol and was developed as a standard (RFC 7252). It’s based on a REST model. A server makes resources available under a URL and clients access these resources with GET, PUT, POST, and DELETE methods. It is easy to get started with CoAP because many developers are familiar with REST.
CoAP can carry different payload types including XML and JSON and uses UDP as the transport protocol.
XMPP
XMPP is an open standard (RFC6120) and is based on XML technology for real-time communication. It’s used for a range of applications including VoIP, instant messaging, and IoT.
XMPP has been around for a while and has proven scalability and security. There are many servers that have used XMPP for many years. Software is available for any programming language making it easy to get started. Because XMPP was originally an instant messaging protocol and uses XML, it has more overhead compared to a lightweight protocol like MQTT.
IoT protocols overview
Types of IoT connections
Network Toplogies
Wireless nets can also be categorized according to their topology, i.e. a connectivity configuration. There may be various combinations of connections between nodes: line, ring, star, mesh, fully connected, tree, bus.
Network requirements for IoT
- The capacity to connect a large number of heterogeneous elements
- High reliability
- Real-time data transmission with minimum delays
- The ability to protect all data flows
- The ability to configure applications
- Monitoring and traffic management at the device level
- Cost-effectiveness for a large number of connected objects
IoT Protocols
MQTT
MQTT (Message Queue Telemetry Transport) is a lightweight protocol for sending simple data flows from sensors to applications and middleware.
The protocol functions on top of TCP/IP and includes three components: subscriber, publisher and broker. The publisher collects data and sends it to subscribers. The broker tests publishers and subscribers, checking their authorization and ensuring security.
MQTT suits small, cheap, low-memory and low-power devices.
Open DDS from OMG
DDS (Data Distribution Service) is an IoT standard for real-time, scalable and high-performance machine-to-machine communication. It was developed by the Object Management Group (OMG).
You can deploy DDS both in low-footprint devices and in the cloud.
The DDS standard has two main layers:
- Data-Centric Publish-Subscribe (DCPS), which delivers the information to subscribers
- Data-Local Reconstruction Layer (DLRL), which provides an interface to DCPS functionalities
AMQP for middleware
AMQP (Advanced Message Queuing Protocol) is an application layer protocol for message-oriented middleware environments. It is approved as an international standard.
The processing chain of the protocol includes three components that follow certain rules.
- Exchange — gets messages and puts them in the queues
- Message queue — stores messages until they can be safely processed by the client app
- Binding — states the relationship between the first and the second components
IoT Identity, Access and Accounting Concepts
Hyperledger White Paper - IoT Identity, Access and Accounting Concepts
iot-Decentralized Access and Management for IoT Devices - White Paper – Smart Phone PoC.docx
The ever-increasing number of IoT devices carries huge security and data vulnerability risk. Technologists are busy developing solutions to protect and guard IoT devices and the data they generate and share, as well as developing trust models to validate not only IoT devices’ data but also the applications providing the end services.
IoT Definition
There are several definitions of Internet of Things (IoT) that vary based on the specific context in which the definition is being used. However, most definitions agree on some key characteristics of IoT including:
- A group of physical objects, things, which are connected and accessible via the internet
- The “thing” could be a robot in a factory, a pacemaker attached to a human, or a temperature sensor in a food package.
- Each object has a unique ID and is capable of automatically collecting and sharing data.
- Some objects are programmable and capable of making certain decisions on their own.
Problem statement - identity, authn, authz, security, reputation
As the number of IoT devices is expected to grow exponentially over the years, managing and protecting these devices and the data they access and generate become more complex and challenging. The challenge spans multiple domains from people accessing services to organizations responsible for authenticating and authorizing access to devices and data.
The lack of a robust, industry-grade IoT device management scheme leaves devices exposed to identity theft and also leaves data exposed to unauthorized access and manipulation. This issue is further exasperated when dealing with personalized applications and services where issues of identity validation, trust, consent, and attribute sharing are of paramount importance.
At a macro industry level, the proliferation of IoT devices in heterogeneous networks has created a fragmented identity management space. This fragmentation has caused a multiplicity of silos of identity management systems which significantly limit interoperability.
OpenHorizon LF eos IOT platform
Quick start docs
https://open-horizon.github.io/docs/
Overview of OpenHorizon architecture
https://open-horizon.github.io/docs/getting_started/overview_oh.html
Open Horizon provides you with edge computing features to help you manage and deploy workloads from a management hub cluster to edge devices and remote instances of OpenShift Container Platform or other Kubernetes-based clusters.
Architecture
The goal of edge computing is to harness the disciplines that have been created for hybrid cloud computing to support remote operations of edge computing facilities. Open Horizon is designed for that purpose.
The deployment of Open Horizon includes the management hub that runs in an instance of OpenShift Container Platform installed in your data center. The management hub is where the management of all of your remote edge nodes (edge devices and edge clusters) occurs.
These edge nodes can be installed in remote on-premises locations to make your application workloads local to where your critical business operations physically occur, such as at your factories, warehouses, retail outlets, distribution centers, and more.
The following diagram depicts the high-level topology for a typical edge computing setup:
Quickstart for local test env
https://open-horizon.github.io/quick-start
Learning OpenHorizon - Developer view
https://open-horizon.github.io/docs/getting_started/developer_learning_path.html
OpenDDS concepts
https://objectcomputing.com/products/opendds
OpenDDS was developed by Object Computing, Inc., working closely with key customers, users, and other researchers at various universities and other locations around the globe.
FEATURES
- Broad platform support, including real-time and non-real time operating systems on a variety of hardware platforms.
- Operating systems include Linux, Windows™, Mac OS™, VxWorks™, LynxOS™, and others
- Hardware platforms include the Intel Core Processor Family, ARM, Raspberry Pi, and others
- Complies with the OMG DCPS layer of the Data Distribution Service for Real-Time Systems (DDS) specification.
- A Pluggable Transport Layer that allows data transmission across a variety of transport protocols. OpenDDS currently implements simple TCP, UDP, reliable multicast, and unreliable multicast transports. In addition, application developers may implement their own custom transport protocols and plug them into OpenDDS.
- Interoperability with other DDS implementations through the RTPS transport.
- Support for Java bindings through JNI and the option of inclusion with JBoss (ESB) frameworks by means of a JMS wrapper.
BENEFITS
OpenDDS is free Open Source software (FOSS), which means no vendor lock-in and maximum user control. There are no license fees whatsoever.
Full source code available (also at no cost).
The OpenDDS Modeling Software Development Kit (SDK), built on top of the Eclipse Modeling Framework, simplifies the use of OpenDDS, leaving the developer free to devote more time to application issues rather than the details of internal middleware plumbing.
Efficient marshaling and demarshalling of user-defined data types.
Robust federated information repository that allows publishers and subscribers to discover one another, to support registration of participants and creation of topics, and to support publication of built-in topics for meta-data propagation.
Scalable, multi-threaded architecture.
Includes an easy-to-use run-time configuration framework that supports configuration via a combination of files, options, and application programming interfaces.
Opportunities
Home IOT networks
Andy Martin on Home Smart Networks
internet security is a big thing. Blockchain helps there in financial transaction security, of course, but can it help in other ways as well?
Home networks are becoming like small business networks but with no one (single) person responsible for security - except the home owner. There are too many moving parts and especially Chinese cheap smart devices for say Apple to take overall control.
This is my home network design, so far, as I move into Electric Cars (how do I reach the parking bay for my apartment), smart lights and plugs as I try to reduce walking requirements as my MS progresses and I can't really walk anymore, smart heating and WiFi music to all speakers around my home.
It's not a good idea to share your network password in exchange for smart functionality. This is my idea to mitigate that risk using the guest network to isolate untrusted devices.
There is a less obvious blockchain angle to this though. Why not use blockchain to confirm that each smart device is using trusted firmware? In that way we can stop hackers from say turning up the temperature on a million homes so the spike in demand crashes the electric grid. Or a hacker adding a device to my network to sniff network activity for useful data ir turn my network into a bot used for attacking other networks.
Can you improve on my design, pre-blockchain?
Challenges
Solutions
Hyperchain Labs sensor integration with Blockchain
...