We hear about the Internet of Things (IoT) for quite some time. I think it is safe to say that IoT started with the first internet message sent on 29 October 1969 over ARPANET.
It appears that Kevin Ashton first pronounced the term of Internet of Things in 1999.
I could be wrong, but I’m fairly sure the phrase “Internet of Things” started life as the title of a presentation I made at Procter & Gamble (P&G) in 1999. Linking the new idea of RFID in P&G’s supply chain to the then-red-hot topic of the Internet was more than just a good way to get executive attention. It summed up a valuable insight, which is still often misunderstood.Kevin Ashton
Today we could say that the whole internet is a big network of Internet of Things. Every computer, phone, and other devices that are connected are communicating, calculating, and serving data.
The IoT in the engineering world is more related to the devices that connect to the internet. If we leave standard computers aside, then we can state that internet of things is where nonstandard devices are connected to the internet using wired or wirelessly for data transmission, remote calculations, remote control, and display.
In the Internet archives, you can find many early IoT birds – the devices with crude connectivity to the internet or at least local servers. They did not use direct internet connectivity. Instead, they used other radio transmitters or wires attached to PCs where software processed and pushed data to the webpages.
I think the real breakthrough of IoT started when Arduino appeared. It gave a massive kick to the tinkering and prototyping hype. Suddenly everyone had a chance to make smart devices with very little knowledge. By that time, the IoT online services started to spread.
How IoT Works
What is IoT? It seems that it is clear, but when you try to define what actually IoT is, you may be stuck in loads of information. Various internet sources explain the meaning of IoT from their own perspective, and probably all are right.
The Internet of Things consists of five major parts that complete the whole system:
1. The IoT devices and sensors
Devices and sensors are collecting data from the physical world and other information. For instance, Arduino + temperature and humidity sensor is a typical front-end device. The device reads and prepares data to transfer. There can be a single device or network of multiple sensors and devices.
Frequently a machine can have many sensors and actuators. Take a modern smartphone, it has various sensors including temperature, accelerometer, magnetometer, gyro, camera, GPS, and even more that vary from model to model.
A smartphone is a sophisticated unit, which already has more blocks of IoT, including sensors, several connection interfaces, and is capable of doing complex preprocessing of data locally before sending to the internet.
2. Connection interface
The way your device connects and sends data to the internet. Most common connecting technologies are LAN, Wi-Fi, Bluetooth, 3G, 4G, and 5G.
Sometimes there are some common communication methods such as RF, laser, IRDA, and other local low power channels to collect data into a node hub, which then pushes data to the internet.
The same smartphone is capable of sending data to the internet over several channels like GSM, Wi-Fi, and data communication protocols like 3G, 4G, and 5G.
Each connectivity option may be selected depending on hardware capabilities, power consumption, and network availability.
3. Data (pre)processing
This is an essential step of data flow because real-world data can be noisy, have missing values, outliers, or be damaged by some interaction while taking measurements.
The some initial preprocessing of data is already performed while collecting information. For instance, a sensor may have analog or digital filters to clear it from everyday noises. The noise also may be filtered later within the software part.
The other problem, which is often overlooked – missing data. If IoT device is collecting data from multiple channels, eventually there will be some glitches, instrument failures, and synchronization errors. Missing data problem also needs to be solved by one of many means such as listwise removal of data chunks or imputed with most probable values. It depends on what your IoT system is working on. For instance, for temperature measurements, there might be enough to impute the average of neighboring values, while in medical systems, you may think of listwise deletion or machine learning imputation.
The other part of processing might be data normalization and converter into an acceptable use form.
Data processing can be performed in both ends – IoT device or on the internet side where cloud computers may offer much higher processing power and a broader range of software tools.
4. Data Storage
Once you get data flow to the internet, you need to store it somewhere. Depending on sampling frequency and the number of channels, your data amounts may build up quickly. You need to be sure to have plenty of cloud storage or use other smart ways of reducing data amounts.
You can store data for some predefined period. If you are building a weather station, you may limit your data storage to one year. Alternatively, you can reduce sampling – instead of taking a measurement every minute, you can do this once an hour.
There might be more limitations, especially if you are starting with free IoT platforms. There might be a limit on several channels, limited sampling period and other. Be sure to choose the most suitable IoT platform with the proper amount of storage and acceptable limitations.
5. User interface
Not a single IoT platform is useful if there is no way to view the data. This also includes backward communication capabilities.
Let us say if you are building a home automation system, you want not only to see what is happening, but also to send some commands like turn on the lights, regulate heater or move camera around.
First of all, the graphical representation. Your data is best understood, when it is displayed in convenient graphs with the ability to zoom, pan, and put labels on points of interest.
IoT platform should also provide Web API capability. They should give you an ability to implement access data from other machines like your computer, web browser, or smartphone.
The IoT interface should also be capable of sending messages through several standard channels such as email, text messaging, or posting photos. You probably want to get an instant message when the temperature in your boiler reaches a critical level.
Another necessary functionality of IoT platform is automation. You should be able to set controls to be performed automatically. As an example, we can take the temperature regulation where you can adjust the threshold levels, and the system will do this automatically without bothering you.
Each IoT interface is something different and uses its own API. I think the significant advantage is documentation and many examples on how to connect your device to the cloud. Most of the platforms have documentation for at least most popular devices such as Raspberry Pi, Arduino, and Android. Software frameworks allow implementing projects quicker.
What is IoT Platform?
If you look for an IoT platform, you will find that most cloud computing services are offering Internet of Things capabilities. Large enterprises offer potent data storage, high processing capabilities, including machine learning, and deep learning tools. Big IoT and cloud computing companies such as Google, Amazon, IBM, Oracle, and many more are prepared to take up heavy loads. However, most of those services cost.
Even big corporations use their own different architectures on how they manage data transfer, store it, and ensures security. Being big players, they are setting high standards for smaller IoT platforms.
There are plenty of open source IoT platforms where you can find what you are looking for. In the next chapter, we will compare the most common IoT platforms that also offer a free option suitable for DIY enthusiasts and who is just wandering into IoT. As you know, free is great to start, and you can always scale later with a subscription plan.
Comparison of IoT companies with the free option
Let us go through a list of most popular IoT platforms. Here we will review the services that are included in the free plan and some. The free plans usually are of two types: all-time free and 12 months free.
- The all-time free plans are great if you plan to build a small hobby level IoT project and hope to use it for a long time.
- 12 months plans are useful if your project is going to scale beyond the limits of free option.
We can start this list with Microsoft IoT platform. Azure power lies in many native Microsoft technologies, including database management, visual studio, AI, and other tools that help to acquire and to analyze data. It also offers few third-party services like Python, Java, which give even more flexibility.
Azure IoT platform allows establishing bidirectional communications with devices. You can find plenty of handy tutorials on how to set up an IoT hub for devices like Raspberry Pi. It has an excellent dashboard with real-time data streaming capabilities.
MS Azure free plan features:
- 10 apps with free choice of tools
- 1M requests per month
- 100k operations
- 30k AI and machine learning operations
- 1M push notifications
- 5 database services
- 5GB bandwidth
- And many free unlimited tools
MS Azure 12 month free options:
- 750 hours of MS and Linux virtual machine (VM) usage for computations
- 64GB x2 SSD storage used with VM
- 5GB for any data storage
- 5GB file storage
The pricing of Azure IoT is flexible. You can use their online calculator and keep adding only the necessary modules. For instance, if you need blob storage of 5G with 100k read-write operations, you can get for $1.14. The price goes up significantly when you start adding compute modules and databases.
Google IoT Core is known for its high storage capacity for a low price. They have done great work on integrating multiple services of their own for speed and efficiency. This might be somewhat a limitation to someone because you are forced to use Google services and tools. Google Cloud IoT Core allows two-way communication with most of the leading hardware.
Google IoT Cloud always free services:
- 1 compute engine with 28 instance hours per day with 5GB storage
- 1GB NoSQL
- 10GB of messages per month
- 2M cloud functions
- 50 GB Logs with 30-day retention
- 1k-5k AI operations depending on the type
- There are more unlimited options available
Google IoT Clour 12 months of free services:
- $300 free credit to try any services within 12 months
The pricing of premium plans depends on the required modules. The most significant benefit of choosing Google is that data storage pricing is low. Internet is filled with various guides and tutorials on how to use Google IoT and other services.
Amazons IoT Cloud service is another powerful platform where you can connect multiple devices and applications. AWS IoT Core supports HTTP, WebSockets, and MQTT. Amazon AWT also offers its FreeRTOS port to various microcontrollers, which enables using an already established ecosystem.
However, they do not offer an all-time free plan – only 12-month free version.
AWS 12 month Free tier monthly usage:
- 100 MB of data processed in Pipelines
- 10 GB of Processed Data Storage
- 10 GB of Raw Data Storage
- 10 GB of data scanned for Query Execution
ThingSpeak has great integration with Matlab. So if you like processing, visualizing, and analyzing data using Matlab tools, then it is the right place to go. Matlab is commercial software, this might be a limitation at some degree.
There are many beautiful applications built using Matlab and ThingSpeek, including computer vision based traffic analysis with Raspberry and many more with Arduino, and ESP8266.
They offer a limited free plan, which is enough for basic IoT applications:
- 3M messages per year
- Message update every 3 seconds
- 4 channels
- MATLAB computer timeout 20 seconds
- 3 MQTT subscriptions
- 3 private channel shares
The next plan they offer is HOME, which provides more than double capabilities for $95/year, which is also not lousy considering the Matlab backend.
ThingsBoard is an open source IoT platform capable of data collection, processing, and visualization. It is a complete management system, which you can install in your own server, which might be a stopper. However, if you decide to go this way, you get a full set of features and flexibility.
It supports MQTT, CoAP, and HTTP protocols for connection. You can visualize data with built-in or custom widgets on dashboards that can be shared with other people. They have many tutorials, including video materials on how to set up and use their service. You can try live demo server in their site here.
The Community version of ThingsBoard is free:
- Collect and visualize data from many devices and assets.
- Analyze incoming telemetry and trigger alarms with complex event processing.
- Control your devices using remote procedure calls (RPC).
- Build work-flows based on device life-cycle event, REST API event, RPC request, etc
- Design dynamic and responsive dashboards
- Enable use-case specific features using customizable rule chains.
- Push device data to other systems.
The only downside is that you need to install and manage the platform by yourself. It requires some experience to set up and maintain.
Yet another open source IoT platform which might be even more attractive to small project lovers. You can download and install the platform in your machine or server or use their cloud services and forget all the trouble.
Thinger server can be downloaded and installed on Linux Ubuntu machine, integrated into Amazon infrastructure and there is an option to install the server on your Raspberry Pi 3
Besides, there are ready to go libraries for Arduino and ARMmbed devices. The detailed documentation will help to set up your first project in no time.
If you don’t want to set up your own server, you can use their free service which might be scaled later for 3.95€/month.
Thinger.io free plan includes:
- 2 devices
- 4 dashboards
- 4 endpoints (1/60 rate)
- 4 buckets (1/10s rate)
- 1-year data retention
Cayenne is a free IoT platform with drag-and-drop project builder for Raspberry Pi Arduino and other devices. They offer full set off features. I was trying to find more information about data and device limits but couldn’t find any reliable confirmation.
I guess as long as you don’t scale to 1000 devices you are safe. The community appears to be healthy, and there are many shared project to get inspired.
From my perspective, this is a paradise for hobbyists and small project developers. The Cayenne platform offers a full spectrum of free features, including:
- Customizable dashboard
- Remote monitoring and control
- Alert messaging
- Trigger events
- Long time data retention (1 year and more I guess)
- MQTT, custom coding and more
The device support list includes Raspberry Pi, Arduino, ESP8266, along with many sensors and actuators. They also specialize in supporting a long list of LoRa commercial devices such as GPS trackers, smart AC monitoring, radio communication, and more.
Blynk is an effective IoT platform which gives striped free version. They allow connecting up to 20 devices and limited freedom when building a dashboard by using given 2000 energy points when logging in. They are offering a free mobile app constructor for Android and iOs.
As mentioned before, Blynk free plan features:
- 20 devices
- Free mobile app builder
- Free hardware libraries,
- Free Blynk Cloud
- 1 user support
The following pricing plans are high and not attractive for small projects.
Mainflux is an Open Source IoT Platform that you can host on any compatible platform running Linux with Apache. The developers are offering several support plans for commercial use. As a hobbyist, you must rely on community support channel.
The platform is free and unlimited with the following features:
- HTTP, MQTT, WebSocket, CoAP support
- Device management
- Access control
- Logging and instrumentation support
They also offer cloud services that are only paid option.
WSo2 IoT is another powerful open source server that is hosted in Apache server. It is capable of running heavy loads of data streams from multiple devices, manage events, and visualize complex data.
The key features:
- Supports all standard tools such as Raspberry Pi, Arduino, Android, Ios, and PC operating systems.
- It has extensive Mobile device and App management capabilities.
- Communication protocols: MQTT, HTTP, Websockets, XMPP
- Batch, interactive, real-time and predictive analytics
- Visualization support for sensor readings
- API Management for App Development
- Access Management
You have to rely on community or paid help.
If you are looking for something simple and build, especially for electronics enthusiasts, then Adafrut solution might be a great choice. Adafruit IoT is a cloud-based service which gives enough flexibility to log your data, control things over the internet. You can display your data in real time online, read sensors, control motors, and switches. Tweet, send RSS feeds to other connected devices. Adafruit is known for its excellent products and extensive tutorials. By following step by step guides, you can build your first IoT project fast and easy.
The free plan offers:
- 30 data points per minute
- 30 days of data storage
- 5 feed limit
Paid plan starts with $10 per month
Which IoT platform to use?
I intentionally did not include IoT platforms that do not offer a free option for at least 12 months. Otherwise, the list would be much longer. At least a limited free plan option is great for any service because you get a chance to test things without significant investment. If I miss any IoT platforms with a decent free option that worth mentioning, please drop a note in the comments.
A quick table with pros and cons of IoT platforms with a free option
|Microsoft Azure||Scalable, secure, flexible, and cost-effective. Attractive free option||Require expertize to manage. Hard to get support.||Worth trying, but is more suitable for large corporations.|
|Google IoT Core||Great if you need lots of storage, fast and secure connection||Most of the tools limited to Google||Use if you need lots of storage, processing and optimized connection|
|AWS IoT||FreeRTOS integration, flexible, convenient pricing models||No all-time-free option, too complicated with many services and apps||Biggest IoT cloud so far.|
Give a try if you use FreeRTOS in your projects
|ThingSpeak||Strong Matlab integration||Free plan non-scalable.|
|Try it if you are like using Matlab|
|Open source, feature rich||You need to host the IoT platform by yourself||Lots of flexibility and full control.|
|Cayenne||Appears to be free and unlimited for a fair usage||The future of free limits is unclear.||Many examples and strong community|
|Blynk||Free mobile app builder||The minimal free version||Try if you want to play with mobile apps|
|Adafruit IoT||Simple. Designed with hobbyists and small projects in mind||Only 30 days of data storage in a free version||Good documentation and hardware support|
It is hard to recommend a single IoT platform because all of them provide essential features such as data capture, visualization, and control. If you only need to log data and see it through the browser remotely, then any of IoT free versions will work just fine.
If you are looking for unlimited versions, then self-hosted open source IoT platforms such as WSo2, Mainflux, Thinger or ThingsBoard are the way to go. Of course there will be a learning curve, but eventually, you will have everything you need. Be sure to check which features are more relevant to you, as they may vary from one to another.
One of the possible unlimited cloud-based options could be a Cayenne platform, which it seems doesn’t have put any limitations for your projects. Be sure to test if it is still free and unlimited.
If you look for comfortable, a small logging and controlling, Adafruit IoT is a friendly and lightweight even for a beginner. And it has excellent support for open source hardware such as Arduino, Raspberry Pi or ESP32.
And the last thing is Giants such as Microsoft Azure, or Google IoT Core. They are mighty IoT platforms with lots of data storage, computer, AI, and machine learning capabilities. If you want to be very flexible and use sophisticated processing, then you should definitely try Google IoT. I guess the best way to know which is best is simply to try to see if they are good for your purposes.