hoffmation-base 0.1.39 → 0.1.41-10

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 (46) hide show
  1. package/lib/models/deviceSettings/actuatorSettings.d.ts +11 -0
  2. package/lib/models/deviceSettings/actuatorSettings.js +11 -0
  3. package/lib/models/deviceSettings/shutterSettings.d.ts +6 -0
  4. package/lib/models/deviceSettings/shutterSettings.js +6 -0
  5. package/lib/models/rooms/RoomSettings/RoomSettings.js +1 -0
  6. package/lib/models/timeCallback.js +2 -2
  7. package/lib/server/devices/device-cluster.d.ts +1 -1
  8. package/lib/server/devices/device-cluster.js +3 -2
  9. package/lib/server/devices/deviceType.d.ts +1 -0
  10. package/lib/server/devices/deviceType.js +1 -0
  11. package/lib/server/devices/devices.d.ts +4 -5
  12. package/lib/server/devices/devices.js +78 -102
  13. package/lib/server/devices/groups/lampenGroup.d.ts +3 -4
  14. package/lib/server/devices/groups/lampenGroup.js +15 -15
  15. package/lib/server/devices/hmIPDevices/hmIpLampe.d.ts +5 -14
  16. package/lib/server/devices/hmIPDevices/hmIpLampe.js +38 -33
  17. package/lib/server/devices/iEnergyManager.d.ts +19 -0
  18. package/lib/server/devices/iEnergyManager.js +28 -0
  19. package/lib/server/devices/iLamp.d.ts +11 -4
  20. package/lib/server/devices/jsObject/jsObjectEnergyManager.d.ts +38 -11
  21. package/lib/server/devices/jsObject/jsObjectEnergyManager.js +98 -40
  22. package/lib/server/devices/zigbee/index.d.ts +1 -0
  23. package/lib/server/devices/zigbee/index.js +1 -0
  24. package/lib/server/devices/zigbee/zigbeeIlluDimmer.d.ts +5 -0
  25. package/lib/server/devices/zigbee/zigbeeIlluDimmer.js +5 -0
  26. package/lib/server/devices/zigbee/zigbeeIlluLampe.d.ts +4 -3
  27. package/lib/server/devices/zigbee/zigbeeIlluLampe.js +33 -11
  28. package/lib/server/devices/zigbee/zigbeeIlluShutter.d.ts +0 -2
  29. package/lib/server/devices/zigbee/zigbeeIlluShutter.js +26 -24
  30. package/lib/server/devices/zigbee/zigbeeShutter.d.ts +5 -3
  31. package/lib/server/devices/zigbee/zigbeeShutter.js +30 -22
  32. package/lib/server/devices/zigbee/zigbeeUbisysShutter.d.ts +9 -0
  33. package/lib/server/devices/zigbee/zigbeeUbisysShutter.js +26 -0
  34. package/lib/server/services/ShutterService.d.ts +1 -2
  35. package/lib/server/services/ShutterService.js +6 -5
  36. package/lib/server/services/Telegram/telegram-Commands.js +27 -24
  37. package/lib/server/services/calendar/m/303/274ll-service.d.ts +4 -4
  38. package/lib/server/services/calendar/m/303/274ll-service.js +18 -14
  39. package/lib/server/services/dbo/postgreSqlPersist.d.ts +9 -9
  40. package/lib/server/services/dbo/postgreSqlPersist.js +14 -14
  41. package/lib/server/services/room-service/room-service.d.ts +4 -5
  42. package/lib/server/services/room-service/room-service.js +29 -30
  43. package/lib/server/services/time-callback-service.d.ts +4 -4
  44. package/lib/server/services/time-callback-service.js +14 -12
  45. package/lib/tsconfig.tsbuildinfo +1 -1
  46. package/package.json +12 -12
@@ -3,4 +3,15 @@ export declare class ActuatorSettings extends DeviceSettings {
3
3
  dawnOn: boolean;
4
4
  duskOn: boolean;
5
5
  nightOn: boolean;
6
+ /**
7
+ * Indicates if this device controls e.g. an Eltako, which has it's own Turn Off Time logic.
8
+ * @type {boolean}
9
+ */
10
+ isStromStoss: boolean;
11
+ /**
12
+ * If this is an Actuator controling a time based relais,
13
+ * this indicates the time after which we retrigger the relais.
14
+ * @type {number}
15
+ */
16
+ stromStossResendTime: number;
6
17
  }
@@ -8,6 +8,17 @@ class ActuatorSettings extends deviceSettings_1.DeviceSettings {
8
8
  this.dawnOn = true;
9
9
  this.duskOn = true;
10
10
  this.nightOn = true;
11
+ /**
12
+ * Indicates if this device controls e.g. an Eltako, which has it's own Turn Off Time logic.
13
+ * @type {boolean}
14
+ */
15
+ this.isStromStoss = false;
16
+ /**
17
+ * If this is an Actuator controling a time based relais,
18
+ * this indicates the time after which we retrigger the relais.
19
+ * @type {number}
20
+ */
21
+ this.stromStossResendTime = 180;
11
22
  }
12
23
  }
