homebridge-melcloud-control 3.10.0-beta.25 → 3.10.0-beta.27

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.
@@ -225,11 +225,6 @@
225
225
  "default": "Air Conditioner",
226
226
  "readonly": true
227
227
  },
228
- "name": {
229
- "title": "Name",
230
- "type": "string",
231
- "default": "Air Conditioner"
232
- },
233
228
  "displayMode": {
234
229
  "title": "Display Type",
235
230
  "type": "integer",
@@ -258,6 +253,11 @@
258
253
  }
259
254
  ]
260
255
  },
256
+ "name": {
257
+ "title": "Name",
258
+ "type": "string",
259
+ "default": "Air Conditioner"
260
+ },
261
261
  "heatDryFanMode": {
262
262
  "title": "Heat",
263
263
  "type": "integer",
@@ -1707,15 +1707,6 @@
1707
1707
  "type": "boolean",
1708
1708
  "default": false,
1709
1709
  "description": "This enable RESTful server."
1710
- },
1711
- "debug": {
1712
- "title": "Debug",
1713
- "type": "boolean",
1714
- "default": false,
1715
- "description": "This enable debug mode for RESTFul.",
1716
- "condition": {
1717
- "functionBody": "return model.accounts[arrayIndices].restFul.enable === true;"
1718
- }
1719
1710
  }
1720
1711
  }
1721
1712
  },
@@ -1766,15 +1757,6 @@
1766
1757
  "functionBody": "return model.accounts[arrayIndices].mqtt.enable === true;"
1767
1758
  }
1768
1759
  },
1769
- "debug": {
1770
- "title": "Debug",
1771
- "type": "boolean",
1772
- "default": false,
1773
- "description": "This enable debug mode for MQTT.",
1774
- "condition": {
1775
- "functionBody": "return model.accounts[arrayIndices].mqtt.enable === true;"
1776
- }
1777
- },
1778
1760
  "auth": {
1779
1761
  "title": "Authorization",
1780
1762
  "type": "object",
@@ -1857,6 +1839,7 @@
1857
1839
  "key": "accounts[].ataDevices[].typeString",
1858
1840
  "readonly": true
1859
1841
  },
1842
+ "accounts[].ataDevices[].displayMode",
1860
1843
  {
1861
1844
  "key": "accounts[].ataDevices[]",
1862
1845
  "title": "Settings",
@@ -1864,13 +1847,15 @@
1864
1847
  "expandable": true,
1865
1848
  "expanded": false,
1866
1849
  "items": [
1867
- "accounts[].ataDevices[].displayMode",
1868
1850
  "accounts[].ataDevices[].name",
1869
1851
  "accounts[].ataDevices[].heatDryFanMode",
1870
1852
  "accounts[].ataDevices[].coolDryFanMode",
1871
1853
  "accounts[].ataDevices[].autoDryFanMode",
1872
1854
  "accounts[].ataDevices[].refreshInterval"
1873
- ]
1855
+ ],
1856
+ "condition": {
1857
+ "functionBody": "return model.accounts[arrayIndices[0]].ataDevices[arrayIndices[1]].displayMode > 0;"
1858
+ }
1874
1859
  },
1875
1860
  {
1876
1861
  "key": "accounts[].ataDevices[]",
@@ -1881,7 +1866,10 @@
1881
1866
  "items": [
1882
1867
  "accounts[].ataDevices[].temperatureSensor",
1883
1868
  "accounts[].ataDevices[].temperatureSensorOutdoor"
1884
- ]
1869
+ ],
1870
+ "condition": {
1871
+ "functionBody": "return model.accounts[arrayIndices[0]].ataDevices[arrayIndices[1]].displayMode > 0;"
1872
+ }
1885
1873
  },
1886
1874
  {
1887
1875
  "key": "accounts[].ataDevices[].presets",
@@ -1904,7 +1892,10 @@
1904
1892
  "accounts[].ataDevices[].presets[].namePrefix"
1905
1893
  ]
1906
1894
  }
1907
- ]
1895
+ ],
1896
+ "condition": {
1897
+ "functionBody": "return model.accounts[arrayIndices[0]].ataDevices[arrayIndices[1]].displayMode > 0;"
1898
+ }
1908
1899
  },
1909
1900
  {
1910
1901
  "key": "accounts[].ataDevices[].buttonsSensors",
@@ -1924,7 +1915,10 @@
1924
1915
  "accounts[].ataDevices[].buttonsSensors[].namePrefix"
1925
1916
  ]
1926
1917
  }
1927
- ]
1918
+ ],
1919
+ "condition": {
1920
+ "functionBody": "return model.accounts[arrayIndices[0]].ataDevices[arrayIndices[1]].displayMode > 0;"
1921
+ }
1928
1922
  }
1929
1923
  ],
1930
1924
  "condition": {
@@ -1959,6 +1953,7 @@
1959
1953
  "key": "accounts[].atwDevices[].typeString",
1960
1954
  "readonly": true
1961
1955
  },
1956
+ "accounts[].atwDevices[].displayMode",
1962
1957
  {
1963
1958
  "key": "accounts[].atwDevices[]",
1964
1959
  "type": "section",
@@ -1966,11 +1961,13 @@
1966
1961
  "expandable": true,
1967
1962
  "expanded": false,
1968
1963
  "items": [
1969
- "accounts[].atwDevices[].displayMode",
1970
1964
  "accounts[].atwDevices[].hideZone",
1971
1965
  "accounts[].atwDevices[].name",
1972
1966
  "accounts[].atwDevices[].refreshInterval"
1973
- ]
1967
+ ],
1968
+ "condition": {
1969
+ "functionBody": "return model.accounts[arrayIndices[0]].atwDevices[arrayIndices[1]].displayMode > 0;"
1970
+ }
1974
1971
  },
1975
1972
  {
1976
1973
  "key": "accounts[].atwDevices[]",
@@ -1988,7 +1985,10 @@
1988
1985
  "accounts[].atwDevices[].temperatureSensorReturnWaterTank",
1989
1986
  "accounts[].atwDevices[].temperatureSensorFlowZone2",
1990
1987
  "accounts[].atwDevices[].temperatureSensorReturnZone2"
1991
- ]
1988
+ ],
1989
+ "condition": {
1990
+ "functionBody": "return model.accounts[arrayIndices[0]].atwDevices[arrayIndices[1]].displayMode > 0;"
1991
+ }
1992
1992
  },
