hoffmation-base 1.1.48 → 1.2.1

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.
Files changed (51) hide show
  1. package/lib/server/devices/Heizgruppen.d.ts +0 -1
  2. package/lib/server/devices/Heizgruppen.js +0 -20
  3. package/lib/server/devices/baseDeviceInterfaces/iBatteryDevice.d.ts +2 -1
  4. package/lib/server/devices/baseDeviceInterfaces/iHumiditySensor.d.ts +4 -1
  5. package/lib/server/devices/hmIPDevices/hmIpGriff.d.ts +6 -2
  6. package/lib/server/devices/hmIPDevices/hmIpGriff.js +18 -3
  7. package/lib/server/devices/hmIPDevices/hmIpHeizgruppe.d.ts +5 -1
  8. package/lib/server/devices/hmIPDevices/hmIpHeizgruppe.js +24 -4
  9. package/lib/server/devices/hmIPDevices/hmIpHeizung.d.ts +3 -1
  10. package/lib/server/devices/hmIPDevices/hmIpHeizung.js +11 -2
  11. package/lib/server/devices/hmIPDevices/hmIpPraezenz.d.ts +3 -1
  12. package/lib/server/devices/hmIPDevices/hmIpPraezenz.js +10 -2
  13. package/lib/server/devices/hmIPDevices/hmIpTaster.d.ts +3 -1
  14. package/lib/server/devices/hmIPDevices/hmIpTaster.js +10 -2
  15. package/lib/server/devices/hmIPDevices/hmIpTherm.d.ts +3 -1
  16. package/lib/server/devices/hmIPDevices/hmIpTherm.js +11 -2
  17. package/lib/server/devices/hmIPDevices/hmIpTuer.d.ts +3 -1
  18. package/lib/server/devices/hmIPDevices/hmIpTuer.js +6 -0
  19. package/lib/server/devices/jsObject/jsObjectEnergyManager.d.ts +3 -1
  20. package/lib/server/devices/jsObject/jsObjectEnergyManager.js +10 -0
  21. package/lib/server/devices/zigbee/BaseDevices/zigbeeDevice.d.ts +14 -4
  22. package/lib/server/devices/zigbee/BaseDevices/zigbeeDevice.js +35 -11
  23. package/lib/server/devices/zigbee/BaseDevices/zigbeeHeater.d.ts +4 -1
  24. package/lib/server/devices/zigbee/BaseDevices/zigbeeHeater.js +21 -6
  25. package/lib/server/devices/zigbee/BaseDevices/zigbeeMagnetContact.d.ts +4 -1
  26. package/lib/server/devices/zigbee/BaseDevices/zigbeeMagnetContact.js +18 -3
  27. package/lib/server/devices/zigbee/BaseDevices/zigbeeMotionSensor.d.ts +3 -1
  28. package/lib/server/devices/zigbee/BaseDevices/zigbeeMotionSensor.js +11 -3
  29. package/lib/server/devices/zigbee/zigbeeAquaraVibra.d.ts +3 -1
  30. package/lib/server/devices/zigbee/zigbeeAquaraVibra.js +11 -3
  31. package/lib/server/devices/zigbee/zigbeeAquaraWater.d.ts +4 -1
  32. package/lib/server/devices/zigbee/zigbeeAquaraWater.js +18 -3
  33. package/lib/server/devices/zigbee/zigbeeEuroHeater.d.ts +8 -5
  34. package/lib/server/devices/zigbee/zigbeeEuroHeater.js +12 -3
  35. package/lib/server/devices/zigbee/zigbeeHeimanSmoke.d.ts +4 -1
  36. package/lib/server/devices/zigbee/zigbeeHeimanSmoke.js +18 -3
  37. package/lib/server/devices/zigbee/zigbeeSonoffTemp.d.ts +6 -1
  38. package/lib/server/devices/zigbee/zigbeeSonoffTemp.js +27 -3
  39. package/lib/server/ioBroker/connection.d.ts +3 -1
  40. package/lib/server/ioBroker/connection.js +10 -0
  41. package/lib/server/services/Telegram/telegram-Commands.js +0 -6
  42. package/lib/server/services/dbo/iPersist.d.ts +6 -5
  43. package/lib/server/services/dbo/postgreSqlPersist.d.ts +6 -5
  44. package/lib/server/services/dbo/postgreSqlPersist.js +67 -62
  45. package/lib/server/services/time-callback-service.js +2 -2
  46. package/lib/server/services/utils/iDisposeable.d.ts +3 -0
  47. package/lib/server/services/utils/iDisposeable.js +2 -0
  48. package/lib/server/services/utils/index.d.ts +1 -0
  49. package/lib/server/services/utils/index.js +1 -0
  50. package/lib/tsconfig.tsbuildinfo +1 -1
  51. package/package.json +11 -11
