Difference between revisions of "IoT/M2MIWG/M2M meta-model"
m (→'Things' meta-model)
|Line 70:||Line 70:|
= Work in Progress =
= Work in Progress =
== 'Things' meta-model ==
== 'Things' meta-model ==
Revision as of 10:02, 1 May 2012
General purpose of an M2M application meta-model
The M2M Industry Working Group aims at identifying the concepts that not only are the core of M2M/IoT systems, but are also often hindering the growth of M2M market. In order to ease the development of such solutions (by providing tools to scaffold embedded applications, to simulate devices, to get production-ready software packages...), as well as their operation (how to provide consistent data storage mechanisms, how to deal with device management, ...), it is important to be able to model the following concepts:
Configuration (?) capabilities
The description of the variables and events an element of the system manipulates, as well as the actions (services) that can be invoked on it.
- At development time, configuration capabilities can be used to generate parts or the totality of embedded applications, simulate them, ...
- At runtime, configuration capabilities can be used to configure components of the M2M chain (e.g. server side UI), to maintain backward compatibility between different versions of an application, ...
The description of the different communication channels a given element of the system exposes to others, or depends on for its communication needs.
- At development time, communication capabilities can be used to facillitate simulation of communication scenarios, estimate bandwidth (together w/ configuration capabilities), ...
- At runtime, communication capabilities can be used to help configuring the communication stack of the gateway, choose the best suited channel for a given use case, ...
- ACL: Access Control List. List of permissions attached to an object, specifying which entity of a system is granted access to it.
- Software package: A binary file containing software and metadata that can be sent to an M2M device to update one of its software components
- The M2M application meta-model MUST allow the description of the different parts an M2M application is made of.
- It MUST allow the description of the data that can be exchanged between a device and a server.
- It MUST allow the description of the device management capabilities provided by an M2M application.
- It MUST allow the description of the different components an M2M application is made of.
- The M2M application meta-model SHOULD allow hierarchical structuring of data elements.
- The M2M application meta-model MUST allow a type to be associated with data elements.
- The M2M application meta-model MUST support the following primitive types: string, integer, double, date, boolean, byte array.
- The M2M application meta-model SHOULD allow definition of constraints for the data, such as: range, max length, ...
- The M2M application meta-model SHOULD allow indication of the protocol to use when exchanging a given data element.
- The M2M application meta-model SHOULD allow association of configuration parameters to protocols
- The M2M application meta-model SHOULD allow association of an history policy (keep all, keep last, keep on change...) to a data element.
- The M2M application meta-model SHOULD allow association of ACLs to data elements.
- The M2M application meta-model SHOULD allow specification of commands that can be sent by a server to a device.
- The M2M application meta-model SHOULD allow specification of the set of events that can be sent by a device to a server.
- The M2M application meta-model MUST allow the description of the Device Management operations supported by a given system.
- The M2M application meta-model SHOULD allow to indicate the binary files the application is made of.
Application Lifecyle Management
- The M2M application meta-model SHOULD allow to specify which application container is managing an application
- The M2M application meta-model SHOULD allow to specify dependencies towards capabilities of the underlying device the application is to be deployed on.
- The M2M application meta-model SHOULD allow to validate a software package
- It MUST be possible to edit an M2M model instance using a standard text editor.
- It SHOULD be possible to provide graphical visualization of an M2M model instance.
- It SHOULD be possible to split an M2M model instance into several pieces to ease maintenance and reuse.
Work in Progress
We are in the process of implementing the M2M meta-model using EMF, and the source code is available in the Git repository of the Koneki project: http://git.eclipse.org/c/koneki/org.eclipse.koneki.models.git/
This meta-model allows one to describe what Things a system is made of, what are the data held/manipulated by these Things, and what kind of actions can be performed on these things.
This meta-model allows one to define reusable elements such as Things, or extended primitive types, that are part of what we call an Universe. A 'Location' universe can for example contain the definitions of the different data structures that can be used to store a Location ; likewise, an 'AcmeSensors' universe could be dedicated to the definition of the capabilities of sensors, or classes of sensor, sold by the Acme company.