@andrei-tatar/node-red-contrib-nibetcp
Version:
Node-red integration for Nibe S series heatpumps using modbus over TCP
28 lines (27 loc) • 1.41 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const rxjs_1 = require("rxjs");
const path_1 = require("path");
const operators_1 = require("rxjs/operators");
const nibe_1 = require("../communication/nibe");
const log_1 = require("../log");
module.exports = function (RED) {
RED.nodes.registerType("nibe-config", function (config) {
RED.nodes.createNode(this, config);
let address;
if (typeof config.address === "string") {
address = config.address.trim() || undefined;
}
if (!address) {
return;
}
const registerFile = config.registerFile || (0, path_1.join)(__dirname, "../../registers.csv");
const reset$ = new rxjs_1.Subject();
const log = log_1.logger === null || log_1.logger === void 0 ? void 0 : log_1.logger.scope(`config`);
this.nibe$ = (0, rxjs_1.merge)(nibe_1.Nibe.createTcp(address, registerFile, log), reset$.pipe((0, operators_1.debounceTime)(1000), (0, operators_1.first)(), (0, operators_1.switchMap)((_) => (0, rxjs_1.throwError)(() => {
log === null || log === void 0 ? void 0 : log.trace("reseting connection");
return new Error("Reset connection");
})), (0, operators_1.ignoreElements)())).pipe((0, operators_1.share)({ connector: () => new rxjs_1.ReplaySubject(1) }));
this.reset = () => reset$.next();
});
};