mirror of
https://github.com/OpenMTC/OpenMTC.git
synced 2024-12-19 13:08:06 +00:00
98 lines
3.8 KiB
Markdown
98 lines
3.8 KiB
Markdown
|
# Introduction to OpenMTC
|
||
|
|
||
|
## Using OpenMTC for IoT/M2M applications
|
||
|
|
||
|
OpenMTC provides an implementation of the [oneM2M standard](http://www.onem2m.org/).
|
||
|
This allows you to develop new or test existing IoT/M2M applications, create
|
||
|
your own IoT/M2M infrastructure, or extend an existing one.
|
||
|
|
||
|
## How is data represented in an OpenMTC-based system?
|
||
|
|
||
|
In an OpenMTC system, all entities are represented as **resources**. Resources
|
||
|
are either:
|
||
|
|
||
|
* **Containers** consisting of other containers (subcontainer) or content instances
|
||
|
* **Content Instances** holding actual values
|
||
|
|
||
|
This results in a hierarchical **resource tree** with content instances as leafs.
|
||
|
Each resource within the resource tree is uniquely addressable by an unique identifier (URI).
|
||
|
|
||
|
### Example
|
||
|
|
||
|
Lets assume you have a ZigBee device providing informations about the current
|
||
|
temperature and its battery status. This will result in the following resource
|
||
|
tree:
|
||
|
|
||
|
![Resource Tree](pics/example_resource_tree.png "Resource Tree")
|
||
|
|
||
|
## How to access and provide data from/to an OpenMTC-based system?
|
||
|
|
||
|
OpenMTC provides mechanisms to create, change, update, and delete
|
||
|
resources in the resource tree. Therefore, an application is needed
|
||
|
that will use one of the following two approaches:
|
||
|
|
||
|
* **A REST API** (external interface)
|
||
|
* **The OpenMTC SDK** (internal interface)
|
||
|
|
||
|
Using the *REST API*, it is possible to provide your application logic
|
||
|
by just using your preferred HTTP client.
|
||
|
|
||
|
In addition, it is also possible to use the *OpenMTC SDK* to write your application. Common
|
||
|
problems, like how to create a subscription that will notify your
|
||
|
application whenever a particular resources are changed or have a new
|
||
|
content instance available, are easily to be solved, using the SDK.
|
||
|
|
||
|
## How to structure your OpenMTC-based IoT system?
|
||
|
|
||
|
Using OpenMTC, it is possible to create your own IoT/M2M infrastructure.
|
||
|
Consider an IoT system that collects data from different sensors, in
|
||
|
different field domains, and automatically distributes the data to
|
||
|
central nodes of multiple field domains.
|
||
|
|
||
|
![Example OpenMTC Architecture](pics/openmtc-archtecture-overview.png "Example OpenMTC
|
||
|
Architecture")
|
||
|
|
||
|
With OpenMTC you would setup an **OpenMTC Gateway** for every field domain. All
|
||
|
oneM2M devices within this field domain would register themself with the
|
||
|
gateway. Non-oneM2M devices would need an **Interworking Proxy**
|
||
|
inbetween to translate to oneM2M.
|
||
|
The gateways are registered at an **OpenMTC Backend** within the infrastructure domain.
|
||
|
**OpenMTC Applications** could either connect directly to the gateways or the backend to provide/collect data.
|
||
|
|
||
|
|
||
|
### Application (AE)
|
||
|
|
||
|
An application is provided by you and others to access data within the OpenMTC-based IoT system.
|
||
|
|
||
|
An example for an application is the server part of Graphical User Interface (GUI), that allows to
|
||
|
visualize data stored in the resource tree.
|
||
|
Another example would be an application using device data to do some analytics
|
||
|
and providing the results within the resource tree.
|
||
|
|
||
|
#### Interworking Proxy (IPE)
|
||
|
|
||
|
A special kind of application -- in a matter of speaking -- is an IPE.
|
||
|
An IPE allows to translate data from a non-oneM2M domain to a oneM2M
|
||
|
domain.
|
||
|
|
||
|
An example for an IPE could be an application that reads out sensor
|
||
|
values from your sensor device by using a vendor-specific binary
|
||
|
interface and translates it to oneM2M.
|
||
|
|
||
|
|
||
|
### OpenMTC Gateway
|
||
|
|
||
|
A software node that is central to a particular small field domain
|
||
|
that allows to collect data from various IPEs. A local application
|
||
|
can access the resource tree, via the OpenMTC Gateway.
|
||
|
|
||
|
It is possible to create a hierarchy of OpenMTC Gateways. This
|
||
|
allows to travel data from one part in your IoT system to another
|
||
|
one.
|
||
|
|
||
|
### OpenMTC Backend
|
||
|
|
||
|
If you need a central software node within the infrastructure domain,
|
||
|
the OpenMTC Backend is the exact choice. Usually, it acts as the
|
||
|
root node within a hierarchy of OpenMTC Gateways.
|