13
24
  exports.ActuatorSettings = ActuatorSettings;
@@ -2,4 +2,10 @@ import { DeviceSettings } from './deviceSettings';
2
2
  export declare class ShutterSettings extends DeviceSettings {
3
3
  msTilTop: number;
4
4
  msTilBot: number;
5
+ /**
6
+ * Some shutter give no position feedback on their own, so by knowing the durations in either direction,
7
+ * we can programmatically trigger the callbacks.
8
+ * @type {boolean}
9
+ */
10
+ triggerPositionUpdateByTime: boolean;
5
11
  }
@@ -7,6 +7,12 @@ class ShutterSettings extends deviceSettings_1.DeviceSettings {
7
7
  super(...arguments);
8
8
  this.msTilTop = -1;
9
9
  this.msTilBot = -1;
10
+ /**
11
+ * Some shutter give no position feedback on their own, so by knowing the durations in either direction,
12
+ * we can programmatically trigger the callbacks.
13
+ * @type {boolean}
14
+ */
15
+ this.triggerPositionUpdateByTime = false;
10
16
  }
11
17
  }
12
18
  exports.ShutterSettings = ShutterSettings;
@@ -76,6 +76,7 @@ class RoomSettings {
76
76
  }
77
77
  set sonnenUntergangRolloDelay(value) {
78
78
  this._sonnenUntergangRolloDelay = value;
79
+ this.recalcRolloOffset();
79
80
  }
