Last year I wrote a two part introduction (see here and here) to oneM2M, a communication framework for machine to machine communication. I called them ‘telescope view’ episodes because I didn’t find any good resources at the time that could explain what oneM2M actually does. Things have improved significantly since then and I recently found two interesting websites that give an introduction at the message level of how oneM2M works.
The first introduction of how devices can actually exchange data via centralized oneM2M servers is on the oneM2M website itself. They start with a use case here and then continue to develop the example down to a level at which they show how the messages that are exchanged over http(s) are actually encoded in XML and JSON format. A couple of pictures also give a quick overview of the oneM2M terminology such as for example:
AE –> Application Entity (e.g. sensors or an app on a smartphone)
CSE –> Common Service Environment (central servers)
MN –> Middle Node
IN –> Infrastructure Node
There are a gazillion other two- and three letter acronyms for other oneM2M specifics but these 4 in combination are enough to understand the basic concept of data sources and sinks exchanging data via centralized servers.
And an even more practical example including instructions how to download an open source implementation of an M2M server (an MN-CSE or IN-CSE) and get it up and running in a Docker container with easy to follow examples of registering devices, containers and content instances (a programmer would call them ‘variables’) can be found on this page of the OpenMTC Dev Center of the Fraunhofer FOKUS institute.
The page also answers the question of how devices implementing sensors and actuators as well as apps running on smartphones, tablets, PCs, etc. authenticate oneM2M servers and how they authenticate themselves to them: By using https communication and SSL certificates in both directions. This was already hinted in the documentation I read for my telescope episodes but it was good to see how the OpenMTC server actually implements this.
Cool stuff to get up to speed quickly!