@@ -10,11 +10,11 @@ const liquid_pid_1 = require("../../../../liquid-pid");
10
10
  class ZigbeeHeater extends zigbeeDevice_1.ZigbeeDevice {
11
11
  constructor(pInfo, pType) {
12
12
  super(pInfo, pType);
13
+ this._battery = -99;
13
14
  this.persistHeaterInterval = services_1.Utils.guardedInterval(() => {
14
15
  this.persistHeater();
15
16
  }, 5 * 60 * 1000, this, false);
16
17
  this.settings = new models_1.HeaterSettings();
17
- this.battery = -99;
18
18
  this._automaticPoints = {};
19
19
  this._initialSeasonCheckDone = false;
20
20
  this._level = 0;
@@ -41,6 +41,9 @@ class ZigbeeHeater extends zigbeeDevice_1.ZigbeeDevice {
41
41
  this.checkSeasonTurnOff();
42
42
  }, 0, 2, 0));
43
43
  }
44
+ get battery() {
45
+ return this._battery;
46
+ }
44
47
  get seasonTurnOff() {
45
48
  return this._seasonTurnOff;
46
49
  }
@@ -85,12 +88,10 @@ class ZigbeeHeater extends zigbeeDevice_1.ZigbeeDevice {
85
88
  this._roomTemperature = val;
86
89
  }
87
90
  checkAutomaticChange() {
88
- var _a, _b;
89
91
  if (!this._initialSeasonCheckDone) {
90
92
  this.checkSeasonTurnOff();
91
93
  }
92
94
  if (!this.settings.automaticMode || this.seasonTurnOff) {
93
- (_a = services_1.Utils.dbo) === null || _a === void 0 ? void 0 : _a.addTemperaturDataPoint(this);
94
95
  return;
95
96
  }
96
97
  const setting = models_1.TemperatureSettings.getActiveSetting(this._automaticPoints, new Date());
@@ -103,7 +104,6 @@ class ZigbeeHeater extends zigbeeDevice_1.ZigbeeDevice {
103
104
  this.log(models_1.LogLevel.Debug, `Automatische Temperaturanpassung für ${this.info.customName} auf ${setting.temperature}°C`);
104
105
  this.desiredTemperature = setting.temperature;
105
106
  }
106
- (_b = services_1.Utils.dbo) === null || _b === void 0 ? void 0 : _b.addTemperaturDataPoint(this);
107
107
  }
