hoffmation-base 0.1.33-9 → 0.1.34-3

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 (123) hide show
  1. package/lib/models/rooms/RoomBase.d.ts +4 -0
  2. package/lib/models/rooms/RoomBase.js +25 -9
  3. package/lib/models/rooms/RoomSettings/RoomSettings.d.ts +3 -0
  4. package/lib/models/rooms/RoomSettings/RoomSettings.js +7 -0
  5. package/lib/models/rooms/RoomSettings/iRoomDefaultSettings.d.ts +5 -0
  6. package/lib/models/rooms/RoomSettings/roomAddDeviceItem.js +1 -1
  7. package/lib/models/rooms/RoomSettings/roomDeviceAddingSettings.js +1 -1
  8. package/lib/models/timeCallback.js +1 -1
  9. package/lib/server/devices/IoBrokerBaseDevice.d.ts +2 -0
  10. package/lib/server/devices/IoBrokerBaseDevice.js +8 -1
  11. package/lib/server/devices/device-cluster-type.d.ts +18 -14
  12. package/lib/server/devices/device-cluster-type.js +18 -14
  13. package/lib/server/devices/device-cluster.d.ts +2 -0
  14. package/lib/server/devices/device-cluster.js +87 -0
  15. package/lib/server/devices/deviceType.d.ts +3 -0
  16. package/lib/server/devices/deviceType.js +3 -0
  17. package/lib/server/devices/deviceUpdater.js +1 -1
  18. package/lib/server/devices/devices.js +32 -16
  19. package/lib/server/devices/{Fenster.d.ts → groups/Fenster.d.ts} +8 -6
  20. package/lib/server/devices/{Fenster.js → groups/Fenster.js} +16 -13
  21. package/lib/server/devices/groups/base-group.d.ts +2 -0
  22. package/lib/server/devices/groups/base-group.js +8 -0
  23. package/lib/server/devices/groups/fensterGroup.d.ts +1 -1
  24. package/lib/server/devices/groups/fensterGroup.js +2 -3
  25. package/lib/server/devices/groups/heatGroup.d.ts +5 -1
  26. package/lib/server/devices/groups/heatGroup.js +12 -3
  27. package/lib/server/devices/groups/index.d.ts +1 -0
  28. package/lib/server/devices/groups/index.js +1 -0
  29. package/lib/server/devices/groups/lampenGroup.js +4 -0
  30. package/lib/server/devices/groups/praesenzGroup.js +5 -6
  31. package/lib/server/devices/hmIPDevices/hmIpAccessPoint.d.ts +10 -0
  32. package/lib/server/devices/hmIPDevices/hmIpAccessPoint.js +32 -0
  33. package/lib/server/devices/hmIPDevices/hmIpBewegung.js +9 -10
  34. package/lib/server/devices/hmIPDevices/hmIpDevice.js +4 -4
  35. package/lib/server/devices/hmIPDevices/hmIpGriff.d.ts +1 -1
  36. package/lib/server/devices/hmIPDevices/hmIpGriff.js +10 -11
  37. package/lib/server/devices/hmIPDevices/hmIpHeizgruppe.d.ts +6 -4
  38. package/lib/server/devices/hmIPDevices/hmIpHeizgruppe.js +9 -13
  39. package/lib/server/devices/hmIPDevices/hmIpHeizung.d.ts +1 -1
  40. package/lib/server/devices/hmIPDevices/hmIpHeizung.js +18 -6
  41. package/lib/server/devices/hmIPDevices/hmIpLampe.js +7 -8
  42. package/lib/server/devices/hmIPDevices/hmIpPraezenz.js +7 -8
  43. package/lib/server/devices/hmIPDevices/hmIpRoll.d.ts +1 -1
  44. package/lib/server/devices/hmIPDevices/hmIpRoll.js +7 -8
  45. package/lib/server/devices/hmIPDevices/hmIpTaster.js +1 -2
  46. package/lib/server/devices/hmIPDevices/hmIpTherm.js +1 -2
  47. package/lib/server/devices/hmIPDevices/hmIpTuer.js +8 -10
  48. package/lib/server/devices/hmIPDevices/hmIpWippe.js +3 -4
  49. package/lib/server/devices/hmIPDevices/index.d.ts +1 -0
  50. package/lib/server/devices/hmIPDevices/index.js +1 -0
  51. package/lib/server/devices/iHeater.d.ts +11 -0
  52. package/lib/server/devices/iHeater.js +2 -0
  53. package/lib/server/devices/iHumiditySensor.d.ts +5 -0
  54. package/lib/server/devices/iHumiditySensor.js +2 -0
  55. package/lib/server/devices/iShutter.d.ts +1 -1
  56. package/lib/server/devices/iTemperaturSensor.d.ts +5 -0
  57. package/lib/server/devices/iTemperaturSensor.js +2 -0
  58. package/lib/server/devices/index.d.ts +3 -1
  59. package/lib/server/devices/index.js +3 -1
  60. package/lib/server/devices/wledDevice.js +1 -1
  61. package/lib/server/devices/zigbee/ZigbeeActuator.js +7 -9
  62. package/lib/server/devices/zigbee/index.d.ts +2 -0
  63. package/lib/server/devices/zigbee/index.js +2 -0
  64. package/lib/server/devices/zigbee/zigbeeAqaraMagnetContact.d.ts +7 -0
  65. package/lib/server/devices/zigbee/zigbeeAqaraMagnetContact.js +22 -0
  66. package/lib/server/devices/zigbee/zigbeeAquaraMotion.js +3 -4
  67. package/lib/server/devices/zigbee/zigbeeAquaraVibra.js +16 -17
  68. package/lib/server/devices/zigbee/zigbeeAquaraWater.js +4 -5
  69. package/lib/server/devices/zigbee/zigbeeBlitzShp.js +16 -13
  70. package/lib/server/devices/zigbee/zigbeeDevice.js +5 -6
  71. package/lib/server/devices/zigbee/zigbeeHeimanSmoke.js +4 -5
  72. package/lib/server/devices/zigbee/zigbeeIkeaSteckdose.js +1 -2
  73. package/lib/server/devices/zigbee/zigbeeIlluActuator.js +1 -2
  74. package/lib/server/devices/zigbee/zigbeeIlluDimmer.js +11 -12
  75. package/lib/server/devices/zigbee/zigbeeIlluLampe.js +2 -3
  76. package/lib/server/devices/zigbee/zigbeeIlluLedRGBCCT.js +12 -13
  77. package/lib/server/devices/zigbee/zigbeeIlluShutter.d.ts +1 -0
  78. package/lib/server/devices/zigbee/zigbeeIlluShutter.js +19 -8
  79. package/lib/server/devices/zigbee/zigbeeMagnetContact.d.ts +2 -0
  80. package/lib/server/devices/zigbee/zigbeeMagnetContact.js +17 -10
  81. package/lib/server/devices/zigbee/zigbeeMotionSensor.js +11 -12
  82. package/lib/server/devices/zigbee/zigbeeSMaBiTMagnetContact.js +1 -2
  83. package/lib/server/devices/zigbee/zigbeeShutter.d.ts +1 -1
  84. package/lib/server/devices/zigbee/zigbeeShutter.js +6 -7
  85. package/lib/server/devices/zigbee/zigbeeSonoffMotion.js +1 -2
  86. package/lib/server/devices/zigbee/zigbeeSonoffTemp.d.ts +17 -0
  87. package/lib/server/devices/zigbee/zigbeeSonoffTemp.js +46 -0
  88. package/lib/server/ioBroker/ioBroker.main.js +1 -1
  89. package/lib/server/services/HTTPSOptions.js +1 -1
  90. package/lib/server/services/ShutterService.d.ts +1 -1
  91. package/lib/server/services/Sonos/OwnSonosDevices.js +1 -1
  92. package/lib/server/services/Sonos/mp3-server.js +1 -1
  93. package/lib/server/services/Sonos/polly-service.js +1 -1
  94. package/lib/server/services/Sonos/sonos-service.js +1 -1
  95. package/lib/server/services/Telegram/telegram-service.js +1 -1
  96. package/lib/server/services/api/api-service.d.ts +2 -0
  97. package/lib/server/services/api/api-service.js +6 -4
  98. package/lib/server/services/calendar/muell-tonne.js +1 -1
  99. package/lib/server/services/calendar/m/303/274ll-service.js +1 -1
  100. package/lib/server/services/dbo/persist.js +1 -1
  101. package/lib/server/services/https-service.js +1 -1
  102. package/lib/server/services/index.d.ts +1 -1
  103. package/lib/server/services/index.js +1 -1
  104. package/lib/server/services/log-service/index.d.ts +3 -0
  105. package/lib/server/services/log-service/index.js +15 -0
  106. package/lib/server/services/log-service/log-filter-data.d.ts +6 -0
  107. package/lib/server/services/log-service/log-filter-data.js +6 -0
  108. package/lib/server/services/log-service/log-object.d.ts +9 -0
  109. package/lib/server/services/log-service/log-object.js +12 -0
  110. package/lib/server/services/log-service/log-service.d.ts +18 -0
  111. package/lib/server/services/log-service/log-service.js +58 -0
  112. package/lib/server/services/news-service.js +1 -1
  113. package/lib/server/services/room-service/room-service.d.ts +1 -1
  114. package/lib/server/services/room-service/room-service.js +1 -1
  115. package/lib/server/services/time-callback-service.js +1 -1
  116. package/lib/server/services/utils/ringstorage.d.ts +3 -3
  117. package/lib/server/services/utils/ringstorage.js +2 -2
  118. package/lib/server/services/utils/utils.js +1 -1
  119. package/lib/server/services/weather/weather-service.js +1 -1
  120. package/lib/tsconfig.tsbuildinfo +1 -1
  121. package/package.json +13 -12
  122. package/lib/server/services/log-service.d.ts +0 -12
  123. package/lib/server/services/log-service.js +0 -37