80
81
  get movementResetTimer() {
81
82
  return this._movementResetTimer;
@@ -42,7 +42,7 @@ class TimeCallback {
42
42
  case TimeCallbackType.Sunrise:
43
43
  let fixedSRDate = new Date(time_callback_service_1.TimeCallbackService.nextSunRise.getTime() + this.minuteOffset * 60 * 1000);
44
44
  if (this.sunTimeOffset) {
45
- const nextMinSR = this.sunTimeOffset.getNextMinimumSunrise();
45
+ const nextMinSR = this.sunTimeOffset.getNextMinimumSunrise(now);
46
46
  if (nextMinSR > fixedSRDate && fixedSRDate.getDate() === nextMinSR.getDate()) {
47
47
  fixedSRDate = nextMinSR;
48
48
  }
@@ -56,7 +56,7 @@ class TimeCallback {
56
56
  case TimeCallbackType.SunSet:
57
57
  let fixedSSDate = new Date(time_callback_service_1.TimeCallbackService.nextSunSet.getTime() + this.minuteOffset * 60 * 1000);
58
58
  if (this.sunTimeOffset) {
59
- const nextMaxSS = this.sunTimeOffset.getNextMaximumSunset();
59
+ const nextMaxSS = this.sunTimeOffset.getNextMaximumSunset(now);
60
60
  if (nextMaxSS < fixedSSDate && fixedSSDate.getDate() === nextMaxSS.getDate()) {
61
61
  fixedSSDate = nextMaxSS;
62
62
  }
@@ -1,7 +1,7 @@
1
1
  import { DeviceClusterType } from './device-cluster-type';
2
2
  import { DeviceList } from './device-list';
3
3
  import { IoBrokerBaseDevice } from './IoBrokerBaseDevice';
4
- import { OwnSonosDevice } from '../services/Sonos/sonos-service';
4
+ import { OwnSonosDevice } from '../services';
5
5
  export declare class DeviceCluster {
6
6
  deviceMap: Map<DeviceClusterType, DeviceList>;
7
7
  constructor(deviceMap?: Map<DeviceClusterType, DeviceList>);
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.DeviceCluster = void 0;
7
7
  const device_cluster_type_1 = require("./device-cluster-type");
8
8
  const device_list_1 = require("./device-list");
9
- const utils_1 = require("../services/utils/utils");
9
+ const services_1 = require("../services");
10
10
  const lodash_1 = __importDefault(require("lodash"));
11
11
  const deviceType_1 = require("./deviceType");
12
12
  class DeviceCluster {
@@ -39,6 +39,7 @@ class DeviceCluster {
39
39
  break;
40
40
  case deviceType_1.DeviceType.HmIpRoll:
41
41
  case deviceType_1.DeviceType.ZigbeeIlluShutter:
42
+ case deviceType_1.DeviceType.ZigbeeUbisysShutter:
42
43
  clusterTypes.push(device_cluster_type_1.DeviceClusterType.Shutter);
43
44
  break;
44
45
  case deviceType_1.DeviceType.ZigbeeSonoffTemp:
@@ -109,7 +110,7 @@ class DeviceCluster {
109
110
  }
110
111
  }
111
112
  toJSON() {
112
- const result = utils_1.Utils.jsonFilter(this);
113
+ const result = services_1.Utils.jsonFilter(this);
113
114
  result.deviceDict = Object.fromEntries(this.deviceMap);
114
115
  return lodash_1.default.omit(result, [`deviceMap`]);
115
116
  }
@@ -29,6 +29,7 @@ export declare enum DeviceType {
29
29
  ZigbeeAqaraMagnetContact = 215,
30
30
  ZigbeeSonoffTemp = 216,
31
31
  ZigbeeAqaraOpple3Switch = 217,
32
+ ZigbeeUbisysShutter = 218,
32
33
  JsEnergyManager = 301,
33
34
  Wled = 1001
34
35
  }
@@ -33,6 +33,7 @@ var DeviceType;
33
33
  DeviceType[DeviceType["ZigbeeAqaraMagnetContact"] = 215] = "ZigbeeAqaraMagnetContact";
34
34
  DeviceType[DeviceType["ZigbeeSonoffTemp"] = 216] = "ZigbeeSonoffTemp";
35
35
  DeviceType[DeviceType["ZigbeeAqaraOpple3Switch"] = 217] = "ZigbeeAqaraOpple3Switch";
36
+ DeviceType[DeviceType["ZigbeeUbisysShutter"] = 218] = "ZigbeeUbisysShutter";
36
37
  DeviceType[DeviceType["JsEnergyManager"] = 301] = "JsEnergyManager";
37
38
  DeviceType[DeviceType["Wled"] = 1001] = "Wled";
38
39
  })(DeviceType = exports.DeviceType || (exports.DeviceType = {}));
@@ -1,6 +1,5 @@
1
- import { deviceConfig } from '../../models/deviceConfig';
1
+ import { deviceConfig, iRoomImportEnforcer } from '../../models';
2
2
  import { IoBrokerBaseDevice } from './IoBrokerBaseDevice';
3
- import { iRoomImportEnforcer } from '../../models/rooms/iRoomImportEnforcer';
4
3
  import { iEnergyManager } from './iEnergyManager';
5
4
  export declare class Devices {
6
5
  static IDENTIFIER_HOMEMATIC: string;
@@ -15,8 +14,8 @@ export declare class Devices {
15
14
  }, pRoomImportEnforcer?: iRoomImportEnforcer);
16
15
  static midnightReset(): void;
17
16
  static resetPraesenzCount(): void;
18
- private processZigbeeDevice;
19
- private processHMIPDevice;
20
17
  static getBatteryInfo(): string;
21
- private createEnergyManager;
18
+ private static processZigbeeDevice;
19
+ private static processHMIPDevice;
20
+ private static createEnergyManager;
22
21
  }
@@ -1,46 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Devices = void 0;
4
- const hmIpDevice_1 = require("./hmIPDevices/hmIpDevice");
5
- const zigbeeDevice_1 = require("./zigbee/zigbeeDevice");
4
+ const models_1 = require("../../models");
5
+ const hmIPDevices_1 = require("./hmIPDevices");
6
+ const zigbee_1 = require("./zigbee");
6
7
  const deviceType_1 = require("./deviceType");
7
- const hmIpPraezenz_1 = require("./hmIPDevices/hmIpPraezenz");
8
- const log_service_1 = require("../services/log-service/log-service");
8
+ const services_1 = require("../services");
9
9
  const DeviceInfo_1 = require("./DeviceInfo");
10
- const logLevel_1 = require("../../models/logLevel");
11
- const hmIpBewegung_1 = require("./hmIPDevices/hmIpBewegung");
12
- const zigbeeAquaraVibra_1 = require("./zigbee/zigbeeAquaraVibra");
13
- const zigbeeAquaraMotion_1 = require("./zigbee/zigbeeAquaraMotion");
14
- const zigbeeIkeaSteckdose_1 = require("./zigbee/zigbeeIkeaSteckdose");
15
- const zigbeeIlluLedRGBCCT_1 = require("./zigbee/zigbeeIlluLedRGBCCT");
16
- const zigbeeIlluDimmer_1 = require("./zigbee/zigbeeIlluDimmer");
17
- const zigbeeHeimanSmoke_1 = require("./zigbee/zigbeeHeimanSmoke");
18
- const zigbeeAquaraWater_1 = require("./zigbee/zigbeeAquaraWater");
19
- const zigbeeBlitzShp_1 = require("./zigbee/zigbeeBlitzShp");
20
- const zigbeeIlluLampe_1 = require("./zigbee/zigbeeIlluLampe");
21
- const zigbeeIlluActuator_1 = require("./zigbee/zigbeeIlluActuator");
22
- const hmIpLampe_1 = require("./hmIPDevices/hmIpLampe");
23
- const hmIpRoll_1 = require("./hmIPDevices/hmIpRoll");
24
- const hmIpTaster_1 = require("./hmIPDevices/hmIpTaster");
25
- const hmIpWippe_1 = require("./hmIPDevices/hmIpWippe");
26
- const hmIpGriff_1 = require("./hmIPDevices/hmIpGriff");
27
- const hmIpTherm_1 = require("./hmIPDevices/hmIpTherm");
28
- const hmIpHeizung_1 = require("./hmIPDevices/hmIpHeizung");
29
- const hmIpTuer_1 = require("./hmIPDevices/hmIpTuer");
30
- const hmIpHeizgruppe_1 = require("./hmIPDevices/hmIpHeizgruppe");
31
- const zigbeeIlluShutter_1 = require("./zigbee/zigbeeIlluShutter");
32
- const zigbeeSMaBiTMagnetContact_1 = require("./zigbee/zigbeeSMaBiTMagnetContact");
33
- const zigbeeSonoffMotion_1 = require("./zigbee/zigbeeSonoffMotion");
34
- const hmIpAccessPoint_1 = require("./hmIPDevices/hmIpAccessPoint");
35
- const zigbeeAqaraMagnetContact_1 = require("./zigbee/zigbeeAqaraMagnetContact");
36
- const zigbeeSonoffTemp_1 = require("./zigbee/zigbeeSonoffTemp");
37
- const zigbeeAqaraOpple3Switch_1 = require("./zigbee/zigbeeAqaraOpple3Switch");
38
- const jsObjectEnergyManager_1 = require("./jsObject/jsObjectEnergyManager");
10
+ const jsObject_1 = require("./jsObject");
11
+ const zigbeeUbisysShutter_1 = require("./zigbee/zigbeeUbisysShutter");
39
12
  class Devices {
40
13
  constructor(pDeviceData, pRoomImportEnforcer) {
41
14
  // This forces import of rooms at correct timing, to allow devices to land in proper rooms.
42
15
  pRoomImportEnforcer === null || pRoomImportEnforcer === void 0 ? void 0 : pRoomImportEnforcer.addRoomConstructor();
43
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Info, `Constructing devices now`);
16
+ services_1.ServerLogService.writeLog(models_1.LogLevel.Info, `Constructing devices now`);
44
17
  for (const cID in pDeviceData) {
45
18
  const cDevConf = pDeviceData[cID];
46
19
  if (!cDevConf.common ||
@@ -52,182 +25,185 @@ class Devices {
52
25
  }
53
26
  const cName = cDevConf.common.name;
54
27
  if (cName.indexOf('00-HmIP') === 0) {
55
- this.processHMIPDevice(cDevConf);
28
+ Devices.processHMIPDevice(cDevConf);
56
29
  }
57
30
  else if (cName.indexOf('00-Zigbee') === 0) {
58
- this.processZigbeeDevice(cDevConf);
31
+ Devices.processZigbeeDevice(cDevConf);
59
32
  }
60
33
  else if (cName.indexOf('00-EnergyManager') === 0) {
61
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Info, `Found Energy-Manager in Device json.`);
62
- this.createEnergyManager(cDevConf);
34
+ services_1.ServerLogService.writeLog(models_1.LogLevel.Info, `Found Energy-Manager in Device json.`);
35
+ Devices.createEnergyManager(cDevConf);
63
36
  }
64
37
  }
65
- hmIpDevice_1.HmIPDevice.checkMissing();
66
- zigbeeDevice_1.ZigbeeDevice.checkMissing();
38
+ hmIPDevices_1.HmIPDevice.checkMissing();
39
+ zigbee_1.ZigbeeDevice.checkMissing();
67
40
  }
68
41
  static midnightReset() {
69
42
  // Nothing yet
70
43
  }
71
44
  static resetPraesenzCount() {
72
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Info, `3 Uhr Reset der Präsenzmelder`);
45
+ services_1.ServerLogService.writeLog(models_1.LogLevel.Info, `3 Uhr Reset der Präsenzmelder`);
73
46
  for (const dID in Devices.alLDevices) {
74
47
  const d = Devices.alLDevices[dID];
75
48
  if (d.deviceType === deviceType_1.DeviceType.HmIpPraezenz) {
76
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Debug, `2 Uhr Reset der Tages Detektionen von ${d.info.customName}`);
49
+ services_1.ServerLogService.writeLog(models_1.LogLevel.Debug, `2 Uhr Reset der Tages Detektionen von ${d.info.customName}`);
77
50
  d.detectionsToday = 0;
78
51
  }
79
52
  else if (d.deviceType === deviceType_1.DeviceType.HmIpBewegung) {
80
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Debug, `2 Uhr Reset der Tages Detektionen von ${d.info.customName}`);
53
+ services_1.ServerLogService.writeLog(models_1.LogLevel.Debug, `2 Uhr Reset der Tages Detektionen von ${d.info.customName}`);
81
54
  d.detectionsToday = 0;
82
55
  }
83
56
  else if (d.deviceType === deviceType_1.DeviceType.ZigbeeSonoffMotion || d.deviceType === deviceType_1.DeviceType.ZigbeeAquaraMotion) {
84
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Debug, `2 Uhr Reset der Tages Detektionen von ${d.info.customName}`);
57
+ services_1.ServerLogService.writeLog(models_1.LogLevel.Debug, `2 Uhr Reset der Tages Detektionen von ${d.info.customName}`);
85
58
  d.detectionsToday = 0;
86
59
  }
87
60
  }
88
61
  }