108
108
  deleteAutomaticPoint(name) {
109
109
  if (this._automaticPoints[name] !== undefined)
@@ -128,8 +128,9 @@ class ZigbeeHeater extends zigbeeDevice_1.ZigbeeDevice {
128
128
  update(idSplit, state, initial = false, pOverride = false) {
129
129
  switch (idSplit[3]) {
130
130
  case 'battery':
131
- this.battery = state.val;
132
- if (this.battery < 20) {
131
+ this._battery = state.val;
132
+ this.persistBatteryDevice();
133
+ if (this._battery < 20) {
133
134
  this.log(models_1.LogLevel.Warn, `Das Zigbee Gerät hat unter 20% Batterie.`);
134
135
  }
135
136
  break;
@@ -153,5 +154,19 @@ class ZigbeeHeater extends zigbeeDevice_1.ZigbeeDevice {
153
154
  }
154
155
  this._initialSeasonCheckDone = true;
155
156
  }
157
+ persistBatteryDevice() {
158
+ var _a;
159
+ (_a = services_1.Utils.dbo) === null || _a === void 0 ? void 0 : _a.persistBatteryDevice(this);
160
+ }
161
+ dispose() {
162
+ if (this.persistHeaterInterval) {
163
+ clearInterval(this.persistHeaterInterval);
164
+ }
165
+ if (this._iAutomaticInterval) {
166
+ clearInterval(this._iAutomaticInterval);
167
+ this._iAutomaticInterval = undefined;
168
+ }
169
+ super.dispose();
170
+ }
156
171
  }
157
172
  exports.ZigbeeHeater = ZigbeeHeater;
@@ -5,7 +5,8 @@ import { MagnetPosition } from '../../models';
5
5
  import { IoBrokerDeviceInfo } from '../../IoBrokerDeviceInfo';
6
6
  import { iBatteryDevice } from '../../baseDeviceInterfaces';
7
7
  export declare class ZigbeeMagnetContact extends ZigbeeDevice implements iBatteryDevice {
8
- battery: number;
8
+ protected _battery: number;
9
+ get battery(): number;
9
10
  position: MagnetPosition;
10
11
  telegramOnOpen: boolean;
11
12
  speakOnOpen: boolean;
@@ -18,4 +19,6 @@ export declare class ZigbeeMagnetContact extends ZigbeeDevice implements iBatter
18
19
  addClosedCallback(pCallback: (pValue: boolean) => void): void;
19
20
  update(idSplit: string[], state: ioBroker.State, initial?: boolean, pOverrride?: boolean): void;
20
21
  protected updatePosition(pValue: MagnetPosition): void;
22
+ dispose(): void;
23
+ persistBatteryDevice(): void;
21
24
  }
@@ -8,7 +8,7 @@ const models_2 = require("../../models");
8
8
  class ZigbeeMagnetContact extends zigbeeDevice_1.ZigbeeDevice {
9
9
  constructor(pInfo, deviceType) {
10
10
  super(pInfo, deviceType);
11
- this.battery = -99;
11
+ this._battery = -99;
12
12
  this.position = models_2.MagnetPosition.closed;
13
13
  this.telegramOnOpen = false;
14
14
  this.speakOnOpen = false;
@@ -16,6 +16,9 @@ class ZigbeeMagnetContact extends zigbeeDevice_1.ZigbeeDevice {
16
16
  this._openCallback = [];
17
17
  this.minutesOpen = 0;
18
18
  }
19
+ get battery() {
20
+ return this._battery;
21
+ }
19
22
  addOpenCallback(pCallback) {
20
23
  this._openCallback.push(pCallback);
21
24
  }
@@ -26,8 +29,9 @@ class ZigbeeMagnetContact extends zigbeeDevice_1.ZigbeeDevice {
26
29
  super.update(idSplit, state, initial, pOverrride);
27
30
  switch (idSplit[3]) {
28
31
  case 'battery':
29
- this.battery = state.val;
30
- if (this.battery < 20) {
32
+ this._battery = state.val;
33
+ this.persistBatteryDevice();
34
+ if (this._battery < 20) {
31
35
  this.log(models_1.LogLevel.Warn, `Das Zigbee Gerät hat unter 20% Batterie.`);
32
36
  }
33
37
  break;
@@ -90,5 +94,16 @@ class ZigbeeMagnetContact extends zigbeeDevice_1.ZigbeeDevice {
90
94
  }, 60000, this);
91
95
  }
92
96
  }
97
+ dispose() {
98
+ if (this._iOpenTimeout) {
99
+ clearInterval(this._iOpenTimeout);
100
+ this._iOpenTimeout = undefined;
101
+ }
102
+ super.dispose();
103
+ }
104
+ persistBatteryDevice() {
105
+ var _a;
106
+ (_a = services_1.Utils.dbo) === null || _a === void 0 ? void 0 : _a.persistBatteryDevice(this);
107
+ }
93
108
  }
94
109
  exports.ZigbeeMagnetContact = ZigbeeMagnetContact;
@@ -6,9 +6,10 @@ import { MotionSensorSettings } from '../../../../models';
6
6
  import { iBatteryDevice, iMotionSensor } from '../../baseDeviceInterfaces';
7
7
  import { IoBrokerDeviceInfo } from '../../IoBrokerDeviceInfo';
8
8
  export declare class ZigbeeMotionSensor extends ZigbeeDevice implements iMotionSensor, iBatteryDevice {
9
+ private _battery;
9
10
  settings: MotionSensorSettings;
10
11
  movementDetected: boolean;
11
- battery: number;
12
+ get battery(): number;
12
13
  protected _initialized: boolean;
13
14
  protected _movementDetectedCallback: Array<(pValue: boolean) => void>;
14
15
  protected _needsMovementResetFallback: boolean;
@@ -29,4 +30,5 @@ export declare class ZigbeeMotionSensor extends ZigbeeDevice implements iMotionS
29
30
  update(idSplit: string[], state: ioBroker.State, initial?: boolean, pOverride?: boolean): void;
30
31
  private resetFallbackTimeout;
31
32
  private startFallbackTimeout;
33
+ persistBatteryDevice(): void;
32
34
  }
@@ -9,9 +9,9 @@ class ZigbeeMotionSensor extends index_1.ZigbeeDevice {
9
9
  constructor(pInfo, type) {
10
10
  var _a;
11
11
  super(pInfo, type);
12
+ this._battery = -99;
12
13
  this.settings = new models_1.MotionSensorSettings();
13
14
  this.movementDetected = false;
14
- this.battery = -99;
15
15
  this._initialized = false;
16
16
  this._movementDetectedCallback = [];
17
17
  this._needsMovementResetFallback = true;
@@ -34,6 +34,9 @@ class ZigbeeMotionSensor extends index_1.ZigbeeDevice {
34
34
  });
35
35
  }
36
36
  }
37
+ get battery() {
38
+ return this._battery;
39
+ }
37
40
  // Time since last motion in seconds
38
41
  get timeSinceLastMotion() {
39
42
  return this._timeSinceLastMotion;
@@ -90,8 +93,9 @@ class ZigbeeMotionSensor extends index_1.ZigbeeDevice {
90
93
  super.update(idSplit, state, initial, pOverride);
91
94
  switch (idSplit[3]) {
92
95
  case 'battery':
93
- this.battery = state.val;
94
- if (this.battery < 20) {
96
+ this._battery = state.val;
97
+ this.persistBatteryDevice();
98
+ if (this._battery < 20) {
95
99
  this.log(models_1.LogLevel.Warn, `Das Zigbee Gerät hat unter 20% Batterie.`);
96
100
  }
97
101
  break;
@@ -121,5 +125,9 @@ class ZigbeeMotionSensor extends index_1.ZigbeeDevice {
121
125
  this.updateMovement(false);
122
126
  }, 270000, this);
123
127
  }
128
+ persistBatteryDevice() {
129
+ var _a;
130
+ (_a = services_1.Utils.dbo) === null || _a === void 0 ? void 0 : _a.persistBatteryDevice(this);
131
+ }
124
132
  }
125
133
  exports.ZigbeeMotionSensor = ZigbeeMotionSensor;
@@ -3,7 +3,8 @@ import { iBatteryDevice, iVibrationSensor } from '../baseDeviceInterfaces';
3
3
  import { ZigbeeDevice } from './BaseDevices';
4
4
  import { IoBrokerDeviceInfo } from '../IoBrokerDeviceInfo';
5
5
  export declare class ZigbeeAquaraVibra extends ZigbeeDevice implements iVibrationSensor, iBatteryDevice {
6
- battery: number;
6
+ private _battery;
7
+ get battery(): number;
7
8
  sensitivity: string;
8
9
  tiltAngle: number;
9
10
  tiltAngleX: number;
@@ -27,4 +28,5 @@ export declare class ZigbeeAquaraVibra extends ZigbeeDevice implements iVibratio
27
28
  update(idSplit: string[], state: ioBroker.State, initial?: boolean): void;
28
29
  setSensitivity(pVal: number): void;
29
30
  alarmCheck(): void;
31
+ persistBatteryDevice(): void;
30
32
  }
@@ -9,7 +9,7 @@ const DeviceCapability_1 = require("../DeviceCapability");
9
9
  class ZigbeeAquaraVibra extends BaseDevices_1.ZigbeeDevice {
10
10
  constructor(pInfo) {
11
11
  super(pInfo, deviceType_1.DeviceType.ZigbeeAquaraVibra);
12
- this.battery = -99;
12
+ this._battery = -99;
13
13
  this.sensitivity = '';
14
14
  this.tiltAngle = 0;
15
15
  this.tiltAngleX = 0;
@@ -31,6 +31,9 @@ class ZigbeeAquaraVibra extends BaseDevices_1.ZigbeeDevice {
31
31
  services_1.PollyService.preloadTTS(this._alarmMessage);
32
32
  this._idSensitivity = `${this.info.fullID}.sensitivity`;
33
33
  }
34
+ get battery() {
35
+ return this._battery;
36
+ }
34
37
  get vibrationBlockedByGriff() {
35
38
  return this._vibrationBlockedByGriff;
36
39
  }
@@ -56,8 +59,9 @@ class ZigbeeAquaraVibra extends BaseDevices_1.ZigbeeDevice {
56
59
  super.update(idSplit, state, initial, true);
57
60
  switch (idSplit[3]) {
58
61
  case 'battery':
59
- this.battery = state.val;
60
- if (this.battery < 20) {
62
+ this._battery = state.val;
63
+ this.persistBatteryDevice();
64
+ if (this._battery < 20) {
61
65
  this.log(models_1.LogLevel.Warn, `Das Zigbee Gerät hat unter 20% Batterie.`);
62
66
  }
63
67
  break;
@@ -137,5 +141,9 @@ class ZigbeeAquaraVibra extends BaseDevices_1.ZigbeeDevice {
137
141
  services_1.SonosService.speakOnAll(message);
138
142
  this.log(models_1.LogLevel.Alert, message);
139
143
  }
144
+ persistBatteryDevice() {
145
+ var _a;
146
+ (_a = services_1.Utils.dbo) === null || _a === void 0 ? void 0 : _a.persistBatteryDevice(this);
147
+ }
140
148
  }
141
149
  exports.ZigbeeAquaraVibra = ZigbeeAquaraVibra;
@@ -4,7 +4,8 @@ import { ZigbeeDevice } from './BaseDevices';
4
4
  import { IoBrokerDeviceInfo } from '../IoBrokerDeviceInfo';
5
5
  import { iBatteryDevice } from '../baseDeviceInterfaces';
6
6
  export declare class ZigbeeAquaraWater extends ZigbeeDevice implements iBatteryDevice {
7
- battery: number;
7
+ private _battery;
8
+ get battery(): number;
8
9
  water: boolean;
9
10
  iAlarmTimeout: NodeJS.Timeout | undefined;
10
11
  private _messageAlarmFirst;
@@ -18,4 +19,6 @@ export declare class ZigbeeAquaraWater extends ZigbeeDevice implements iBatteryD
18
19
  stopAlarm(quiet?: boolean, timeout?: number): void;
19
20
  private startAlarm;
20
21
  private alarm;
22
+ persistBatteryDevice(): void;
23
+ dispose(): void;
21
24
  }
@@ -9,7 +9,7 @@ const DeviceCapability_1 = require("../DeviceCapability");
9
9
  class ZigbeeAquaraWater extends BaseDevices_1.ZigbeeDevice {
10
10
  constructor(pInfo) {
11
11
  super(pInfo, deviceType_1.DeviceType.ZigbeeAquaraWater);
12
- this.battery = -99;
12
+ this._battery = -99;
13
13
  this.water = false;
14
14
  this.iAlarmTimeout = undefined;
15
15
  this._messageAlarmFirst = '';
@@ -22,6 +22,9 @@ class ZigbeeAquaraWater extends BaseDevices_1.ZigbeeDevice {
22
22
  this._messageAlarm = services_1.Res.waterAlarmRepeat(this.info.customName, this._roomName);
23
23
  this._messageAlarmEnd = services_1.Res.waterAlarmEnd(this._roomName);
24
24
  }
25
+ get battery() {
26
+ return this._battery;
27
+ }
25
28
  set roomName(val) {
26
29
  this._roomName = val;
27
30
  this._messageAlarmFirst = services_1.Res.waterAlarmStart(this.info.customName, this._roomName);
@@ -36,8 +39,9 @@ class ZigbeeAquaraWater extends BaseDevices_1.ZigbeeDevice {
36
39
  super.update(idSplit, state, initial, true);
37
40
  switch (idSplit[3]) {
38
41
  case 'battery':
39
- this.battery = state.val;
40
- if (this.battery < 20) {
42
+ this._battery = state.val;
43
+ this.persistBatteryDevice();
44
+ if (this._battery < 20) {
41
45
  this.log(models_1.LogLevel.Warn, `Das Zigbee Gerät hat unter 20% Batterie.`);
42
46
  }
43
47
  break;
@@ -94,5 +98,16 @@ class ZigbeeAquaraWater extends BaseDevices_1.ZigbeeDevice {
94
98
  services_1.SonosService.speakOnAll(message, 80);
95
99
  });
96
100
  }
101
+ persistBatteryDevice() {
102
+ var _a;
103
+ (_a = services_1.Utils.dbo) === null || _a === void 0 ? void 0 : _a.persistBatteryDevice(this);
104
+ }
105
+ dispose() {
106
+ if (this.iAlarmTimeout) {
107
+ clearInterval(this.iAlarmTimeout);
108
+ this.iAlarmTimeout = undefined;
109
+ }
110
+ super.dispose();
111
+ }
97
112
  }
98
113
  exports.ZigbeeAquaraWater = ZigbeeAquaraWater;
@@ -1,15 +1,17 @@
1
1
  /// <reference types="iobroker" />
2
2
  import { ZigbeeHeater } from './BaseDevices';
3
+ import { iDisposable } from '../../services';
3
4
  import { IoBrokerDeviceInfo } from '../IoBrokerDeviceInfo';
4
- export declare class ZigbeeEuroHeater extends ZigbeeHeater {
5
- private _setLocalTempCalibrationId;
5
+ export declare class ZigbeeEuroHeater extends ZigbeeHeater implements iDisposable {
6
+ private readonly _setLocalTempCalibrationId;
6
7
  private _targetTempVal;
7
8
  private _localDiffTempVal;
8
- private _setModeId;
9
- private _valvePosId;
9
+ private readonly _setModeId;
10
+ private readonly _valvePosId;
10
11
  private _lastRecalc;
11
12
  private _mode;
12
13
  private _recalcTimeout;
14
+ private _forcedRefreshInterval;
13
15
  constructor(pInfo: IoBrokerDeviceInfo);
14
16
  get seasonTurnOff(): boolean;
15
17
  set seasonTurnOff(value: boolean);
@@ -23,11 +25,12 @@ export declare class ZigbeeEuroHeater extends ZigbeeHeater {
23
25
  private checkTempDiff;
24
26
  private setLocalDiff;
25
27
  private setTargetTemperatur;
28
+ dispose(): void;
29
+ private setValve;
26
30
  /**
27
31
  * Sets the mode (1 = manual valve, 2 = automatic temp based)
28
32
  * @param {1 | 2} targetMode
29
33
  * @private
30
34
  */
31
35
  private setMode;
32
- private setValve;
33
36
  }
@@ -18,6 +18,9 @@ class ZigbeeEuroHeater extends BaseDevices_1.ZigbeeHeater {
18
18
  this._setLocalTempCalibrationId = `${this.info.fullID}.local_temp_calibration`;
19
19
  this._setModeId = `${this.info.fullID}.spz_trv_mode`;
20
20
  this._valvePosId = `${this.info.fullID}.valve_position`;
21
+ this._forcedRefreshInterval = services_1.Utils.guardedInterval(() => {
22
+ this.triggerDeviceQuery();
23
+ }, 6 * 60 * 60 * 1000, this);
21
24
  }
22
25
  get seasonTurnOff() {
23
26
  return this._seasonTurnOff;
@@ -149,6 +152,12 @@ class ZigbeeEuroHeater extends BaseDevices_1.ZigbeeHeater {
149
152
  this.log(models_1.LogLevel.Debug, `Setting new Target Temp (${targetTemp}) for Euro Valve`);
150
153
  this.setState(this._setPointTemperaturID, targetTemp);
151
154
  }
155
+ dispose() {
156
+ clearInterval(this._forcedRefreshInterval);
157
+ }
158
+ setValve(target) {
159
+ this.setState(this._valvePosId, target);
160
+ }
152
161
  /**
153
162
  * Sets the mode (1 = manual valve, 2 = automatic temp based)
154
163
  * @param {1 | 2} targetMode
@@ -156,9 +165,9 @@ class ZigbeeEuroHeater extends BaseDevices_1.ZigbeeHeater {
156
165
  */
157
166
  setMode(targetMode) {
158
167
  this.setState(this._setModeId, targetMode);
159
- }
160
- setValve(target) {
161
- this.setState(this._valvePosId, target);
168
+ services_1.Utils.guardedTimeout(() => {
169
+ this.triggerDeviceQuery();
170
+ }, 10000, this);
162
171
  }
163
172
  }
164
173
  exports.ZigbeeEuroHeater = ZigbeeEuroHeater;
@@ -4,7 +4,8 @@ import { ZigbeeDevice } from './BaseDevices';
4
4
  import { IoBrokerDeviceInfo } from '../IoBrokerDeviceInfo';
5
5
  import { iBatteryDevice } from '../baseDeviceInterfaces';
6
6
  export declare class ZigbeeHeimanSmoke extends ZigbeeDevice implements iBatteryDevice {
7
- battery: number;
7
+ private _battery;
8
+ get battery(): number;
8
9
  smoke: boolean;
9
10
  iAlarmTimeout: NodeJS.Timeout | undefined;
10
11
  private _messageAlarmFirst;
@@ -17,4 +18,6 @@ export declare class ZigbeeHeimanSmoke extends ZigbeeDevice implements iBatteryD
17
18
  stopAlarm(quiet?: boolean): void;
18
19
  private startAlarm;
19
20
  private alarm;
21
+ persistBatteryDevice(): void;
22
+ dispose(): void;
20
23
  }
@@ -9,7 +9,7 @@ const DeviceCapability_1 = require("../DeviceCapability");
9
9
  class ZigbeeHeimanSmoke extends BaseDevices_1.ZigbeeDevice {
10
10
  constructor(pInfo) {
11
11
  super(pInfo, deviceType_1.DeviceType.ZigbeeHeimanSmoke);
12
- this.battery = -99;
12
+ this._battery = -99;
13
13
  this.smoke = false;
14
14
  this.iAlarmTimeout = undefined;
15
15
  this._messageAlarmFirst = '';
@@ -21,6 +21,9 @@ class ZigbeeHeimanSmoke extends BaseDevices_1.ZigbeeDevice {
21
21
  this._messageAlarm = services_1.Res.fireAlarmRepeat(this._roomName, this.info.customName);
22
22
  this._messageAlarmEnd = services_1.Res.fireAlarmEnd(this._roomName);
23
23
  }
24
+ get battery() {
25
+ return this._battery;
26
+ }
24
27
  set roomName(val) {
25
28
  this._roomName = val;
26
29
  this._messageAlarmFirst = services_1.Res.fireAlarmStart(this._roomName, this.info.customName);
@@ -35,8 +38,9 @@ class ZigbeeHeimanSmoke extends BaseDevices_1.ZigbeeDevice {
35
38
  super.update(idSplit, state, initial, true);
36
39
  switch (idSplit[3]) {
37
40
  case 'battery':
38
- this.battery = state.val;
39
- if (this.battery < 20) {
41
+ this._battery = state.val;
42
+ this.persistBatteryDevice();
43
+ if (this._battery < 20) {
40
44
  this.log(models_1.LogLevel.Warn, `Das Zigbee Gerät hat unter 20% Batterie.`);
41
45
  }
42
46
  break;
@@ -90,5 +94,16 @@ class ZigbeeHeimanSmoke extends BaseDevices_1.ZigbeeDevice {
90
94
  services_1.RoomService.setAllRolloOfFloor(-1, 100);
91
95
  });
92
96
  }
97
+ persistBatteryDevice() {
98
+ var _a;
99
+ (_a = services_1.Utils.dbo) === null || _a === void 0 ? void 0 : _a.persistBatteryDevice(this);
100
+ }
101
+ dispose() {
102
+ if (this.iAlarmTimeout) {
103
+ clearInterval(this.iAlarmTimeout);
104
+ this.iAlarmTimeout = undefined;
105
+ }
106
+ super.dispose();
107
+ }
93
108
  }
94
109
  exports.ZigbeeHeimanSmoke = ZigbeeHeimanSmoke;
@@ -4,8 +4,10 @@ import { ZigbeeDevice } from './BaseDevices';
4
4
  import { iBatteryDevice, iHumiditySensor, iTemperatureSensor } from '../baseDeviceInterfaces';
5
5
  import { IoBrokerDeviceInfo } from '../IoBrokerDeviceInfo';
6
6
  export declare class ZigbeeSonoffTemp extends ZigbeeDevice implements iTemperatureSensor, iHumiditySensor, iBatteryDevice {
7
+ private _battery;
7
8
  readonly persistTemperatureSensorInterval: NodeJS.Timeout;
8
- battery: number;
9
+ readonly persistHumiditySensorInterval: NodeJS.Timeout;
10
+ get battery(): number;
9
11
  private _humidityCallbacks;
10
12
  private _temperaturCallbacks;
11
13
  constructor(pInfo: IoBrokerDeviceInfo);
@@ -24,4 +26,7 @@ export declare class ZigbeeSonoffTemp extends ZigbeeDevice implements iTemperatu
24
26
  addTempChangeCallback(pCallback: (pValue: number) => void): void;
25
27
  onTemperaturChange(newTemperatur: number): void;
26
28
  persistTemperaturSensor(): void;
29
+ persistHumiditySensor(): void;
30
+ persistBatteryDevice(): void;
31
+ dispose(): void;
27
32
  }
@@ -10,10 +10,13 @@ const services_1 = require("../../services");
10
10
  class ZigbeeSonoffTemp extends BaseDevices_1.ZigbeeDevice {
11
11
  constructor(pInfo) {
12
12
  super(pInfo, deviceType_1.DeviceType.ZigbeeSonoffTemp);
13
+ this._battery = -99;
13
14
  this.persistTemperatureSensorInterval = services_1.Utils.guardedInterval(() => {
14
15
  this.persistTemperaturSensor();
15
16
  }, 5 * 60 * 1000, this, false);
16
- this.battery = -99;
17
+ this.persistHumiditySensorInterval = services_1.Utils.guardedInterval(() => {
18
+ this.persistHumiditySensor();
19
+ }, 5 * 60 * 1000, this, false);
17
20
  this._humidityCallbacks = [];
18
21
  this._temperaturCallbacks = [];
19
22
  this._humidity = baseDeviceInterfaces_1.UNDEFINED_TEMP_VALUE;
@@ -23,6 +26,9 @@ class ZigbeeSonoffTemp extends BaseDevices_1.ZigbeeDevice {
23
26
  this.deviceCapabilities.push(DeviceCapability_1.DeviceCapability.humiditySensor);
24
27
  this.deviceCapabilities.push(DeviceCapability_1.DeviceCapability.batteryDriven);
25
28
  }
29
+ get battery() {
30
+ return this._battery;
31
+ }
26
32
  get roomTemperature() {
27
33
  return this._roomTemperature;
28
34
  }
@@ -54,8 +60,9 @@ class ZigbeeSonoffTemp extends BaseDevices_1.ZigbeeDevice {
54
60
  super.update(idSplit, state, initial, true);
55
61
  switch (idSplit[3]) {
56
62
  case 'battery':
57
- this.battery = state.val;
58
- if (this.battery < 20) {
63
+ this._battery = state.val;
64
+ this.persistBatteryDevice();
65
+ if (this._battery < 20) {
59
66
  this.log(models_1.LogLevel.Warn, `Das Zigbee Gerät hat unter 20% Batterie.`);
60
67
  }
61
68
  break;
@@ -86,5 +93,22 @@ class ZigbeeSonoffTemp extends BaseDevices_1.ZigbeeDevice {
86
93
  var _a;
87
94
  (_a = services_1.Utils.dbo) === null || _a === void 0 ? void 0 : _a.persistTemperatureSensor(this);
88
95
  }
96
+ persistHumiditySensor() {
97
+ var _a;
98
+ (_a = services_1.Utils.dbo) === null || _a === void 0 ? void 0 : _a.persistHumiditySensor(this);
99
+ }
100
+ persistBatteryDevice() {
101
+ var _a;
102
+ (_a = services_1.Utils.dbo) === null || _a === void 0 ? void 0 : _a.persistBatteryDevice(this);
103
+ }
104
+ dispose() {
105
+ if (this.persistTemperatureSensorInterval) {
106
+ clearInterval(this.persistTemperatureSensorInterval);
107
+ }
108
+ if (this.persistHumiditySensorInterval) {
109
+ clearInterval(this.persistHumiditySensorInterval);
110
+ }
111
+ super.dispose();
112
+ }
89
113
  }
90
114
  exports.ZigbeeSonoffTemp = ZigbeeSonoffTemp;
@@ -3,9 +3,10 @@
3
3
  /// <reference types="node" />
4
4
  /// <reference types="node" />
5
5
  import { IncomingMessage } from 'http';
6
+ import { iDisposable } from '../services';
6
7
  import { ConnectionCallbacks } from '../../models';
7
8
  import { SocketIOConnectOpts } from './socketIOConnectOptions';
8
- export declare class IOBrokerConnection {
9
+ export declare class IOBrokerConnection implements iDisposable {
9
10
  private _authInfo;
10
11
  private _authRunning;
11
12
  private _cmdData;
@@ -156,4 +157,5 @@ export declare class IOBrokerConnection {
156
157
  private _fillChildren;
157
158
  private _queueCmdIfRequired;
158
159
  private _detectViews;
160
+ dispose(): void;
159
161
  }
@@ -1345,5 +1345,15 @@ class IOBrokerConnection {
1345
1345
  callback(err);
1346
1346
  });
1347
1347
  }
1348
+ dispose() {
1349
+ if (this._connectInterval) {
1350
+ clearInterval(this._connectInterval);
1351
+ this._connectInterval = undefined;
1352
+ }
1353
+ if (this._countInterval) {
1354
+ clearInterval(this._countInterval);
1355
+ this._countInterval = undefined;
1356
+ }
1357
+ }
1348
1358
  }
1349
1359
  exports.IOBrokerConnection = IOBrokerConnection;
@@ -78,12 +78,6 @@ class TelegramCommands {
78
78
  telegram_service_1.TelegramService.sendMessage([m.chat.id], devices_1.Heizgruppen.getProblems());
79
79
  return true;
80
80
  }, 'Zeigt Differenzen zwischen Heizungen und den jeweiligen Heizgruppen auf'));
81
- telegram_service_1.TelegramService.addMessageCallback(new telegramMessageCalback_1.TelegramMessageCallback('HeizungCheckOne', /\/check_1_temperatur.*/, async (m) => {
82
- if (m.from === undefined)
83
- return false;
84
- telegram_service_1.TelegramService.sendMessage([m.chat.id], await devices_1.Heizgruppen.getSpecificInfo(m.text));
85
- return true;
86
- }, `Gibt den Verlauf der in \\"\\" übergebenen Heizgruppe aus.`, /\/check_1_temperatur/));
87
81
  telegram_service_1.TelegramService.addMessageCallback(new telegramMessageCalback_1.TelegramMessageCallback('AllRolloDown', /\/all_rollo_down/, async (m) => {
88
82
  if (m.from === undefined)
89
83
  return false;
@@ -1,13 +1,12 @@
1
- import { ButtonPressType, iAcDevice, iActuator, iBaseDevice, iButtonSwitch, iHeater, iIlluminationSensor, iMotionSensor, IoBrokerBaseDevice, iShutter, iTemperatureSensor } from '../../devices';
2
- import { CountToday, DesiredShutterPosition, EnergyCalculation, RoomBase, ShutterCalibration, TemperaturDataPoint } from '../../../models';
1
+ import { ButtonPressType, iAcDevice, iActuator, iBaseDevice, iBatteryDevice, iButtonSwitch, iHeater, iHumiditySensor, iIlluminationSensor, iMotionSensor, iShutter, iTemperatureSensor, ZigbeeDevice } from '../../devices';
2
+ import { CountToday, DesiredShutterPosition, EnergyCalculation, RoomBase, ShutterCalibration } from '../../../models';
3
3
  export interface iPersist {
4
4
  initialized: boolean;
5
- addTemperaturDataPoint(heater: iHeater): void;
6
5
  addRoom(room: RoomBase): void;
7
6
  addDevice(device: iBaseDevice): void;
8
7
  motionSensorTodayCount(device: iMotionSensor): Promise<CountToday>;
9
8
  getLastDesiredPosition(device: iShutter): Promise<DesiredShutterPosition>;
10
- getShutterCalibration(device: IoBrokerBaseDevice): Promise<ShutterCalibration>;
9
+ getShutterCalibration(device: iShutter): Promise<ShutterCalibration>;
11
10
  initialize(): Promise<void>;
12
11
  persistShutterCalibration(data: ShutterCalibration): void;
13
12
  persistIlluminationSensor(device: iIlluminationSensor): void;
@@ -19,5 +18,7 @@ export interface iPersist {
19
18
  persistSwitchInput(device: iButtonSwitch, pressType: ButtonPressType, buttonName: string): void;
20
19
  persistShutter(device: iShutter): void;
21
20
  persistTemperatureSensor(device: iTemperatureSensor): void;
22
- readTemperaturDataPoint(hzGrp: iHeater, limit: number): Promise<TemperaturDataPoint[]>;
21
+ persistHumiditySensor(device: iHumiditySensor): void;
22
+ persistBatteryDevice(device: iBatteryDevice): void;
23
+ persistZigbeeDevice(device: ZigbeeDevice): void;
23
24
  }
@@ -1,6 +1,6 @@
1
1
  import { iPersist } from './iPersist';
2
- import { CountToday, DesiredShutterPosition, EnergyCalculation, RoomBase, ShutterCalibration, TemperaturDataPoint } from '../../../models';
3
- import { ButtonPressType, iAcDevice, iActuator, iBaseDevice, iButtonSwitch, iHeater, iIlluminationSensor, iMotionSensor, IoBrokerBaseDevice, iShutter, iTemperatureSensor } from '../../devices';
2
+ import { CountToday, DesiredShutterPosition, EnergyCalculation, RoomBase, ShutterCalibration } from '../../../models';
3
+ import { ButtonPressType, iAcDevice, iActuator, iBaseDevice, iBatteryDevice, iButtonSwitch, iHeater, iHumiditySensor, iIlluminationSensor, iMotionSensor, iShutter, iTemperatureSensor, ZigbeeDevice } from '../../devices';
4
4
  import { PoolConfig } from 'pg';
5
5
  export declare class PostgreSqlPersist implements iPersist {
6
6
  initialized: boolean;
@@ -9,10 +9,9 @@ export declare class PostgreSqlPersist implements iPersist {
9
9
  constructor(conf: PoolConfig);
10
10
  addRoom(room: RoomBase): void;
11
11
  addDevice(device: iBaseDevice): void;
12
- addTemperaturDataPoint(heater: iHeater): void;
13
12
  getLastDesiredPosition(device: iShutter): Promise<DesiredShutterPosition>;
14
13
  motionSensorTodayCount(device: iMotionSensor): Promise<CountToday>;
15
- getShutterCalibration(_device: IoBrokerBaseDevice): Promise<ShutterCalibration>;
14
+ getShutterCalibration(_device: iShutter): Promise<ShutterCalibration>;
16
15
  initialize(): Promise<void>;
17
16
  persistAC(device: iAcDevice): void;
18
17
  persistActuator(device: iActuator): void;
@@ -21,9 +20,11 @@ export declare class PostgreSqlPersist implements iPersist {
21
20
  persistMotionSensor(device: iMotionSensor): void;
22
21
  persistShutter(device: iShutter): void;
23
22
  persistTemperatureSensor(device: iTemperatureSensor): void;
23
+ persistHumiditySensor(device: iHumiditySensor): void;
24
+ persistBatteryDevice(device: iBatteryDevice): void;
25
+ persistZigbeeDevice(device: ZigbeeDevice): void;
24
26
  persistIlluminationSensor(device: iIlluminationSensor): void;
25
27
  persistShutterCalibration(_data: ShutterCalibration): void;
26
- readTemperaturDataPoint(heater: iHeater, limit: number): Promise<TemperaturDataPoint[]>;
27
28
  persistEnergyManager(calc: EnergyCalculation): void;
28
29
  private query;
29
30
  private isPsqlReady;