Stephen Lawson - Writer, San Francisco Freelance Technology
Developing and deploying IoT systems is complex. It involves coordinating a diverse range of connected devices, networks, cloud services, and mobile and web applications.
The Internet of Things is evolving at a rapid pace, so you’ll need to develop your IoT applications quickly and efficiently to minimize time to market and remain competitive. Although each IoT initiative has its own set of requirements, most projects share the need for the management of connected devices and the communication, storage, and analysis of the data that they generate.
An IoT developer must choose an IoT platform that meets their requirements. The IoT platforms are collections of software and tools for creating a network. Their main purpose is most often to provide middleware to establish secure communication between devices, apps, and services. Using a ready-made platform solution is always cheaper than developing one on your own.
IoT platforms provide middleware to connect and manage hardware devices and the data that they collect with user-facing mobile and web applications. These IoT platforms are typically designed to establish secure communication between devices, apps, and services. They also make it faster and easier to develop and deploy IoT applications. IoT platforms are designed to be scalable and reliable. For example, they implement fault tolerance so that your IoT systems will continue to operate in the face of device, network, or cloud service failures. By leveraging standards and providing well documented APIs and SDKs, IoT platforms enable you to integrate heterogeneous devices, apps, and services into your IoT system, providing you with the flexibility to customize and substitute components as requirements change.
By exploring the key capabilities of IoT platforms and considering the top general-purpose end-to-end IoT platforms, you will come to realize why you should adopt an IoT platform to rapidly develop your IoT solutions and quickly get the most value from your IoT data.
Consider these key IoT Platform capabilities:
TODO: Knowledge-check
There are hundreds of IoT platforms available from a range of vendors with ones providing only the subset of functions that might be required for your IoT system to highly specialized ones that aim specifically at industrial IoT. Consider that home automation doesn't need to store and analyze large amounts of historical data or monitor countless devices like industrial IoT applications would.
Consider these key IoT platform capabilities: Device management Data communication protocols Data storage Rules and analytics Rapid application development and deployment Integration Security Cost of developing and maintaining the solutions that you build with the IoT platform. The relative importance of each of these capabilities will depend on your use case. For example, consider a small-scale home automation system. Device management is not a primary concern because there are so few devices to manage. Because a home automation use case is a fairly reactive use case, it is less important that the IoT platform provide data storage and data analytics capabilities to store and analyze historical sensor readings. However, the IoT platform must support fast and reliable data communication protocols to ensure that events that are detected by sensors are not missed and can be responded to in near real time. And yet, for an industrial IoT application that involves thousands of sensors that monitor factory equipment in order to detect equipment failures and to predict when to perform maintenance on the equipment, the device management and analytics capabilities of the IoT platform would obviously be much more important.
Read more about managing IoT devices in article, Src: https://developer.ibm.com/articles/iot-lp101-best-hardware-devices-iot-project/ One of the core functions of an IoT platform is managing IoT hardware devices. Device management occurs throughout the entire lifecycle of each IoT device, including provisioning of new devices, monitoring and maintaining operating devices, and eventually decommissioning devices when they reach their end of life. IoT platforms provide features for managing device registration, configuration, and over-the-air updates. With an IoT Platform, you can receive alerts for the device status and monitor statistics for the device health or usage. IoT Platforms also provide remote debugging for when things go wrong. Asset management, including the ability to list and search connected devices and to query and manage device metadata, also falls under the umbrella of device management. Look for IoT platforms that are device agnostic and that can integrate with your existing Enterprise Resource Planning (ERP) systems.
Read more about IoT networking protocols in article, Src: https://developer.ibm.com/articles/iot-lp101-connectivity-network-protocols/ Secure and reliable communication between IoT devices, gateways, and cloud-based apps and services is essential for enabling remote management and updating the connected devices as well as for the transmission of data. Although some data can be stored and processed locally with edge analytics, some of the data that is collected from sensors and other IoT devices will need to be delivered to cloud services or apps upstream for aggregation, further processing, or visualization. Because thousands of devices are often connected within a single IoT system, many IoT platforms incorporate message broker services to enable devices and gateways to send and receive messages with low latency and at scale. These message broker services usually use standard communication protocols like MQTT, CoAP, or XMPP. Some platforms also support web sockets for real-time communication.
With billions of connected devices generating data at an unprecedented rate, where to store the vast quantities of data is another aspect to consider when you are choosing an IoT platform. Data lakes are used to store data in a variety of formats including raw, unstructured, semi-structured, or structured. These data lakes are often built on top of NoSQL or Hadoop technologies for maximum flexibility and scalability. Data lakes and other data stores provided by IoT platforms are usually highly available, support concurrent reads and writes, and include configurable indexes to improve performance when your IoT app accesses and queries the data.
Once the data is reliably stored, the next consideration is how to gain insight from your IoT data. Many IoT platforms offer analytics capabilities that include real-time and batch processing. A rules engine demonstrates the power of real-time data analytics to produce actionable insights, with rules encoding the conditions that are used to trigger actions. Some platforms provide turnkey analytics applications, however a platform that supports customization of built-in reports, analytics dashboards, and data visualizations is an even more flexible choice. Rapid application development and deployment Speeding up development and delivery of purpose-built applications is one of the main motivating factors for adopting an IoT platform. So, it makes sense to select an IoT platform that provides code boilerplate generation tools, templates or widgets to support rapid development, and tools to streamline and automate deployment.
Interoperability is an important consideration within IoT because of the huge variety of connected devices and IoT-related services already in production, not to mention the billions more that are anticipated to come online in the coming years. With IoT evolving so quickly, future-proofing your IoT system is essential. IoT platforms achieve this interoperability by adopting standards and by providing additional layers of abstraction and normalization over the underlying technologies. For example, your applications are less likely to break when things change, if you upgrade your IoT devices to use a sensor with a higher resolution. IoT platforms provide integration with other platforms, devices, web services, tools, and applications through SDKs and APIs, with REST APIs being particularly common.
Security is an integral part of the design of any IoT solution. Security includes securing devices and network communication in addition to implementing cloud and application-level security. Choose an IoT platform that provides authentication and authorization services, preferably with integration to existing systems that are used for identity management like LDAP, and one that adopts standards, like X.509 for device authentication. For secure communication, your IoT platform should adopt a standard like TLS for encrypting content and ensuring data integrity. IoT platforms might also implement role-based access control for users, devices, gateways, and services, as well as providing security monitoring and auditing tools.
Speeding up development of IoT solutions is one of the main benefits of adopting an IoT platform, however an IoT platform can also help to reduce development costs. Ongoing costs, like subscription fees for accessing a hosted IoT platform or hosting costs for a self-hosted platform, will typically be less than the cost of developing and maintaining custom-made in-house solutions. Many IoT platforms offer free trial periods or low usage tiers that you can use to get started with almost no upfront expenditure, but be sure to factor in how those costs will change after the initial trial is over.
There are hundreds of IoT platforms available from a range of vendors. Some platforms are highly specialized, for example, only catering to one market vertical like GE Predix (https://www.predix.io/)), a PaaS IoT platform aimed specifically at Industrial IoT. Other IoT platforms are focused on providing only a subset of the functions that might be required for your IoT system, rather than an end-to-end IoT platform solution, for example, Cisco and SAS Edge-toEnterprise IoT Analytics Platform, which is focused on IoT analytics only. As a result, you might choose to adopt more than one IoT platform. As a starting point, here are five popular general-purpose end-to-end IoT platforms that are suitable for a wide range of applications:
Built on top of the IBM Cloud platform, IBM Watson IoT is a mature, developer-friendly IoT platform with strengths in real-time analytics and cognitive computing. The platform also supports device management, authentication and authorization, secure data storage and communication, standard communication protocols like MQTT and HTTPS, rules, REST APIs and SDKs. According to the IDC, a market research company, the Watson IoT portfolio and the Watson IoT Platform were named the IoT Platform of Platforms.
AWS IoT is a highly scalable IoT platform. It includes an SDK, authentication and authorization, device registry, a device gateway that communicates with devices using MQTT, WebSockets or HTTP, and a rules engine that integrates with existing AWS services like DynamoDB. An interesting feature of AWS IoT is “device shadows,” which is a persistent virtual version of each device including the last known state of the device.
The Microsoft Azure IoT Suite is another comprehensive IoT platform, which includes support for device management and device twins (like device shadowing) by using Azure IoT Hub, standard communication protocols including MQTT, AMQP, and HTTP, secure storage, rules, and analytics engines supporting predictive analysis and data visualization.
PTC ThingWorx is an enterprise IoT platform that supports model-driven rapid application development. Features include device management, application modeling, support for standard protocols including MQTT, AMQP, XMPP, CoAP, and WebSockets and predictive analytics, as well as REST APIs and SDKs to support integration.
Kaa is a free open source IoT platform that is published under an Apache 2.0 license, which allows the platform to be self-hosted. Kaa includes REST APIs and SDKs for Java, C++, and C, with features for device management, data collection, configuration management, notifications, load balancing, and data analysis.
With so many different IoT platforms to choose from, selecting a platform may seem daunting at first. Consider your requirements against the capabilities of each platform to select the best match for your business. Adopting an IoT platform can simplify, speed up, and otherwise streamline the development of your next IoT project. By using an IoT platform, you can focus on the requirements that are unique to your use-case and quickly deliver value to your customers. Src: https://developer.ibm.com/articles/iot-lp101-why-use-iot-platform
Tähän tulee valintatehtävä. Tähän tulee monivalintatehtävä.