Got a question?

Last updated 5 months ago

Find the answer to common questions. If your question is not here, shoot us an email at and we will try our best to find you an answer.

What is KnowThings? is the name of the startup accelerator project within CA Technologies, Inc. KnowThings is the name of the product that 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.

Who is it for?

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.

Why should I (the IoT developer) care?

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.

How does it work?

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.

What's available today?

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.

What IoT cloud platforms does KnowThings support?

We are IoT cloud platform agnostic. We interface at the network layer.

What IoT protocols (such as MQTT, CoAP) does KnowThings support?

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

Can you simulate sensors with KnowThings?

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.

What is an Adaptive Virtual Device (AVD)? How it is used?

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.

What does KnowThings use to create its models? Does it need real data and all possible interactions captured to generate realistic data scenarios?

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.

Machine learning typically requires large sets of data and computational power. How does KnowThings utilize the machine learning technology?

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.

I have devices that are in a secure environment that requires pre-configuration and provisioning. How do the KnowThings virtual devices work in this case?

Currently, we support IoT devices that utilize TLS 1.0 and TLS 1.1 and the cipher -- RSA_WITH_AES_256_CBC_SHA1.

Can KnowThings work with encrypted data streams?

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.

Where does KnowThings reside? Are you a cloud-based or desktop-based platform?

KnowThings is an on premise application, but we have a flexible API based architecture that can be deployed on a cloud system.

My devices are typically deployed across the globe. How can KnowThings replicate a multi-regional environment and recreate latency and congestion scenarios?

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.

I would like to use the virtual devices to introduce negative error conditions including security threats to determine how my IoT solution behaves. Does KnowThings have features for this?

This is in the plan for upcoming 2018 releases.

I want to virtualize only a portion of my IoT environment. For example, select IoT sensors, gateways, and some real devices. Will KnowThings be able to handle such an environment?

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.

How much does KnowThings Professional Edition cost?

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.

What is a data stream?

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.

How should I use data streams?

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.