IOT (Internet of Things) is one of the most promising new generation business.
Nowadays it is not even remotely imaginable to think about managing your daily activities without using the internet or without using, at least once during the day, a device connected to the "big network".
Configuring a new router at home, I was impressed by the amount of objects (hardware) installed in my house requiring an internet connection to work properly. Let's start with the mobile phones; In the family we are 4, this means, 4 connections. Then the ipads.
we have two old ones plus an Android tablet. Then the kindle for my wife who, in the evening, relaxes by reading a book. Immediately after, you go to the smart TV, apple TV and PS3. Do not forget computers, remote access points,
wifi surveillance cameras. You got it right. I'm talking about dozens of objects, permanently connected to the network. Each of this object will not exist and will not work without a fully functional internet connection.
IoT is a much more complex concept than the simple use that can be made of a television or a mobile phone. IoT is a physical extension of the analog world to the digital world. With a lot of immagination it is something like if we were able to inject ourselves and our things
within the internet network and be simultaneously on multiple points.
Obviously, for the time being, it is better to "keep your feet on the ground". For the moment let's imagine, simply, to require to light a lamp at home while sitting comfortably at a friend's house 20 KM away from your home.
The extension of ourselves is a small object that, connected to the network, behaves like a real switch operated remotely from our mobile phone. This instrument has been our physical extension towards the home, tens of kilometers away.
"Internet of things" allows us to do this.
More than connect our minds through social media, share sites, blogs etc. now, we are able to connect our things, our homes, our machines, our washing machines, refrigerators and who knows what else we will connect.
You will understand that here we are talking about billions and billions of information to be managed and thousands and thousands of potential services that could be made available to those who produce hardware "connectable" to the internet.
Regarding this hardware there are two main characteristics that will help us to draw and then understand the miniservices concept. The first is that IoT is made of simple and minimal things.
The market itself teaches us that if we want to launch successfully a product we must lower costs, producing something ease to use and with chip components.
Another significant aspect is that producers of these components,
mainly want to produce the hardware and would be very interested to have already available all the software necessary to make their machines work quickly and easily.
Financial aspect is represented by:
-- Low development complexity
-- Simple protocolls
-- low level of communication and few constraint
The two items described, make the point on a very interesting business model. This model could be satisfied with the creation of MiniServices.
A miniservice is a simple, secure and versatile function that can be queried by hardware designed for the IoT and which can provide a data storage service, a sessionless function or simply, reply to a query:
Save data in a safe place that I should not care (Infrastructure, backup, disaster recovery and so on).
Start a specific function using an input provided by the IoT object alone or combining information coming from more than one single object
Query a database and send me back a result
With these three basic operations the miniservices propose to greatly simplify the life of any manufacturer of IoT devices. They can be used by professionals, by private individuals but also by large companies.
The miniservices offer a security system ensuring that access to data remains unique and personal and that own services are accessible only to their certified hardware devices.
Technically a miniservice is a REST call (If you are interested in understanding what REST calls I wrote a short tutorial
) function, called by the IoT hardware web interface (a wifi card connected to a router or a generic network module connected cable even a GPRS module connected to an internet APN).
Before querying the real needed service, we ask a specific authentication service to be allowed for a specific set of functions. This service (if approved) returns a unique key that is used to access the desired function once and only once. Invoking the selected service, the operations
executed by the miniservice generates a "Store" an "Execute" or a "Query" operation.
In the following graph I tried to schematically represent an application flow related to a call made to a miniservice, to obtain the service output response.
Following the list of miniservices available in the version 1.0.
For every service you will be able to find a small servicesheet in english with the sintax to use for every single call using REST methodology
The core of the authentication system (default call) is represented by this service which, once verified various security information related to the calling device, returns
a token valid only one time to be used for calls to other Miniservices.
This service saves in the archive a series of geographical coordinates by adding different parameters that can be used, later, during the query,
to determine specific geographic locations or routes
The output service of GeoCoordinates, returns the coordinates stored in the archive following some input criteria and applying the filters related to the specific
IoT device who stored the information.
Allow your own device to work or not, based on a pre approval process with authentication token
This service can be used to configure which devices need to access what. More generally, this service can also be configured for approvals
other than access to miniservices.
Using this function, in theory, one could even simply authorize or not a specific device (or one given to another) to operate. What is configured through this service is then verified by consulting ApplicationApprover
It is possible to define a configuration to download on your own devices. Calling this function, a device, can download it's own personalised configuration
This service allows you to upload complete configuration files in XML format that will be later downloaded to the device to be configured using the ConfigurationDownload miniservice
Very often it happens to have the need to store somewere a specific place of interest. Maybe, adding a special note to remind us of what the place was related to. This service does just that. The coordinates sent to the database could then be retrieved using the RetrieveCoordinates method
This simple service (part of the "MeteoSet group of Miniservices") allows to store data coming from a temperature sensor (such as DHT11 or DHT22). The data can be connected or not to particular geographical coordinates.
The combination also allows you to locate the geo-referenced position of the point where the temperature was detected. Obviously, in this case the temperature sensor must be installed together with a GPS device
All the weather information stored in the MeteoSet functions (Weather Set) DB can be queried through this function which returns all the parameters stored in a given time interval.
Biomedical service (part of the "Healt group of Miniservices") allows you to store biomedical data returned by IoT devices operating with medical sensors. Also in this area the sensors available on the market are many. The first version of such service can operate storing BPM (beats per minute) values, Temperature values and oxygenation data.
One of the most common sensors available on the market to build IoT devices is, as example, the max 30100 but the number of devices you can find to evaluate medical values is big. Everithing depend on your fantasy and on the values you want to monitor.
For all of them we have available libraries to support IoT Development like the Miniservices Controller
that can be used to simplify any miniservice call.
If you are interested to understand how to implement such similar devices compatible with the Miniservices by buonevacanze.org infrastructure, then you can see how I built the IoT Meteo station
. This will be usefull for you in order to start building your first device but also to understand how to implement access to authenticate your requests and to manipulate data stored into the central database of Buonevacanze.org
All IoT Miniservices have an additional protection criteria related to the calling MAC code. This code is sent to the http protocol during the call and is validated by an access list in the manufacturer's archive. For this reason the activation (only initial of course) of a device requires the hardware manufacturer to send a list of MAC code to enable.
It is possible to access a protected test environment that can be used to test all the functionality of the miniservices without any impact on the stable production environment.
To enable your access to IoT Miniservice SET from www.Buonevacanze.org, please, contact the author.