cse47242
206226af53
|
4 years ago | |
---|---|---|
src | 4 years ago | |
test | 4 years ago | |
LICENSE | 4 years ago | |
README.md | 4 years ago | |
index.js | 4 years ago | |
package-lock.json | 4 years ago | |
package.json | 4 years ago |
README.md
IoT Dummy Data Generator
Spawn dummy IoT devices and generate custom data that can be send to some data store.
- Test data store performance
- Generate dummy data to play with
- Simulate real-time usage
Installation
IoT Dummy Data Generator requires Node.js v6+ to run.
Requires docker to run example code.
To run example, install the dependencies and devDependencies and start project with docker-compose.
$ npm install -d
$ docker-compose up -d
This will create InfluxDB, Chronograf and IoT Dummy Data Generator containers
Enter IoT Dummy Data Generator container
docker exec -ti iot-dummy-data-generator-master_chronograf_1 bash
And start the generator (in the iot-dummy-generator folder NOT in the docker above)
node index.js
Open browser to
http://localhost:8086 or if it does not work find the IP from net tools (ifconfig), usually some form of 172.0....
and use Chronograf UI to visualize generated data.
Usage
const FakeDeviceManager = require('./src/fake-device-manager')
const FakeDeviceConnection = require('./src/fake-device-connection')
const connection = FakeDeviceConnection()
const deviceManager = FakeDeviceManager({
deviceCount: 10,
metricsInterval: 30000,
connection: FakeDeviceConnection,
onUpdateStats: updateStats,
measurements: {
temperature: {type: 'integer', min: -20, max: 60},
air_humidity: {type: 'integer', min: 20, max: 100},
ground_humidity: {type: 'integer', min: 20, max: 100},
airforce: {type: 'integer', min: 0, max: 10}
}
})
deviceManager.start()
console.log('Generating data')
API Reference
FakeDeviceManager
Use FakeDeviceManager to spawn multiple FakeDevice instances with the same behavior. Multiple manager instances can be used in parallel to create multiple FakeDevice groups with different behavior.
When invoking FakeDeviceManager instance, you can set the following options:
connection
: Data store connection. (Use FakeDeviceConnection that write to Influx database to start with)deviceCount
: Number of FakeDevice instances that will be spawned. (Default:100
)spawnInterval
: Number of milliseconds to wait until new FakeDevice instance is spawned. (Default:200
)metricsInterval
: Metrics interval in ms to pass to each spawned instance. (Default:200
)sendInterval
: Send interval in ms to pass to each spawned instance. (Default:15000
)measurements
: Measurements array to pass to each spawned instance.
Methods
start
: Start spawning FakeDevice instancesstop
: Stop all spawned instancesgetDevices
: Get device list arraygetStats
: Get stats object
FakeDevice
Immitates the behaviour of real IoT device. Generates defined measurements in specified interval and submits data to data source. Used by FakeDeviceManager, but can also be invoked as stand alone instance.
When invoking FakeDevice instance, you can set the following options:
deviceId
: Device identifier. Usually unique integer or string value.connection
: Data store connection. (Use FakeDeviceConnection that write to Influx database to start with)metricsInterval
: Metrics interval in ms to pass to each spawned instance. (Default:200
)sendInterval
: Send interval in ms to pass to each spawned instance. (Default:15000
)measurements
: Measurements array to pass to each spawned instance.autoStart
: If set to true, instance will start immediately. (Default:false
)onSendData
: Function to be invoked after each send data interval.
Methods
start
: Start spawning FakeDevice instancesstop
: Stop all spawned instancessend
: Send data to data storegetData
: Get data buffer
Todos
- Write Todo list :)
License
MIT