1993
1993
  {
1994
1994
  "key": "accounts[].atwDevices[].presets",
@@ -2011,7 +2011,10 @@
2011
2011
  "accounts[].atwDevices[].presets[].namePrefix"
2012
2012
  ]
2013
2013
  }
2014
- ]
2014
+ ],
2015
+ "condition": {
2016
+ "functionBody": "return model.accounts[arrayIndices[0]].atwDevices[arrayIndices[1]].displayMode > 0;"
2017
+ }
2015
2018
  },
2016
2019
  {
2017
2020
  "key": "accounts[].atwDevices[].buttonsSensors",
@@ -2031,7 +2034,10 @@
2031
2034
  "accounts[].atwDevices[].buttonsSensors[].namePrefix"
2032
2035
  ]
2033
2036
  }
2034
- ]
2037
+ ],
2038
+ "condition": {
2039
+ "functionBody": "return model.accounts[arrayIndices[0]].atwDevices[arrayIndices[1]].displayMode > 0;"
2040
+ }
2035
2041
  }
2036
2042
  ],
2037
2043
  "condition": {
@@ -2066,6 +2072,7 @@
2066
2072
  "key": "accounts[].ervDevices[].typeString",
2067
2073
  "readonly": true
2068
2074
  },
2075
+ "accounts[].ervDevices[].displayMode",
2069
2076
  {
2070
2077
  "key": "accounts[].ervDevices[]",
2071
2078
  "title": "Settings",
@@ -2073,10 +2080,12 @@
2073
2080
  "expandable": true,
2074
2081
  "expanded": false,
2075
2082
  "items": [
2076
- "accounts[].ervDevices[].displayMode",
2077
2083
  "accounts[].ervDevices[].name",
2078
2084
  "accounts[].ervDevices[].refreshInterval"
2079
- ]
2085
+ ],
2086
+ "condition": {
2087
+ "functionBody": "return model.accounts[arrayIndices[0]].ervDevices[arrayIndices[1]].displayMode > 0;"
2088
+ }
2080
2089
  },
2081
2090
  {
2082
2091
  "key": "accounts[].ervDevices[]",
@@ -2088,7 +2097,10 @@
2088
2097
  "accounts[].ervDevices[].temperatureSensor",
2089
2098
  "accounts[].ervDevices[].temperatureSensorOutdoor",
2090
2099
  "accounts[].ervDevices[].temperatureSensorSupply"
2091
- ]
2100
+ ],
2101
+ "condition": {
2102
+ "functionBody": "return model.accounts[arrayIndices[0]].ervDevices[arrayIndices[1]].displayMode > 0;"
2103
+ }
2092
2104
  },
2093
2105
  {
2094
2106
  "key": "accounts[].ervDevices[].presets",
@@ -2111,7 +2123,10 @@
2111
2123
  "accounts[].ervDevices[].presets[].namePrefix"
2112
2124
  ]
2113
2125
  }
2114
- ]
2126
+ ],
2127
+ "condition": {
2128
+ "functionBody": "return model.accounts[arrayIndices[0]].ervDevices[arrayIndices[1]].displayMode > 0;"
2129
+ }
2115
2130
  },
2116
2131
  {
2117
2132
  "key": "accounts[].ervDevices[].buttonsSensors",
@@ -2131,7 +2146,10 @@
2131
2146
  "accounts[].ervDevices[].buttonsSensors[].namePrefix"
2132
2147
  ]
2133
2148
  }
2134
- ]
2149
+ ],
2150
+ "condition": {
2151
+ "functionBody": "return model.accounts[arrayIndices[0]].ervDevices[arrayIndices[1]].displayMode > 0;"
2152
+ }
2135
2153
  }
2136
2154
  ],
2137
2155
  "condition": {
@@ -2195,8 +2213,7 @@
2195
2213
  "key": "accounts[].restFul",
2196
2214
  "title": "RESTFul",
2197
2215
  "items": [
2198
- "accounts[].restFul.enable",
2199
- "accounts[].restFul.debug"
2216
+ "accounts[].restFul.enable"
2200
2217
  ]
2201
2218
  },
2202
2219
  {
@@ -2208,7 +2225,6 @@
2208
2225
  "accounts[].mqtt.port",
2209
2226
  "accounts[].mqtt.clientId",
2210
2227
  "accounts[].mqtt.prefix",
2211
- "accounts[].mqtt.debug",
2212
2228
  {
2213
2229
  "key": "accounts[].mqtt.auth",
2214
2230
  "title": "Authorization",
@@ -2229,7 +2245,10 @@
2229
2245
  }
2230
2246
  ]
2231
2247
  }
2232
- ]
2248
+ ],
2249
+ "condition": {
2250
+ "functionBody": "return model.accounts[arrayIndices].ataDevices.length > 0 || model.accounts[arrayIndices].atwDevices.length > 0 || model.accounts[arrayIndices].ervDevices.length > 0;"
2251
+ }
2233
2252
  }
2234
2253
  ]
2235
2254
  }
