cse47122
4 years ago
1 changed files with 116 additions and 0 deletions
@ -0,0 +1,116 @@ |
|||||
|
# 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](https://nodejs.org/) v6+ to run. |
||||
|
|
||||
|
Requires docker to run example code. |
||||
|
|
||||
|
To run example, install the dependencies and devDependencies and start project with docker-compose. |
||||
|
|
||||
|
```sh |
||||
|
$ 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: 100, |
||||
|
metricsInterval: 30, |
||||
|
connection: FakeDeviceConnection, |
||||
|
onUpdateStats: updateStats, |
||||
|
measurements: { |
||||
|
usage: {type: 'integer', min: 0, max: 100}, |
||||
|
voltage: {type: 'integer', min: 0, max: 15}, |
||||
|
temperature: {type: 'integer', min: -20, max: 60} |
||||
|
} |
||||
|
}) |
||||
|
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 instances |
||||
|
* `stop`: Stop all spawned instances |
||||
|
* `getDevices`: Get device list array |
||||
|
* `getStats`: 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 instances |
||||
|
* `stop`: Stop all spawned instances |
||||
|
* `send`: Send data to data store |
||||
|
* `getData`: Get data buffer |
||||
|
|
||||
|
## Todos |
||||
|
|
||||
|
- Write Todo list :) |
||||
|
|
||||
|
License |
||||
|
---- |
||||
|
|
||||
|
MIT |
Loading…
Reference in new issue