The Internet of Things (IoT) is taking charge of the industry and our day-to-day lives. Interconnectivity between devices is simplifying, making networking a household phenomenon. For instance, a person staying abroad can monitor the safety of his elderly parents back home in India by remotely accessing and operating the security devices in his house—all thanks to the IoT connectivity. Undoubtedly, there are millions of such vast networks that require a platform to connect and understand the architecture of connectivity. IoTivity is one such open source, free software that enables seamless device-to-device connectivity for the IoT.
IoTivity roadmap and designer
It works on the Ubuntu LTS version 12.04 OS for stack building. Its source codes are extracted from Git management software. The software uses Doxygen documentation tool to generate API documentation.
It provides a common IoT platform for all fields, especially industrial and automotive. This is made possible by establishing new communication protocols for connectivity across multiple transports. IoTivity provides a common platform not only for networking but also for system security.
A good API eases software development by providing the developer with all the building blocks. IoTivity framework APIs help developers access it in different languages and at multiple operating systems. This framework is helpful in discovery of devices even if these are placed remotely. IoTivity data transmission supports information exchange and data management to support collection, storage and analysis of data from any source.
Fig. 1: Expansion into multiple domains (Image courtesy: https://i.ytimg.com)
Tools and implementation
IoTivity is an Eclipse plugin tool designed to work on top of existing protocols such as Bluetooth, ZigBee, Z-wave and Wi-Fi Direct. Its framework includes hardware, OS, C++ API, C API, more bindings and high-level services.
IoTivity implements OIC security called secure resource manager, which has two main functions. In steady state operation, SRM filters resource requests, granting or denying based on configurable policies. Also, it manages security related services such as maintaining credentials, and loading and storing access control lists. At high level, SRM also carries out request filtering and secure virtual processes.
Fig. 2: Simulating different OIC resources (Image courtesy: https://wiki.iotivity.org)
It is largely dependent on service provider and client controller perspectives.
Service provider perspective. The files for IoTivity can be simulated using RAML files. RAML files help in managing the API lifecycle from design to sharing. There are several graphical user interfaces provided for creation of OCF resources.
It not only manages creation and deletion of simulated sources but also checks request handling and notifications. The software handles the requests received and sent by the clients appropriately, sending reply to all. It has SDK support for Java API on Linux platform.
Client controller perspective
The client controller tool of IoTivity simulates the functionality of OCF client. It helps the user to find interested types in the given network so that resources can be changed. It also supports sending of automatic requests (GET/PUT/POST) to remote resources with the help of RAML file. The simulator helps the user to test the implementation by simulating real devices before purchasing them.
Fig. 3: Block diagram of service provider and client controller perspectives (Image courtesy: https://wiki.iotivity.org/iotivity_simulator)
To wrap up
Features like cross-platform support, uniform and easy-to-use APIs, open standards, support for multiple connectivity types and extensible support protocols make IoTivity a hard-to-resist tool. It provides seamless device-to-device connection throughout physical media, application layers and transports.