XMPP is an excellent protocol for use within Internet of Things. The aim of this page, is to give a brief introduction to how XMPP can help build solid, secure and interoperable devices, services and applications for the Internet of Things. It is meant as a simple portal for people interested in IoT, providing links to more detailed information on each subject.
A definition for the Internet of Things
While early pioneers into the field later named Internet of Things, or IoT, were quick to outline their visions of what the Internet of Things could become, the subject has lacked a clear definition of what it is, a definition with clear ramifications and consequences that can be studied, and under which different solutions can be compared. Before we embark on the journey of making claims of which protocol is the best for IoT, or if a protocol is good or bad at all, we need to establish some common ground. We therefore make the following definition:
Internet of Things |
---|
The Internet of Things (or IoT) is what we get when we connect Things, that are not operated by humans, to the Internet. |
This definition has some direct consequences that open up into different areas of study:
-
Connection relates to the study of communication protocols, and in particular, how to connect or bind to the network. XMPP provides various choices, such as socket connections, BOSH - Bidirectional streams over Synchronous HTTP and EXI - Efficient XML Interchange.
Connection also relates to communication patterns. XMPP is particularly rich when it comes to supporting different communication patterns, such as Request/Response, Asynchronous Messaging, Publish/Subscribe, Event subscription (Observe) and Delayed delivery. XMPP also has support for different Quality of Service levels for messaging.
-
Things relates to the study of all kinds of things that can be connected, such as sensors, actuators, controllers and other types of devices.
-
Not operated by humans relates to provisioning, delegation of trust, automatic decision making, but also discovery.
-
Internet relates to scalability, including topics such as federation and global identity.
Internet also relates very much to all kinds of security related topics, such as identities, authentication, authorization and encryption including end-to-end encryption.
Another important aspect of the Internet is interoperability. This includes topics such as loosely coupled architectures and standardized interfaces.
As you will see, XMPP provides a lot of support into all these areas, making it well suited for use within the area of Internet of Things. To check current developments within XMPP and IoT, check the Work in progress page. There is also a page containing testimonials.
Realized example projects
Projects listed which are adopting XMPP for Internet of Things:
Users | System / Application | Description | Since |
---|---|---|---|
in the range of millions | Google Cloud Print | A cloud solution by Google to process documents to printers without the need to install drivers. | 2010 |
in the range of billions | Firebase Cloud Messaging | Cross-platform notification and message service (formerly Google Cloud Messaging) | 2014 |
in the range of millions | Logitech Harmony Hub | System for home automation and media remote control | 2004 |
- | GitHub repository | IoT reference implementation for ESP32 microcontroller (B.Sc. Thesis). | 2019 |
There are also projects like: Jura E6 2019 platin (15326) IoT prototype, controlled by XMPP.
For more information
For more information regarding XMPP and IoT, check the following resources:
- XMPP Internet of Things web site.
- IoT on the XMPP Wiki
- Learning Internet of Things book on Amazon, covering XMPP and IoT.
- thingk.me provisioning server for IoT.