@corvina/device-example
Version:
Corvina Device Example base on @corvina/device-client
64 lines • 2.35 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const core_1 = require("@nestjs/core");
const swagger_1 = require("@nestjs/swagger");
const axios_1 = __importDefault(require("axios"));
const app_module_1 = require("./app.module");
const common_1 = require("@nestjs/common");
const nestjs_pino_1 = require("nestjs-pino");
const device_client_1 = require("@corvina/device-client");
async function bootstrap() {
const app = await core_1.NestFactory.create(app_module_1.AppModule, {
bufferLogs: false,
});
const pinoLogger = app.get(nestjs_pino_1.Logger);
app.useLogger(pinoLogger);
const l = new common_1.Logger("example");
try {
const config = new swagger_1.DocumentBuilder()
.setTitle("Corvina NodeJS device API")
.setDescription("")
.setVersion("1.0")
.addTag("device")
.build();
const document = swagger_1.SwaggerModule.createDocument(app, config);
swagger_1.SwaggerModule.setup("swagger-ui", app, document);
}
catch (e) {
l.error("Error caught: ");
l.error(e);
}
await app.listen(process.env.PORT || 3000);
app.get(device_client_1.DeviceRunnerService).run();
const device = app.get(device_client_1.DeviceService);
device.on("ready", (event) => {
l.log("Device is ready to transmit data");
});
device.on("not_ready", (event) => {
l.log("Device is not ready to transmit data");
});
device.on("write", (event) => {
l.log(`Write event received ${JSON.stringify(event)}`);
const t = Date.now();
const dataPoints = new Array();
const dp = {
tagName: event.tagName,
value: event.v,
timestamp: t,
};
dataPoints.push(dp);
device.post(dataPoints, {
qos: 0,
cb: process.env["WRITE_CALLBACK"]
? (error, tagName, modelPath) => {
axios_1.default.post(process.env["WRITE_CALLBACK"], event).catch((err) => "Error executing write callback");
}
: undefined,
});
});
}
bootstrap();
//# sourceMappingURL=main.js.map