In today’s smart home or smart building installations, there are usually 4 main software components involved in making the entire solution work:
IoT device (sensor or actuator) software
4 Main Internet of Things Components
1. IoT device software
Most IoT devices, whether they are sensors, actuators, or both, consist of hardware and software. Examples of sensors include cameras, motion detectors, carbon monoxide sensors, light sensors, and other such devices that monitor their surrounding environments. Actuators can be switches, valves, locks, and other such devices that perform a physical action.
Because of Moore’s law and other advances in technology, even inexpensive IoT devices today can be fairly sophisticated with powerful microprocessors/microcontrollers running complete software stacks. The primary function of these software stacks is to expose the sensor/actuator to the outside world over a wired or wireless connection.
2. Gateway software
The most popular IoT devices in smart homes or smart buildings today are based on the Zigbee or Z-Wave protocols. These devices consume very little power but have sufficient transmission range. The local networks in homes and buildings are usually based on Ethernet or WiFi.
An IoT gateway is used to connect the devices to the home’s or building’s local network. A gateway can enable just the basic functions of onboarding the devices, exposing them over the local network, and implementing simple time or trigger-based rules. Or as they get more powerful, they can provide more complex capabilities like artificial intelligence to understand sensor data, perform actions based on the understood data, and other higher-level functions.
3. Smartphone app
The smartphone has quickly become the most used computing device in our personal and professional lives. In today’s smart home or smart building, the smartphone plays an important role.
In smart homes and in some smart building deployments, a smartphone app is used to perform several functions – onboarding devices, monitoring sensors, turning actuators on/off, creating rules – both when within the local network, or outside it.
4. Cloud software
The cloud software completes an end-to-end IoT solution. Cloud service providers like Amazon (AWS), Microsoft (Azure), Google (Google Cloud), IBM (IBM Cloud) offer a huge choice of IoT platform components that can be used to connect to smart home and smart building deployments to manage, monitor and control IoT devices.
Cloud software can be as simple as an application that creates/manages user accounts and enables outside-in access when users are not in the local network, or a comprehensive IoT platform that implements multiple sub-components shown in the figure below.
IoT Cloud Software
Most IoT product companies we engage with have internal teams focused on only the software component that is core to their business. For example, one of our customers makes air quality sensors and subsystems, and their internal engineering team is focused on developing software to read data from these sensors and then send that data out over a wired (e.g. I2C or SPI) or wireless (e.g. Bluetooth) connection. The combination of their sensors and the device software is their secret sauce, and therefore, it is important for them to develop it internally. But in order to provide an end-to-end solution around their sensors/subsystems to their customers, they need to deliver the other software components. That is where we come in. We partnered with their internal engineering team to build that end-to-end solution, by providing a smartphone app to monitor the sensors and provide relevant information to users, and cloud software to aggregate, manage and provide access to all sensor data.
Another one of our customers develops SoCs (system-on-chip) for IoT gateways. In their case, their internal engineering team is focused on designing the gateway hardware around their SoC, and then developing the low-level software (OS & drivers) and middleware for the gateway. But their customers demand an end-to-end solution that includes a gateway application, a smartphone app, and cloud software, before they can take advantage of the performance and capabilities of the gateway. We built a gateway application that sits on top of the SoC company’s gateway middleware to communicate with the IoT devices, a smartphone app to onboard, monitor and control the IoT devices, and cloud software to create & manage user accounts, and provide outside-in access to the gateway & IOT devices for users when they are outside the local network.