hoffmation-base 1.0.48 → 1.0.49

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 (36) hide show
  1. package/lib/server/devices/DeviceCapability.d.ts +2 -1
  2. package/lib/server/devices/DeviceCapability.js +1 -0
  3. package/lib/server/devices/IoBrokerBaseDevice.d.ts +0 -1
  4. package/lib/server/devices/baseDeviceInterfaces/iBatteryDevice.d.ts +4 -0
  5. package/lib/server/devices/baseDeviceInterfaces/iBatteryDevice.js +2 -0
  6. package/lib/server/devices/baseDeviceInterfaces/index.d.ts +1 -0
  7. package/lib/server/devices/baseDeviceInterfaces/index.js +1 -0
  8. package/lib/server/devices/devices.js +4 -0
  9. package/lib/server/devices/hmIPDevices/hmIpDevice.js +1 -4
  10. package/lib/server/devices/hmIPDevices/hmIpGriff.d.ts +3 -2
  11. package/lib/server/devices/hmIPDevices/hmIpGriff.js +16 -2
  12. package/lib/server/devices/hmIPDevices/hmIpHeizung.d.ts +3 -1
  13. package/lib/server/devices/hmIPDevices/hmIpHeizung.js +10 -0
  14. package/lib/server/devices/hmIPDevices/hmIpPraezenz.d.ts +3 -2
  15. package/lib/server/devices/hmIPDevices/hmIpPraezenz.js +18 -9
  16. package/lib/server/devices/hmIPDevices/hmIpTaster.d.ts +3 -2
  17. package/lib/server/devices/hmIPDevices/hmIpTaster.js +9 -0
  18. package/lib/server/devices/hmIPDevices/hmIpTherm.d.ts +3 -1
  19. package/lib/server/devices/hmIPDevices/hmIpTherm.js +12 -0
  20. package/lib/server/devices/zigbee/BaseDevices/zigbeeDevice.js +0 -6
  21. package/lib/server/devices/zigbee/BaseDevices/zigbeeMagnetContact.d.ts +3 -1
  22. package/lib/server/devices/zigbee/BaseDevices/zigbeeMagnetContact.js +9 -0
  23. package/lib/server/devices/zigbee/BaseDevices/zigbeeMotionSensor.d.ts +3 -2
  24. package/lib/server/devices/zigbee/BaseDevices/zigbeeMotionSensor.js +8 -0
  25. package/lib/server/devices/zigbee/BaseDevices/zigbeeSwitch.d.ts +1 -0
  26. package/lib/server/devices/zigbee/BaseDevices/zigbeeSwitch.js +12 -0
  27. package/lib/server/devices/zigbee/zigbeeAquaraVibra.d.ts +3 -2
  28. package/lib/server/devices/zigbee/zigbeeAquaraVibra.js +8 -0
  29. package/lib/server/devices/zigbee/zigbeeAquaraWater.d.ts +3 -1
  30. package/lib/server/devices/zigbee/zigbeeAquaraWater.js +9 -0
  31. package/lib/server/devices/zigbee/zigbeeHeimanSmoke.d.ts +3 -1
  32. package/lib/server/devices/zigbee/zigbeeHeimanSmoke.js +9 -0
  33. package/lib/server/devices/zigbee/zigbeeSonoffTemp.d.ts +3 -2
  34. package/lib/server/devices/zigbee/zigbeeSonoffTemp.js +9 -0
  35. package/lib/tsconfig.tsbuildinfo +1 -1
  36. package/package.json +1 -1
@@ -14,5 +14,6 @@ export declare enum DeviceCapability {
14
14
  temperatureSensor = 12,
15
15
  vibrationSensor = 13,
16
16
  speaker = 14,
17
- handleSensor = 15
17
+ handleSensor = 15,
18
+ batteryDriven = 16
18
19
  }
@@ -19,4 +19,5 @@ var DeviceCapability;
19
19
  DeviceCapability[DeviceCapability["vibrationSensor"] = 13] = "vibrationSensor";
20
20
  DeviceCapability[DeviceCapability["speaker"] = 14] = "speaker";
21
21
  DeviceCapability[DeviceCapability["handleSensor"] = 15] = "handleSensor";
22
+ DeviceCapability[DeviceCapability["batteryDriven"] = 16] = "batteryDriven";
22
23
  })(DeviceCapability = exports.DeviceCapability || (exports.DeviceCapability = {}));
@@ -13,7 +13,6 @@ export declare abstract class IoBrokerBaseDevice implements iBaseDevice {
13
13
  [id: string]: RoomDeviceAddingSettings;
14
14
  };
15
15
  room: RoomBase | undefined;
16
- battery: number | undefined;
17
16
  readonly deviceCapabilities: DeviceCapability[];