@@ -12,10 +12,13 @@ import { iRoomBase } from './iRoomBase';
12
12
  import { RoomInfo } from './roomInfo';
13
13
  import { BaseGroup } from '../../server/devices/groups/base-group';
14
14
  import { GroupType } from '../../server/devices/groups/group-type';
15
+ import { DeviceCluster } from '../../server/devices/device-cluster';
15
16
  export declare class RoomBase implements iRoomBase {
16
17
  settings: RoomSettings;
17
18
  groups: Map<GroupType, BaseGroup>;
18
19
  info: RoomInfo;
20
+ protected _deviceCluster: DeviceCluster;
21
+ get deviceCluster(): DeviceCluster;
19
22
  get FensterGroup(): FensterGroup | undefined;
20
23
  get PraesenzGroup(): PraesenzGroup | undefined;
21
24
  get LampenGroup(): LampenGroup | undefined;
@@ -45,4 +48,5 @@ export declare class RoomBase implements iRoomBase {
45
48
  [p: string]: BaseGroup;
46
49
  };
47
50
  }>;
51
+ private log;
48
52
  }
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.RoomBase = void 0;
7
7
  const logLevel_1 = require("../logLevel");
8
- const log_service_1 = require("../../server/services/log-service");
8
+ const log_service_1 = require("../../server/services/log-service/log-service");
9
9
  const persist_1 = require("../../server/services/dbo/persist");
10
10
  const time_callback_service_1 = require("../../server/services/time-callback-service");
11
11
  const room_service_1 = require("../../server/services/room-service/room-service");