89
- processZigbeeDevice(cDevConf) {
62
+ static getBatteryInfo() {
63
+ services_1.ServerLogService.writeLog(models_1.LogLevel.Info, `Getting Battery Info`);
64
+ let data = [];
65
+ const result = [
66
+ `These are the battery values for each device. Device dependandt some are in volts, some in %`,
67
+ ];
68
+ for (const key in this.alLDevices) {
69
+ const d = this.alLDevices[key];
70
+ if (d.battery !== undefined) {
71
+ data.push({ name: d.info.customName, amount: d.battery });
72
+ }
73
+ }
74
+ data = data.sort((a, b) => {
75
+ return a.amount - b.amount;
76
+ });
77
+ for (let i = 0; i < data.length; i++) {
78
+ result.push(`${data[i].amount}\t${data[i].name}`);
79
+ }
80
+ return result.join('\n');
81
+ }
82
+ static processZigbeeDevice(cDevConf) {
90
83
  const zigbeeInfo = new DeviceInfo_1.DeviceInfo(cDevConf);
91
84
  const fullName = `${Devices.IDENTIFIER_ZIGBEE}-${zigbeeInfo.devID}`;
92
85
  zigbeeInfo.allDevicesKey = fullName;
93
86
  if (typeof Devices.alLDevices[fullName] !== 'undefined') {
94
87
  return;
95
88
  }
96
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Trace, `${zigbeeInfo.devID} with Type "${zigbeeInfo.deviceType}" doesn't exists --> create it`);
89
+ services_1.ServerLogService.writeLog(models_1.LogLevel.Trace, `${zigbeeInfo.devID} with Type "${zigbeeInfo.deviceType}" doesn't exists --> create it`);
97
90
  let d;
98
91
  switch (zigbeeInfo.deviceType) {
99
92
  case 'AqaraMagnetContact':
100
- d = new zigbeeAqaraMagnetContact_1.ZigbeeAqaraMagnetContact(zigbeeInfo);
93
+ d = new zigbee_1.ZigbeeAqaraMagnetContact(zigbeeInfo);
101
94
  break;
102
95
  case 'AqaraOpple3Switch':
103
- d = new zigbeeAqaraOpple3Switch_1.ZigbeeAqaraOpple3Switch(zigbeeInfo);
96
+ d = new zigbee_1.ZigbeeAqaraOpple3Switch(zigbeeInfo);
104
97
  break;
105
98
  case 'AquaraMotion':
106
- d = new zigbeeAquaraMotion_1.ZigbeeAquaraMotion(zigbeeInfo);
99
+ d = new zigbee_1.ZigbeeAquaraMotion(zigbeeInfo);
107
100
  break;
108
101
  case 'AquaraVibra':
109
- d = new zigbeeAquaraVibra_1.ZigbeeAquaraVibra(zigbeeInfo);
102
+ d = new zigbee_1.ZigbeeAquaraVibra(zigbeeInfo);
110
103
  break;
111
104
  case 'AquaraWater':
112
- d = new zigbeeAquaraWater_1.ZigbeeAquaraWater(zigbeeInfo);
105
+ d = new zigbee_1.ZigbeeAquaraWater(zigbeeInfo);
113
106
  break;
114
107
  case 'BlitzShp':
115
- d = new zigbeeBlitzShp_1.ZigbeeBlitzShp(zigbeeInfo);
108
+ d = new zigbee_1.ZigbeeBlitzShp(zigbeeInfo);
116
109
  break;
117
110
  case 'HeimanSmoke':
118
- d = new zigbeeHeimanSmoke_1.ZigbeeHeimanSmoke(zigbeeInfo);
111
+ d = new zigbee_1.ZigbeeHeimanSmoke(zigbeeInfo);
119
112
  break;
120
113
  case 'IkeaStecker':
121
- d = new zigbeeIkeaSteckdose_1.ZigbeeIkeaSteckdose(zigbeeInfo);
114
+ d = new zigbee_1.ZigbeeIkeaSteckdose(zigbeeInfo);
122
115
  break;
123
116
  case 'IlluActuator':
124
- d = new zigbeeIlluActuator_1.ZigbeeIlluActuator(zigbeeInfo);
117
+ d = new zigbee_1.ZigbeeIlluActuator(zigbeeInfo);
125
118
  break;
126
119
  case 'IlluDimmer':
127
- d = new zigbeeIlluDimmer_1.ZigbeeIlluDimmer(zigbeeInfo);
120
+ d = new zigbee_1.ZigbeeIlluDimmer(zigbeeInfo);
128
121
  break;
129
122
  case 'IlluLampe':
130
- d = new zigbeeIlluLampe_1.ZigbeeIlluLampe(zigbeeInfo);
123
+ d = new zigbee_1.ZigbeeIlluLampe(zigbeeInfo);
131
124
  break;
132
125
  case 'IlluShutter':
133
- d = new zigbeeIlluShutter_1.ZigbeeIlluShutter(zigbeeInfo);
126
+ d = new zigbee_1.ZigbeeIlluShutter(zigbeeInfo);
134
127
  break;
135
128
  case 'LedRGBCCT':
136
- d = new zigbeeIlluLedRGBCCT_1.ZigbeeIlluLedRGBCCT(zigbeeInfo);
129
+ d = new zigbee_1.ZigbeeIlluLedRGBCCT(zigbeeInfo);
137
130
  break;
138
131
  case 'SMaBiTMagnet':
139
- d = new zigbeeSMaBiTMagnetContact_1.ZigbeeSMaBiTMagnetContact(zigbeeInfo);
132
+ d = new zigbee_1.ZigbeeSMaBiTMagnetContact(zigbeeInfo);
140
133
  break;
141
134
  case 'SonoffMotion':
142
- d = new zigbeeSonoffMotion_1.ZigbeeSonoffMotion(zigbeeInfo);
135
+ d = new zigbee_1.ZigbeeSonoffMotion(zigbeeInfo);
143
136
  break;
144
137
  case 'SonoffTemp':
145
- d = new zigbeeSonoffTemp_1.ZigbeeSonoffTemp(zigbeeInfo);
138
+ d = new zigbee_1.ZigbeeSonoffTemp(zigbeeInfo);
139
+ break;
140
+ case 'UbisysShutter':
141
+ d = new zigbeeUbisysShutter_1.ZigbeeUbisysShutter(zigbeeInfo);
146
142
  break;
147
143
  default:
148
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Warn, `No zigbee Device Type for ${zigbeeInfo.deviceType} defined`);
149
- d = new zigbeeDevice_1.ZigbeeDevice(zigbeeInfo, deviceType_1.DeviceType.unknown);
144
+ services_1.ServerLogService.writeLog(models_1.LogLevel.Warn, `No zigbee Device Type for ${zigbeeInfo.deviceType} defined`);
145
+ d = new zigbee_1.ZigbeeDevice(zigbeeInfo, deviceType_1.DeviceType.unknown);
150
146
  }
