Skip to content

ExoSense® Device Simulator

Overview

The ExoSense device simulator tool allows users to create and run devices to use with ExoSense, typically for trying out the application and testing out features, before going through the work to connect a physical piece of hardware.

The ExoSense device simulator is also useful for providing demonstrations and creating repeatable scenarios for testing purposes.

Functionality

  • Supports up to 10 simulated devices
  • 5 simulators can be running at any time
  • Includes a simple custom waveform simulator type
  • Includes a CSV file reader simulator type
  • Selectable report rate with a minimum setting of 10 seconds supported. Note: If value is set to less than 10 seconds, it will report at 10 seconds.

Info

Auto-shutoff

Simulators are disabled (turned off) after a given set amount of run time - which is specified in the simulators information panel. Users can turn simulators back on if still required for another period of run time.

CSV Reader Simulator Type

This type of simulator loops through data of an uploaded csv file. The CSV file defines the channels, properties, and data. An example is provided for download in the tool.

Getting Started

  1. Click 'Add +' to create a new simulator
  2. Give it a unique identifier and pick a type.
  3. Download the example CSV
  4. Modify or use as is (recommend to try this first)
  5. Upload or drop the CSV onto the simulator CSV link.
  6. Be sure to hit 'SAVE' to apply the new CSV.
  7. Enable the Simulator
  8. Go to 'Unclaimed Devices' in ExoSense and assign to a group
  9. Start using for Asset data

Customization

Users can modify the CSV file to add more channels, change the data, and edit properties for the configuration.

Format

  • First row is for the channel identifiers (id)
  • Following rows support adding items from the channel schema interface specification such as:
  • display_name (required)
  • properties.data_type (required)
  • properties.data_unit (required except for NUMBER,STRING,BOOLEAN data types)
  • The last part of the file is for specifying data in rows. Each row is sent in order, at the given report rate.

Info

Recommend the Exosite Industrial IoT Schema documents for more information about the channel configuration

Example in Tabular View

id temperature1 humidity
display_name Temperature 1 Humidity
properties.data_type TEMPERATURE HUMIDITY
properties.data_unit DEG_FAHRENHEIT PERCENT
protocol_config.report_rate 10000 10000
properties.precision 2 2
protocol_config.timeout 30000 30000
properties.locked TRUE TRUE
property
data 22.43 45.5
23.3 45.67
23.14 45.02
23.02 44.02

example csv file content

id,temperature1,humidity
display_name,Temperature 1,Humidity
properties.data_type,TEMPERATURE,HUMIDITY
properties.data_unit,DEG_FAHRENHEIT,PERCENT
protocol_config.report_rate,10000,10000
properties.precision,2,2
protocol_config.timeout,30000,30000
properties.locked,true,true
property,,
data,22.43,45.5
,23.3,45.67
,23.14,45.02
,23.02,44.02

Warning

Max CSV file size supported is 100KB

JSON Primitive data support

JSON primitive data, like location or arrays, can be sent using the CSV simulator.

Example in Tabular View

id runtime location arraypoints arraynumbers
display_name Runtime Location Points Array Number Array
description Runtime as JSON Data Location data points in an array numbers in an array
properties.data_type JSON LOCATION ARRAY_POINTS ARRAY_NUMBERS
properties.data_unit LAT_LONG
locked true true true true
protocol_config.report_rate 30000 30000 30000 30000
protocol_config.timeout 300000 300000 300000 300000
data {"one", "two", "three"} {"lat":"43.67423", "lng":"-96.18115"} [[10,12],[23, 42],[56,98.6]] [1,2,3,4,5,6,7,8,9,10,11,12]
{"four", "five", "key":"6} {"lat":"43.67424", "lng":"-96.18215"} [[10,15],[23, 39],[56,77.3]] [1,2,3,4,5,6,7,8,9,10,11,12]
{4,5,6} {"lat":"43.67425", "lng":"-96.1916"} [[10,8],[23, 54],[56,85.1]] [1,2,3,4,5,6,7,8,9,10,11,12]

example csv file with different JSON primitive data types

id,runtime,location,arraypoints,arraynumbers
display_name,Runtime,Location,Points Array,Number Array
description,Runtime as JSON Data,Location data,points in an array,numbers in an array
properties.data_type,JSON,LOCATION,ARRAY_POINTS,ARRAY_NUMBERS
properties.data_unit,,LAT_LONG,,
locked,true,true,true,true
protocol_config.report_rate,30000,30000,30000,30000
protocol_config.timeout,300000,300000,300000,300000
data,"{""one"", ""two"", ""three""}","{""lat"":""43.67423"", ""lng"":""-96.18115""}","[[10,12],[23, 42],[56,98.6]]","[1,2,3,4,5,6,7,8,9,10,11,12]"
,"{""four"", ""five"", ""key"":""6}","{""lat"":""43.67424"", ""lng"":""-96.18215""}","[[10,15],[23, 39],[56,77.3]]","[1,2,3,4,5,6,7,8,9,10,11,12]"
,"{4,5,6}","{""lat"":""43.67425"", ""lng"":""-96.1916""}","[[10,8],[23, 54],[56,85.1]]","[1,2,3,4,5,6,7,8,9,10,11,12]"

Custom Waveform Simulator Type

This type allows for creating channels, setting configuration parameters for the channel, and specifying a waveform such as sine, square, etc. This type has limited functionality but is the easiest to set up and use.

Next Steps

Once the device simulator is running, use the ExoSense guide for creating assets from devices.