package/index.js CHANGED
@@ -145,15 +145,15 @@ class MelCloudPlatform {
145
145
  let configuredDevice;
146
146
  switch (deviceType) {
147
147
  case 0: //ATA
148
- configuredDevice = new DeviceAta(api, account, device, contextKey, accountName, deviceId, deviceName, deviceTypeText, devicesFile, deviceRefreshInterval, useFahrenheit, restFul, mqtt);
148
+ configuredDevice = new DeviceAta(api, account, device, contextKey, accountName, deviceId, deviceName, deviceTypeText, devicesFile, useFahrenheit, restFul, mqtt);
149
149
  break;
150
150
  case 1: //ATW
151
- configuredDevice = new DeviceAtw(api, account, device, contextKey, accountName, deviceId, deviceName, deviceTypeText, devicesFile, deviceRefreshInterval, useFahrenheit, restFul, mqtt);
151
+ configuredDevice = new DeviceAtw(api, account, device, contextKey, accountName, deviceId, deviceName, deviceTypeText, devicesFile, useFahrenheit, restFul, mqtt);
152
152
  break;
153
153
  case 2:
154
154
  break;
155
155
  case 3: //ERV
156
- configuredDevice = new DeviceErv(api, account, device, contextKey, accountName, deviceId, deviceName, deviceTypeText, devicesFile, deviceRefreshInterval, useFahrenheit, restFul, mqtt);
156
+ configuredDevice = new DeviceErv(api, account, device, contextKey, accountName, deviceId, deviceName, deviceTypeText, devicesFile, useFahrenheit, restFul, mqtt);
157
157
  break;
158
158
  default:
159
159
  if (logLevel.warn) log.warn(`${accountName}, ${deviceTypeText}, ${deviceName}, unknown device: ${deviceType}.`);
@@ -181,10 +181,10 @@ class MelCloudPlatform {
181
181
  if (logLevel.success) log.success(`${accountName}, ${deviceTypeText}, ${deviceName}, Published as external accessory.`);
182
182
 
183
183
  //start account impulse generator
184
- await melCloud.impulseGenerator.start([{ name: 'checkDevicesList', sampling: refreshInterval }]);
184
+ await melCloud.startStopImpulseGenerator(true, [{ name: 'checkDevicesList', sampling: refreshInterval }]);
185
185
 
186
- await impulseGenerator.stop();
187
- await configuredDevice.startImpulseGenerator();
186
+ await impulseGenerator.state(false);
187
+ await configuredDevice.startStopImpulseGenerator(true, [{ name: 'checkState', sampling: deviceRefreshInterval }]);
188
188
  }
189
189
  }
190
190
  } catch (error) {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "displayName": "MELCloud Control",
3
3
  "name": "homebridge-melcloud-control",
4
- "version": "3.10.0-beta.25",
4
+ "version": "3.10.0-beta.27",
5
5
  "description": "Homebridge plugin to control Mitsubishi Air Conditioner, Heat Pump and Energy Recovery Ventilation.",
6
6
  "license": "MIT",
7
7
  "author": "grzegorz914",
package/src/deviceata.js CHANGED
@@ -6,7 +6,7 @@ import { TemperatureDisplayUnits, AirConditioner } from './constants.js';
6
6
  let Accessory, Characteristic, Service, Categories, AccessoryUUID;
7
7
 
8
8
  class DeviceAta extends EventEmitter {
9
- constructor(api, account, device, contextKey, accountName, deviceId, deviceName, deviceTypeText, devicesFile, refreshInterval, useFahrenheit, restFul, mqtt) {
9
+ constructor(api, account, device, contextKey, accountName, deviceId, deviceName, deviceTypeText, devicesFile, useFahrenheit, restFul, mqtt) {
10
10
  super();
11
11
 
12
12
  Accessory = api.platformAccessory;
@@ -22,8 +22,8 @@ class DeviceAta extends EventEmitter {
22
22
  this.heatDryFanMode = device.heatDryFanMode || 1; //NONE, HEAT, DRY, FAN
23
23
  this.coolDryFanMode = device.coolDryFanMode || 1; //NONE, COOL, DRY, FAN
24
24
  this.autoDryFanMode = device.autoDryFanMode || 1; //NONE, AUTO, DRY, FAN
25
- this.presets = device.presets || [];
26
- this.buttons = device.buttonsSensors || [];
25
+ this.presets = (device.presets || []).filter(preset => (preset.displayType ?? 0) > 0);
26
+ this.buttons = (device.buttonsSensors || []).filter(sensor => (sensor.displayType ?? 0) > 0);
27
27
  this.logDeviceInfo = account.log?.deviceInfo || false;
28
28
  this.logInfo = account.log?.info || false;
29
29
  this.logWarn = account.log?.warn || false;
@@ -34,8 +34,6 @@ class DeviceAta extends EventEmitter {
34
34
  this.deviceName = deviceName;
35
35
  this.deviceTypeText = deviceTypeText;
36
36
  this.devicesFile = devicesFile;
37
- this.refreshInterval = refreshInterval;
38
- this.startPrepareAccessory = true;
39
37
  this.displayDeviceInfo = true;
40
38
 
41
39
  //external integrations
@@ -45,42 +43,22 @@ class DeviceAta extends EventEmitter {
45
43
  this.mqttConnected = false;
46
44
 
47
45
  //presets configured
48
- this.presetsConfigured = [];
49
46
  for (const preset of this.presets) {
50
- const displayType = preset.displayType;
51
- if (!displayType) {
52
- continue;
53
- };
54
-
55
- const presetyServiceType = ['', Service.Outlet, Service.Switch, Service.MotionSensor, Service.OccupancySensor, Service.ContactSensor][displayType];
56
- const presetCharacteristicType = ['', Characteristic.On, Characteristic.On, Characteristic.MotionDetected, Characteristic.OccupancyDetected, Characteristic.ContactSensorState][displayType];
57
47
  preset.name = preset.name || 'Preset'
58
- preset.serviceType = presetyServiceType;
59
- preset.characteristicType = presetCharacteristicType;
48
+ preset.serviceType = [null, Service.Outlet, Service.Switch, Service.MotionSensor, Service.OccupancySensor, Service.ContactSensor][preset.displayType];
49
+ preset.characteristicType = [null, Characteristic.On, Characteristic.On, Characteristic.MotionDetected, Characteristic.OccupancyDetected, Characteristic.ContactSensorState][preset.displayType];
60
50
  preset.state = false;
61
51
  preset.previousSettings = {};
62
- this.presetsConfigured.push(preset);
63
52
  }
64
- this.presetsConfiguredCount = this.presetsConfigured.length || 0;
65
53
 
66
54
  //buttons configured
67
- this.buttonsConfigured = [];
68
55
  for (const button of this.buttons) {
69
- const displayType = button.displayType;
70
- if (!displayType) {
71
- continue;
72
- };
73
-
74
- const buttonServiceType = ['', Service.Outlet, Service.Switch, Service.MotionSensor, Service.OccupancySensor, Service.ContactSensor][displayType];
75
- const buttonCharacteristicType = ['', Characteristic.On, Characteristic.On, Characteristic.MotionDetected, Characteristic.OccupancyDetected, Characteristic.ContactSensorState][displayType];
76
56
  button.name = button.name || 'Button'
77
- button.serviceType = buttonServiceType;
78
- button.characteristicType = buttonCharacteristicType;
57
+ button.serviceType = [null, Service.Outlet, Service.Switch, Service.MotionSensor, Service.OccupancySensor, Service.ContactSensor][button.displayType];
58
+ button.characteristicType = [null, Characteristic.On, Characteristic.On, Characteristic.MotionDetected, Characteristic.OccupancyDetected, Characteristic.ContactSensorState][button.displayType];
79
59
  button.state = false;
80
60
  button.previousValue = null;
81
- this.buttonsConfigured.push(button);;
82
61
  }
83
- this.buttonsConfiguredCount = this.buttonsConfigured.length || 0;
84
62
 
85
63
  //device data
86
64
  this.deviceData = {};
@@ -98,13 +76,13 @@ class DeviceAta extends EventEmitter {
98
76
  if (!this.restFulConnected) {
99
77
  this.restFul1 = new RestFul({
100
78
  port: this.deviceId.toString().slice(-4).replace(/^0/, '9'),
101
- debug: this.restFul.debug || false
102
- });
103
-
104
- this.restFul1.on('connected', (message) => {
105
- this.restFulConnected = true;
106
- this.emit('success', message);
79
+ logWarn: this.logWarn,
80
+ logDebug: this.logDebug
107
81
  })
82
+ .on('connected', (message) => {
83
+ this.restFulConnected = true;
84
+ this.emit('success', message);
85
+ })
108
86
  .on('set', async (key, value) => {
109
87
  try {
110
88
  await this.setOverExternalIntegration('RESTFul', this.deviceData, key, value);
@@ -135,13 +113,13 @@ class DeviceAta extends EventEmitter {
135
113
  prefix: this.mqtt.prefix ? `melcloud/${this.mqtt.prefix}/${this.deviceTypeText}/${this.deviceName}` : `melcloud/${this.deviceTypeText}/${this.deviceName}`,
136
114
  user: this.mqtt.auth?.user,
137
115
  passwd: this.mqtt.auth?.passwd,
138
- debug: this.mqtt.debug || false
139
- });
140
-
141
- this.mqtt1.on('connected', (message) => {
142
- this.mqttConnected = true;
143
- this.emit('success', message);
116
+ logWarn: this.logWarn,
117
+ logDebug: this.logDebug
144
118
  })
119
+ .on('connected', (message) => {
120
+ this.mqttConnected = true;
121
+ this.emit('success', message);
122
+ })
145
123
  .on('subscribed', (message) => {
146
124
  this.emit('success', message);
147
125
  })
@@ -247,15 +225,14 @@ class DeviceAta extends EventEmitter {
247
225
  };
248
226
  }
249
227
 
250
- async startImpulseGenerator() {
228
+ async startStopImpulseGenerator(state, timers = []) {
251
229
  try {
252
- //start impule generator
253
- await new Promise(resolve => setTimeout(resolve, 1000));
254
- await this.melCloudAta.impulseGenerator.start([{ name: 'checkState', sampling: this.refreshInterval }]);
230
+ //start impulse generator
231
+ await this.melCloudAta.impulseGenerator.state(state, timers)
255
232
  return true;
256
233
  } catch (error) {
257
234
  throw new Error(`Impulse generator start error: ${error}`);
258
- };
235
+ }
259
236
  }
260
237
 
261
238
  //prepare accessory
@@ -632,10 +609,10 @@ class DeviceAta extends EventEmitter {
632
609
  };
633
610
 
634
611
  //presets services
635
- if (this.presetsConfiguredCount > 0) {
612
+ if (this.presets.length > 0) {
636
613
  if (this.logDebug) this.emit('debug', `Prepare presets services`);
637
614
  this.presetsServices = [];
638
- this.presetsConfigured.forEach((preset, i) => {
615
+ this.presets.forEach((preset, i) => {
639
616
  const presetData = presetsOnServer.find(p => p.ID === preset.Id);
640
617
 
641
618
  //get preset name
@@ -691,10 +668,10 @@ class DeviceAta extends EventEmitter {
691
668
  };
692
669
 
693
670
  //buttons services
694
- if (this.buttonsConfiguredCount > 0) {
671
+ if (this.buttons.length > 0) {
695
672
  if (this.logDebug) this.emit('debug', `Prepare buttons/sensors services`);
696
673
  this.buttonsServices = [];
697
- this.buttonsConfigured.forEach((button, i) => {
674
+ this.buttons.forEach((button, i) => {
698
675
  //get button mode
699
676
  const mode = button.mode;
700
677
 
@@ -1200,8 +1177,8 @@ class DeviceAta extends EventEmitter {
1200
1177
  this.outdoorTemperatureSensorService?.updateCharacteristic(Characteristic.CurrentTemperature, outdoorTemperature);
1201
1178
 
1202
1179
  //update presets state
1203
- if (this.presetsConfigured.length > 0) {
1204
- this.presetsConfigured.forEach((preset, i) => {
1180
+ if (this.presets.length > 0) {
1181
+ this.presets.forEach((preset, i) => {
1205
1182
  const presetData = presetsOnServer.find(p => p.ID === preset.Id);
1206
1183
 
1207
1184
  preset.state = presetData ? (presetData.Power === power
@@ -1217,8 +1194,8 @@ class DeviceAta extends EventEmitter {
1217
1194
  };
1218
1195
 
1219
1196
  //update buttons state
1220
- if (this.buttonsConfiguredCount > 0) {
1221
- this.buttonsConfigured.forEach((button, i) => {
1197
+ if (this.buttons.length > 0) {
1198
+ this.buttons.forEach((button, i) => {
1222
1199
  const mode = button.mode;
1223
1200
  switch (mode) {
1224
1201
  case 0: //POWER ON,OFF
package/src/deviceatw.js CHANGED
@@ -6,7 +6,7 @@ import { TemperatureDisplayUnits, HeatPump } from './constants.js';
6
6
  let Accessory, Characteristic, Service, Categories, AccessoryUUID;
7
7
 
8
8
  class DeviceAtw extends EventEmitter {
9
- constructor(api, account, device, contextKey, accountName, deviceId, deviceName, deviceTypeText, devicesFile, refreshInterval, useFahrenheit, restFul, mqtt) {
9
+ constructor(api, account, device, contextKey, accountName, deviceId, deviceName, deviceTypeText, devicesFile, useFahrenheit, restFul, mqtt) {
10
10
  super();
11
11
 
12
12
  Accessory = api.platformAccessory;
@@ -27,8 +27,8 @@ class DeviceAtw extends EventEmitter {
27
27
  this.temperatureSensorReturnWaterTank = device.temperatureSensorReturnWaterTank || false;
28
28
  this.temperatureSensorFlowZone2 = device.temperatureSensorFlowZone2 || false;
29
29
  this.temperatureSensorReturnZone2 = device.temperatureSensorReturnZone2 || false;
30
- this.presets = device.presets || [];
31
- this.buttons = device.buttonsSensors || [];
30
+ this.presets = (device.presets || []).filter(preset => (preset.displayType ?? 0) > 0);
31
+ this.buttons = (device.buttonsSensors || []).filter(button => (button.displayType ?? 0) > 0);
32
32
  this.logDeviceInfo = account.log?.deviceInfo || false;
33
33
  this.logInfo = account.log?.info || false;
34
34
  this.logWarn = account.log?.warn || false;
@@ -39,8 +39,6 @@ class DeviceAtw extends EventEmitter {
39
39
  this.deviceName = deviceName;
40
40
  this.deviceTypeText = deviceTypeText;
41
41
  this.devicesFile = devicesFile;
42
- this.refreshInterval = refreshInterval;
43
- this.startPrepareAccessory = true;
44
42
  this.displayDeviceInfo = true;
45
43
 
46
44
  //external integrations
@@ -50,42 +48,22 @@ class DeviceAtw extends EventEmitter {
50
48
  this.mqttConnected = false;
51
49
 
52
50
  //presets configured
53
- this.presetsConfigured = [];
54
51
  for (const preset of this.presets) {
55
- const displayType = preset.displayType;
56
- if (!displayType) {
57
- continue;
58
- };
59
-
60
- const presetyServiceType = ['', Service.Outlet, Service.Switch, Service.MotionSensor, Service.OccupancySensor, Service.ContactSensor][displayType];
61
- const presetCharacteristicType = ['', Characteristic.On, Characteristic.On, Characteristic.MotionDetected, Characteristic.OccupancyDetected, Characteristic.ContactSensorState][displayType];
62
52
  preset.name = preset.name || 'Preset'
63
- preset.serviceType = presetyServiceType;
64
- preset.characteristicType = presetCharacteristicType;
53
+ preset.serviceType = [null, Service.Outlet, Service.Switch, Service.MotionSensor, Service.OccupancySensor, Service.ContactSensor][preset.displayType];
54
+ preset.characteristicType = [null, Characteristic.On, Characteristic.On, Characteristic.MotionDetected, Characteristic.OccupancyDetected, Characteristic.ContactSensorState][preset.displayType];
65
55
  preset.state = false;
66
56
  preset.previousSettings = {};
67
- this.presetsConfigured.push(preset);
68
57
  }
69
- this.presetsConfiguredCount = this.presetsConfigured.length || 0;
70
58
 
71
59
  //buttons configured
72
- this.buttonsConfigured = [];
73
60
  for (const button of this.buttons) {
74
- const displayType = button.displayType;
75
- if (!displayType) {
76
- continue;
77
- };
78
-
79
- const buttonServiceType = ['', Service.Outlet, Service.Switch, Service.MotionSensor, Service.OccupancySensor, Service.ContactSensor][displayType];
80
- const buttonCharacteristicType = ['', Characteristic.On, Characteristic.On, Characteristic.MotionDetected, Characteristic.OccupancyDetected, Characteristic.ContactSensorState][displayType];
81
61
  button.name = button.name || 'Button'
82
- button.serviceType = buttonServiceType;
83
- button.characteristicType = buttonCharacteristicType;
62
+ button.serviceType = [null, Service.Outlet, Service.Switch, Service.MotionSensor, Service.OccupancySensor, Service.ContactSensor][button.displayType];
63
+ button.characteristicType = [null, Characteristic.On, Characteristic.On, Characteristic.MotionDetected, Characteristic.OccupancyDetected, Characteristic.ContactSensorState][button.displayType];
84
64
  button.state = false;
85
65
  button.previousValue = null;
86
- this.buttonsConfigured.push(button);;
87
66
  }
88
- this.buttonsConfiguredCount = this.buttonsConfigured.length || 0;
89
67
 
90
68
  //device data
91
69
  this.deviceData = {};
@@ -103,13 +81,13 @@ class DeviceAtw extends EventEmitter {
103
81
  if (!this.restFulConnected) {
104
82
  this.restFul1 = new RestFul({
105
83
  port: this.deviceId.toString().slice(-4).replace(/^0/, '9'),
106
- debug: this.restFul.debug || false
107
- });
108
-
109
- this.restFul1.on('connected', (message) => {
110
- this.restFulConnected = true;
111
- this.emit('success', message);
84
+ logWarn: this.logWarn,
85
+ logDebug: this.logDebug
112
86
  })
87
+ .on('connected', (message) => {
88
+ this.restFulConnected = true;
89
+ this.emit('success', message);
90
+ })
113
91
  .on('set', async (key, value) => {
114
92
  try {
115
93
  await this.setOverExternalIntegration('RESTFul', this.deviceData, key, value);
@@ -140,13 +118,13 @@ class DeviceAtw extends EventEmitter {
140
118
  prefix: this.mqtt.prefix ? `melcloud/${this.mqtt.prefix}/${this.deviceTypeText}/${this.deviceName}` : `melcloud/${this.deviceTypeText}/${this.deviceName}`,
141
119
  user: this.mqtt.auth?.user,
142
120
  passwd: this.mqtt.auth?.passwd,
143
- debug: this.mqtt.debug || false
144
- });
145
-
146
- this.mqtt1.on('connected', (message) => {
147
- this.mqttConnected = true;
148
- this.emit('success', message);
121
+ logWarn: this.logWarn,
122
+ logDebug: this.logDebug
149
123
  })
124
+ .on('connected', (message) => {
125
+ this.mqttConnected = true;
126
+ this.emit('success', message);
127
+ })
150
128
  .on('subscribed', (message) => {
151
129
  this.emit('success', message);
152
130
  })
@@ -272,15 +250,14 @@ class DeviceAtw extends EventEmitter {
272
250
  };
273
251
  }
274
252
 
275
- async startImpulseGenerator() {
253
+ async startStopImpulseGenerator(state, timers = []) {
276
254
  try {
277
- //start impule generator
278
- await new Promise(resolve => setTimeout(resolve, 1000));
279
- await this.melCloudAtw.impulseGenerator.start([{ name: 'checkState', sampling: this.refreshInterval }]);
255
+ //start impulse generator
256
+ await this.melCloudAtw.impulseGenerator.state(state, timers)
280
257
  return true;
281
258
  } catch (error) {
282
259
  throw new Error(`Impulse generator start error: ${error}`);
283
- };
260
+ }
284
261
  }
285
262
 
286
263
  //prepare accessory
@@ -1057,10 +1034,10 @@ class DeviceAtw extends EventEmitter {
1057
1034
  };
1058
1035
 
1059
1036
  //presets services
1060
- if (this.presetsConfiguredCount > 0) {
1037
+ if (this.presets.length > 0) {
1061
1038
  if (this.logDebug) this.emit('debug', `Prepare presets services`);
1062
1039
  this.presetsServices = [];
1063
- this.presetsConfigured.forEach((preset, i) => {
1040
+ this.presets.forEach((preset, i) => {
1064
1041
  const presetData = presetsOnServer.find(p => p.ID === preset.Id);
1065
1042
 
1066
1043
  //get preset name
@@ -1128,10 +1105,10 @@ class DeviceAtw extends EventEmitter {
1128
1105
  };
1129
1106
 
1130
1107
  //buttons services
1131
- if (this.buttonsConfiguredCount > 0) {
1108
+ if (this.buttons.length > 0) {
1132
1109
  if (this.logDebug) this.emit('debug', `Prepare buttons services`);
1133
1110
  this.buttonsServices = [];
1134
- this.buttonsConfigured.forEach((button, i) => {
1111
+ this.buttons.lengthforEach((button, i) => {
1135
1112
  //get button mode
1136
1113
  const mode = button.mode;
1137
1114
 
@@ -1819,8 +1796,8 @@ class DeviceAtw extends EventEmitter {
1819
1796
  this.accessory = obj;
1820
1797
 
1821
1798
  //update presets state
1822
- if (this.presetsConfigured.length > 0) {
1823
- this.presetsConfigured.forEach((preset, i) => {
1799
+ if (this.presets.length > 0) {
1800
+ this.presets.forEach((preset, i) => {
1824
1801
  const presetData = presetsOnServer.find(p => p.ID === preset.Id);
1825
1802
 
1826
1803
  preset.state = presetData ? (presetData.Power === power
@@ -1842,8 +1819,8 @@ class DeviceAtw extends EventEmitter {
1842
1819
  };
1843
1820
 
1844
1821
  //update buttons state
1845
- if (this.buttonsConfiguredCount > 0) {
1846
- this.buttonsConfigured.forEach((button, i) => {
1822
+ if (this.buttons.length > 0) {
1823
+ this.buttons.forEach((button, i) => {
1847
1824
  const mode = button.mode;
1848
1825
  switch (mode) {
1849
1826
  case 0: //POWER ON,OFF
package/src/deviceerv.js CHANGED
@@ -6,7 +6,7 @@ import { TemperatureDisplayUnits, Ventilation } from './constants.js';
6
6
  let Accessory, Characteristic, Service, Categories, AccessoryUUID;
7
7
 
8
8
  class DeviceErv extends EventEmitter {
9
- constructor(api, account, device, contextKey, accountName, deviceId, deviceName, deviceTypeText, devicesFile, refreshInterval, useFahrenheit, restFul, mqtt) {
9
+ constructor(api, account, device, contextKey, accountName, deviceId, deviceName, deviceTypeText, devicesFile, useFahrenheit, restFul, mqtt) {
10
10
  super();
11
11
 
12
12
  Accessory = api.platformAccessory;
@@ -20,8 +20,8 @@ class DeviceErv extends EventEmitter {
20
20
  this.temperatureSensor = device.temperatureSensor || false;
21
21
  this.temperatureSensorOutdoor = device.temperatureSensorOutdoor || false;
22
22
  this.temperatureSensorSupply = device.temperatureSensorSupply || false;
23
- this.presets = device.presets || [];
24
- this.buttons = device.buttonsSensors || [];
23
+ this.presets = (device.presets || []).filter(preset => (preset.displayType ?? 0) > 0);
24
+ this.buttons = (device.buttonsSensors || []).filter(button => (button.displayType ?? 0) > 0);
25
25
  this.logDeviceInfo = account.log?.deviceInfo || false;
26
26
  this.logInfo = account.log?.info || false;
27
27
  this.logWarn = account.log?.warn || false;
@@ -32,8 +32,6 @@ class DeviceErv extends EventEmitter {
32
32
  this.deviceName = deviceName;
33
33
  this.deviceTypeText = deviceTypeText;
34
34
  this.devicesFile = devicesFile;
35
- this.refreshInterval = refreshInterval;
36
- this.startPrepareAccessory = true;
37
35
  this.displayDeviceInfo = true;
38
36
 
39
37
  //external integrations
@@ -43,42 +41,22 @@ class DeviceErv extends EventEmitter {
43
41
  this.mqttConnected = false;
44
42
 
45
43
  //presets configured
46
- this.presetsConfigured = [];
47
44
  for (const preset of this.presets) {
48
- const displayType = preset.displayType;
49
- if (!displayType) {
50
- continue;
51
- };
52
-
53
- const presetyServiceType = ['', Service.Outlet, Service.Switch, Service.MotionSensor, Service.OccupancySensor, Service.ContactSensor][displayType];
54
- const presetCharacteristicType = ['', Characteristic.On, Characteristic.On, Characteristic.MotionDetected, Characteristic.OccupancyDetected, Characteristic.ContactSensorState][displayType];
55
45
  preset.name = preset.name || 'Preset'
56
- preset.serviceType = presetyServiceType;
57
- preset.characteristicType = presetCharacteristicType;
46
+ preset.serviceType = [null, Service.Outlet, Service.Switch, Service.MotionSensor, Service.OccupancySensor, Service.ContactSensor][preset.displayType];
47
+ preset.characteristicType = [null, Characteristic.On, Characteristic.On, Characteristic.MotionDetected, Characteristic.OccupancyDetected, Characteristic.ContactSensorState][preset.displayType];
58
48
  preset.state = false;
59
49
  preset.previousSettings = {};
60
- this.presetsConfigured.push(preset);
61
50
  }
62
- this.presetsConfiguredCount = this.presetsConfigured.length || 0;
63
51
 
64
52
  //buttons configured
65
- this.buttonsConfigured = [];
66
53
  for (const button of this.buttons) {
67
- const displayType = button.displayType;
68
- if (!displayType) {
69
- continue;
70
- };
71
-
72
- const buttonServiceType = ['', Service.Outlet, Service.Switch, Service.MotionSensor, Service.OccupancySensor, Service.ContactSensor][displayType];
73
- const buttonCharacteristicType = ['', Characteristic.On, Characteristic.On, Characteristic.MotionDetected, Characteristic.OccupancyDetected, Characteristic.ContactSensorState][displayType];
74
54
  button.name = button.name || 'Button'
75
- button.serviceType = buttonServiceType;
76
- button.characteristicType = buttonCharacteristicType;
55
+ button.serviceType = [null, Service.Outlet, Service.Switch, Service.MotionSensor, Service.OccupancySensor, Service.ContactSensor][button.displayType];
56
+ button.characteristicType = [null, Characteristic.On, Characteristic.On, Characteristic.MotionDetected, Characteristic.OccupancyDetected, Characteristic.ContactSensorState][button.displayType];
77
57
  button.state = false;
78
58
  button.previousValue = null;
79
- this.buttonsConfigured.push(button);;
80
59
  }
81
- this.buttonsConfiguredCount = this.buttonsConfigured.length || 0;
82
60
 
83
61
  //device data
84
62
  this.deviceData = {};
@@ -96,13 +74,13 @@ class DeviceErv extends EventEmitter {
96
74
  if (!this.restFulConnected) {
97
75
  this.restFul1 = new RestFul({
98
76
  port: this.deviceId.toString().slice(-4).replace(/^0/, '9'),
99
- debug: this.restFul.debug || false
100
- });
101
-
102
- this.restFul1.on('connected', (message) => {
103
- this.restFulConnected = true;
104
- this.emit('success', message);
77
+ logWarn: this.logWarn,
78
+ logDebug: this.logDebug
105
79
  })
80
+ .on('connected', (message) => {
81
+ this.restFulConnected = true;
82
+ this.emit('success', message);
83
+ })
106
84
  .on('set', async (key, value) => {
107
85
  try {
108
86
  await this.setOverExternalIntegration('RESTFul', this.deviceData, key, value);
@@ -133,13 +111,13 @@ class DeviceErv extends EventEmitter {
133
111
  prefix: this.mqtt.prefix ? `melcloud/${this.mqtt.prefix}/${this.deviceTypeText}/${this.deviceName}` : `melcloud/${this.deviceTypeText}/${this.deviceName}`,
134
112
  user: this.mqtt.auth?.user,
135
113
  passwd: this.mqtt.auth?.passwd,
136
- debug: this.mqtt.debug || false
137
- });
138
-
139
- this.mqtt1.on('connected', (message) => {
140
- this.mqttConnected = true;
141
- this.emit('success', message);
114
+ logWarn: this.logWarn,
115
+ logDebug: this.logDebug
142
116
  })
117
+ .on('connected', (message) => {
118
+ this.mqttConnected = true;
119
+ this.emit('success', message);
120
+ })
143
121
  .on('subscribed', (message) => {
144
122
  this.emit('success', message);
145
123
  })
@@ -235,15 +213,14 @@ class DeviceErv extends EventEmitter {
235
213
  };
236
214
  }
237
215
 
238
- async startImpulseGenerator() {
216
+ async startStopImpulseGenerator(state, timers = []) {
239
217
  try {
240
- //start impule generator
241
- await new Promise(resolve => setTimeout(resolve, 1000));
242
- await this.melCloudErv.impulseGenerator.start([{ name: 'checkState', sampling: this.refreshInterval }]);
218
+ //start impulse generator
219
+ await this.melCloudErv.impulseGenerator.state(state, timers)
243
220
  return true;
244
221
  } catch (error) {
245
222
  throw new Error(`Impulse generator start error: ${error}`);
246
- };
223
+ }
247
224
  }
248
225
 
249
226
  //prepare accessory
@@ -681,10 +658,10 @@ class DeviceErv extends EventEmitter {
681
658
  }
682
659
 
683
660
  //presets services
684
- if (this.presetsConfiguredCount > 0) {
661
+ if (this.presets.length > 0) {
685
662
  if (this.logDebug) this.emit('debug', `Prepare presets services`);
686
663
  this.presetsServices = [];
687
- this.presetsConfigured.forEach((preset, i) => {
664
+ this.presets.forEach((preset, i) => {
688
665
  const presetData = presetsOnServer.find(p => p.ID === preset.Id);
689
666
 
690
667
  //get preset name
@@ -738,10 +715,10 @@ class DeviceErv extends EventEmitter {
738
715
  };
739
716
 
740
717
  //buttons services
741
- if (this.buttonsConfiguredCount > 0) {
718
+ if (this.buttons.length > 0) {
742
719
  if (this.logDebug) this.emit('debug', `Prepare buttons services`);
743
720
  this.buttonsServices = [];
744
- this.buttonsConfigured.forEach((button, i) => {
721
+ this.buttons.forEach((button, i) => {
745
722
  //get button mode
746
723
  const mode = button.mode;
747
724
 
@@ -1118,8 +1095,8 @@ class DeviceErv extends EventEmitter {
1118
1095
  .updateCharacteristic(Characteristic.PM2_5Density, pM25Level);
1119
1096
 
1120
1097
  //update presets state
1121
- if (this.presetsConfigured.length > 0) {
1122
- this.presetsConfigured.forEach((preset, i) => {
1098
+ if (this.presets.length > 0) {
1099
+ this.presets.forEach((preset, i) => {
1123
1100
  const presetData = presetsOnServer.find(p => p.ID === preset.Id);
1124
1101
 
1125
1102
  preset.state = presetData ? (presetData.Power === power
@@ -1134,8 +1111,8 @@ class DeviceErv extends EventEmitter {
1134
1111
  };
1135
1112
 
1136
1113
  //update buttons state
1137
- if (this.buttonsConfiguredCount > 0) {
1138
- this.buttonsConfigured.forEach((button, i) => {
1114
+ if (this.buttons.length > 0) {
1115
+ this.buttons.forEach((button, i) => {
1139
1116
  const mode = button.mode;;
1140
1117
  switch (mode) {
1141
1118
  case 0: //POWER ON,OFF
@@ -7,46 +7,34 @@ class ImpulseGenerator extends EventEmitter {
7
7
  this.timers = [];
8
8
  }
9
9
 
10
- async start(timers) {
11
- if (this.timersState) {
12
- this.state(true);
13
- return true;
10
+ async state(state, timers = []) {
11
+ // Stop current timers before new start
12
+ if (this.timersState && state) {
13
+ await this.state(false);
14
14
  }
15
15
 
16
- this.timers = [];
17
-
18
- for (const timer of timers) {
19
- this.emit(timer.name);
20
-
21
- const interval = setInterval(() => {
22
- this.emit(timer.name);
23
- }, timer.sampling);
16
+ if (state) {
17
+ if (!Array.isArray(timers)) throw new Error('Timers must be an array');
24
18
 
25
- this.timers.push(interval);
26
- }
19
+ for (const { name, sampling } of timers) {
20
+ if (!name || !sampling) continue;
27
21
 
28
- this.state(true);
29
- return true;
30
- }
22
+ this.emit(name);
31
23
 
32
- async stop() {
33
- if (!this.timersState) {
34
- this.state(false);
35
- return true;
36
- }
24
+ const interval = setInterval(() => {
25
+ this.emit(name);
26
+ }, sampling);
37
27
 
38
- for (const timer of this.timers) {
39
- clearInterval(timer);
28
+ this.timers.push(interval);
29
+ }
30
+ } else {
31
+ this.timers.forEach(clearInterval);
32
+ this.timers = [];
40
33
  }
41
34
 
42
- this.timers = [];
43
- this.state(false);
44
- return true;
45
- }
46
-
47
- state(state) {
48
35
  this.timersState = state;
49
36
  this.emit('state', state);
37
+ return true;
50
38
  }
51
39
  }
52
40
 
package/src/mqtt.js CHANGED
@@ -27,25 +27,25 @@ class Mqtt extends EventEmitter {
27
27
  this.mqttClient.on('message', (topic, message) => {
28
28
  try {
29
29
  const obj = JSON.parse(message.toString());
30
- if (config.debug) this.emit('debug', `MQTT Received topic: ${topic}, message: ${JSON.stringify(obj, null, 2)}`);
30
+ if (config.logDebug) this.emit('debug', `MQTT Received topic: ${topic}, message: ${JSON.stringify(obj, null, 2)}`);
31
31
  const key = Object.keys(obj)[0];
32
32
  const value = Object.values(obj)[0];
33
33
  this.emit('set', key, value);
34
34
  } catch (error) {
35
- this.emit('warn', `MQTT Parse object error: ${error}`);
35
+ if (config.logWarn) this.emit('warn', `MQTT Parse object error: ${error}`);
36
36
  };
37
37
  });
38
38
  } catch (error) {
39
- this.emit('warn', `MQTT Connect error: ${error}`);
39
+ if (config.logWarn) this.emit('warn', `MQTT Connect error: ${error}`);
40
40
  };
41
41
  }).on('publish', async (topic, message) => {
42
42
  try {
43
43
  const fullTopic = `${config.prefix}/${topic}`;
44
44
  const publishMessage = JSON.stringify(message, null, 2);
45
45
  await this.mqttClient.publish(fullTopic, publishMessage);
46
- if (config.debug) this.emit('debug', `MQTT Publish topic: ${fullTopic}, message: ${publishMessage}`);
46
+ if (config.logDebug) this.emit('debug', `MQTT Publish topic: ${fullTopic}, message: ${publishMessage}`);
47
47
  } catch (error) {
48
- this.emit('warn', `MQTT Publish error: ${error}`);
48
+ if (config.logWarn) this.emit('warn', `MQTT Publish error: ${error}`);
49
49
  };
50
50
  });
51
51
 
package/src/restful.js CHANGED
@@ -6,8 +6,9 @@ const DEFAULT_MESSAGE = 'This data is not available at this time.';
6
6
  class RestFul extends EventEmitter {
7
7
  constructor(config) {
8
8
  super();
9
- this.restFulPort = config.port;
10
- this.restFulDebug = config.debug;
9
+ this.port = config.port;
10
+ this.logWarn = config.logWarn;
11
+ this.logDebug = config.logDebug;
11
12
 
12
13
  this.restFulData = {
13
14
  info: DEFAULT_MESSAGE,
@@ -44,7 +45,7 @@ class RestFul extends EventEmitter {
44
45
  try {
45
46
  const obj = req.body;
46
47
  if (!obj || typeof obj !== 'object' || Object.keys(obj).length === 0) {
47
- this.emit('warn', 'RESTFul Invalid JSON payload');
48
+ if (this.logWarn) this.emit('warn', 'RESTFul Invalid JSON payload');
48
49
  return res.status(400).json({ error: 'RESTFul Invalid JSON payload' });
49
50
  }
50
51
 
@@ -53,21 +54,21 @@ class RestFul extends EventEmitter {
53
54
  this.emit('set', key, value);
54
55
  this.update(key, value);
55
56
 
56
- if (this.restFulDebug) this.emit('debug', `RESTFul post data: ${JSON.stringify(obj, null, 2)}`);
57
+ if (this.logDebug) this.emit('debug', `RESTFul post data: ${JSON.stringify(obj, null, 2)}`);
57
58
 
58
59
  res.json({ success: true, received: obj });
59
60
  } catch (error) {
60
- this.emit('warn', `RESTFul Parse error: ${error}`);
61
+ if (this.logWarn) this.emit('warn', `RESTFul Parse error: ${error}`);
61
62
  res.status(500).json({ error: 'RESTFul Internal Server Error' });
62
63
  }
63
64
  });
64
65
 
65
66
  // Start the server
66
- app.listen(this.restFulPort, () => {
67
+ app.listen(this.port, () => {
67
68
  this.emit('connected', `RESTful started on port: ${this.restFulPort}`);
68
69
  });
69
70
  } catch (error) {
70
- this.emit('warn', `RESTful Connect error: ${error}`);
71
+ if (this.logWarn) this.emit('warn', `RESTful Connect error: ${error}`);
71
72
  }
72
73
  }
73
74
 
@@ -75,11 +76,11 @@ class RestFul extends EventEmitter {
75
76
  if (this.restFulData.hasOwnProperty(path)) {
76
77
  this.restFulData[path] = data;
77
78
  } else {
78
- this.emit('warn', `Unknown RESTFul update path: ${path}, data: ${JSON.stringify(data)}`);
79
+ if (this.logWarn) this.emit('warn', `Unknown RESTFul update path: ${path}, data: ${JSON.stringify(data)}`);
79
80
  return;
80
81
  }
81
82
 
82
- if (this.restFulDebug) this.emit('debug', `RESTFul update path: ${path}, data: ${JSON.stringify(data)}`);
83
+ if (this.logDebug) this.emit('debug', `RESTFul update path: ${path}, data: ${JSON.stringify(data)}`);
83
84
  }
84
85
  }
85
86