18
17
  protected constructor(_info: IoBrokerDeviceInfo, deviceType: DeviceType);
19
18
  get id(): string;
@@ -0,0 +1,4 @@
1
+ import { iBaseDevice } from './iBaseDevice';
2
+ export interface iBatteryDevice extends iBaseDevice {
3
+ battery: number;
4
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,6 +1,7 @@
1
1
  export * from './iAcDevice';
2
2
  export * from './iActuator';
3
3
  export * from './iBaseDevice';
4
+ export * from './iBatteryDevice';
4
5
  export * from './iButtonSwitch';
5
6
  export * from './iEnergyManager';
6
7
  export * from './iExcessEnergyConsumer';
@@ -17,6 +17,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./iAcDevice"), exports);
18
18
  __exportStar(require("./iActuator"), exports);
19
19
  __exportStar(require("./iBaseDevice"), exports);
20
+ __exportStar(require("./iBatteryDevice"), exports);
20
21
  __exportStar(require("./iButtonSwitch"), exports);
21
22
  __exportStar(require("./iEnergyManager"), exports);
22
23
  __exportStar(require("./iExcessEnergyConsumer"), exports);
@@ -9,6 +9,7 @@ const services_1 = require("../services");
9
9
  const IoBrokerDeviceInfo_1 = require("./IoBrokerDeviceInfo");
10
10
  const jsObject_1 = require("./jsObject");
11
11
  const wledDevice_1 = require("./wledDevice");
12
+ const DeviceCapability_1 = require("./DeviceCapability");
12
13
  class Devices {
13
14
  constructor(pDeviceData, pRoomImportEnforcer) {
14
15
  // This forces import of rooms at correct timing, to allow devices to land in proper rooms.
@@ -65,6 +66,9 @@ class Devices {
65
66
  ];
66
67
  for (const key in this.alLDevices) {
67
68
  const d = this.alLDevices[key];
69
+ if (!d.deviceCapabilities.includes(DeviceCapability_1.DeviceCapability.batteryDriven)) {
70
+ continue;
71
+ }
68
72
  if (d.battery !== undefined) {
69
73
  data.push({ name: d.info.customName, amount: d.battery });
70
74
  }
@@ -19,13 +19,10 @@ class HmIPDevice extends IoBrokerBaseDevice_1.IoBrokerBaseDevice {
19
19
  return;
20
20
  }
21
21
  switch (idSplit[4]) {
22
- case 'OPERATING_VOLTAGE':
23
- this.battery = state.val;
24
- break;
25
22
  case 'LOW_BAT':
26
23
  const newBatLowVal = state.val;
27
24
  if (newBatLowVal) {
28
- this.log(models_1.LogLevel.Alert, `!!BATTERIE FAST LEER!!`);
25
+ this.log(models_1.LogLevel.Warn, `!!BATTERIE FAST LEER!!`);
29
26
  }
30
27
  break;
31
28
  }
@@ -4,8 +4,9 @@ import { Fenster } from '../groups';
4
4
  import { IoBrokerBaseDevice } from '../IoBrokerBaseDevice';
5
5
  import { IoBrokerDeviceInfo } from '../IoBrokerDeviceInfo';
6
6
  import { HmIPDevice } from './hmIpDevice';
7
- import { iHandleSensor } from '../baseDeviceInterfaces';
8
- export declare class HmIpGriff extends HmIPDevice implements iHandleSensor {
7
+ import { iBatteryDevice, iHandleSensor } from '../baseDeviceInterfaces';
8
+ export declare class HmIpGriff extends HmIPDevice implements iHandleSensor, iBatteryDevice {
9
+ battery: number;
9
10
  position: FensterPosition;
10
11
  private _kippCallback;
11
12
  private _closedCallback;
@@ -14,6 +14,7 @@ const DeviceCapability_1 = require("../DeviceCapability");
14
14
  class HmIpGriff extends hmIpDevice_1.HmIPDevice {
15
15
  constructor(pInfo) {
16
16
  super(pInfo, deviceType_1.DeviceType.HmIpGriff);
17
+ this.battery = -99;
17
18
  this.position = models_1.FensterPosition.geschlossen;
18
19
  this._kippCallback = [];
19
20
  this._closedCallback = [];
@@ -22,6 +23,7 @@ class HmIpGriff extends hmIpDevice_1.HmIPDevice {
22
23
  this._fenster = undefined;
23
24
  this._helpingRoomTemp = false;
24
25
  this.deviceCapabilities.push(DeviceCapability_1.DeviceCapability.handleSensor);
26
+ this.deviceCapabilities.push(DeviceCapability_1.DeviceCapability.batteryDriven);
25
27
  }
26
28
  set Fenster(value) {
27
29
  this._fenster = value;
@@ -39,9 +41,21 @@ class HmIpGriff extends hmIpDevice_1.HmIPDevice {
39
41
  this.log(models_2.LogLevel.DeepTrace, `Griff Update: JSON: ${JSON.stringify(state)}ID: ${idSplit.join('.')}`);
40
42
  super.update(idSplit, state, initial, true);
41
43
  switch (idSplit[3]) {
44
+ case '0':
45
+ switch (idSplit[4]) {
46
+ case 'OPERATING_VOLTAGE':
47
+ this.battery = (state.val - 0.9) / 0.6;
48
+ break;
49
+ }
50
+ break;
42
51
  case '1':
43
- if (idSplit[4] === 'STATE') {
44
- this.updatePosition(state.val);
52
+ switch (idSplit[4]) {
53
+ case 'STATE':
54
+ this.updatePosition(state.val);
55
+ break;
56
+ case 'OPERATING_VOLTAGE':
57
+ this.battery = (state.val - 0.9) / 0.6;
58
+ break;
45
59
  }
46
60
  break;
47
61
  }
@@ -1,10 +1,12 @@
1
1
  /// <reference types="iobroker" />
2
2
  import { HmIPDevice } from './hmIpDevice';
3
3
  import { IoBrokerDeviceInfo } from '../IoBrokerDeviceInfo';
4
- export declare class HmIpHeizung extends HmIPDevice {
4
+ import { iBatteryDevice } from '../baseDeviceInterfaces';
5
+ export declare class HmIpHeizung extends HmIPDevice implements iBatteryDevice {
5
6
  private _temperatur;
6
7
  private _level;
7
8
  private _adaptionState;
9
+ battery: number;
8
10
  constructor(pInfo: IoBrokerDeviceInfo);
9
11
  private _desiredTemperatur;
10
12
  get desiredTemperatur(): number;
@@ -4,6 +4,7 @@ exports.HmIpHeizung = void 0;
4
4
  const deviceType_1 = require("../deviceType");
5
5
  const models_1 = require("../../../models");
6
6
  const hmIpDevice_1 = require("./hmIpDevice");
7
+ const DeviceCapability_1 = require("../DeviceCapability");
7
8
  var HmIpHeizungAdaptionStates;
8
9
  (function (HmIpHeizungAdaptionStates) {
9
10
  HmIpHeizungAdaptionStates[HmIpHeizungAdaptionStates["StateNotAvailable"] = 0] = "StateNotAvailable";
@@ -21,7 +22,9 @@ class HmIpHeizung extends hmIpDevice_1.HmIPDevice {
21
22
  super(pInfo, deviceType_1.DeviceType.HmIpHeizung);
22
23
  this._temperatur = 0;
23
24
  this._level = 0;
25
+ this.battery = -99;
24
26
  this._desiredTemperatur = 0;
27
+ this.deviceCapabilities.push(DeviceCapability_1.DeviceCapability.batteryDriven);
25
28
  }
26
29
  get desiredTemperatur() {
27
30
  return this._desiredTemperatur;
@@ -36,6 +39,13 @@ class HmIpHeizung extends hmIpDevice_1.HmIPDevice {
36
39
  this.log(models_1.LogLevel.DeepTrace, `Heizung Update: ID: ${idSplit.join('.')} JSON: ${JSON.stringify(state)}`);
37
40
  super.update(idSplit, state, initial, true);
38
41
  switch (idSplit[3]) {
42
+ case '0':
43
+ switch (idSplit[4]) {
44
+ case 'OPERATING_VOLTAGE':
45
+ this.battery = (state.val - 1.8) / 1.2;
46
+ break;
47
+ }
48
+ break;
39
49
  case '1':
40
50
  this.updateBaseInformation(idSplit[4], state);
41
51
  break;
@@ -1,12 +1,13 @@
1
1
  /// <reference types="iobroker" />
2
2
  import { HmIPDevice } from './hmIpDevice';
3
- import { iIlluminationSensor } from '../baseDeviceInterfaces';
3
+ import { iBatteryDevice, iIlluminationSensor } from '../baseDeviceInterfaces';
4
4
  import { IoBrokerDeviceInfo } from '../IoBrokerDeviceInfo';
5
- export declare class HmIpPraezenz extends HmIPDevice implements iIlluminationSensor {
5
+ export declare class HmIpPraezenz extends HmIPDevice implements iIlluminationSensor, iBatteryDevice {
6
6
  private static PRESENCE_DETECTION;
7
7
  private static CURRENT_ILLUMINATION;
8
8
  excludeFromNightAlarm: boolean;
9
9
  presenceDetected: boolean;
10
+ battery: number;
10
11
  private _presenceDetectedCallback;
11
12
  private initialized;
12
13
  constructor(pInfo: IoBrokerDeviceInfo);
@@ -12,12 +12,14 @@ class HmIpPraezenz extends hmIpDevice_1.HmIPDevice {
12
12
  super(pInfo, deviceType_1.DeviceType.HmIpPraezenz);
13
13
  this.excludeFromNightAlarm = false;
14
14
  this.presenceDetected = false;
15
+ this.battery = -99;
15
16
  this._presenceDetectedCallback = [];
16
17
  // private presenceStateID: string;
17
18
  this.initialized = false;
18
19
  this._detectionsToday = 0;
19
20
  this._currentIllumination = -1;
20
21
  this.deviceCapabilities.push(DeviceCapability_1.DeviceCapability.illuminationSensor);
22
+ this.deviceCapabilities.push(DeviceCapability_1.DeviceCapability.batteryDriven);
21
23
  // this.presenceStateID = `${this.info.fullID}.1.${HmIpPraezenz.PRESENCE_DETECTION}`;
22
24
  (_a = services_1.Utils.dbo) === null || _a === void 0 ? void 0 : _a.getCount(this).then((todayCount) => {
23
25
  this.detectionsToday = todayCount.counter;
@@ -51,16 +53,23 @@ class HmIpPraezenz extends hmIpDevice_1.HmIPDevice {
51
53
  update(idSplit, state, initial = false) {
52
54
  this.log(models_1.LogLevel.DeepTrace, `Präzens Update: JSON: ${JSON.stringify(state)}ID: ${idSplit.join('.')}`);
53
55
  super.update(idSplit, state, initial, true);
54
- if (idSplit[3] !== '1') {
55
- // Nur die Infos in Kanal 1 sind relevant
56
- return;
57
- }
58
- switch (idSplit[4]) {
59
- case HmIpPraezenz.PRESENCE_DETECTION:
60
- this.updatePresence(state.val);
56
+ switch (idSplit[3]) {
57
+ case '0':
58
+ switch (idSplit[4]) {
59
+ case 'OPERATING_VOLTAGE':
60
+ this.battery = (state.val - 1.8) / 1.2;
61
+ break;
62
+ }
61
63
  break;
62
- case HmIpPraezenz.CURRENT_ILLUMINATION:
63
- this.currentIllumination = state.val;
64
+ case '1':
65
+ switch (idSplit[4]) {
66
+ case HmIpPraezenz.PRESENCE_DETECTION:
67
+ this.updatePresence(state.val);
68
+ break;
69
+ case HmIpPraezenz.CURRENT_ILLUMINATION:
70
+ this.currentIllumination = state.val;
71
+ break;
72
+ }
64
73
  break;
65
74
  }
66
75
  }
@@ -1,9 +1,9 @@
1
1
  /// <reference types="iobroker" />
2
2
  import { HmIPDevice } from './hmIpDevice';
3
- import { iButtonSwitch } from '../baseDeviceInterfaces';
3
+ import { iBatteryDevice, iButtonSwitch } from '../baseDeviceInterfaces';
4
4
  import { Button } from '../button';
5
5
  import { IoBrokerDeviceInfo } from '../IoBrokerDeviceInfo';
6
- export declare class HmIpTaster extends HmIPDevice implements iButtonSwitch {
6
+ export declare class HmIpTaster extends HmIPDevice implements iButtonSwitch, iBatteryDevice {
7
7
  private static readonly BUTTON_CAPABILLITIES;
8
8
  buttonTopLeft: Button;
9
9
  buttonMidLeft: Button;
@@ -13,6 +13,7 @@ export declare class HmIpTaster extends HmIPDevice implements iButtonSwitch {
13
13
  buttonBotRight: Button;
14
14
  buttonBot: undefined;
15
15
  buttonTop: undefined;
16
+ battery: number;
16
17
  constructor(pInfo: IoBrokerDeviceInfo);
17
18
  update(idSplit: string[], state: ioBroker.State, initial?: boolean): void;
18
19
  getButtonAssignment(): string;
@@ -17,13 +17,22 @@ class HmIpTaster extends hmIpDevice_1.HmIPDevice {
17
17
  this.buttonBotRight = new button_1.Button('BotRight', HmIpTaster.BUTTON_CAPABILLITIES);
18
18
  this.buttonBot = undefined;
19
19
  this.buttonTop = undefined;
20
+ this.battery = -99;
20
21
  this.deviceCapabilities.push(DeviceCapability_1.DeviceCapability.buttonSwitch);
22
+ this.deviceCapabilities.push(DeviceCapability_1.DeviceCapability.batteryDriven);
21
23
  }
22
24
  update(idSplit, state, initial = false) {
23
25
  this.log(models_1.LogLevel.DeepTrace, `Taster Update: JSON: ${JSON.stringify(state)}ID: ${idSplit.join('.')}`);
24
26
  super.update(idSplit, state, initial, true);
25
27
  let cTaste = undefined;
26
28
  switch (idSplit[3]) {
29
+ case '0':
30
+ switch (idSplit[4]) {
31
+ case 'OPERATING_VOLTAGE':
32
+ this.battery = (state.val - 1.8) / 1.2;
33
+ break;
34
+ }
35
+ break;
27
36
  case '1':
28
37
  cTaste = this.buttonTopLeft;
29
38
  break;
@@ -1,7 +1,9 @@
1
1
  /// <reference types="iobroker" />
2
2
  import { HmIPDevice } from './hmIpDevice';
3
3
  import { IoBrokerDeviceInfo } from '../IoBrokerDeviceInfo';
4
- export declare class HmIpTherm extends HmIPDevice {
4
+ import { iBatteryDevice } from '../baseDeviceInterfaces';
5
+ export declare class HmIpTherm extends HmIPDevice implements iBatteryDevice {
6
+ battery: number;
5
7
  constructor(pInfo: IoBrokerDeviceInfo);
6
8
  update(idSplit: string[], state: ioBroker.State, initial?: boolean): void;
7
9
  }
@@ -4,13 +4,25 @@ exports.HmIpTherm = void 0;
4
4
  const hmIpDevice_1 = require("./hmIpDevice");
5
5
  const deviceType_1 = require("../deviceType");
6
6
  const models_1 = require("../../../models");
7
+ const DeviceCapability_1 = require("../DeviceCapability");
7
8
  class HmIpTherm extends hmIpDevice_1.HmIPDevice {
8
9
  constructor(pInfo) {
9
10
  super(pInfo, deviceType_1.DeviceType.HmIpTherm);
11
+ this.battery = -99;
12
+ this.deviceCapabilities.push(DeviceCapability_1.DeviceCapability.batteryDriven);
10
13
  }
11
14
  update(idSplit, state, initial = false) {
12
15
  this.log(models_1.LogLevel.DeepTrace, `Thermostat Update: ID: ${idSplit.join('.')} JSON: ${JSON.stringify(state)}`);
13
16
  super.update(idSplit, state, initial, true);
17
+ switch (idSplit[3]) {
18
+ case '0':
19
+ switch (idSplit[4]) {
20
+ case 'OPERATING_VOLTAGE':
21
+ this.battery = (state.val - 1.8) / 1.2;
22
+ break;
23
+ }
24
+ break;
25
+ }
14
26
  }
15
27
  }
16
28
  exports.HmIpTherm = HmIpTherm;
@@ -22,12 +22,6 @@ class ZigbeeDevice extends IoBrokerBaseDevice_1.IoBrokerBaseDevice {
22
22
  this.log(models_1.LogLevel.Debug, `Das Zigbee Gerät ist nicht erreichbar.`);
23
23
  }
24
24
  break;
25
- case 'battery':
26
- this.battery = state.val;
27
- if (this.battery < 20) {
28
- this.log(models_1.LogLevel.Alert, `Das Zigbee Gerät hat unter 20% Batterie.`);
29
- }
30
- break;
31
25
  case 'link_quality':
32
26
  this.linkQuality = state.val;
33
27
  if (this.linkQuality < 5) {
@@ -3,7 +3,9 @@ import { DeviceType } from '../../deviceType';
3
3
  import { ZigbeeDevice } from './zigbeeDevice';
4
4
  import { MagnetPosition } from '../../models';
5
5
  import { IoBrokerDeviceInfo } from '../../IoBrokerDeviceInfo';
6
- export declare class ZigbeeMagnetContact extends ZigbeeDevice {
6
+ import { iBatteryDevice } from '../../baseDeviceInterfaces';
7
+ export declare class ZigbeeMagnetContact extends ZigbeeDevice implements iBatteryDevice {
8
+ battery: number;
7
9
  position: MagnetPosition;
8
10
  telegramOnOpen: boolean;
9
11
  speakOnOpen: boolean;
@@ -8,6 +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
12
  this.position = models_2.MagnetPosition.closed;
12
13
  this.telegramOnOpen = false;
13
14
  this.speakOnOpen = false;
@@ -23,6 +24,14 @@ class ZigbeeMagnetContact extends zigbeeDevice_1.ZigbeeDevice {
23
24
  }
24
25
  update(idSplit, state, initial = false, pOverrride = false) {
25
26
  super.update(idSplit, state, initial, pOverrride);
27
+ switch (idSplit[3]) {
28
+ case 'battery':
29
+ this.battery = state.val;
30
+ if (this.battery < 20) {
31
+ this.log(models_1.LogLevel.Warn, `Das Zigbee Gerät hat unter 20% Batterie.`);
32
+ }
33
+ break;
34
+ }
26
35
  }
27
36
  updatePosition(pValue) {
28
37
  if (pValue === this.position) {
@@ -3,11 +3,12 @@
3
3
  import { DeviceType } from '../../deviceType';
4
4
  import { ZigbeeDevice } from './index';
5
5
  import { MotionSensorSettings } from '../../../../models';
6
- import { iMotionSensor } from '../../baseDeviceInterfaces';
6
+ import { iBatteryDevice, iMotionSensor } from '../../baseDeviceInterfaces';
7
7
  import { IoBrokerDeviceInfo } from '../../IoBrokerDeviceInfo';
8
- export declare class ZigbeeMotionSensor extends ZigbeeDevice implements iMotionSensor {
8
+ export declare class ZigbeeMotionSensor extends ZigbeeDevice implements iMotionSensor, iBatteryDevice {
9
9
  settings: MotionSensorSettings;
10
10
  movementDetected: boolean;
11
+ battery: number;
11
12
  protected _initialized: boolean;
12
13
  protected _movementDetectedCallback: Array<(pValue: boolean) => void>;
13
14
  protected _needsMovementResetFallback: boolean;
@@ -11,12 +11,14 @@ class ZigbeeMotionSensor extends index_1.ZigbeeDevice {
11
11
  super(pInfo, type);
12
12
  this.settings = new models_1.MotionSensorSettings();
13
13
  this.movementDetected = false;
14
+ this.battery = -99;
14
15
  this._initialized = false;
15
16
  this._movementDetectedCallback = [];
16
17
  this._needsMovementResetFallback = true;
17
18
  this._timeSinceLastMotion = 0;
18
19
  this._detectionsToday = 0;
19
20
  this.deviceCapabilities.push(DeviceCapability_1.DeviceCapability.motionSensor);
21
+ this.deviceCapabilities.push(DeviceCapability_1.DeviceCapability.batteryDriven);
20
22
  (_a = services_1.Utils.dbo) === null || _a === void 0 ? void 0 : _a.getCount(this).then((todayCount) => {
21
23
  this.detectionsToday = todayCount.counter;
22
24
  this.log(models_1.LogLevel.Debug, `Preinitialized movement counter with ${this.detectionsToday}`);
@@ -79,6 +81,12 @@ class ZigbeeMotionSensor extends index_1.ZigbeeDevice {
79
81
  this.log(models_1.LogLevel.DeepTrace, `Motion update: ID: ${idSplit.join('.')} JSON: ${JSON.stringify(state)}`);
80
82
  super.update(idSplit, state, initial, pOverride);
81
83
  switch (idSplit[3]) {
84
+ case 'battery':
85
+ this.battery = state.val;
86
+ if (this.battery < 20) {
87
+ this.log(models_1.LogLevel.Warn, `Das Zigbee Gerät hat unter 20% Batterie.`);
88
+ }
89
+ break;
82
90
  case 'occupancy':
83
91
  this.log(models_1.LogLevel.Trace, `Motion sensor: Update for motion state of ${this.info.customName}: ${state.val}`);
84
92
  this.updateMovement(state.val);
@@ -5,6 +5,7 @@ import { DeviceType } from '../../deviceType';
5
5
  import { Button } from '../../button';
6
6
  import { IoBrokerDeviceInfo } from '../../IoBrokerDeviceInfo';
7
7
  export declare abstract class ZigbeeSwitch extends ZigbeeDevice implements iButtonSwitch {
8
+ battery: number;
8
9
  abstract buttonBot: Button | undefined;
9
10
  abstract buttonBotLeft: Button | undefined;
10
11
  abstract buttonBotRight: Button | undefined;
@@ -2,12 +2,24 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ZigbeeSwitch = void 0;
4
4
  const zigbeeDevice_1 = require("./zigbeeDevice");
5
+ const DeviceCapability_1 = require("../../DeviceCapability");
6
+ const models_1 = require("../../../../models");
5
7
  class ZigbeeSwitch extends zigbeeDevice_1.ZigbeeDevice {
6
8
  constructor(pInfo, deviceType) {
7
9
  super(pInfo, deviceType);
10
+ this.battery = -99;
11
+ this.deviceCapabilities.push(DeviceCapability_1.DeviceCapability.batteryDriven);
8
12
  }
9
13
  update(idSplit, state, initial = false, pOverrride = false) {
10
14
  super.update(idSplit, state, initial, pOverrride);
15
+ switch (idSplit[3]) {
16
+ case 'battery':
17
+ this.battery = state.val;
18
+ if (this.battery < 20) {
19
+ this.log(models_1.LogLevel.Warn, `Das Zigbee Gerät hat unter 20% Batterie.`);
20
+ }
21
+ break;
22
+ }
11
23
  }
12
24
  }
13
25
  exports.ZigbeeSwitch = ZigbeeSwitch;
@@ -1,8 +1,9 @@
1
1
  /// <reference types="iobroker" />
2
- import { iVibrationSensor } from '../baseDeviceInterfaces';
2
+ import { iBatteryDevice, iVibrationSensor } from '../baseDeviceInterfaces';
3
3
  import { ZigbeeDevice } from './BaseDevices';
4
4
  import { IoBrokerDeviceInfo } from '../IoBrokerDeviceInfo';
5
- export declare class ZigbeeAquaraVibra extends ZigbeeDevice implements iVibrationSensor {
5
+ export declare class ZigbeeAquaraVibra extends ZigbeeDevice implements iVibrationSensor, iBatteryDevice {
6
+ battery: number;
6
7
  sensitivity: string;
7
8
  tiltAngle: number;
8
9
  tiltAngleX: number;
@@ -9,6 +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
13
  this.sensitivity = '';
13
14
  this.tiltAngle = 0;
14
15
  this.tiltAngleX = 0;
@@ -24,6 +25,7 @@ class ZigbeeAquaraVibra extends BaseDevices_1.ZigbeeDevice {
24
25
  // TODO Set Sensitivity
25
26
  this._vibrationBlockedByGriff = false;
26
27
  this._vibrationBlockedByMotion = false;
28
+ this.deviceCapabilities.push(DeviceCapability_1.DeviceCapability.batteryDriven);
27
29
  this.deviceCapabilities.push(DeviceCapability_1.DeviceCapability.vibrationSensor);
28
30
  this._alarmMessage = services_1.Res.vibrationAlarm(this.info.customName);
29
31
  services_1.PollyService.preloadTTS(this._alarmMessage);
@@ -53,6 +55,12 @@ class ZigbeeAquaraVibra extends BaseDevices_1.ZigbeeDevice {
53
55
  this.log(models_1.LogLevel.DeepTrace, `Stecker Update: ID: ${idSplit.join('.')} JSON: ${JSON.stringify(state)}`);
54
56
  super.update(idSplit, state, initial, true);
55
57
  switch (idSplit[3]) {
58
+ case 'battery':
59
+ this.battery = state.val;
60
+ if (this.battery < 20) {
61
+ this.log(models_1.LogLevel.Warn, `Das Zigbee Gerät hat unter 20% Batterie.`);
62
+ }
63
+ break;
56
64
  case 'sensitivity':
57
65
  this.log(initial ? models_1.LogLevel.DeepTrace : models_1.LogLevel.Trace, `Vibrationssensor Update für ${this.info.customName} auf Sensitivity: ${state.val}`);
58
66
  this.tiltAngleZ = state.val;
@@ -2,7 +2,9 @@
2
2
  /// <reference types="iobroker" />
3
3
  import { ZigbeeDevice } from './BaseDevices';
4
4
  import { IoBrokerDeviceInfo } from '../IoBrokerDeviceInfo';
5
- export declare class ZigbeeAquaraWater extends ZigbeeDevice {
5
+ import { iBatteryDevice } from '../baseDeviceInterfaces';
6
+ export declare class ZigbeeAquaraWater extends ZigbeeDevice implements iBatteryDevice {
7
+ battery: number;
6
8
  water: boolean;
7
9
  iAlarmTimeout: NodeJS.Timeout | undefined;
8
10
  private _messageAlarmFirst;
@@ -5,9 +5,11 @@ const deviceType_1 = require("../deviceType");
5
5
  const services_1 = require("../../services");
6
6
  const BaseDevices_1 = require("./BaseDevices");
7
7
  const models_1 = require("../../../models");
8
+ const DeviceCapability_1 = require("../DeviceCapability");
8
9
  class ZigbeeAquaraWater extends BaseDevices_1.ZigbeeDevice {
9
10
  constructor(pInfo) {
10
11
  super(pInfo, deviceType_1.DeviceType.ZigbeeAquaraWater);
12
+ this.battery = -99;
11
13
  this.water = false;
12
14
  this.iAlarmTimeout = undefined;
13
15
  this._messageAlarmFirst = '';
@@ -15,6 +17,7 @@ class ZigbeeAquaraWater extends BaseDevices_1.ZigbeeDevice {
15
17
  this._messageAlarmEnd = '';
16
18
  this._supressAlarmTimeStamp = 0;
17
19
  this._roomName = '';
20
+ this.deviceCapabilities.push(DeviceCapability_1.DeviceCapability.batteryDriven);
18
21
  this._messageAlarmFirst = services_1.Res.waterAlarmStart(this.info.customName, this._roomName);
19
22
  this._messageAlarm = services_1.Res.waterAlarmRepeat(this.info.customName, this._roomName);
20
23
  this._messageAlarmEnd = services_1.Res.waterAlarmEnd(this._roomName);
@@ -32,6 +35,12 @@ class ZigbeeAquaraWater extends BaseDevices_1.ZigbeeDevice {
32
35
  this.log(models_1.LogLevel.DeepTrace, `Water Update: ID: ${idSplit.join('.')} JSON: ${JSON.stringify(state)}`);
33
36
  super.update(idSplit, state, initial, true);
34
37
  switch (idSplit[3]) {
38
+ case 'battery':
39
+ this.battery = state.val;
40
+ if (this.battery < 20) {
41
+ this.log(models_1.LogLevel.Warn, `Das Zigbee Gerät hat unter 20% Batterie.`);
42
+ }
43
+ break;
35
44
  case 'detected':
36
45
  this.log(models_1.LogLevel.Debug, `Wasser Update für ${this.info.customName} auf Wasser: ${state.val}`);
37
46
  const newVal = state.val === true;
@@ -2,7 +2,9 @@
2
2
  /// <reference types="iobroker" />
3
3
  import { ZigbeeDevice } from './BaseDevices';
4
4
  import { IoBrokerDeviceInfo } from '../IoBrokerDeviceInfo';
5
- export declare class ZigbeeHeimanSmoke extends ZigbeeDevice {
5
+ import { iBatteryDevice } from '../baseDeviceInterfaces';
6
+ export declare class ZigbeeHeimanSmoke extends ZigbeeDevice implements iBatteryDevice {
7
+ battery: number;
6
8
  smoke: boolean;
7
9
  iAlarmTimeout: NodeJS.Timeout | undefined;
8
10
  private _messageAlarmFirst;
@@ -5,15 +5,18 @@ const deviceType_1 = require("../deviceType");
5
5
  const services_1 = require("../../services");
6
6
  const BaseDevices_1 = require("./BaseDevices");
7
7
  const models_1 = require("../../../models");
8
+ const DeviceCapability_1 = require("../DeviceCapability");
8
9
  class ZigbeeHeimanSmoke extends BaseDevices_1.ZigbeeDevice {
9
10
  constructor(pInfo) {
10
11
  super(pInfo, deviceType_1.DeviceType.ZigbeeHeimanSmoke);
12
+ this.battery = -99;
11
13
  this.smoke = false;
12
14
  this.iAlarmTimeout = undefined;
13
15
  this._messageAlarmFirst = '';
14
16
  this._messageAlarm = '';
15
17
  this._messageAlarmEnd = '';
16
18
  this._roomName = '';
19
+ this.deviceCapabilities.push(DeviceCapability_1.DeviceCapability.batteryDriven);
17
20
  this._messageAlarmFirst = services_1.Res.fireAlarmStart(this._roomName, this.info.customName);
18
21
  this._messageAlarm = services_1.Res.fireAlarmRepeat(this._roomName, this.info.customName);
19
22
  this._messageAlarmEnd = services_1.Res.fireAlarmEnd(this._roomName);
@@ -31,6 +34,12 @@ class ZigbeeHeimanSmoke extends BaseDevices_1.ZigbeeDevice {
31
34
  this.log(models_1.LogLevel.DeepTrace, `Smoke Update: ID: ${idSplit.join('.')} JSON: ${JSON.stringify(state)}`);
32
35
  super.update(idSplit, state, initial, true);
33
36
  switch (idSplit[3]) {
37
+ case 'battery':
38
+ this.battery = state.val;
39
+ if (this.battery < 20) {
40
+ this.log(models_1.LogLevel.Warn, `Das Zigbee Gerät hat unter 20% Batterie.`);
41
+ }
42
+ break;
34
43
  case 'smoke':
35
44
  this.log(models_1.LogLevel.Debug, `Smoke Update für ${this.info.customName} auf Rauch: ${state.val}`);
36
45
  const newVal = state.val === true;
@@ -1,8 +1,9 @@
1
1
  /// <reference types="iobroker" />
2
2
  import { ZigbeeDevice } from './BaseDevices';
3
- import { iHumiditySensor, iTemperatureSensor } from '../baseDeviceInterfaces';
3
+ import { iBatteryDevice, iHumiditySensor, iTemperatureSensor } from '../baseDeviceInterfaces';
4
4
  import { IoBrokerDeviceInfo } from '../IoBrokerDeviceInfo';
5
- export declare class ZigbeeSonoffTemp extends ZigbeeDevice implements iTemperatureSensor, iHumiditySensor {
5
+ export declare class ZigbeeSonoffTemp extends ZigbeeDevice implements iTemperatureSensor, iHumiditySensor, iBatteryDevice {
6
+ battery: number;
6
7
  private _humidityCallbacks;
7
8
  private _temperaturCallbacks;
8
9
  constructor(pInfo: IoBrokerDeviceInfo);