KnowThings.io is the name of the startup accelerator project within CA Technologies, Inc. KnowThings is the name of the product that KnowThings.io has created. KnowThings is an IoT simulation testing tool that can mimic real device data accurately within minutes. The simulated data can be used to test IoT solutions when real devices are not accessible or convenient to use for the solution software developer or tester.
Here are a few of our ideal users:
An IoT software developer or a tester who wants to validate an IoT solution for functional, performance, or integration correctness.
An IoT solution architect or pre-sales engineer who needs to demo IoT solutions, or show a proof-of-concept (PoC) with as close to realistic settings as possible without having to carry hardware while traveling.
An embedded engineer who wants to share his hardware interaction requirements with his upstream IoT solution development teams or partners with simulation.
We offer three key benefits:
1) You can build reliable prototypes of the real device data even during early stages of IoT solution development.
2) You can create realistic data to develop and test production scenarios before field deployment is possible.
3) You can execute stress and performance tests at scale while lowering costs and risks before production.
We use patented service virtualization algorithms based on machine learning. The KnowThings testing tool models the interaction between devices generating real data. You can then use the model as a stand-in for the original device that it was captured from, or use the model to spin up multiple instances to test at scale. KnowThings quickly learns unknown protocols, communication sequences, and timing.
We have released two editions of KnowThings: the Community Edition and the Professional Edition. The Community Edition is available free of cost, but you can only model five data streams. The Professional Edition is the commercial product that you can purchase.
We are IoT cloud platform agnostic. We interface at the network layer.
KnowThings currently supports TCP/IP and REST. We have preliminary support for CoAP over TCP, and we are working on integrating other protocols. If you would like to suggest a protocol for us, send an email to firstname.lastname@example.org.
Yes, you can simulate sensors with KnowThings. You can use KnowThings if a smart sensor interfaces with TCP/IP or REST, or the sensor interfaces with a device that interfaces with either of these protocols.
An AVD is an output generated by running the KnowThings model. This model can be used to playback and mimic the device data. With AVD, we created virtualized versions of real devices that can simulate the data as if it was coming from real devices.
We call these virtual devices “adaptive” because they can simulate data by learning the data patterns and sequencing required to generate a larger volume of data than what was observed from real devices. This ability makes AVDs useful for testing because you do not have to rely on real devices to generate large volumes of data.
Currently, KnowThings either uses a .pcap file (network capture), or captures device data itself to model devices and generate an AVD. You should capture all device data that you are interested in testing.
The more data you capture, the better KnowThings will work for you. Our product learns from your device’s interactions with other devices and the cloud to create realistic data for you to use.
The KnowThings solution uses the Genome Sequencing machine learning algorithm, and data mining methods to analyze samples of recorded messages. It then derives the rules for constructing responses for incoming requests by figuring out byte-level patterns in data.
Larger sets of data can help in generating more accurate responses, but our algorithm is optimized to work effectively with much smaller data sets, even in the range of tens and twenties.
Currently, we support IoT devices that utilize TLS 1.0 and TLS 1.1 and the cipher -- RSA_WITH_AES_256_CBC_SHA1.
Yes, KnowThings can work with encrypted data streams that utilize TLS 1.0 and TLS 1.1 and the cipher -- RSA_WITH_AES_256_CBC_SHA1.
KnowThings is an on premise application, but we have a flexible API based architecture that can be deployed on a cloud system.
KnowThings can handle network latencies and congestions very effectively. The observed time of the device interactions can be adjusted, scaled, or tweaked to replicate devices functioning in different regions of the world.
This is in the plan for upcoming 2018 releases.
Yes, our virtual devices can become a part of a network that has real devices. Once a virtual device is created and playing back, there’s no distinction between the real device and a virtual one.
It's $0.05 per data stream per month, you can purchase data streams in packs of 100. You cannot purchase individual data streams.
If you, for instance, would like to make it look like you have 95 temperature sensors all updating temperatures throughout the day, you should purchase one pack of 100 data streams for a cost of $5 per month.
If you would like to make it look like you have 10 temperature sensors and 1000 humidity sensors, you should buy 11 packs of data streams for a cost of $55 per month.
If you want to make sure that your code is always able to handle 100 devices, and is able to handle 10,000 during the month of January (when you release), purchase a monthly subscription of 1 data pack, and in January purchase a subscription of 100 data packs.
Remind yourself to go back to 1 data pack before the end of the month so that you can go back to run your tests with 100 virtual devices and only pay for the additional virtual devices in the month of January.
A data stream is a collection of data associated with a unique message identifier. By default, each device is a single data stream.
You might want to break up your device data into multiple data streams to simulate error scenarios coming from a tricky sensor within a device, or to better understand how an individual component of a device works, isolating a fan inside a condensing unit, for instance.
You will almost certainly need to add or customize your data streams to accomplish your use case.
Examine the underlying data in the interactions. Does it contain unique IDs? For example, the data for a greenhouse environment might have three unique IDs that represent fans, temperature sensors, and humidity sensors. These unique IDs are what you tag as data streams.
You might pay closer attention to one of these values than another. Humidity might be the most crucial piece to monitor and be able to customize, so you may want to isolate that data stream so that the KnowThings machine learning can model it on its own.
Or you might be doing simple load testing and merely want to test your solution with a large amount of aggregate data, in this case, you probably don't want to split the device up into separate data streams and stick with the default of one device being one data stream.