node-red-contrib-esphome 0.0.7 → 0.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # node-red-contrib-esphome
2
2
 
3
- [![platform](https://img.shields.io/badge/platform-Node--RED-red?logo=nodered)](https://nodered.org)
3
+ [![platform](https://img.shields.io/badge/platform-Node--RED-red?logo=nodered)](https://flows.nodered.org/node/node-red-contrib-esphome)
4
4
  [![Min Node Version](https://img.shields.io/node/v/node-red-contrib-esphome.svg)](https://nodejs.org/en/)
5
5
  [![GitHub version](https://img.shields.io/github/package-json/v/twocolors/node-red-contrib-esphome?logo=npm)](https://www.npmjs.com/package/node-red-contrib-esphome)
6
6
  [![GitHub stars](https://img.shields.io/github/stars/twocolors/node-red-contrib-esphome)](https://github.com/twocolors/node-red-contrib-esphome/stargazers)
@@ -1,3 +1,3 @@
1
- export declare const Status: {
2
- [key: string]: any;
3
- };
1
+ export declare const Status: {
2
+ [key: string]: any;
3
+ };
@@ -1,26 +1,26 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Status = void 0;
4
- exports.Status = {
5
- error: {
6
- fill: 'red',
7
- shape: 'dot',
8
- text: 'error'
9
- },
10
- disconnected: {
11
- fill: 'red',
12
- shape: 'ring',
13
- text: 'disconnected'
14
- },
15
- connecting: {
16
- fill: 'yellow',
17
- shape: 'ring',
18
- text: 'connecting'
19
- },
20
- connected: {
21
- fill: 'green',
22
- shape: 'dot',
23
- text: 'connected'
24
- }
25
- };
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Status = void 0;
4
+ exports.Status = {
5
+ error: {
6
+ fill: 'red',
7
+ shape: 'dot',
8
+ text: 'error'
9
+ },
10
+ disconnected: {
11
+ fill: 'red',
12
+ shape: 'ring',
13
+ text: 'disconnected'
14
+ },
15
+ connecting: {
16
+ fill: 'yellow',
17
+ shape: 'ring',
18
+ text: 'connecting'
19
+ },
20
+ connected: {
21
+ fill: 'green',
22
+ shape: 'dot',
23
+ text: 'connected'
24
+ }
25
+ };
26
26
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- export {};
1
+ export {};
@@ -1,35 +1,35 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- // eslint-disable-next-line @typescript-eslint/no-var-requires
13
- const { Discovery } = require('@2colors/esphome-native-api');
14
- module.exports = (RED) => {
15
- const NODE_PATH = '/esphome/';
16
- RED.httpAdmin.post(NODE_PATH + 'discovery', (req, res) => __awaiter(void 0, void 0, void 0, function* () {
17
- Discovery()
18
- .then((devices) => {
19
- res.json(devices);
20
- })
21
- .catch((e) => {
22
- res.json(e);
23
- });
24
- }));
25
- RED.httpAdmin.post(NODE_PATH + 'entities', (req, res) => __awaiter(void 0, void 0, void 0, function* () {
26
- const deviceNode = RED.nodes.getNode(req.body.deviceNode);
27
- if (deviceNode) {
28
- res.json(deviceNode.entities);
29
- }
30
- else {
31
- res.json([]);
32
- }
33
- }));
34
- };
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
13
+ const { Discovery } = require('@2colors/esphome-native-api');
14
+ module.exports = (RED) => {
15
+ const NODE_PATH = '/esphome/';
16
+ RED.httpAdmin.post(NODE_PATH + 'discovery', (req, res) => __awaiter(void 0, void 0, void 0, function* () {
17
+ Discovery()
18
+ .then((devices) => {
19
+ res.json(devices);
20
+ })
21
+ .catch((e) => {
22
+ res.json(e);
23
+ });
24
+ }));
25
+ RED.httpAdmin.post(NODE_PATH + 'entities', (req, res) => __awaiter(void 0, void 0, void 0, function* () {
26
+ const deviceNode = RED.nodes.getNode(req.body.deviceNode);
27
+ if (deviceNode) {
28
+ res.json(deviceNode.entities);
29
+ }
30
+ else {
31
+ res.json([]);
32
+ }
33
+ }));
34
+ };
35
35
  //# sourceMappingURL=api.js.map
@@ -1 +1 @@
1
- export {};
1
+ export {};
@@ -1,106 +1,108 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- // eslint-disable-next-line @typescript-eslint/no-var-requires
4
- const { Client } = require('@2colors/esphome-native-api');
5
- // eslint-disable-next-line @typescript-eslint/no-var-requires
6
- const Package = require('../../package.json');
7
- module.exports = (RED) => {
8
- RED.nodes.registerType('esphome-device', function (config) {
9
- var _a;
10
- // eslint-disable-next-line @typescript-eslint/no-this-alias
11
- const self = this;
12
- self.config = config;
13
- RED.nodes.createNode(this, config);
14
- self.setMaxListeners(0);
15
- self.device = {};
16
- self.entities = [];
17
- self.current_status = 'disconnected';
18
- if (!(config === null || config === void 0 ? void 0 : config.host) || !(config === null || config === void 0 ? void 0 : config.port) || !((_a = self.credentials) === null || _a === void 0 ? void 0 : _a.password)) {
19
- return;
20
- }
21
- self.onStatus = function (string) {
22
- self.current_status = string;
23
- self.emit('onStatus', string);
24
- };
25
- self.onState = function (object) {
26
- self.emit('onState', object);
27
- };
28
- self.client = new Client({
29
- host: config.host,
30
- port: config.port,
31
- password: self.credentials.password,
32
- clientInfo: Package.name + ' ' + Package.version,
33
- initializeDeviceInfo: true,
34
- initializeListEntities: true,
35
- initializeSubscribeStates: true,
36
- reconnect: true,
37
- reconnectInterval: 15 * 1000,
38
- pingInterval: 5 * 1000
39
- });
40
- try {
41
- self.client.connect();
42
- }
43
- catch (e) {
44
- self.error(e.message);
45
- return;
46
- }
47
- self.client.on('error', (e) => {
48
- if (e.message.includes('EHOSTUNREACH')) {
49
- /* empty */
50
- }
51
- else if (e.message.includes('Invalid password')) {
52
- self.error(e.message);
53
- }
54
- else if (e.message.includes('ECONNRESET')) {
55
- /* empty */
56
- }
57
- else if (e.message.includes('TIMEOUT')) {
58
- /* empty */
59
- }
60
- else if (e.message.includes('write after end')) {
61
- /* empty */
62
- }
63
- else {
64
- // copy this error to issues ...
65
- }
66
- self.onStatus('error');
67
- });
68
- self.client.on('disconnected', () => {
69
- self.onStatus('disconnected');
70
- });
71
- self.client.on('connected', () => {
72
- // clear entities
73
- self.entities = [];
74
- self.onStatus('connecting');
75
- });
76
- self.client.on('initialized', () => {
77
- self.onStatus('connected');
78
- });
79
- self.client.on('deviceInfo', (deviceInfo) => {
80
- self.device = deviceInfo;
81
- });
82
- self.client.on('newEntity', (entity) => {
83
- self.entities.push({
84
- key: entity.id,
85
- type: entity.type,
86
- name: entity.name,
87
- config: entity.config
88
- });
89
- entity.on('state', (state) => {
90
- self.onState(Object.assign({}, state));
91
- });
92
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
93
- entity.on('error', (e) => {
94
- /* empty */
95
- });
96
- });
97
- self.on('close', () => {
98
- self.client.disconnect();
99
- });
100
- }, {
101
- credentials: {
102
- password: { type: 'password' }
103
- }
104
- });
105
- };
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
4
+ const { Client } = require('@2colors/esphome-native-api');
5
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
6
+ const Package = require('../../package.json');
7
+ module.exports = (RED) => {
8
+ RED.nodes.registerType('esphome-device', function (config) {
9
+ var _a;
10
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
11
+ const self = this;
12
+ self.config = config;
13
+ RED.nodes.createNode(this, config);
14
+ self.setMaxListeners(0);
15
+ self.device = {};
16
+ self.entities = [];
17
+ self.current_status = 'disconnected';
18
+ if (!(config === null || config === void 0 ? void 0 : config.host) || !(config === null || config === void 0 ? void 0 : config.port) || !((_a = self.credentials) === null || _a === void 0 ? void 0 : _a.password)) {
19
+ return;
20
+ }
21
+ self.onStatus = function (string) {
22
+ self.current_status = string;
23
+ self.emit('onStatus', string);
24
+ };
25
+ self.onState = function (object) {
26
+ self.emit('onState', object);
27
+ };
28
+ self.client = new Client({
29
+ host: config.host,
30
+ port: config.port,
31
+ password: self.credentials.password,
32
+ clientInfo: Package.name + ' ' + Package.version,
33
+ initializeDeviceInfo: true,
34
+ initializeListEntities: true,
35
+ initializeSubscribeStates: true,
36
+ reconnect: true,
37
+ reconnectInterval: 15 * 1000,
38
+ pingInterval: 15 * 1000
39
+ });
40
+ try {
41
+ self.client.connect();
42
+ self.client.connection.setMaxListeners(0);
43
+ }
44
+ catch (e) {
45
+ self.error(e.message);
46
+ return;
47
+ }
48
+ self.client.on('error', (e) => {
49
+ if (e.message.includes('EHOSTUNREACH')) {
50
+ /* empty */
51
+ }
52
+ else if (e.message.includes('Invalid password')) {
53
+ /* empty */
54
+ }
55
+ else if (e.message.includes('ECONNRESET')) {
56
+ /* empty */
57
+ }
58
+ else if (e.message.includes('TIMEOUT')) {
59
+ /* empty */
60
+ }
61
+ else if (e.message.includes('write after end')) {
62
+ /* empty */
63
+ }
64
+ else {
65
+ // copy this error to issues ...
66
+ }
67
+ self.error(e.message);
68
+ self.onStatus('error');
69
+ });
70
+ self.client.on('disconnected', () => {
71
+ self.onStatus('disconnected');
72
+ });
73
+ self.client.on('connected', () => {
74
+ // clear entities
75
+ self.entities = [];
76
+ self.onStatus('connecting');
77
+ });
78
+ self.client.on('initialized', () => {
79
+ self.onStatus('connected');
80
+ });
81
+ self.client.on('deviceInfo', (deviceInfo) => {
82
+ self.device = deviceInfo;
83
+ });
84
+ self.client.on('newEntity', (entity) => {
85
+ self.entities.push({
86
+ key: entity.id,
87
+ type: entity.type,
88
+ name: entity.name,
89
+ config: entity.config
90
+ });
91
+ entity.on('state', (state) => {
92
+ self.onState(Object.assign({}, state));
93
+ });
94
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
95
+ entity.on('error', (e) => {
96
+ /* empty */
97
+ });
98
+ });
99
+ self.on('close', () => {
100
+ self.client.disconnect();
101
+ });
102
+ }, {
103
+ credentials: {
104
+ password: { type: 'password' }
105
+ }
106
+ });
107
+ };
106
108
  //# sourceMappingURL=device.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"device.js","sourceRoot":"","sources":["../../src/nodes/device.ts"],"names":[],"mappings":";;AACA,8DAA8D;AAC9D,MAAM,EAAC,MAAM,EAAC,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAAC;AACxD,8DAA8D;AAC9D,MAAM,OAAO,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAE9C,MAAM,CAAC,OAAO,GAAG,CAAC,GAAY,EAAE,EAAE;IAChC,GAAG,CAAC,KAAK,CAAC,YAAY,CACpB,gBAAgB,EAChB,UAAqB,MAAW;;QAC9B,4DAA4D;QAC5D,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAEnC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QAErC,IAAI,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,CAAA,IAAI,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,CAAA,IAAI,CAAC,CAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,QAAQ,CAAA,EAAE;YACjE,OAAO;SACR;QAED,IAAI,CAAC,QAAQ,GAAG,UAAU,MAAc;YACtC,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;YAC7B,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAChC,CAAC,CAAC;QAEF,IAAI,CAAC,OAAO,GAAG,UAAU,MAAW;YAClC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC/B,CAAC,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC;YACvB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ;YACnC,UAAU,EAAE,OAAO,CAAC,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC,OAAO;YAChD,oBAAoB,EAAE,IAAI;YAC1B,sBAAsB,EAAE,IAAI;YAC5B,yBAAyB,EAAE,IAAI;YAC/B,SAAS,EAAE,IAAI;YACf,iBAAiB,EAAE,EAAE,GAAG,IAAI;YAC5B,YAAY,EAAE,CAAC,GAAG,IAAI;SACvB,CAAC,CAAC;QAEH,IAAI;YACF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;SACvB;QAAC,OAAO,CAAM,EAAE;YACf,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACtB,OAAO;SACR;QAED,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAQ,EAAE,EAAE;YACnC,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;gBACtC,WAAW;aACZ;iBAAM,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE;gBACjD,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;aACvB;iBAAM,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;gBAC3C,WAAW;aACZ;iBAAM,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;gBACxC,WAAW;aACZ;iBAAM,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;gBAChD,WAAW;aACZ;iBAAM;gBACL,gCAAgC;aACjC;YACD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE;YAClC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE;YAC/B,iBAAiB;YACjB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;YAEnB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE,GAAG,EAAE;YACjC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,UAAe,EAAE,EAAE;YAC/C,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,MAAW,EAAE,EAAE;YAC1C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACjB,GAAG,EAAE,MAAM,CAAC,EAAE;gBACd,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC,CAAC;YAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAU,EAAE,EAAE;gBAChC,IAAI,CAAC,OAAO,mBAAK,KAAK,EAAE,CAAC;YAC3B,CAAC,CAAC,CAAC;YAEH,6DAA6D;YAC7D,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAQ,EAAE,EAAE;gBAC9B,WAAW;YACb,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACpB,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC,EACD;QACE,WAAW,EAAE;YACX,QAAQ,EAAE,EAAC,IAAI,EAAE,UAAU,EAAC;SAC7B;KACF,CACF,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"device.js","sourceRoot":"","sources":["../../src/nodes/device.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- export {};
1
+ export {};
package/build/nodes/in.js CHANGED
@@ -1,71 +1,71 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const utils_1 = require("../lib/utils");
4
- const util_1 = require("util");
5
- module.exports = (RED) => {
6
- RED.nodes.registerType('esphome-in', function (config) {
7
- // eslint-disable-next-line @typescript-eslint/no-this-alias
8
- const self = this;
9
- self.config = config;
10
- RED.nodes.createNode(this, config);
11
- try {
12
- self.deviceNode = RED.nodes.getNode(self.config.device);
13
- }
14
- catch (_) {
15
- /* empty */
16
- }
17
- if (!self.deviceNode || !self.config.entity) {
18
- return;
19
- }
20
- self.current_status = self.deviceNode.current_status;
21
- const clearStatus = (timeout = 0) => {
22
- setTimeout(() => {
23
- if (self.current_status) {
24
- self.status(utils_1.Status[self.current_status]);
25
- }
26
- else {
27
- self.status({});
28
- }
29
- }, timeout);
30
- };
31
- const setStatus = (status, timeout = 0) => {
32
- self.status(status);
33
- if (timeout) {
34
- clearStatus(timeout);
35
- }
36
- };
37
- const onState = (state) => {
38
- const payload = Object.assign({}, state);
39
- if (payload.key != config.entity) {
40
- return;
41
- }
42
- delete payload.key;
43
- let text = typeof payload.state !== 'undefined' && typeof payload.state !== 'object' ? payload.state : (0, util_1.inspect)(payload);
44
- if (text && text.length > 32) {
45
- text = text.substr(0, 32) + '...';
46
- }
47
- setStatus({ fill: 'yellow', shape: 'dot', text: text }, 3000);
48
- const entity = self.deviceNode.entities.find((e) => e.key == config.entity);
49
- self.send({
50
- payload: payload,
51
- device: self.deviceNode.device,
52
- config: entity === null || entity === void 0 ? void 0 : entity.config,
53
- entity: entity
54
- });
55
- };
56
- const onStatus = (status) => {
57
- self.current_status = status;
58
- setStatus(utils_1.Status[self.current_status]);
59
- };
60
- self.onState = (state) => onState(state);
61
- self.deviceNode.on('onState', self.onState);
62
- self.onStatus = (status) => onStatus(status);
63
- self.deviceNode.on('onStatus', self.onStatus);
64
- self.on('close', (_, done) => {
65
- self.deviceNode.removeListener('onState', self.onState);
66
- self.deviceNode.removeListener('onStatus', self.onStatus);
67
- done();
68
- });
69
- });
70
- };
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const utils_1 = require("../lib/utils");
4
+ const util_1 = require("util");
5
+ module.exports = (RED) => {
6
+ RED.nodes.registerType('esphome-in', function (config) {
7
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
8
+ const self = this;
9
+ self.config = config;
10
+ RED.nodes.createNode(this, config);
11
+ try {
12
+ self.deviceNode = RED.nodes.getNode(self.config.device);
13
+ }
14
+ catch (_) {
15
+ /* empty */
16
+ }
17
+ if (!self.deviceNode || !self.config.entity) {
18
+ return;
19
+ }
20
+ self.current_status = self.deviceNode.current_status;
21
+ const clearStatus = (timeout = 0) => {
22
+ setTimeout(() => {
23
+ if (self.current_status) {
24
+ self.status(utils_1.Status[self.current_status]);
25
+ }
26
+ else {
27
+ self.status({});
28
+ }
29
+ }, timeout);
30
+ };
31
+ const setStatus = (status, timeout = 0) => {
32
+ self.status(status);
33
+ if (timeout) {
34
+ clearStatus(timeout);
35
+ }
36
+ };
37
+ const onState = (state) => {
38
+ const payload = Object.assign({}, state);
39
+ if (payload.key != config.entity) {
40
+ return;
41
+ }
42
+ delete payload.key;
43
+ let text = typeof payload.state !== 'undefined' && typeof payload.state !== 'object' ? payload.state : (0, util_1.inspect)(payload);
44
+ if (text && text.length > 32) {
45
+ text = text.substr(0, 32) + '...';
46
+ }
47
+ setStatus({ fill: 'yellow', shape: 'dot', text: text }, 3000);
48
+ const entity = self.deviceNode.entities.find((e) => e.key == config.entity);
49
+ self.send({
50
+ payload: payload,
51
+ device: self.deviceNode.device,
52
+ config: entity === null || entity === void 0 ? void 0 : entity.config,
53
+ entity: entity
54
+ });
55
+ };
56
+ const onStatus = (status) => {
57
+ self.current_status = status;
58
+ setStatus(utils_1.Status[self.current_status]);
59
+ };
60
+ self.onState = (state) => onState(state);
61
+ self.deviceNode.on('onState', self.onState);
62
+ self.onStatus = (status) => onStatus(status);
63
+ self.deviceNode.on('onStatus', self.onStatus);
64
+ self.on('close', (_, done) => {
65
+ self.deviceNode.removeListener('onState', self.onState);
66
+ self.deviceNode.removeListener('onStatus', self.onStatus);
67
+ done();
68
+ });
69
+ });
70
+ };
71
71
  //# sourceMappingURL=in.js.map
@@ -1 +1 @@
1
- export {};
1
+ export {};
@@ -1,81 +1,81 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- const utils_1 = require("../lib/utils");
13
- const util_1 = require("util");
14
- module.exports = (RED) => {
15
- RED.nodes.registerType('esphome-out', function (config) {
16
- // eslint-disable-next-line @typescript-eslint/no-this-alias
17
- const self = this;
18
- self.config = config;
19
- RED.nodes.createNode(this, config);
20
- try {
21
- self.deviceNode = RED.nodes.getNode(self.config.device);
22
- }
23
- catch (_) {
24
- /* empty */
25
- }
26
- if (!self.deviceNode || !self.config.entity) {
27
- return;
28
- }
29
- self.current_status = self.deviceNode.current_status;
30
- const clearStatus = (timeout = 0) => {
31
- setTimeout(() => {
32
- if (self.current_status) {
33
- self.status(utils_1.Status[self.current_status]);
34
- }
35
- else {
36
- self.status({});
37
- }
38
- }, timeout);
39
- };
40
- const setStatus = (status, timeout = 0) => {
41
- self.status(status);
42
- if (timeout) {
43
- clearStatus(timeout);
44
- }
45
- };
46
- self.on('input', (msg, send, done) => __awaiter(this, void 0, void 0, function* () {
47
- const entity = self.deviceNode.entities.find((e) => e.key == config.entity);
48
- const command = entity.type.toLowerCase() + 'CommandService';
49
- const regexp = /^(BinarySensor|Sensor|TextSensor)$/gi;
50
- if (entity.type.match(regexp)) {
51
- done();
52
- return;
53
- }
54
- let data = msg.payload;
55
- data = typeof data.state !== 'undefined' && typeof data.state !== 'object' ? data.state : (0, util_1.inspect)(data);
56
- if (data && data.length > 32) {
57
- data = data.substr(0, 32) + '...';
58
- }
59
- setStatus({ fill: 'yellow', shape: 'dot', text: data }, 3000);
60
- try {
61
- yield self.deviceNode.client.connection[command](Object.assign({ key: config.entity }, msg.payload));
62
- }
63
- catch (e) {
64
- setStatus(utils_1.Status['error'], 3000);
65
- self.error(e.message);
66
- }
67
- done();
68
- }));
69
- const onStatus = (status) => {
70
- self.current_status = status;
71
- setStatus(utils_1.Status[self.current_status]);
72
- };
73
- self.onStatus = (status) => onStatus(status);
74
- self.deviceNode.on('onStatus', self.onStatus);
75
- self.on('close', (_, done) => {
76
- self.deviceNode.removeListener('onStatus', self.onStatus);
77
- done();
78
- });
79
- });
80
- };
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const utils_1 = require("../lib/utils");
13
+ const util_1 = require("util");
14
+ module.exports = (RED) => {
15
+ RED.nodes.registerType('esphome-out', function (config) {
16
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
17
+ const self = this;
18
+ self.config = config;
19
+ RED.nodes.createNode(this, config);
20
+ try {
21
+ self.deviceNode = RED.nodes.getNode(self.config.device);
22
+ }
23
+ catch (_) {
24
+ /* empty */
25
+ }
26
+ if (!self.deviceNode || !self.config.entity) {
27
+ return;
28
+ }
29
+ self.current_status = self.deviceNode.current_status;
30
+ const clearStatus = (timeout = 0) => {
31
+ setTimeout(() => {
32
+ if (self.current_status) {
33
+ self.status(utils_1.Status[self.current_status]);
34
+ }
35
+ else {
36
+ self.status({});
37
+ }
38
+ }, timeout);
39
+ };
40
+ const setStatus = (status, timeout = 0) => {
41
+ self.status(status);
42
+ if (timeout) {
43
+ clearStatus(timeout);
44
+ }
45
+ };
46
+ self.on('input', (msg, send, done) => __awaiter(this, void 0, void 0, function* () {
47
+ const entity = self.deviceNode.entities.find((e) => e.key == config.entity);
48
+ const command = entity.type.toLowerCase() + 'CommandService';
49
+ const regexp = /^(BinarySensor|Sensor|TextSensor)$/gi;
50
+ if (entity.type.match(regexp)) {
51
+ done();
52
+ return;
53
+ }
54
+ let data = msg.payload;
55
+ data = typeof data.state !== 'undefined' && typeof data.state !== 'object' ? data.state : (0, util_1.inspect)(data);
56
+ if (data && data.length > 32) {
57
+ data = data.substr(0, 32) + '...';
58
+ }
59
+ setStatus({ fill: 'yellow', shape: 'dot', text: data }, 3000);
60
+ try {
61
+ yield self.deviceNode.client.connection[command](Object.assign({ key: config.entity }, msg.payload));
62
+ }
63
+ catch (e) {
64
+ setStatus(utils_1.Status['error'], 3000);
65
+ self.error(e.message);
66
+ }
67
+ done();
68
+ }));
69
+ const onStatus = (status) => {
70
+ self.current_status = status;
71
+ setStatus(utils_1.Status[self.current_status]);
72
+ };
73
+ self.onStatus = (status) => onStatus(status);
74
+ self.deviceNode.on('onStatus', self.onStatus);
75
+ self.on('close', (_, done) => {
76
+ self.deviceNode.removeListener('onStatus', self.onStatus);
77
+ done();
78
+ });
79
+ });
80
+ };
81
81
  //# sourceMappingURL=out.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-red-contrib-esphome",
3
- "version": "0.0.7",
3
+ "version": "0.0.9",
4
4
  "description": "Node-RED nodes to ESPhome devices",
5
5
  "homepage": "https://github.com/twocolors/node-red-contrib-esphome",
6
6
  "license": "MIT",
@@ -29,7 +29,7 @@
29
29
  }
30
30
  },
31
31
  "dependencies": {
32
- "@2colors/esphome-native-api":"1.0.7"
32
+ "@2colors/esphome-native-api":"1.0.9"
33
33
  },
34
34
  "devDependencies": {
35
35
  "@types/node":"^18.11.18",
@@ -42,11 +42,12 @@ module.exports = (RED: NodeAPI) => {
42
42
  initializeSubscribeStates: true,
43
43
  reconnect: true,
44
44
  reconnectInterval: 15 * 1000,
45
- pingInterval: 5 * 1000
45
+ pingInterval: 15 * 1000
46
46
  });
47
47
 
48
48
  try {
49
49
  self.client.connect();
50
+ self.client.connection.setMaxListeners(0);
50
51
  } catch (e: any) {
51
52
  self.error(e.message);
52
53
  return;
@@ -56,7 +57,7 @@ module.exports = (RED: NodeAPI) => {
56
57
  if (e.message.includes('EHOSTUNREACH')) {
57
58
  /* empty */
58
59
  } else if (e.message.includes('Invalid password')) {
59
- self.error(e.message);
60
+ /* empty */
60
61
  } else if (e.message.includes('ECONNRESET')) {
61
62
  /* empty */
62
63
  } else if (e.message.includes('TIMEOUT')) {
@@ -66,6 +67,7 @@ module.exports = (RED: NodeAPI) => {
66
67
  } else {
67
68
  // copy this error to issues ...
68
69
  }
70
+ self.error(e.message);
69
71
  self.onStatus('error');
70
72
  });
71
73