Intro
Other solutions can use IoTool platform, allow connection to different sensors (list of all supported sensors).
IoTool is comprehensive, one-stop IoT Solution incorporating Client / Dashboard / Gateway / Cloud / API. The Android device (smartphone, tablet or TV box), RPi, Arduino or ESP32 microcontroller is used as a gateway to sending and receiving data to and from the IoTool cloud or other clouds (IBM Watson, Amazon, InitialState).
For the specific project, not all sensors are suitable, but different biosensors (like various heart rate), activity (general activity, steps, sleep), environmental (humidity, temperature, flood, door/window, smoke and similar, AirQuality) can be added. For demonstration purposes, the whole portfolio of 22 Shelly sensors with 143 different sensor readings and Ruu.vi tag is added. During the various phases of IoTool development, other sensors has been supported, but they are not on the market anymore, are too invasive for the project needs, like: eMotion Faros, a general purpose HR monitor, Microsoft Band 2, Nonin OnyxII, Polar H7, Xiaomi Mi band 1s/2. Also other wristbands and bio-sensors has been tested, and various triggers (list of supported triggers) can be set with actions (list of supported actions).
IoTool architecture
IoTool clients
-
Android (smartphone, tablet, AndroidTV) device is used. The application is developed in JAVA. IoTool description, IoTool client user manuals. A short description: every extension (sensors, virtual sensor, trigger, action, cloud) is a separate program. IoTool client at start check all compatible programs, get the info from them what type of sensor readings, triggers and actions the support, and collect data from them based on the protocol used and device capabilities. There are no limitations about the number of different sensors, their communication protocols and sensor readings supported, or the number/frequency of data point collected. The client collects data from sensors, shows them on the client dashboard, stores them in the internal database (SQLite), and replicates them to the Cloud. The communication protocol (sensor/actuator and cloud) and internal speed of the client however pose some limitations. It is hard to estimate all limitations but our tests show that the single client can without problems handle up to 24 sensors with various sensor readings. The limit is (measured on the old Samsung Galaxy S6 Edge) up to 24.000 records per second (collected, shown real-time diagrams, stored, sent to the IoTool cloud).
-
ESP32 microcontroller or RPi can be simply added for commercial use, mostly as an IoT gateway for home sensors).
-
Direct / in sensor client - some of sensors/actuators have its own microcontroller and communication interface to the Internet. In this case are connected to the IoTool Cloud server directly, usually over the MQTT.
IoTool client can be freely downloaded from Google Play. In the final project, the client and all needed extensions are built into one module, which is built together with the UI application (Java, JavaScript/Cordova). In this case, all control, additional functionalities, technical support dashboard are combined in the UI application PartnerTools menu, which is password protected from the end-user. For testing purposes the IoTool client can be used instead of the final application.
IoTool and Devices Protocol Communication
IoTool connects various sensors using the extension system. In general, also BT, WiFi or USB are used in the IoTool Client. In case of microcontroller client also serial interfaces are used. Shelly sensors are connected directly over the WiFi to the Internet and to the IoTool Server/Cloud using MQTT or http calls.
IoTool server
IoTool server is a communication/storage server installed on Linux distribution (Tested on Ubuntu, SUSE, CentOS). It can also work in a Docker container. It uses LAPP (Apache, PHP, PostgreSQL) and optional Mosquitto broker (MQTT), Grafana, ThingsBoard.
IoTool server functionalities
-
Collect data from different clients or sensors using a proprietary protocol, http calls or MQTT.
-
Stores data collected into the database.
-
The platform administration - IoTool adminer user manual.
-
The server can send data to other services/brokers/platforms, like Mosquitto or the ThingsBoard platform. Data can be also visualized using third-party dashboards like Grafana.
IoTool Cloud Communication
Connection
IoTool client is connected to the Internet to the IoTool Cloud/Server. In case there is no data connection, all collected data is stored internally and replicated when data connection is established.
Connection format
IoTool client sends data using http post, MQTT message or proprietary format. IoTool client sends data using http post, MQTT message or proprietary format. Because of the high number of readings (up to 24k records per second possible) and mobile channel limitations (speed, coverage, the proprietary format can be selected. Data has been combined in chunks (1-10s together, in settings), compressed and sent over the secured channel. On the IoTool Cloud/Server side, it is added to queue, unpacked, and stored into the database. In real environment the whole delay is just a few seconds, and it does not pose any problem because every sensor reading incorporates a real-time stamp. Data priority: first real time data, after not replicated history data.
Edge and Fog computing
IoTool client in an Edge computing device. It processes and stores data on the tablet and a fraction of data is sent to the cloud. Also, the mHealth band, used in the pilot project is the edge IoT device (it stores data internally and calculates or recognized, for example, the number of steps and sleep phases). The edge computing usage can be also extended by using virtual sensors sensors. How to develop a virtual sensor extension.
There are four types/location of data storage in the project:
Sensor (some of them have internal computing and storage) IoTool client internal storage IoTool cloud server storage External server storage All of the instances can store data internally and pass it further (storeNforward), but usually preprocessed and just a subset is sent forward. In this case, the Fog computing architecture is used.
AI usage
There are no special AI modules need based on the use cases/pilots for the ehcoBUTLER project, although for future usage there are two parts allow to extend use. 1. IoTool Client - Virtual sensors. The architecture is made in a way that the virtual sensor is (from the IoTool client) a black box, collecting data from the sensors' stream, internal database, and external sources, process data using internal algorithms or external processing services, and return the result in a form of virtual sensor reading which is treated as a normal sensor reading, therefore it can be used with another virtual sensor, like LEGO blocks. For example, in other projects, the sophistical energy consumption and activity recognition ML algorithms are used as virtual sensors.
Security
All data communication between points 2-4 is encrypted and all access to storage is secured. For the sensor, the security situation depends on the type of sensor and its capabilities. Security of communication is covered by the protocol (usually BLE).
Updates
IoTool is available on the Google Play. IoTool can be download directly from the Google Play, alternate update service is available for closed groups on the SenLab OTA (over-the_air) Manager.
IoTool comparative analysis on other state of the art solutions in the market
There are not a lot of similar platforms on the market, combining the smartphone as an IoT sensor/actuator/trigger gateway. One of them is Wipro with Universal IoT gateway and similar architecture but it is hard to find any practical information or demo. There are plenty of sensor applications on Google Play. After analyzing most of them, two types of solutions are found: * Demo or dedicated solutions from sensor manufacturers, supporting their sensors, like abb. * Solutions for the IoT Cloud providers or protocol, supporting only one cloud provider like ThingsBoard, Amazon, IBM Watson, Microsoft Azure, MQTT. * Vertical solutions for home automation, eHealth or industry.
But we didn’t find the universal, multi-sensor, multi-actuator, multi-protocol, multi-cloud platform/API besides IoTool.
Development guides
IoTool Client
Sensors * Create a sensor extension for IoTool * Create a sensor extension for IoTool using Bluetooth
Actions
-
Create an action extension for IoTool
-
Create an internal action for IoTool
-
Create an external action for IoTool using Bluetooth
-
Create an external action for IoTool using Wi-Fi