151
147
  Devices.alLDevices[fullName] = d;
152
148
  }
153
- processHMIPDevice(cDevConf) {
149
+ static processHMIPDevice(cDevConf) {
154
150
  const hmIPInfo = new DeviceInfo_1.DeviceInfo(cDevConf);
155
151
  const fullName = `${Devices.IDENTIFIER_HOMEMATIC}-${hmIPInfo.devID}`;
156
152
  hmIPInfo.allDevicesKey = fullName;
157
153
  if (typeof Devices.alLDevices[fullName] !== 'undefined') {
158
154
  return;
159
155
  }
160
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Trace, `${hmIPInfo.devID} with Type "${hmIPInfo.deviceType}" doesn't exists --> create it`);
156
+ services_1.ServerLogService.writeLog(models_1.LogLevel.Trace, `${hmIPInfo.devID} with Type "${hmIPInfo.deviceType}" doesn't exists --> create it`);
161
157
  let d;
162
158
  switch (hmIPInfo.deviceType) {
163
159
  case 'Lampe':
164
- d = new hmIpLampe_1.HmIpLampe(hmIPInfo);
160
+ d = new hmIPDevices_1.HmIpLampe(hmIPInfo);
165
161
  break;
166
162
  case 'Roll':
167
163
  case 'Broll':
168
- d = new hmIpRoll_1.HmIpRoll(hmIPInfo);
164
+ d = new hmIPDevices_1.HmIpRoll(hmIPInfo);
169
165
  break;
170
166
  case 'Beweg':
171
- d = new hmIpBewegung_1.HmIpBewegung(hmIPInfo);
167
+ d = new hmIPDevices_1.HmIpBewegung(hmIPInfo);
172
168
  break;
173
169
  case 'Taster':
174
- d = new hmIpTaster_1.HmIpTaster(hmIPInfo);
170
+ d = new hmIPDevices_1.HmIpTaster(hmIPInfo);
175
171
  break;
176
172
  case 'Wippe':
177
- d = new hmIpWippe_1.HmIpWippe(hmIPInfo);
173
+ d = new hmIPDevices_1.HmIpWippe(hmIPInfo);
178
174
  break;
179
175
  case 'Praezenz':
180
- d = new hmIpPraezenz_1.HmIpPraezenz(hmIPInfo);
176
+ d = new hmIPDevices_1.HmIpPraezenz(hmIPInfo);
181
177
  break;
182
178
  case 'Griff':
183
- d = new hmIpGriff_1.HmIpGriff(hmIPInfo);
179
+ d = new hmIPDevices_1.HmIpGriff(hmIPInfo);
184
180
  break;
185
181
  case 'Thermostat':
186
- d = new hmIpTherm_1.HmIpTherm(hmIPInfo);
182
+ d = new hmIPDevices_1.HmIpTherm(hmIPInfo);
187
183
  break;
188
184
  case 'Heizung':
189
- d = new hmIpHeizung_1.HmIpHeizung(hmIPInfo);
185
+ d = new hmIPDevices_1.HmIpHeizung(hmIPInfo);
190
186
  break;
191
187
  case 'Tuer':
192
- d = new hmIpTuer_1.HmIpTuer(hmIPInfo);
188
+ d = new hmIPDevices_1.HmIpTuer(hmIPInfo);
193
189
  break;
194
190
  case 'HeizGr':
195
- d = new hmIpHeizgruppe_1.HmIpHeizgruppe(hmIPInfo);
191
+ d = new hmIPDevices_1.HmIpHeizgruppe(hmIPInfo);
196
192
  break;
197
193
  case 'AccessPoint':
198
- d = new hmIpAccessPoint_1.HmIpAccessPoint(hmIPInfo);
194
+ d = new hmIPDevices_1.HmIpAccessPoint(hmIPInfo);
199
195
  break;
200
196
  default:
201
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Warn, `No HmIP Device Type for ${hmIPInfo.deviceType} defined`);
202
- d = new hmIpDevice_1.HmIPDevice(hmIPInfo, deviceType_1.DeviceType.unknown);
197
+ services_1.ServerLogService.writeLog(models_1.LogLevel.Warn, `No HmIP Device Type for ${hmIPInfo.deviceType} defined`);
198
+ d = new hmIPDevices_1.HmIPDevice(hmIPInfo, deviceType_1.DeviceType.unknown);
203
199
  }
