Tech pages/IoT XepsExplained

= Layout =

Overview
At a first glance it can seem hard to grasp all the extensions but it is really simple:

We need to access and control nodes and this is basicly done through two xeps the XEP-0323: IoT Sensor Data and XEP-0325: IoT Control.

A security layer helping to define who can talk to whom and about what, is provided by the XEP-0324: IoT Provisioning extensions.

Subsystems (large systems or small PLCs) are handled by the XEP-0326: Concentrators extension.

Other extensions cover more complex structures, architecture patterns and ways of abstracting lower level transport protocols and hardware. This include discover, events, publish/subscribe patterns, chat interfaces, interoperability, multi-casting, battery powered devices, etc.

For a graphic overview, see this Prezi presentation about IoT & XMPP.

Base Specifications
The core contains 4 XEPs that together describe more or less any possible system solution. The concentrator is more extensive since it contains management of a whole networks of connected devices

Sensor Data
Link: XEP-0323: IoT-sensor-data Latest working material: Github

Provides the underlying architecture, basic operations and data structures for sensor data communication over XMPP networks. It includes a hardware abstraction model, removing any technical detail implemented in underlying technologies. This XEP is used by all other sensor network XEPs.

Provisioning & Security
Link: XEP-0324: IoT-provisioning Latest working material: Github

This specification. Defines how provisioning, the management of access privileges, etc., can be efficiently and easily implemented.

Control
Link: XEP-0325: IoT-control Latest working material: Github

Defines how to control actuators and other devices in sensor networks.

Concentrators
Link: XEP-0326: IoT-concentrators Latest working material: Github

Defines how to handle architectures containing concentrators or servers handling multiple sensors.

Interoperability Specification
In all networks that combines information from different systems over business and technology borders the crucial thing is to get interoperability. And there is no other way to do this than creating specifications that adds the "common good practices" to make things speak the same language. The interoperability spec will be a moving target with constant elaboration to enable true interoperability between systems

Latest working version: xep-0000-IoT-Interoperability

Defines guidelines for how to achieve interoperability in sensor networks, publishing interoperability interfaces for different types of devices.

Enhancing Specifications
When you have realised that this is the way to go and would like to create more advanced network solutions and collaborative IoT systems you need do expand a bit further. The need for these xeps are that the normal PubSub, Eventing, etc are somewhat limited since they are meant to be used in people to people communication and therefore lacks some functionality. Instead of squeezing machine to machine into the existing xeps.

Defines the peculiars of sensor discovery in sensor networks. Apart from discovering sensors by JID, it also defines how to  discover sensors based on location, etc.
 * xep-0000-IoT-Discovery

Defines how sensors send events, how event subscription, hysteresis levels, etc., are configured.
 * xep-0000-IoT-Events

Defines how sensor data can be multicast in efficient ways.
 * xep-0000-IoT-Multicast

Defines how efficient publication of sensor data can be made in sensor networks.
 * xep-0000-IoT-PubSub

Defines how to handle the peculiars related to battery powered devices, and other devices intermittently available on the network.
 * xep-0000-IoT-BatteryPoweredSensors

Supporting Specifications
Defines extensions for how color parameters can be handled, based on Data Forms [1]
 * XEP-0331-ColorParameter

This is a very useful extension to facilitate integration with humans and other systems. Via plain chat messages this defines a easy extendible syntax for interacting with devices, reading values and setting parameters and control values
 * xep-0000-IoT-Chat

Defines extensions for how dynamic forms can be created, based on Data Forms [2], Data Forms Validation [3], Publishing Stream Initiation Requests [4] and Data Forms Layout [5].
 * XEP-0000-DynamicForms

Defines how to EXI can be used in XMPP to achieve efficient compression of data. Albeit not a sensor network specific XEP, this XEP should be considered in all sensor network implementations where memory and packet size is an issue.
 * | xep-0322 Exi Latest working material