Difference between revisions of "Tech pages/IoT XepsExplained"

From XMPP WIKI
Jump to navigation Jump to search
 
(23 intermediate revisions by 2 users not shown)
Line 1: Line 1:
= Layout=
= Layout =
  [[Tech pages/IoT_systems|Main]] Main page
  [[Tech pages/IoT_XepsExplained|IoT_XepsExplained]] Description of xeps and their interaction
  [[Tech pages/IoT_Examples|IoT_Examples]] Mashup some examples from different industries, help finding new ones
  [[Tech pages/IoT_Support|IoT_Support]] Here we describe who support this and related work that can help you.
  [[Tech pages/IoT_Interoperability|IoT_Interoperability]] How we will keep everything truly interoperable
  [[Tech pages/IoT_XMPP_Process|IoT_XMPP_Process]] How is the process of the xep's and interoperability interfaces managed
  [[Tech pages/IoT_ConstrainedDevices|IoT_ConstrainedDevices]] Going in to the world of restricted devices we need special care.


== overview ==
{{XmppIoTLayout}}
At a first glance this can seem hard to grasp with so many extensions but it is really simple.


We need to access and control nodes and if nodes are behind a complex technology we need to find them behind a concentrator and then be able to put a device in use we need the provisioning. When creating more advanced systems discovery and pubsub and eventing will be needed but if you just started conecntrate on the [http://htmlpreview.github.com/?https://github.com/joachimlindborg/XMPP-IoT/blob/master/sensor-data.html data] and [http://htmlpreview.github.com/?https://github.com/joachimlindborg/XMPP-IoT/blob/master/xep-0000-IoT-Control.html xep-0000-IoT-Control] xeps
== 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 [http://xmpp.org/extensions/xep-0323.html XEP-0323: IoT Sensor Data] and [http://xmpp.org/extensions/xep-0325.html XEP-0325: IoT Control].
A security layer helping to define who can talk to whom and about what, is provided by the [http://xmpp.org/extensions/xep-0324.html XEP-0324: IoT Provisioning] extensions.
Subsystems (large systems or small PLCs) are handled by the [http://xmpp.org/extensions/xep-0326.html 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 [http://xmpp.org/extensions/xep-0323.html Prezi presentation about IoT & XMPP].


== Base Specifications ==
== Base Specifications ==
The core is 4 xeps that together describes more or less any interesting system solutions. The concentrator is large since it contains management of a whole network of connected devices


* [http://xmpp.org/extensions/xep-0323.html| xep-0323 IoT-sensor-data] [http://htmlpreview.github.com/?https://github.com/joachimlindborg/XMPP-IoT/blob/master/sensor-data.html| latest working material]
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
  Provides the underlying architecture, basic operations and  
 
  data structures for sensor data communication over XMPP networks.  
=== Sensor Data ===
  It includes a hardware abstraction model, removing any technical  
 
  detail implemented in underlying technologies.  
Link: [http://xmpp.org/extensions/xep-0323.html XEP-0323: IoT-sensor-data] <br/>
  This XEP is used by all other sensor network XEPs.
Latest working material: [http://htmlpreview.github.com/?https://github.com/joachimlindborg/XMPP-IoT/blob/master/sensor-data.html 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: [http://xmpp.org/extensions/xep-0324.html XEP-0324: IoT-provisioning] <br/>
Latest working material: [http://htmlpreview.github.com/?https://github.com/joachimlindborg/XMPP-IoT/blob/master/sensor-network-provisioning.html Github]


* [http://htmlpreview.github.com/?https://github.com/joachimlindborg/XMPP-IoT/blob/master/xep-0000-IoT-Control.html xep-0000-IoT-Control]
This specification. Defines how provisioning, the management of access privileges, etc., can be efficiently and easily implemented.
  Defines how to control actuators and other devices in
 
  sensor networks.
=== Control ===
 
Link: [http://xmpp.org/extensions/xep-0325.html XEP-0325: IoT-control]<br/>
Latest working material: [http://htmlpreview.github.com/?https://github.com/joachimlindborg/XMPP-IoT/blob/master/sensor-network-control.html Github]
 
Defines how to control actuators and other devices in sensor networks.
 
=== Concentrators ===
 
Link: [http://xmpp.org/extensions/xep-0326.html XEP-0326: IoT-concentrators]
Latest working material: [http://htmlpreview.github.com/?https://github.com/joachimlindborg/XMPP-IoT/master/sensor-network-concentrators.html Github]
 
Defines how to handle architectures containing concentrators or servers handling multiple sensors.
 
== Interoperability Specification ==


* [http://htmlpreview.github.com/?https://github.com/joachimlindborg/XMPP-IoT/master/xep-0000-IoT-Concentrators.html xep-0000-IoT-Concentrators]
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
  Defines how to handle architectures containing concentrators
  or servers handling multiple sensors.


* [http://xmpp.org/extensions/xep-0324.html| xep-0324 IoT-provisioning]
Latest working material: [http://htmlpreview.github.io/?https://github.com/joachimlindborg/XMPP-IoT/blob/master/xep-0000-IoT-Interoperability.html xep-0000-IoT-Interoperability]
[http://htmlpreview.github.com/?https://github.com/joachimlindborg/XMPP-IoT/blob/master/sensor-network-provisioning.html Latest working material]  
  This specification. Defines how provisioning, the management of
  access privileges, etc., can be efficiently and easily
  implemented.


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


== Enhancing Specifications ==
== 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.  
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.  


* xep-0000-IoT-Discovery
=== Discovery ===
  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-Events
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.
  Defines how sensors send events, how event subscription,
  hysteresis levels, etc., are configured.


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


* xep-0000-IoT-PubSub
Defines how sensors send events, how event subscription, hysteresis levels, etc., are configured.
  Defines how efficient publication of sensor data can be made
  in sensor networks.


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


== Interoperability Specification ==
Defines how sensor data can be multicast in efficient ways.
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
 
=== Publish/Subscribe ===
 
Defines how efficient publication of sensor data can be made in sensor networks.
 
=== Battery Powered Devices ===


* xep-0000-IoT-Interoperability
Defines how to handle the peculiars related to battery powered devices, and other devices intermittently available on the network.
  Defines guidelines for how to achieve interoperability in
  sensor networks, publishing interoperability interfaces for
  different types of devices.


== Supporting Specifications ==
== Supporting Specifications ==


* XEP-0000-ColorParameter
=== Color Field Types ===
  Defines extensions for how color parameters can be handled, based on Data Forms [1]
 
Link: [http://xmpp.org/extensions/xep-0331.html XEP-0331: Color Field Types] <br/>
Latest working material: [http://htmlpreview.github.com/?https://github.com/joachimlindborg/XMPP-DF/blob/master/color-parameter.html GitHub]
 
Defines extensions for how color parameters can be handled, based on Data Forms.
 
=== Dynamic Forms ===
 
Link: [http://xmpp.org/extensions/xep-0336.html XEP-0336: Dynamic Forms] <br/>
Latest working material: [http://htmlpreview.github.com/?https://github.com/joachimlindborg/XMPP-DF/blob/master/dynamic-forms.html GitHub]
 
Defines extensions for how dynamic forms can be created, based on Data Forms, Data Forms Validation, Publishing Stream Initiation Requests, Data Forms Layout.
 
=== Event Logging ===
 
Link: [http://xmpp.org/extensions/xep-0337.html XEP-0337: Event Logging over XMPP] <br/>
Latest working material: [http://htmlpreview.github.com/?https://github.com/joachimlindborg/XMPP-IOT/blob/master/eventlogging.html GitHub]
 
Defines extensions for how dynamic forms can be created, based on Data Forms, Data Forms Validation, Publishing Stream Initiation Requests, Data Forms Layout.
 
=== EXI ===
 
Link: [http://xmpp.org/extensions/xep-0322.html XEP-0322: EXI]<br/>
Current working material: [http://htmlpreview.github.com/?https://github.com/joachimlindborg/XMPP-EXI/blob/master/exi.html GitHub]
 
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.
 
=== IoT Chat ===


* XEP-0000-DynamicForms
Latest working material: [http://htmlpreview.github.com/?https://github.com/joachimlindborg/XMPP-IoT/blob/master/xep-0000-IoT-Chat.html GitHub]
  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].


* [http://xmpp.org/extensions/xep-0322.html| xep-0322 Exi] [http://htmlpreview.github.com/?https://github.com/joachimlindborg/XMPP-EXI/blob/master/exi.html Latest working material]
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
  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.

Latest revision as of 21:40, 8 January 2014

Layout

Links to important documents relating to Internet of Things and XMPP:

  • Main: Main page.
  • XEPs Explained: Description of xeps and their interaction. If you are new to XMPP & Internet of Things, you should read this.
  • IoT Examples: Mashup some examples from different industries, help finding new ones.
  • IoT Support: Here we describe who support this and related work that can help you.
  • IoT Interoperability: How we will keep everything truly interoperable.
  • IoT Security: This is one of the strongest benefit of using XMPP.
  • IoT XMPP Process: How is the process of the xep's and interoperability interfaces managed.
  • IoT Constrained Devices: Going in to the world of restricted devices we need special care.
  • IoT Local Environment: When dealing with home automation or a local network we need serverless or a local server configuration.
  • IoT Http over XMPP: This extension extends the web to include devices in XMPP networks.

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 material: 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.

Discovery

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.

Events

Defines how sensors send events, how event subscription, hysteresis levels, etc., are configured.

Multicast

Defines how sensor data can be multicast in efficient ways.

Publish/Subscribe

Defines how efficient publication of sensor data can be made in sensor networks.

Battery Powered Devices

Defines how to handle the peculiars related to battery powered devices, and other devices intermittently available on the network.

Supporting Specifications

Color Field Types

Link: XEP-0331: Color Field Types
Latest working material: GitHub

Defines extensions for how color parameters can be handled, based on Data Forms.

Dynamic Forms

Link: XEP-0336: Dynamic Forms
Latest working material: GitHub

Defines extensions for how dynamic forms can be created, based on Data Forms, Data Forms Validation, Publishing Stream Initiation Requests, Data Forms Layout.

Event Logging

Link: XEP-0337: Event Logging over XMPP
Latest working material: GitHub

Defines extensions for how dynamic forms can be created, based on Data Forms, Data Forms Validation, Publishing Stream Initiation Requests, Data Forms Layout.

EXI

Link: XEP-0322: EXI
Current working material: GitHub

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.

IoT Chat

Latest working material: GitHub

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