204
200
  Devices.alLDevices[fullName] = d;
205
201
  }
206
- static getBatteryInfo() {
207
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Info, `Getting Battery Info`);
208
- let data = [];
209
- const result = [
210
- `These are the battery values for each device. Device dependandt some are in volts, some in %`,
211
- ];
212
- for (const key in this.alLDevices) {
213
- const d = this.alLDevices[key];
214
- if (d.battery !== undefined) {
215
- data.push({ name: d.info.customName, amount: d.battery });
216
- }
217
- }
218
- data = data.sort((a, b) => {
219
- return a.amount - b.amount;
220
- });
221
- for (let i = 0; i < data.length; i++) {
222
- result.push(`${data[i].amount}\t${data[i].name}`);
223
- }
224
- return result.join('\n');
225
- }
226
- createEnergyManager(cDevConf) {
202
+ static createEnergyManager(cDevConf) {
227
203
  const devInfo = new DeviceInfo_1.DeviceInfo(cDevConf, true);
228
204
  const fullName = `${Devices.IDENTIFIER_JS}-${devInfo.devID}`;
229
205
  devInfo.allDevicesKey = fullName;
230
- Devices.energymanager = new jsObjectEnergyManager_1.JsObjectEnergyManager(devInfo);
206
+ Devices.energymanager = new jsObject_1.JsObjectEnergyManager(devInfo);
231
207
  Devices.alLDevices[fullName] = Devices.energymanager;
232
208
  }
233
209
  }