@@ -14,16 +14,21 @@ const group_type_1 = require("../../server/devices/groups/group-type");
14
14
  const ShutterService_1 = require("../../server/services/ShutterService");
15
15
  const utils_1 = require("../../server/services/utils/utils");
16
16
  const lodash_1 = __importDefault(require("lodash"));
17
+ const device_cluster_1 = require("../../server/devices/device-cluster");
17
18
  class RoomBase {
18
19
  constructor(roomName, settings, groups) {
19
20
  this.settings = settings;
20
21
  this.groups = groups;
22
+ this._deviceCluster = new device_cluster_1.DeviceCluster();
21
23
  this.skipNextRolloUp = false;
22
24
  this.info = new roomInfo_1.RoomInfo(roomName, settings);
23
25
  settings.roomName = roomName;
24
26
  this.settings = settings;
25
27
  room_service_1.RoomService.addToRoomList(this);
26
28
  }
29
+ get deviceCluster() {
30
+ return this._deviceCluster;
31
+ }
27
32
  get FensterGroup() {
28
33
  return this.groups.get(group_type_1.GroupType.Window);
29
34
  }
@@ -56,7 +61,7 @@ class RoomBase {
56
61
  }
57
62
  initializeBase() {
58
63
  var _a, _b, _c;
59
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Debug, `RoomBase Init für ${this.roomName}`);
64
+ this.log(logLevel_1.LogLevel.Debug, `RoomBase Init für ${this.roomName}`);
60
65
  this.recalcTimeCallbacks();
61
66
  (_a = this.PraesenzGroup) === null || _a === void 0 ? void 0 : _a.initCallbacks();
62
67
  (_b = this.FensterGroup) === null || _b === void 0 ? void 0 : _b.initialize();
@@ -89,17 +94,21 @@ class RoomBase {
89
94
  setLightTimeBased(movementDependant = false) {
90
95
  var _a, _b;
91
96
  if (!this.LampenGroup) {
97
+ this.log(logLevel_1.LogLevel.Trace, 'Ignore "setLightTimeBased" as we have no lamps');
92
98
  return;
93
99
  }
94
100
  if (movementDependant && this.PraesenzGroup && !((_a = this.PraesenzGroup) === null || _a === void 0 ? void 0 : _a.anyPresent())) {
101
+ this.log(logLevel_1.LogLevel.Trace, 'Turn off lights as noone is present.');
95
102
  this.LampenGroup.switchAll(false);
96
103
  return;
97
104
  }
98
- if (!this.settings.lampOffset) {
99
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Alert, `Beim Aufruf von "setLightTimeBased" im Raum ${this.roomName} liegt kein Lampen Offset vor`);
105
+ if (!this.settings.lampOffset && !this.settings.roomIsAlwaysDark) {
106
+ this.log(logLevel_1.LogLevel.Alert, `Beim Aufruf von "setLightTimeBased" im Raum ${this.roomName} liegt kein Lampen Offset vor`);
100
107
  return;
101
108
  }
102
- let timeOfDay = time_callback_service_1.TimeCallbackService.dayType(this.settings.lampOffset);
109
+ let timeOfDay = this.settings.roomIsAlwaysDark
110
+ ? time_callback_service_1.TimeOfDay.Night
111
+ : time_callback_service_1.TimeCallbackService.dayType(this.settings.lampOffset);
103
112
  if (timeOfDay === time_callback_service_1.TimeOfDay.Daylight &&
104
113
  ((this.settings.lightIfNoWindows && (!this.FensterGroup || this.FensterGroup.fenster.length === 0)) ||
105
114
  ((_b = this.FensterGroup) === null || _b === void 0 ? void 0 : _b.fenster.some((f) => {
@@ -111,11 +120,13 @@ class RoomBase {
111
120
  }
112
121
  isNowLightTime() {
113
122
  var _a;
114
- if (!this.settings.lampOffset) {
115
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Alert, `Beim Aufruf von "setLightTimeBased" im Raum ${this.roomName} liegt kein Lampen Offset vor`);
123
+ if (!this.settings.lampOffset && !this.settings.roomIsAlwaysDark) {
124
+ this.log(logLevel_1.LogLevel.Alert, `Beim Aufruf von "setLightTimeBased" im Raum ${this.roomName} liegt kein Lampen Offset vor`);
116
125
  return false;
117
126
  }
118
- let timeOfDay = time_callback_service_1.TimeCallbackService.dayType(this.settings.lampOffset);
127
+ let timeOfDay = this.settings.roomIsAlwaysDark
128
+ ? time_callback_service_1.TimeOfDay.Night
129
+ : time_callback_service_1.TimeCallbackService.dayType(this.settings.lampOffset);
119
130
  if (timeOfDay === time_callback_service_1.TimeOfDay.Daylight &&
120
131
  ((_a = this.FensterGroup) === null || _a === void 0 ? void 0 : _a.fenster.some((f) => {
121
132
  return ShutterService_1.ShutterService.anyRolloDown(f.getShutter());
@@ -127,7 +138,12 @@ class RoomBase {
127
138
  toJSON() {
128
139
  const result = utils_1.Utils.jsonFilter(this);
129
140
  result.groupDict = Object.fromEntries(this.groups);
130
- return lodash_1.default.omit(result, 'groups');
141
+ return lodash_1.default.omit(result, ['groups', '_deviceCluster']);
142
+ }
143
+ log(level, message) {
144
+ log_service_1.ServerLogService.writeLog(level, message, {
145
+ room: this.roomName,
146
+ });
131
147
  }
132
148
  }
133
149
  exports.RoomBase = RoomBase;
@@ -26,9 +26,12 @@ export declare class RoomSettings implements iRoomDefaultSettings, iRoomInitiali
26
26
  private _sonnenAufgangRolloMinTime;
27
27
  private _sonnenAufgangLampenDelay;
28
28
  private _lightIfNoWindows;
29
+ private _roomIsAlwaysDark;
29
30
  constructor(initSettings: iRoomInitializationSettings);
30
31
  private recalcRolloOffset;
31
32
  private recalcLampOffset;
33
+ get roomIsAlwaysDark(): boolean;
34
+ set roomIsAlwaysDark(value: boolean);
32
35
  get sonnenAufgangLampenDelay(): number;
33
36
  set sonnenAufgangLampenDelay(value: number);
34
37
  get sonnenAufgangRolloDelay(): number;
@@ -27,6 +27,7 @@ class RoomSettings {
27
27
  this._sonnenAufgangRolloMinTime = this.defaultSettings.sonnenAufgangRolloMinTime;
28
28
  this._sonnenAufgangLampenDelay = this.defaultSettings.sonnenAufgangLampenDelay;
29
29
  this._lightIfNoWindows = this.defaultSettings.lightIfNoWindows;
30
+ this._roomIsAlwaysDark = this.defaultSettings.roomIsAlwaysDark;
30
31
  this.shortName = initSettings.shortName;
31
32
  this.etage = initSettings.etage;
32
33
  this.deviceAddidngSettings = initSettings.deviceAddidngSettings;
@@ -43,6 +44,12 @@ class RoomSettings {
43
44
  this.lampOffset = new time_callback_service_1.SunTimeOffsets(this.sonnenAufgangLampenDelay, this.sonnenAufgangRolloDelay);
44
45
  (_a = this.room) === null || _a === void 0 ? void 0 : _a.recalcTimeCallbacks();
45
46
  }
47
+ get roomIsAlwaysDark() {
48
+ return this._roomIsAlwaysDark;
49
+ }
50
+ set roomIsAlwaysDark(value) {
51
+ this._roomIsAlwaysDark = value;
52
+ }
46
53
  get sonnenAufgangLampenDelay() {
47
54
  return this._sonnenAufgangLampenDelay;
48
55
  }
@@ -1,6 +1,11 @@
1
1
  import { iTimePair } from '../../../server/config/iConfig';
2
2
  export interface iRoomDefaultSettings {
3
3
  rolloHeatReduction: boolean;
4
+ /**
5
+ * Indicates rooms, which are time independent always dark (like basement).
6
+ * This results in lamps beeing turned on on motion regardless of windows and time.
7
+ */
8
+ roomIsAlwaysDark: boolean;
4
9
  lampenBeiBewegung: boolean;
5
10
  lichtSonnenAufgangAus: boolean;
6
11
  sonnenUntergangRollos: boolean;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RoomAddDeviceItem = void 0;
4
- const log_service_1 = require("../../../server/services/log-service");
4
+ const log_service_1 = require("../../../server/services/log-service/log-service");
5
5
  const logLevel_1 = require("../../logLevel");
6
6
  class RoomAddDeviceItem {
7
7
  constructor(setID, index, customName) {
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RoomDeviceAddingSettings = void 0;
4
- const log_service_1 = require("../../../server/services/log-service");
4
+ const log_service_1 = require("../../../server/services/log-service/log-service");
5
5
  const roomAddDeviceItem_1 = require("./roomAddDeviceItem");
6
6
  const logLevel_1 = require("../../logLevel");
7
7
  const deviceType_1 = require("../../../server/devices/deviceType");
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TimeCallback = exports.TimeCallbackType = void 0;
4
- const log_service_1 = require("../server/services/log-service");
4
+ const log_service_1 = require("../server/services/log-service/log-service");
5
5
  const time_callback_service_1 = require("../server/services/time-callback-service");
6
6
  const logLevel_1 = require("./logLevel");
7
7
  var TimeCallbackType;
@@ -2,6 +2,7 @@
2
2
  import { DeviceInfo } from './DeviceInfo';
3
3
  import { RoomDeviceAddingSettings } from '../../models/rooms/RoomSettings/roomDeviceAddingSettings';
4
4
  import { IOBrokerConnection } from '../ioBroker/connection';
5
+ import { LogLevel } from '../../models/logLevel';
5
6
  import { DeviceType } from './deviceType';
6
7
  import { RoomBase } from '../../models/rooms/RoomBase';
7
8
  export declare abstract class IoBrokerBaseDevice {
@@ -38,6 +39,7 @@ export declare abstract class IoBrokerBaseDevice {
38
39
  checkIoConnection(showError?: boolean): boolean;
39
40
  abstract update(idSplit: string[], state: ioBroker.State, initial: boolean, pOverride: boolean): void;
40
41
  protected addToCorrectRoom(): void;
42
+ protected log(level: LogLevel, message: string): void;
41
43
  /**
42
44
  * Sets the state of a given data point and returns true if that was successful.
43
45
  * @param pointId Data point to write to
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.IoBrokerBaseDevice = void 0;
4
- const log_service_1 = require("../services/log-service");
4
+ const log_service_1 = require("../services/log-service/log-service");
5
5
  const logLevel_1 = require("../../models/logLevel");
6
6
  const ioBroker_main_1 = require("../ioBroker/ioBroker.main");
7
7
  const utils_1 = require("../services/utils/utils");
@@ -88,6 +88,13 @@ class IoBrokerBaseDevice {
88
88
  }
89
89
  log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Warn, `${this.info.room} is noch kein bekannter Raum`);
90
90
  }
91
+ log(level, message) {
92
+ log_service_1.ServerLogService.writeLog(level, message, {
93
+ room: this.info.room,
94
+ deviceId: this.id,
95
+ deviceName: this.info.customName,
96
+ });
97
+ }
91
98
  /**
92
99
  * Sets the state of a given data point and returns true if that was successful.
93
100
  * @param pointId Data point to write to
@@ -1,16 +1,20 @@
1
1
  export declare enum DeviceClusterType {
2
- Buttons = 0,
3
- Heater = 1,
4
- LED = 2,
5
- Lamps = 3,
6
- MotionDetection = 4,
7
- Outlets = 5,
8
- PresenceDetection = 6,
9
- Speaker = 7,
10
- SmokeDetector = 8,
11
- WaterDetectors = 9,
12
- Windows = 10,
13
- Handle = 11,
14
- Vibration = 12,
15
- Shutter = 13
2
+ all = 0,
3
+ Buttons = 1,
4
+ Heater = 2,
5
+ LED = 3,
6
+ Lamps = 4,
7
+ MotionDetection = 5,
8
+ Outlets = 6,
9
+ PresenceDetection = 7,
10
+ Speaker = 8,
11
+ SmokeDetector = 9,
12
+ WaterDetectors = 10,
13
+ Windows = 11,
14
+ Handle = 12,
15
+ Vibration = 13,
16
+ Shutter = 14,
17
+ MagnetContact = 15,
18
+ TemperaturSensor = 16,
19
+ HumiditySensor = 17
16
20
  }
@@ -3,18 +3,22 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DeviceClusterType = void 0;
4
4
  var DeviceClusterType;
5
5
  (function (DeviceClusterType) {
6
- DeviceClusterType[DeviceClusterType["Buttons"] = 0] = "Buttons";
7
- DeviceClusterType[DeviceClusterType["Heater"] = 1] = "Heater";
8
- DeviceClusterType[DeviceClusterType["LED"] = 2] = "LED";
9
- DeviceClusterType[DeviceClusterType["Lamps"] = 3] = "Lamps";
10
- DeviceClusterType[DeviceClusterType["MotionDetection"] = 4] = "MotionDetection";
11
- DeviceClusterType[DeviceClusterType["Outlets"] = 5] = "Outlets";
12
- DeviceClusterType[DeviceClusterType["PresenceDetection"] = 6] = "PresenceDetection";
13
- DeviceClusterType[DeviceClusterType["Speaker"] = 7] = "Speaker";
14
- DeviceClusterType[DeviceClusterType["SmokeDetector"] = 8] = "SmokeDetector";
15
- DeviceClusterType[DeviceClusterType["WaterDetectors"] = 9] = "WaterDetectors";
16
- DeviceClusterType[DeviceClusterType["Windows"] = 10] = "Windows";
17
- DeviceClusterType[DeviceClusterType["Handle"] = 11] = "Handle";
18
- DeviceClusterType[DeviceClusterType["Vibration"] = 12] = "Vibration";
19
- DeviceClusterType[DeviceClusterType["Shutter"] = 13] = "Shutter";
6
+ DeviceClusterType[DeviceClusterType["all"] = 0] = "all";
7
+ DeviceClusterType[DeviceClusterType["Buttons"] = 1] = "Buttons";
8
+ DeviceClusterType[DeviceClusterType["Heater"] = 2] = "Heater";
9
+ DeviceClusterType[DeviceClusterType["LED"] = 3] = "LED";
10
+ DeviceClusterType[DeviceClusterType["Lamps"] = 4] = "Lamps";
11
+ DeviceClusterType[DeviceClusterType["MotionDetection"] = 5] = "MotionDetection";
12
+ DeviceClusterType[DeviceClusterType["Outlets"] = 6] = "Outlets";
13
+ DeviceClusterType[DeviceClusterType["PresenceDetection"] = 7] = "PresenceDetection";
14
+ DeviceClusterType[DeviceClusterType["Speaker"] = 8] = "Speaker";
15
+ DeviceClusterType[DeviceClusterType["SmokeDetector"] = 9] = "SmokeDetector";
16
+ DeviceClusterType[DeviceClusterType["WaterDetectors"] = 10] = "WaterDetectors";
17
+ DeviceClusterType[DeviceClusterType["Windows"] = 11] = "Windows";
18
+ DeviceClusterType[DeviceClusterType["Handle"] = 12] = "Handle";
19
+ DeviceClusterType[DeviceClusterType["Vibration"] = 13] = "Vibration";
20
+ DeviceClusterType[DeviceClusterType["Shutter"] = 14] = "Shutter";
21
+ DeviceClusterType[DeviceClusterType["MagnetContact"] = 15] = "MagnetContact";
22
+ DeviceClusterType[DeviceClusterType["TemperaturSensor"] = 16] = "TemperaturSensor";
23
+ DeviceClusterType[DeviceClusterType["HumiditySensor"] = 17] = "HumiditySensor";
20
24
  })(DeviceClusterType = exports.DeviceClusterType || (exports.DeviceClusterType = {}));
@@ -7,6 +7,8 @@ export declare class DeviceCluster {
7
7
  constructor(deviceMap?: Map<DeviceClusterType, DeviceList>);
8
8
  getIoBrokerDevicesByType(type: DeviceClusterType): IoBrokerBaseDevice[];
9
9
  getDevicesByType(type: DeviceClusterType): Array<IoBrokerBaseDevice | OwnSonosDevice>;
10
+ addByDeviceType(device: IoBrokerBaseDevice): void;
11
+ addToList(type: DeviceClusterType, device: IoBrokerBaseDevice): void;
10
12
  toJSON(): Partial<DeviceCluster & {
11
13
  deviceDict?: {
12
14
  [p: string]: DeviceList;
@@ -5,8 +5,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.DeviceCluster = void 0;
7
7
  const device_cluster_type_1 = require("./device-cluster-type");
8
+ const device_list_1 = require("./device-list");
8
9
  const utils_1 = require("../services/utils/utils");
9
10
  const lodash_1 = __importDefault(require("lodash"));
11
+ const deviceType_1 = require("./deviceType");
10
12
  class DeviceCluster {
11
13
  constructor(deviceMap = new Map()) {
12
14
  this.deviceMap = deviceMap;
@@ -21,6 +23,91 @@ class DeviceCluster {
21
23
  var _a, _b;
22
24
  return (_b = (_a = this.deviceMap.get(type)) === null || _a === void 0 ? void 0 : _a.getDevices()) !== null && _b !== void 0 ? _b : [];
23
25
  }
26
+ addByDeviceType(device) {
27
+ const type = device.deviceType;
28
+ const clusterTypes = [device_cluster_type_1.DeviceClusterType.all];
29
+ switch (type) {
30
+ case deviceType_1.DeviceType.HmIpLampe:
31
+ case deviceType_1.DeviceType.ZigbeeIlluDimmer:
32
+ case deviceType_1.DeviceType.ZigbeeIlluLampe:
33
+ clusterTypes.push(device_cluster_type_1.DeviceClusterType.Lamps);
34
+ break;
35
+ case deviceType_1.DeviceType.HmIpWippe:
36
+ case deviceType_1.DeviceType.HmIpTaster:
37
+ case deviceType_1.DeviceType.ZigbeeIkeaFernbedienung:
38
+ clusterTypes.push(device_cluster_type_1.DeviceClusterType.Buttons);
39
+ break;
40
+ case deviceType_1.DeviceType.HmIpRoll:
41
+ case deviceType_1.DeviceType.ZigbeeIlluShutter:
42
+ clusterTypes.push(device_cluster_type_1.DeviceClusterType.Shutter);
43
+ break;
44
+ case deviceType_1.DeviceType.ZigbeeSonoffTemp:
45
+ clusterTypes.push(device_cluster_type_1.DeviceClusterType.TemperaturSensor);
46
+ clusterTypes.push(device_cluster_type_1.DeviceClusterType.HumiditySensor);
47
+ break;
48
+ case deviceType_1.DeviceType.HmIpPraezenz:
49
+ clusterTypes.push(device_cluster_type_1.DeviceClusterType.PresenceDetection);
50
+ break;
51
+ case deviceType_1.DeviceType.HmIpGriff:
52
+ clusterTypes.push(device_cluster_type_1.DeviceClusterType.Handle);
53
+ break;
54
+ case deviceType_1.DeviceType.HmIpHeizgruppe:
55
+ clusterTypes.push(device_cluster_type_1.DeviceClusterType.Heater);
56
+ clusterTypes.push(device_cluster_type_1.DeviceClusterType.TemperaturSensor);
57
+ clusterTypes.push(device_cluster_type_1.DeviceClusterType.HumiditySensor);
58
+ break;
59
+ case deviceType_1.DeviceType.HmIpTuer:
60
+ case deviceType_1.DeviceType.ZigbeeSMaBiTMagnetContact:
61
+ case deviceType_1.DeviceType.ZigbeeAqaraMagnetContact:
62
+ clusterTypes.push(device_cluster_type_1.DeviceClusterType.MagnetContact);
63
+ break;
64
+ case deviceType_1.DeviceType.HmIpBewegung:
65
+ case deviceType_1.DeviceType.ZigbeeAquaraMotion:
66
+ case deviceType_1.DeviceType.ZigbeeSonoffMotion:
67
+ clusterTypes.push(device_cluster_type_1.DeviceClusterType.MotionDetection);
68
+ break;
69
+ case deviceType_1.DeviceType.ZigbeeIkeaSteckdose:
70
+ clusterTypes.push(device_cluster_type_1.DeviceClusterType.Outlets);
71
+ break;
72
+ case deviceType_1.DeviceType.ZigbeeIlluLedRGBCCT:
73
+ clusterTypes.push(device_cluster_type_1.DeviceClusterType.LED);
74
+ break;
75
+ case deviceType_1.DeviceType.ZigbeeAquaraVibra:
76
+ clusterTypes.push(device_cluster_type_1.DeviceClusterType.Vibration);
77
+ break;
78
+ case deviceType_1.DeviceType.ZigbeeHeimanSmoke:
79
+ clusterTypes.push(device_cluster_type_1.DeviceClusterType.SmokeDetector);
80
+ break;
81
+ case deviceType_1.DeviceType.ZigbeeAquaraWater:
82
+ clusterTypes.push(device_cluster_type_1.DeviceClusterType.WaterDetectors);
83
+ break;
84
+ case deviceType_1.DeviceType.ZigbeeBlitzShp:
85
+ clusterTypes.push(device_cluster_type_1.DeviceClusterType.Outlets);
86
+ break;
87
+ case deviceType_1.DeviceType.ZigbeeIlluActuator: // Dependent on use case
88
+ case deviceType_1.DeviceType.HmIpTherm: // Humidity and temperatur not yet implemented
89
+ case deviceType_1.DeviceType.HmIpHeizung: // Setting/Controlling via HM-Ip Heizgruppe
90
+ case deviceType_1.DeviceType.unknown:
91
+ case deviceType_1.DeviceType.Wled: // TODO: Implement
92
+ case deviceType_1.DeviceType.HmIpAccessPoint: // You can't really do stuff with it.
93
+ break;
94
+ }
95
+ for (const type of clusterTypes) {
96
+ this.addToList(type, device);
97
+ }
98
+ }
99
+ addToList(type, device) {
100
+ var _a;
101
+ const list = (_a = this.deviceMap.get(type)) === null || _a === void 0 ? void 0 : _a.ids;
102
+ if (list !== undefined) {
103
+ if (list.indexOf(device.id) < 0) {
104
+ list.push(device.id);
105
+ }
106
+ }
107
+ else {
108
+ this.deviceMap.set(type, new device_list_1.DeviceList([device.id]));
109
+ }
110
+ }
24
111
  toJSON() {
25
112
  const result = utils_1.Utils.jsonFilter(this);
26
113
  result.deviceDict = Object.fromEntries(this.deviceMap);
@@ -11,6 +11,7 @@ export declare enum DeviceType {
11
11
  HmIpTuer = 109,
12
12
  HmIpHeizgruppe = 110,
13
13
  HmIpBewegung = 111,
14
+ HmIpAccessPoint = 112,
14
15
  ZigbeeIkeaFernbedienung = 201,
15
16
  ZigbeeIkeaSteckdose = 202,
16
17
  ZigbeeIlluLedRGBCCT = 203,
@@ -25,5 +26,7 @@ export declare enum DeviceType {
25
26
  ZigbeeIlluShutter = 212,
26
27
  ZigbeeSMaBiTMagnetContact = 213,
27
28
  ZigbeeSonoffMotion = 214,
29
+ ZigbeeAqaraMagnetContact = 215,
30
+ ZigbeeSonoffTemp = 216,
28
31
  Wled = 1001
29
32
  }
@@ -15,6 +15,7 @@ var DeviceType;
15
15
  DeviceType[DeviceType["HmIpTuer"] = 109] = "HmIpTuer";
16
16
  DeviceType[DeviceType["HmIpHeizgruppe"] = 110] = "HmIpHeizgruppe";
17
17
  DeviceType[DeviceType["HmIpBewegung"] = 111] = "HmIpBewegung";
18
+ DeviceType[DeviceType["HmIpAccessPoint"] = 112] = "HmIpAccessPoint";
18
19
  DeviceType[DeviceType["ZigbeeIkeaFernbedienung"] = 201] = "ZigbeeIkeaFernbedienung";
19
20
  DeviceType[DeviceType["ZigbeeIkeaSteckdose"] = 202] = "ZigbeeIkeaSteckdose";
20
21
  DeviceType[DeviceType["ZigbeeIlluLedRGBCCT"] = 203] = "ZigbeeIlluLedRGBCCT";
@@ -29,5 +30,7 @@ var DeviceType;
29
30
  DeviceType[DeviceType["ZigbeeIlluShutter"] = 212] = "ZigbeeIlluShutter";
30
31
  DeviceType[DeviceType["ZigbeeSMaBiTMagnetContact"] = 213] = "ZigbeeSMaBiTMagnetContact";
31
32
  DeviceType[DeviceType["ZigbeeSonoffMotion"] = 214] = "ZigbeeSonoffMotion";
33
+ DeviceType[DeviceType["ZigbeeAqaraMagnetContact"] = 215] = "ZigbeeAqaraMagnetContact";
34
+ DeviceType[DeviceType["ZigbeeSonoffTemp"] = 216] = "ZigbeeSonoffTemp";
32
35
  DeviceType[DeviceType["Wled"] = 1001] = "Wled";
33
36
  })(DeviceType = exports.DeviceType || (exports.DeviceType = {}));
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DeviceUpdater = void 0;
4
- const log_service_1 = require("../services/log-service");
4
+ const log_service_1 = require("../services/log-service/log-service");
5
5
  const logLevel_1 = require("../../models/logLevel");
6
6
  const devices_1 = require("./devices");
7
7
  class DeviceUpdater {
@@ -5,7 +5,7 @@ const hmIpDevice_1 = require("./hmIPDevices/hmIpDevice");
5
5
  const zigbeeDevice_1 = require("./zigbee/zigbeeDevice");
6
6
  const deviceType_1 = require("./deviceType");
7
7
  const hmIpPraezenz_1 = require("./hmIPDevices/hmIpPraezenz");
8
- const log_service_1 = require("../services/log-service");
8
+ const log_service_1 = require("../services/log-service/log-service");
9
9
  const DeviceInfo_1 = require("./DeviceInfo");
10
10
  const logLevel_1 = require("../../models/logLevel");
11
11
  const hmIpBewegung_1 = require("./hmIPDevices/hmIpBewegung");
@@ -31,6 +31,9 @@ const hmIpHeizgruppe_1 = require("./hmIPDevices/hmIpHeizgruppe");
31
31
  const zigbeeIlluShutter_1 = require("./zigbee/zigbeeIlluShutter");
32
32
  const zigbeeSMaBiTMagnetContact_1 = require("./zigbee/zigbeeSMaBiTMagnetContact");
33
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");
34
37
  class Devices {
35
38
  constructor(pDeviceData, pRoomImportEnforcer) {
36
39
  // This forces import of rooms at correct timing, to allow devices to land in proper rooms.
@@ -71,6 +74,10 @@ class Devices {
71
74
  log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Debug, `2 Uhr Reset der Tages Detektionen von ${d.info.customName}`);
72
75
  d.detectionsToday = 0;
73
76
  }
77
+ else if (d.deviceType === deviceType_1.DeviceType.ZigbeeSonoffMotion || d.deviceType === deviceType_1.DeviceType.ZigbeeAquaraMotion) {
78
+ log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Debug, `2 Uhr Reset der Tages Detektionen von ${d.info.customName}`);
79
+ d.detectionsToday = 0;
80
+ }
74
81
  }
75
82
  }
76
83
  processZigbeeDevice(cDevConf) {
@@ -83,23 +90,14 @@ class Devices {
83
90
  log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Trace, `${zigbeeInfo.devID} with Type "${zigbeeInfo.deviceType}" doesn't exists --> create it`);
84
91
  let d;
85
92
  switch (zigbeeInfo.deviceType) {
86
- case 'AquaraVibra':
87
- d = new zigbeeAquaraVibra_1.ZigbeeAquaraVibra(zigbeeInfo);
93
+ case 'AqaraMagnetContact':
94
+ d = new zigbeeAqaraMagnetContact_1.ZigbeeAqaraMagnetContact(zigbeeInfo);
88
95
  break;
89
96
  case 'AquaraMotion':
90
97
  d = new zigbeeAquaraMotion_1.ZigbeeAquaraMotion(zigbeeInfo);
91
98
  break;
92
- case 'IkeaStecker':
93
- d = new zigbeeIkeaSteckdose_1.ZigbeeIkeaSteckdose(zigbeeInfo);
94
- break;
95
- case 'LedRGBCCT':
96
- d = new zigbeeIlluLedRGBCCT_1.ZigbeeIlluLedRGBCCT(zigbeeInfo);
97
- break;
98
- case 'IlluDimmer':
99
- d = new zigbeeIlluDimmer_1.ZigbeeIlluDimmer(zigbeeInfo);
100
- break;
101
- case 'HeimanSmoke':
102
- d = new zigbeeHeimanSmoke_1.ZigbeeHeimanSmoke(zigbeeInfo);
99
+ case 'AquaraVibra':
100
+ d = new zigbeeAquaraVibra_1.ZigbeeAquaraVibra(zigbeeInfo);
103
101
  break;
104
102
  case 'AquaraWater':
105
103
  d = new zigbeeAquaraWater_1.ZigbeeAquaraWater(zigbeeInfo);
@@ -107,21 +105,36 @@ class Devices {
107
105
  case 'BlitzShp':
108
106
  d = new zigbeeBlitzShp_1.ZigbeeBlitzShp(zigbeeInfo);
109
107
  break;
110
- case 'IlluLampe':
111
- d = new zigbeeIlluLampe_1.ZigbeeIlluLampe(zigbeeInfo);
108
+ case 'HeimanSmoke':
109
+ d = new zigbeeHeimanSmoke_1.ZigbeeHeimanSmoke(zigbeeInfo);
110
+ break;
111
+ case 'IkeaStecker':
112
+ d = new zigbeeIkeaSteckdose_1.ZigbeeIkeaSteckdose(zigbeeInfo);
112
113
  break;
113
114
  case 'IlluActuator':
114
115
  d = new zigbeeIlluActuator_1.ZigbeeIlluActuator(zigbeeInfo);
115
116
  break;
117
+ case 'IlluDimmer':
118
+ d = new zigbeeIlluDimmer_1.ZigbeeIlluDimmer(zigbeeInfo);
119
+ break;
120
+ case 'IlluLampe':
121
+ d = new zigbeeIlluLampe_1.ZigbeeIlluLampe(zigbeeInfo);
122
+ break;
116
123
  case 'IlluShutter':
117
124
  d = new zigbeeIlluShutter_1.ZigbeeIlluShutter(zigbeeInfo);
118
125
  break;
126
+ case 'LedRGBCCT':
127
+ d = new zigbeeIlluLedRGBCCT_1.ZigbeeIlluLedRGBCCT(zigbeeInfo);
128
+ break;
119
129
  case 'SMaBiTMagnet':
120
130
  d = new zigbeeSMaBiTMagnetContact_1.ZigbeeSMaBiTMagnetContact(zigbeeInfo);
121
131
  break;
122
132
  case 'SonoffMotion':
123
133
  d = new zigbeeSonoffMotion_1.ZigbeeSonoffMotion(zigbeeInfo);
124
134
  break;
135
+ case 'SonoffTemp':
136
+ d = new zigbeeSonoffTemp_1.ZigbeeSonoffTemp(zigbeeInfo);
137
+ break;
125
138
  default:
126
139
  log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Warn, `No zigbee Device Type for ${zigbeeInfo.deviceType} defined`);
127
140
  d = new zigbeeDevice_1.ZigbeeDevice(zigbeeInfo, deviceType_1.DeviceType.unknown);
@@ -172,6 +185,9 @@ class Devices {
172
185
  case 'HeizGr':
173
186
  d = new hmIpHeizgruppe_1.HmIpHeizgruppe(hmIPInfo);
174
187
  break;
188
+ case 'AccessPoint':
189
+ d = new hmIpAccessPoint_1.HmIpAccessPoint(hmIPInfo);
190
+ break;
175
191
  default:
176
192
  log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Warn, `No HmIP Device Type for ${hmIPInfo.deviceType} defined`);
177
193
  d = new hmIpDevice_1.HmIPDevice(hmIPInfo, deviceType_1.DeviceType.unknown);
@@ -1,8 +1,9 @@
1
- import { HmIpGriff } from './hmIPDevices/hmIpGriff';
2
- import { ZigbeeAquaraVibra } from './zigbee/zigbeeAquaraVibra';
3
- import { FensterPosition } from './models/FensterPosition';
4
- import { iShutter } from './iShutter';
5
- import { BaseGroup } from './groups/base-group';
1
+ import { HmIpGriff } from '../hmIPDevices/hmIpGriff';
2
+ import { ZigbeeAquaraVibra } from '../zigbee/zigbeeAquaraVibra';
3
+ import { FensterPosition } from '../models/FensterPosition';
4
+ import { iShutter } from '../iShutter';
5
+ import { BaseGroup } from './base-group';
6
+ import { ZigbeeMagnetContact } from '../zigbee/zigbeeMagnetContact';
6
7
  export declare class Fenster extends BaseGroup {
7
8
  noRolloOnSunrise: boolean;
8
9
  desiredPosition: number;
@@ -11,8 +12,9 @@ export declare class Fenster extends BaseGroup {
11
12
  * @param {number} value
12
13
  */
13
14
  setDesiredPosition(value: number): void;
14
- constructor(roomName: string, handleIds?: string[], vibrationIds?: string[], shutterIds?: string[], noRolloOnSunrise?: boolean);
15
+ constructor(roomName: string, handleIds?: string[], vibrationIds?: string[], shutterIds?: string[], magnetIds?: string[], noRolloOnSunrise?: boolean);
15
16
  getHandle(): HmIpGriff[];
17
+ getMagnetContact(): ZigbeeMagnetContact[];
16
18
  getShutter(): iShutter[];
17
19
  getVibration(): ZigbeeAquaraVibra[];
18
20
  griffeInPosition(pPosition: FensterPosition): number;