UNPKG

@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
"use strict"; 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(); }); };