@@ -1,6 +1,5 @@
1
- import { ZigbeeIkeaSteckdose } from '../zigbee/zigbeeIkeaSteckdose';
2
- import { TimeOfDay } from '../../services/time-callback-service';
3
- import { ZigbeeIlluLedRGBCCT } from '../zigbee/zigbeeIlluLedRGBCCT';
1
+ import { ZigbeeIkeaSteckdose, ZigbeeIlluLedRGBCCT } from '../zigbee';
2
+ import { TimeOfDay } from '../../services';
4
3
  import { BaseGroup } from './base-group';
5
4
  import { iLamp } from '../iLamp';
6
5
  export declare class LampenGroup extends BaseGroup {
@@ -11,7 +10,7 @@ export declare class LampenGroup extends BaseGroup {
11
10
  getStecker(): ZigbeeIkeaSteckdose[];
12
11
  switchAll(target: boolean, force?: boolean): void;
13
12
  switchTimeConditional(time: TimeOfDay): void;
14
- setAllLampen(pValue: boolean, time?: TimeOfDay, force?: boolean): void;
13
+ setAllLampen(pValue: boolean, time?: TimeOfDay, force?: boolean, timeout?: number): void;
15
14
  setAllStecker(pValue: boolean, time?: TimeOfDay, force?: boolean): void;
16
15
  setAllLED(pValue: boolean, brightness?: number, color?: string, colortemp?: number): void;
17
16
  }
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.LampenGroup = void 0;
4
- const time_callback_service_1 = require("../../services/time-callback-service");
4
+ const services_1 = require("../../services");
5
5
  const base_group_1 = require("./base-group");
6
6
  const group_type_1 = require("./group-type");
7
7
  const device_cluster_type_1 = require("../device-cluster-type");
8
8
  const device_list_1 = require("../device-list");
9
- const logLevel_1 = require("../../../models/logLevel");
9
+ const models_1 = require("../../../models");
10
10
  class LampenGroup extends base_group_1.BaseGroup {
11
11
  constructor(roomName, lampenIds = [], steckerIds = [], ledIds = []) {
12
12
  super(roomName, group_type_1.GroupType.Light);
@@ -50,36 +50,36 @@ class LampenGroup extends base_group_1.BaseGroup {
50
50
  });
51
51
  }
52
52
  switchTimeConditional(time) {
53
- const darkOutside = time_callback_service_1.TimeCallbackService.darkOutsideOrNight(time);
53
+ const darkOutside = services_1.TimeCallbackService.darkOutsideOrNight(time);
54
54
  let resultLampen = false;
55
55
  let resultSteckdosen = false;
56
56
  if (this.getLED().length > 0) {
57
- this.log(logLevel_1.LogLevel.Trace, `Set LEDs time based for time "${time_callback_service_1.TimeOfDay[time]}"`);
57
+ this.log(models_1.LogLevel.Trace, `Set LEDs time based for time "${services_1.TimeOfDay[time]}"`);
58
58
  this.getLED().forEach((s) => {
59
59
  s.setTimeBased(time);
60
60
  });
61
61
  }
62
62
  else if (this.getStecker().length > 0) {
63
- this.log(logLevel_1.LogLevel.Trace, `Set outlets time based for time "${time_callback_service_1.TimeOfDay[time]}"`);
63
+ this.log(models_1.LogLevel.Trace, `Set outlets time based for time "${services_1.TimeOfDay[time]}"`);
64
64
  resultSteckdosen = darkOutside;
65
65
  }
66
66
  else {
67
- this.log(logLevel_1.LogLevel.Trace, `Set Lamps time based for time "${time_callback_service_1.TimeOfDay[time]}"`);
67
+ this.log(models_1.LogLevel.Trace, `Set Lamps time based for time "${services_1.TimeOfDay[time]}"`);
68
68
  resultLampen = darkOutside;
69
69
  }
70
70
  this.setAllLampen(resultLampen, time);
71
71
  this.setAllStecker(resultSteckdosen, time);
72
72
  }
73
- setAllLampen(pValue, time, force = false) {
73
+ setAllLampen(pValue, time, force = false, timeout) {
74
74
  this.getLampen().forEach((s) => {
75
75
  if (!pValue ||
76
76
  time === undefined ||
77
- (time === time_callback_service_1.TimeOfDay.Night && s.settings.nightOn) ||
78
- (time === time_callback_service_1.TimeOfDay.BeforeSunrise && s.settings.dawnOn) ||
79
- (time === time_callback_service_1.TimeOfDay.AfterSunset && s.settings.duskOn)) {
80
- const timeout = pValue && force ? 30 * 60 * 1000 : -1;
77
+ (time === services_1.TimeOfDay.Night && s.settings.nightOn) ||
78
+ (time === services_1.TimeOfDay.BeforeSunrise && s.settings.dawnOn) ||
79
+ (time === services_1.TimeOfDay.AfterSunset && s.settings.duskOn)) {
80
+ timeout !== null && timeout !== void 0 ? timeout : (timeout = pValue && force ? 30 * 60 * 1000 : -1);
81
81
  if (pValue && time !== undefined) {
82
- s.setTimeBased(time);
82
+ s.setTimeBased(time, timeout, force);
83
83
  }
84
84
  else {
85
85
  s.setLight(pValue, timeout, force);
@@ -91,9 +91,9 @@ class LampenGroup extends base_group_1.BaseGroup {
91
91
  this.getStecker().forEach((s) => {
92
92
  if (!pValue ||
93
93
  time === undefined ||
94
- (time === time_callback_service_1.TimeOfDay.Night && s.settings.nightOn) ||
95
- (time === time_callback_service_1.TimeOfDay.BeforeSunrise && s.settings.dawnOn) ||
96
- (time === time_callback_service_1.TimeOfDay.AfterSunset && s.settings.duskOn)) {
94
+ (time === services_1.TimeOfDay.Night && s.settings.nightOn) ||
95
+ (time === services_1.TimeOfDay.BeforeSunrise && s.settings.dawnOn) ||
96
+ (time === services_1.TimeOfDay.AfterSunset && s.settings.duskOn)) {
97
97
  const timeout = pValue && force ? 30 * 60 * 1000 : -1;
98
98
  s.setStecker(pValue, timeout, force);
99
99
  }
@@ -1,29 +1,20 @@
1
1
  /// <reference types="iobroker" />
2
2
  import { HmIPDevice } from './hmIpDevice';
3
- import { ActuatorSettings } from '../../../models/deviceSettings/actuatorSettings';
3
+ import { ActuatorSettings } from '../../../models';
4
4
  import { DeviceInfo } from '../DeviceInfo';
5
5
  import { iLamp } from '../iLamp';
6
- import { TimeOfDay } from '../../services/time-callback-service';
6
+ import { TimeOfDay } from '../../services';
7
7
  export declare class HmIpLampe extends HmIPDevice implements iLamp {
8
8
  lightOn: boolean;
9
9
  queuedLightValue: boolean | null;
10
- isStromStoss: boolean;
11
10
  settings: ActuatorSettings;
12
11
  private lightOnSwitchID;
13
12
  private _turnOffTimeout;
14
13
  private turnOffTime;
15
14
  constructor(pInfo: DeviceInfo);
16
15
  update(idSplit: string[], state: ioBroker.State, initial?: boolean): void;
17
- /**
18
- * This function thats the light to a specific value
19
- * @param pValue The desired value
20
- * @param timeout A chosen Timeout after which the light should be reset
21
- */
16
+ /** @inheritdoc */
22
17
  setLight(pValue: boolean, timeout?: number, force?: boolean): void;
23
- /**
24
- * Switch the current condition of the light
25
- * @param force Whether this is a forcing action skipping delays and locks
26
- */
27
- toggleLight(force?: boolean): boolean;
28
- setTimeBased(time: TimeOfDay): void;
18
+ toggleLight(time?: TimeOfDay, force?: boolean, calculateTime?: boolean): boolean;
19
+ setTimeBased(time: TimeOfDay, timeout?: number, force?: boolean): void;
29
20
  }