Getting started with an IoT idea is exciting - however building an IoT solution could become quite overwhelming. One of the first and perhaps most important step in developing IoT applications is to create a device simulator. Usually, this could be a simple script, a program or any third part tool which is customized to mimic the pattern of your IoT device. For a very simple "hello world" kind of application, these homegrown simulators are usually fine and deliver fastest time to market. But as the complexity of your IoT application starts growing, you will end up writing more and more features into your simulator. At some point, scalability of your IoT platform becomes critical and then you will need to launch multiple instances of this simulator and orchestrate the execution. Time flies by and so far it's good until you quickly realize that collecting results and analyzing the problems using those homegrown simulator is getting more and more challenging. Eventually - as more and more features are added - the complexity of simulator reaches a tipping point, where you realize that writing a scalable and efficient simulator is getting as hard as designing your scalable and functional IoT cloud application itself. At this point you wonder whether solving this problem twice makes sense? Or could there be an alternate solution which simplify large scale IoT simulation so that you could focus entirely on building your cloud based applications?
IoTIFY is an intelligent IoT system simulation platform on the cloud, which makes it super easy to simulate a large scale Cloud-based IoT device deployment. Our Rapid IoT application development environment helps you prototype, scale and manage your IoT application with ultimate flexibility and ease. What are the salient features of IOTIFY?
Unlike other commercial or open source testing tools which were originally designed for the web and subsequently added IoT protocol to their features, IOTIFY is designed from the ground up - exclusively for the IoT. How does it matters?
Being exclusively focused on IoT use cases enable us to leave the baggage and adopt features which are exclusively for IoT. E.g. we no longer need to worry about web specific features such as Cookies,
One of the biggest challenge in IoT is to handle scalability. Millions of sensors and hundreds of thousands of gateway could connect to any IoT platform at any given point of time. The dynamic nature of connectivity media (3G/4G/LoRaWAN/Satellite) also adds packet loss, latency, out of order delivery and replication to the networking. In order to ensure that IOTIFY could truly match and even outperform the capabilities of the IoT Platform under test, we have built it on the same principals which is used to build the scalable cloud platforms. E.g. every module of IoTIFY is fully dockerized, we use In memory and noSQL databases with sharding, replication and load balancing. We use a dynamic and easily scalable orchestration of containers to deliver best performance with minimal resource consumption.
Jut like real-world, each simulated IoT device has its own temporary and persistent memory. The simulated devices could save any meta-information to these memory, which could also be retrieved and edited by external APIs/UI. E.g. a serial number of device is usually a static field which remains valid throughout the lifetime of the device. This information could be saved into persistent glob storage for each individual device and could be used as an identifier for every test case run.
Device to Device interaction is one of the unique feature of IoT. Devices could talk to each other either directly (through LAN), via gateway or via cloud itself. However, there are also ways in which devices could communicate with each other via out-of-band means. E.g.
Consider a fire extinguisher spraying water on a device having temperature and humidity sensors. The action of spraying water is actually causing the temperature to drop and humidity to increase. Similarly a garbage pickup truck emptying a smart trash container is causing the ultrasound sensor to report empty bin. Such out of band or physical behavior could be simulated in IOTIFY using global stores - which enable devices to affect each other's internal states.
IoT has a wide standard of protocols, which are also evolving with time. IOTIFY supports a wide variety of these protocols and continues to keep on adding newer versions. Our current SaaS version supports MQTT, HTTP, CoAP, LWM2M as well as UDP and TCP raw protocols (binary).Adding a new protocol is also quite easy- thanks to our flexible architecture.
Configuring and administrating IoT devices in the cloud platform require some scripting to be setup beforehand. At IoTIFY we have listened to the feedback of testers and observed their day to day workflow. The result is Connectors - UI Wizards which make provisioning and enrollment of virtual IoT devices extremely easy. With the wizards, configuring hundreds of thousands of IoT devices becomes a matter of just few clicks. And not only provisioning - cleaning up resources after test execution is also super easy.