This README provides an overview of the Simulator module, which is designed to generate and send simulated data points to the W3BSTREAM server.
- Getting Started
- Usage
To use the Simulator module, you need to import it along with some dependencies:
import {
Simulator,
DataPointGenerator,
} from "@w3bstream/w3bstream-http-client-simulator";
And provide DEVICE_TOKEN and HTTP_ROUTE that can be found in W3bstream project.
const apiKey = "API_KEY";
const httpRoute = "HTTP_ROUTE";
Deside what the shape of the data point should be:
type TemperatureDataPoint = {
temperature: number;
timestamp: number;
};
And how the data point should be generated, you can use randomizer
or timestampGenerator
methods of DataPointGenerator:
const generatorFunction = () => ({
temperature: DataPointGenerator.randomizer(0, 100),
timestamp: DataPointGenerator.timestampGenerator(),
});
And finally, to generate messages, instantiate data generator:
const dataGenerator = new DataPointGenerator<TemperatureDataPoint>(
generatorFunction
);
Create a new instance of the Simulator
class, initialize it and set a DataPointGenerator
that you created earlier:
const simulator = new Simulator(apiKey, httpRoute);
simulator.init();
simulator.dataPointGenerator = dataGenerator;
(OPTIONAL) You can also provide a pathToPrivateKey
parameter:
simulator.init(pathToPrivateKey);
Now you can generate a message with a single or multiple events:
const message = simulator.generateEvents(numberOfDataPoints);
To send a single message to the server, call the sendSingleMessage
method:
const eventType = "TEMPERATURE";
const { res, msg } = await simulator.sendSingleMessage(eventType);
console.log("response: ", res?.data);
console.log("w3bstream message: ", msg);
To send messages at a specified interval, use the powerOn
method:
const intervalInSec = 1;
const eventType = "TEMPERATURE";
simulator.powerOn(intervalInSec, eventType);
To stop sending messages, call the powerOff
method:
simulator.powerOff();