It makes your life harder if you start dealing with an application without knowing the basic concepts of your chosen application. You can be a developer or want to deploy the app it is essential to understand the main fundamentals and concepts of the app.
What is IoT?
IoT stands for Internet of Things. But instead of a long and detailed description here please refer to the Wikipedia article about IoT.
In short from the technical point of view IoT is a set of many-many things (devices) connected to a common platform where telemetry data (measured by sensors, like temperature, humidity, pressure, etc.) can be transmitted and recorded moreover there is an infrastructure to send messages from one device to another. The recorded telemetry data can be queried and analyzed while messaging can be used to control the devices.
Thriot as an IoT Platform
There are several IoT platforms on the market. Most of them aims to handle several million devices with low latency of course on top of a huge infrastructure running in the cloud or on-premise DCs. The operators and developers of these systems are so called service providers. Furthermore these solutions are generally proprietary pieces of software so they are mainly closed source.
How Thriot is different from that?
The following facts make Thriot special:
- The main goal of Thriot is to satisfy the IoT needs of smart home users and individual companies so that they can install Thriot on their own and it’s not necessary to buy an IoT service from a service provider. Of course there is the possibility for service providers to provide Thriot as a SaaS solution (although it’s not yet recommended).
- Thriot achieves this flexibility with its loosely coupled plugable architecture so that besides cloud storage providers, on-premise storages can be also added to the system. (Currently Azure Table Storage, MS SQL (Express) and PostgreSQL are supported)
- Thriot is completely open source. Everybody is welcome the contribute. GitHub url: https://github.com/kpocza/thriot
Thanks to the cross-platform nature of ASP.NET 5 Thriot services are not only running on Windows but are first-class citizens on Linux, too.
About the structuring methodology of Devices
Devices (things) are the most atomic building blocks of a Thriot installation. Devices a grouped together in Networks. Networks are the common device grouping entities that can organize devices based on common location, functionality or any other property. There is a common rule that every device can record telemetry data moreover every device can send message to an other device in the same network (so only to adjacent devices). To provide more flexible organization topology networks can be put into each other so that a network tree can be built. Networks are placed into Services. Service – as it’s name suggests – joins the devices responsible for providing a service that can be either a business service, a free service or even a smart home application. If set up that way services are provided by companies so that the root level encapsulation entity is the Company (with some restrictions depending on the current operating mode, see below).
Configure Telemetry data recording
As it was mentioned above Devices are put in a tree structure and Thriot is a flexible platform namely it can be freely configurable which telemetry data storage technology we want to use. Different devices can send telemetry data to different telemetry data storages represented by sinks. Any of the supported telemetry storages can be selected at Network level, Service level and Company level. Every device will use the telemetry sinks specified at lower level in the tree. It means that if there is a Network level settings and a Service level setting, the Network level setting will be used. This is true for the Network – Parent Network relationship also (Network level settings will be used instead of the Parent Network level settings). Generally the nearer the sink setting to the Device is it’s more likely that it will be used as telemetry data sink.
There are basically two types of sinks:
- Current data sinks
- Time series sinks
In case of current data sinks always only the latest data will be stored it means that older data will be updated with the new recording. In case of time series sinks all previously recorded data will be retained and can be queried in a time series format which means that the measurement history can be extracted from the system.
About the three operating modes
As mentioned before Thriot has three operating modes:
- Service Provider
- Single Company
- Single Service
Refer to the installation documentation on how to configure operating modes.
The Service Provider operating mode provides the most freedom and it’s suitable for SaaS providers who hosts IoT services for other companies, organizations and people. In this case multiple users can register the system, any user can create a company and the underlying structure described above. The company admin can add other users to the company to share the admin work.
In Single Company mode there is only a single company in the system. This mode is suitable for companies and organizations who aim to host and operate their own IoT service and do not want to depend on any IoT SaaS provider. When the first user registers into the system a Company will be automatically created and the structure can be administered only from the Service level down. When subsequent users register they are restricted to do anything until they are added as admin to the system by users previously gained the admin role (or the first registered user).
The most lightweight operating mode is the Single Service mode which is designed for smart home users or companies, organizations who host only a single service for sure. In this mode only networks and devices can be administered. When the first user registers into the system a Service (along with a virtual company) will be automatically created. When subsequent users register they are restricted to do anything until they are added as admin to the system by users previously gained the admin role (or the first registered user).