hoffmation-base 0.1.33-9 → 0.1.33

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 (108) hide show
  1. package/lib/models/rooms/RoomBase.d.ts +1 -0
  2. package/lib/models/rooms/RoomBase.js +19 -8
  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 +2 -1
  12. package/lib/server/devices/device-cluster-type.js +1 -0
  13. package/lib/server/devices/deviceType.d.ts +2 -0
  14. package/lib/server/devices/deviceType.js +2 -0
  15. package/lib/server/devices/deviceUpdater.js +1 -1
  16. package/lib/server/devices/devices.js +28 -16
  17. package/lib/server/devices/{Fenster.d.ts → groups/Fenster.d.ts} +8 -6
  18. package/lib/server/devices/{Fenster.js → groups/Fenster.js} +16 -13
  19. package/lib/server/devices/groups/base-group.d.ts +2 -0
  20. package/lib/server/devices/groups/base-group.js +8 -0
  21. package/lib/server/devices/groups/fensterGroup.d.ts +1 -1
  22. package/lib/server/devices/groups/fensterGroup.js +2 -3
  23. package/lib/server/devices/groups/index.d.ts +1 -0
  24. package/lib/server/devices/groups/index.js +1 -0
  25. package/lib/server/devices/groups/lampenGroup.js +4 -0
  26. package/lib/server/devices/groups/praesenzGroup.js +5 -6
  27. package/lib/server/devices/hmIPDevices/hmIpAccessPoint.d.ts +10 -0
  28. package/lib/server/devices/hmIPDevices/hmIpAccessPoint.js +32 -0
  29. package/lib/server/devices/hmIPDevices/hmIpBewegung.js +9 -10
  30. package/lib/server/devices/hmIPDevices/hmIpDevice.js +4 -4
  31. package/lib/server/devices/hmIPDevices/hmIpGriff.d.ts +1 -1
  32. package/lib/server/devices/hmIPDevices/hmIpGriff.js +10 -11
  33. package/lib/server/devices/hmIPDevices/hmIpHeizgruppe.js +5 -6
  34. package/lib/server/devices/hmIPDevices/hmIpHeizung.js +17 -5
  35. package/lib/server/devices/hmIPDevices/hmIpLampe.js +7 -8
  36. package/lib/server/devices/hmIPDevices/hmIpPraezenz.js +7 -8
  37. package/lib/server/devices/hmIPDevices/hmIpRoll.d.ts +1 -1
  38. package/lib/server/devices/hmIPDevices/hmIpRoll.js +7 -8
  39. package/lib/server/devices/hmIPDevices/hmIpTaster.js +1 -2
  40. package/lib/server/devices/hmIPDevices/hmIpTherm.js +1 -2
  41. package/lib/server/devices/hmIPDevices/hmIpTuer.js +8 -10
  42. package/lib/server/devices/hmIPDevices/hmIpWippe.js +3 -4
  43. package/lib/server/devices/hmIPDevices/index.d.ts +1 -0
  44. package/lib/server/devices/hmIPDevices/index.js +1 -0
  45. package/lib/server/devices/iShutter.d.ts +1 -1
  46. package/lib/server/devices/index.d.ts +0 -1
  47. package/lib/server/devices/index.js +0 -1
  48. package/lib/server/devices/wledDevice.js +1 -1
  49. package/lib/server/devices/zigbee/ZigbeeActuator.js +7 -9
  50. package/lib/server/devices/zigbee/index.d.ts +1 -0
  51. package/lib/server/devices/zigbee/index.js +1 -0
  52. package/lib/server/devices/zigbee/zigbeeAqaraMagnetContact.d.ts +7 -0
  53. package/lib/server/devices/zigbee/zigbeeAqaraMagnetContact.js +22 -0
  54. package/lib/server/devices/zigbee/zigbeeAquaraMotion.js +3 -4
  55. package/lib/server/devices/zigbee/zigbeeAquaraVibra.js +16 -17
  56. package/lib/server/devices/zigbee/zigbeeAquaraWater.js +4 -5
  57. package/lib/server/devices/zigbee/zigbeeBlitzShp.js +16 -13
  58. package/lib/server/devices/zigbee/zigbeeDevice.js +5 -6
  59. package/lib/server/devices/zigbee/zigbeeHeimanSmoke.js +4 -5
  60. package/lib/server/devices/zigbee/zigbeeIkeaSteckdose.js +1 -2
  61. package/lib/server/devices/zigbee/zigbeeIlluActuator.js +1 -2
  62. package/lib/server/devices/zigbee/zigbeeIlluDimmer.js +11 -12
  63. package/lib/server/devices/zigbee/zigbeeIlluLampe.js +2 -3
  64. package/lib/server/devices/zigbee/zigbeeIlluLedRGBCCT.js +12 -13
  65. package/lib/server/devices/zigbee/zigbeeIlluShutter.d.ts +1 -0
  66. package/lib/server/devices/zigbee/zigbeeIlluShutter.js +19 -8
  67. package/lib/server/devices/zigbee/zigbeeMagnetContact.js +6 -7
  68. package/lib/server/devices/zigbee/zigbeeMotionSensor.js +11 -12
  69. package/lib/server/devices/zigbee/zigbeeSMaBiTMagnetContact.js +1 -2
  70. package/lib/server/devices/zigbee/zigbeeShutter.d.ts +1 -1
  71. package/lib/server/devices/zigbee/zigbeeShutter.js +6 -7
  72. package/lib/server/devices/zigbee/zigbeeSonoffMotion.js +1 -2
  73. package/lib/server/ioBroker/ioBroker.main.js +1 -1
  74. package/lib/server/services/HTTPSOptions.js +1 -1
  75. package/lib/server/services/ShutterService.d.ts +1 -1
  76. package/lib/server/services/Sonos/OwnSonosDevices.js +1 -1
  77. package/lib/server/services/Sonos/mp3-server.js +1 -1
  78. package/lib/server/services/Sonos/polly-service.js +1 -1
  79. package/lib/server/services/Sonos/sonos-service.js +1 -1
  80. package/lib/server/services/Telegram/telegram-service.js +1 -1
  81. package/lib/server/services/api/api-service.d.ts +2 -0
  82. package/lib/server/services/api/api-service.js +6 -4
  83. package/lib/server/services/calendar/muell-tonne.js +1 -1
  84. package/lib/server/services/calendar/m/303/274ll-service.js +1 -1
  85. package/lib/server/services/dbo/persist.js +1 -1
  86. package/lib/server/services/https-service.js +1 -1
  87. package/lib/server/services/index.d.ts +1 -1
  88. package/lib/server/services/index.js +1 -1
  89. package/lib/server/services/log-service/index.d.ts +3 -0
  90. package/lib/server/services/log-service/index.js +15 -0
  91. package/lib/server/services/log-service/log-filter-data.d.ts +6 -0
  92. package/lib/server/services/log-service/log-filter-data.js +6 -0
  93. package/lib/server/services/log-service/log-object.d.ts +9 -0
  94. package/lib/server/services/log-service/log-object.js +12 -0
  95. package/lib/server/services/log-service/log-service.d.ts +18 -0
  96. package/lib/server/services/log-service/log-service.js +58 -0
  97. package/lib/server/services/news-service.js +1 -1
  98. package/lib/server/services/room-service/room-service.d.ts +1 -1
  99. package/lib/server/services/room-service/room-service.js +1 -1
  100. package/lib/server/services/time-callback-service.js +1 -1
  101. package/lib/server/services/utils/ringstorage.d.ts +3 -3
  102. package/lib/server/services/utils/ringstorage.js +2 -2
  103. package/lib/server/services/utils/utils.js +1 -1
  104. package/lib/server/services/weather/weather-service.js +1 -1
  105. package/lib/tsconfig.tsbuildinfo +1 -1
  106. package/package.json +1 -1
  107. package/lib/server/services/log-service.d.ts +0 -12
  108. package/lib/server/services/log-service.js +0 -37
@@ -45,4 +45,5 @@ export declare class RoomBase implements iRoomBase {
45
45
  [p: string]: BaseGroup;
46
46
  };
47
47
  }>;
48
+ private log;
48
49
  }
@@ -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");
@@ -56,7 +56,7 @@ class RoomBase {
56
56
  }
57
57
  initializeBase() {
58
58
  var _a, _b, _c;
59
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Debug, `RoomBase Init für ${this.roomName}`);
59
+ this.log(logLevel_1.LogLevel.Debug, `RoomBase Init für ${this.roomName}`);
60
60
  this.recalcTimeCallbacks();
61
61
  (_a = this.PraesenzGroup) === null || _a === void 0 ? void 0 : _a.initCallbacks();
62
62
  (_b = this.FensterGroup) === null || _b === void 0 ? void 0 : _b.initialize();
@@ -89,17 +89,21 @@ class RoomBase {
89
89
  setLightTimeBased(movementDependant = false) {
90
90
  var _a, _b;
91
91
  if (!this.LampenGroup) {
92
+ this.log(logLevel_1.LogLevel.Trace, 'Ignore "setLightTimeBased" as we have no lamps');
92
93
  return;
93
94
  }
94
95
  if (movementDependant && this.PraesenzGroup && !((_a = this.PraesenzGroup) === null || _a === void 0 ? void 0 : _a.anyPresent())) {
96
+ this.log(logLevel_1.LogLevel.Trace, 'Turn off lights as noone is present.');
95
97
  this.LampenGroup.switchAll(false);
96
98
  return;
97
99
  }
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`);
100
+ if (!this.settings.lampOffset && !this.settings.roomIsAlwaysDark) {
101
+ this.log(logLevel_1.LogLevel.Alert, `Beim Aufruf von "setLightTimeBased" im Raum ${this.roomName} liegt kein Lampen Offset vor`);
100
102
  return;
101
103
  }
102
- let timeOfDay = time_callback_service_1.TimeCallbackService.dayType(this.settings.lampOffset);
104
+ let timeOfDay = this.settings.roomIsAlwaysDark
105
+ ? time_callback_service_1.TimeOfDay.Night
106
+ : time_callback_service_1.TimeCallbackService.dayType(this.settings.lampOffset);
103
107
  if (timeOfDay === time_callback_service_1.TimeOfDay.Daylight &&
104
108
  ((this.settings.lightIfNoWindows && (!this.FensterGroup || this.FensterGroup.fenster.length === 0)) ||
105
109
  ((_b = this.FensterGroup) === null || _b === void 0 ? void 0 : _b.fenster.some((f) => {
@@ -111,11 +115,13 @@ class RoomBase {
111
115
  }
112
116
  isNowLightTime() {
113
117
  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`);
118
+ if (!this.settings.lampOffset && !this.settings.roomIsAlwaysDark) {
119
+ this.log(logLevel_1.LogLevel.Alert, `Beim Aufruf von "setLightTimeBased" im Raum ${this.roomName} liegt kein Lampen Offset vor`);
116
120
  return false;
117
121
  }
118
- let timeOfDay = time_callback_service_1.TimeCallbackService.dayType(this.settings.lampOffset);
122
+ let timeOfDay = this.settings.roomIsAlwaysDark
123
+ ? time_callback_service_1.TimeOfDay.Night
124
+ : time_callback_service_1.TimeCallbackService.dayType(this.settings.lampOffset);
119
125
  if (timeOfDay === time_callback_service_1.TimeOfDay.Daylight &&
120
126
  ((_a = this.FensterGroup) === null || _a === void 0 ? void 0 : _a.fenster.some((f) => {
121
127
  return ShutterService_1.ShutterService.anyRolloDown(f.getShutter());
@@ -129,5 +135,10 @@ class RoomBase {
129
135
  result.groupDict = Object.fromEntries(this.groups);
130
136
  return lodash_1.default.omit(result, 'groups');
131
137
  }
138
+ log(level, message) {
139
+ log_service_1.ServerLogService.writeLog(level, message, {
140
+ room: this.roomName,
141
+ });
142
+ }
132
143
  }
133
144
  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
@@ -12,5 +12,6 @@ export declare enum DeviceClusterType {
12
12
  Windows = 10,
13
13
  Handle = 11,
14
14
  Vibration = 12,
15
- Shutter = 13
15
+ Shutter = 13,
16
+ MagnetContact = 14
16
17
  }
@@ -17,4 +17,5 @@ var DeviceClusterType;
17
17
  DeviceClusterType[DeviceClusterType["Handle"] = 11] = "Handle";
18
18
  DeviceClusterType[DeviceClusterType["Vibration"] = 12] = "Vibration";
19
19
  DeviceClusterType[DeviceClusterType["Shutter"] = 13] = "Shutter";
20
+ DeviceClusterType[DeviceClusterType["MagnetContact"] = 14] = "MagnetContact";
20
21
  })(DeviceClusterType = exports.DeviceClusterType || (exports.DeviceClusterType = {}));
@@ -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,6 @@ export declare enum DeviceType {
25
26
  ZigbeeIlluShutter = 212,
26
27
  ZigbeeSMaBiTMagnetContact = 213,
27
28
  ZigbeeSonoffMotion = 214,
29
+ ZigbeeAqaraMagnetContact = 215,
28
30
  Wled = 1001
29
31
  }
@@ -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,6 @@ 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";
32
34
  DeviceType[DeviceType["Wled"] = 1001] = "Wled";
33
35
  })(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,8 @@ 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");
34
36
  class Devices {
35
37
  constructor(pDeviceData, pRoomImportEnforcer) {
36
38
  // This forces import of rooms at correct timing, to allow devices to land in proper rooms.
@@ -71,6 +73,10 @@ class Devices {
71
73
  log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Debug, `2 Uhr Reset der Tages Detektionen von ${d.info.customName}`);
72
74
  d.detectionsToday = 0;
73
75
  }
76
+ else if (d.deviceType === deviceType_1.DeviceType.ZigbeeSonoffMotion || d.deviceType === deviceType_1.DeviceType.ZigbeeAquaraMotion) {
77
+ log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Debug, `2 Uhr Reset der Tages Detektionen von ${d.info.customName}`);
78
+ d.detectionsToday = 0;
79
+ }
74
80
  }
75
81
  }
76
82
  processZigbeeDevice(cDevConf) {
@@ -83,23 +89,14 @@ class Devices {
83
89
  log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Trace, `${zigbeeInfo.devID} with Type "${zigbeeInfo.deviceType}" doesn't exists --> create it`);
84
90
  let d;
85
91
  switch (zigbeeInfo.deviceType) {
86
- case 'AquaraVibra':
87
- d = new zigbeeAquaraVibra_1.ZigbeeAquaraVibra(zigbeeInfo);
92
+ case 'AqaraMagnetContact':
93
+ d = new zigbeeAqaraMagnetContact_1.ZigbeeAqaraMagnetContact(zigbeeInfo);
88
94
  break;
89
95
  case 'AquaraMotion':
90
96
  d = new zigbeeAquaraMotion_1.ZigbeeAquaraMotion(zigbeeInfo);
91
97
  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);
98
+ case 'AquaraVibra':
99
+ d = new zigbeeAquaraVibra_1.ZigbeeAquaraVibra(zigbeeInfo);
103
100
  break;
104
101
  case 'AquaraWater':
105
102
  d = new zigbeeAquaraWater_1.ZigbeeAquaraWater(zigbeeInfo);
@@ -107,15 +104,27 @@ class Devices {
107
104
  case 'BlitzShp':
108
105
  d = new zigbeeBlitzShp_1.ZigbeeBlitzShp(zigbeeInfo);
109
106
  break;
110
- case 'IlluLampe':
111
- d = new zigbeeIlluLampe_1.ZigbeeIlluLampe(zigbeeInfo);
107
+ case 'HeimanSmoke':
108
+ d = new zigbeeHeimanSmoke_1.ZigbeeHeimanSmoke(zigbeeInfo);
109
+ break;
110
+ case 'IkeaStecker':
111
+ d = new zigbeeIkeaSteckdose_1.ZigbeeIkeaSteckdose(zigbeeInfo);
112
112
  break;
113
113
  case 'IlluActuator':
114
114
  d = new zigbeeIlluActuator_1.ZigbeeIlluActuator(zigbeeInfo);
115
115
  break;
116
+ case 'IlluDimmer':
117
+ d = new zigbeeIlluDimmer_1.ZigbeeIlluDimmer(zigbeeInfo);
118
+ break;
119
+ case 'IlluLampe':
120
+ d = new zigbeeIlluLampe_1.ZigbeeIlluLampe(zigbeeInfo);
121
+ break;
116
122
  case 'IlluShutter':
117
123
  d = new zigbeeIlluShutter_1.ZigbeeIlluShutter(zigbeeInfo);
118
124
  break;
125
+ case 'LedRGBCCT':
126
+ d = new zigbeeIlluLedRGBCCT_1.ZigbeeIlluLedRGBCCT(zigbeeInfo);
127
+ break;
119
128
  case 'SMaBiTMagnet':
120
129
  d = new zigbeeSMaBiTMagnetContact_1.ZigbeeSMaBiTMagnetContact(zigbeeInfo);
121
130
  break;
@@ -172,6 +181,9 @@ class Devices {
172
181
  case 'HeizGr':
173
182
  d = new hmIpHeizgruppe_1.HmIpHeizgruppe(hmIPInfo);
174
183
  break;
184
+ case 'AccessPoint':
185
+ d = new hmIpAccessPoint_1.HmIpAccessPoint(hmIPInfo);
186
+ break;
175
187
  default:
176
188
  log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Warn, `No HmIP Device Type for ${hmIPInfo.deviceType} defined`);
177
189
  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;
@@ -1,24 +1,24 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Fenster = void 0;
4
- const log_service_1 = require("../services/log-service");
5
- const utils_1 = require("../services/utils/utils");
6
- const FensterPosition_1 = require("./models/FensterPosition");
7
- const time_callback_service_1 = require("../services/time-callback-service");
8
- const logLevel_1 = require("../../models/logLevel");
9
- const ShutterService_1 = require("../services/ShutterService");
10
- const base_group_1 = require("./groups/base-group");
11
- const group_type_1 = require("./groups/group-type");
12
- const device_cluster_type_1 = require("./device-cluster-type");
13
- const device_list_1 = require("./device-list");
4
+ const utils_1 = require("../../services/utils/utils");
5
+ const FensterPosition_1 = require("../models/FensterPosition");
6
+ const time_callback_service_1 = require("../../services/time-callback-service");
7
+ const logLevel_1 = require("../../../models/logLevel");
8
+ const ShutterService_1 = require("../../services/ShutterService");
9
+ const base_group_1 = require("./base-group");
10
+ const group_type_1 = require("./group-type");
11
+ const device_cluster_type_1 = require("../device-cluster-type");
12
+ const device_list_1 = require("../device-list");
14
13
  class Fenster extends base_group_1.BaseGroup {
15
- constructor(roomName, handleIds = [], vibrationIds = [], shutterIds = [], noRolloOnSunrise = false) {
14
+ constructor(roomName, handleIds = [], vibrationIds = [], shutterIds = [], magnetIds = [], noRolloOnSunrise = false) {
16
15
  super(roomName, group_type_1.GroupType.Window);
17
16
  this.noRolloOnSunrise = noRolloOnSunrise;
18
17
  this.desiredPosition = 0;
19
18
  this.deviceCluster.deviceMap.set(device_cluster_type_1.DeviceClusterType.Handle, new device_list_1.DeviceList(handleIds));
20
19
  this.deviceCluster.deviceMap.set(device_cluster_type_1.DeviceClusterType.Vibration, new device_list_1.DeviceList(vibrationIds));
21
20
  this.deviceCluster.deviceMap.set(device_cluster_type_1.DeviceClusterType.Shutter, new device_list_1.DeviceList(shutterIds));
21
+ this.deviceCluster.deviceMap.set(device_cluster_type_1.DeviceClusterType.MagnetContact, new device_list_1.DeviceList(magnetIds));
22
22
  }
23
23
  /**
24
24
  * sets the desired Pos and moves rollo to this level
@@ -31,6 +31,9 @@ class Fenster extends base_group_1.BaseGroup {
31
31
  getHandle() {
32
32
  return this.deviceCluster.getIoBrokerDevicesByType(device_cluster_type_1.DeviceClusterType.Handle);
33
33
  }
34
+ getMagnetContact() {
35
+ return this.deviceCluster.getIoBrokerDevicesByType(device_cluster_type_1.DeviceClusterType.MagnetContact);
36
+ }
34
37
  getShutter() {
35
38
  return this.deviceCluster.getIoBrokerDevicesByType(device_cluster_type_1.DeviceClusterType.Shutter);
36
39
  }
@@ -78,7 +81,7 @@ class Fenster extends base_group_1.BaseGroup {
78
81
  this.griffeInPosition(FensterPosition_1.FensterPosition.kipp) === 0) {
79
82
  const now = new Date().getTime();
80
83
  this.getVibration().forEach((element) => {
81
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Debug, `Starte Timeout für Vibrationsdeaktivierung für ${element.info.customName}`);
84
+ this.log(logLevel_1.LogLevel.Debug, `Starte Timeout für Vibrationsdeaktivierung für ${element.info.customName}`);
82
85
  utils_1.Utils.guardedTimeout(() => {
83
86
  if (element.vibrationBlockedTimeStamp < now) {
84
87
  element.vibrationBlocked = false;
@@ -99,7 +102,7 @@ class Fenster extends base_group_1.BaseGroup {
99
102
  }, 5, this);
100
103
  }
101
104
  rolloPositionChange(pValue) {
102
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Debug, `Rollo Position Change in ${this.roomName} to ${pValue}`);
105
+ this.log(logLevel_1.LogLevel.Debug, `Rollo Position Change in ${this.roomName} to ${pValue}`);
103
106
  if (pValue === 0 || pValue === 100) {
104
107
  this.getRoom().setLightTimeBased(true);
105
108
  }
@@ -1,6 +1,7 @@
1
1
  import { GroupType } from './group-type';
2
2
  import { DeviceCluster } from '../device-cluster';
3
3
  import { RoomBase } from '../../../models/rooms/RoomBase';
4
+ import { LogLevel } from '../../../models/logLevel';
4
5
  export declare class BaseGroup {
5
6
  roomName: string;
6
7
  type: GroupType;
@@ -8,4 +9,5 @@ export declare class BaseGroup {
8
9
  get deviceCluster(): DeviceCluster;
9
10
  constructor(roomName: string, type: GroupType);
10
11
  getRoom(): RoomBase;
12
+ protected log(level: LogLevel, message: string): void;
11
13
  }
@@ -1,9 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BaseGroup = void 0;
4
+ const group_type_1 = require("./group-type");
4
5
  const device_cluster_1 = require("../device-cluster");
5
6
  const api_service_1 = require("../../services/api/api-service");
6
7
  const utils_1 = require("../../services/utils/utils");
8
+ const log_service_1 = require("../../services/log-service/log-service");
7
9
  class BaseGroup {
8
10
  constructor(roomName, type) {
9
11
  this.roomName = roomName;
@@ -16,5 +18,11 @@ class BaseGroup {
16
18
  getRoom() {
17
19
  return utils_1.Utils.guard(api_service_1.API.getRoom(this.roomName));
18
20
  }
21
+ log(level, message) {
22
+ log_service_1.ServerLogService.writeLog(level, message, {
23
+ room: this.roomName,
24
+ groupType: group_type_1.GroupType[this.type],
25
+ });
26
+ }
19
27
  }
20
28
  exports.BaseGroup = BaseGroup;
@@ -1,4 +1,4 @@
1
- import { Fenster } from '../Fenster';
1
+ import { Fenster } from './Fenster';
2
2
  import { BaseGroup } from './base-group';
3
3
  export declare class FensterGroup extends BaseGroup {
4
4
  fenster: Fenster[];
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FensterGroup = void 0;
4
4
  const timeCallback_1 = require("../../../models/timeCallback");
5
- const log_service_1 = require("../../services/log-service");
6
5
  const utils_1 = require("../../services/utils/utils");
7
6
  const weather_service_1 = require("../../services/weather/weather-service");
8
7
  const FensterPosition_1 = require("../models/FensterPosition");
@@ -42,7 +41,7 @@ class FensterGroup extends base_group_1.BaseGroup {
42
41
  initialize() {
43
42
  const room = this.getRoom();
44
43
  if (room.settings.sonnenAufgangRollos && room.settings.rolloOffset) {
45
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Trace, `Sonnenaufgang TimeCallback für ${this.roomName} hinzufügen`);
44
+ this.log(logLevel_1.LogLevel.Trace, `Sonnenaufgang TimeCallback für ${this.roomName} hinzufügen`);
46
45
  room.sonnenAufgangCallback = new timeCallback_1.TimeCallback(`${this.roomName} Sonnenaufgang Rollos`, timeCallback_1.TimeCallbackType.Sunrise, () => {
47
46
  if (room.skipNextRolloUp) {
48
47
  room.skipNextRolloUp = false;
@@ -113,7 +112,7 @@ class FensterGroup extends base_group_1.BaseGroup {
113
112
  if (f.noRolloOnSunrise || f.getShutter().length === 0) {
114
113
  return;
115
114
  }
116
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Debug, `Fahre das Rollo zum Sonnenaufgang ${initial ? '(ggf. nachträglich)' : ''} hoch`);
115
+ this.log(logLevel_1.LogLevel.Debug, `Fahre das Rollo zum Sonnenaufgang ${initial ? '(ggf. nachträglich)' : ''} hoch`);
117
116
  f.setDesiredPosition(100);
118
117
  });
119
118
  }
@@ -1,4 +1,5 @@
1
1
  export * from './base-group';
2
+ export * from './Fenster';
2
3
  export * from './fensterGroup';
3
4
  export * from './group-type';
4
5
  export * from './heatGroup';
@@ -11,6 +11,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
11
11
  };
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
13
  __exportStar(require("./base-group"), exports);
14
+ __exportStar(require("./Fenster"), exports);
14
15
  __exportStar(require("./fensterGroup"), exports);
15
16
  __exportStar(require("./group-type"), exports);
16
17
  __exportStar(require("./heatGroup"), exports);
@@ -6,6 +6,7 @@ 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
10
  class LampenGroup extends base_group_1.BaseGroup {
10
11
  constructor(roomName, lampenIds = [], steckerIds = [], ledIds = []) {
11
12
  super(roomName, group_type_1.GroupType.Light);
@@ -53,14 +54,17 @@ class LampenGroup extends base_group_1.BaseGroup {
53
54
  let resultLampen = false;
54
55
  let resultSteckdosen = false;
55
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]}"`);
56
58
  this.getLED().forEach((s) => {
57
59
  s.setTimeBased(time);
58
60
  });
59
61
  }
60
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]}"`);
61
64
  resultSteckdosen = darkOutside;
62
65
  }
63
66
  else {
67
+ this.log(logLevel_1.LogLevel.Trace, `Set Lamps time based for time "${time_callback_service_1.TimeOfDay[time]}"`);
64
68
  resultLampen = darkOutside;
65
69
  }
66
70
  this.setAllLampen(resultLampen, time);
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PraesenzGroup = void 0;
4
4
  const timeCallback_1 = require("../../../models/timeCallback");
5
5
  const utils_1 = require("../../services/utils/utils");
6
- const log_service_1 = require("../../services/log-service");
7
6
  const logLevel_1 = require("../../../models/logLevel");
8
7
  const time_callback_service_1 = require("../../services/time-callback-service");
9
8
  const room_service_1 = require("../../services/room-service/room-service");
@@ -50,7 +49,7 @@ class PraesenzGroup extends base_group_1.BaseGroup {
50
49
  if (this.getRoom().settings.lichtSonnenAufgangAus && this.getRoom().settings.lampOffset) {
51
50
  const cb = new timeCallback_1.TimeCallback(`${this.roomName} Morgens Lampe aus`, timeCallback_1.TimeCallbackType.Sunrise, () => {
52
51
  var _a;
53
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Info, `Es ist hell genug --> Schalte Lampen im ${this.roomName} aus`);
52
+ this.log(logLevel_1.LogLevel.Info, `Es ist hell genug --> Schalte Lampen im ${this.roomName} aus`);
54
53
  (_a = this.getRoom().LampenGroup) === null || _a === void 0 ? void 0 : _a.switchAll(false);
55
54
  }, this.getRoom().settings.lampOffset.sunrise);
56
55
  this.getRoom().sonnenAufgangLichtCallback = cb;
@@ -62,7 +61,7 @@ class PraesenzGroup extends base_group_1.BaseGroup {
62
61
  });
63
62
  if (this.getRoom().settings.lampenBeiBewegung) {
64
63
  this.addFirstEnterCallback(() => {
65
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.DeepTrace, `Bewegung im Raum ${this.roomName} festgestellt --> Licht einschalten`);
64
+ this.log(logLevel_1.LogLevel.DeepTrace, `Bewegung im Raum ${this.roomName} festgestellt --> Licht einschalten`);
66
65
  this.getRoom().setLightTimeBased();
67
66
  });
68
67
  }
@@ -103,15 +102,15 @@ class PraesenzGroup extends base_group_1.BaseGroup {
103
102
  }
104
103
  let timeAfterReset = utils_1.Utils.nowMS() - this._lastMovement.getTime() - this.getRoom().settings.movementResetTimer * 1000;
105
104
  if (timeAfterReset > 0) {
106
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Debug, `Movement reset in ${this.roomName}.\nActive Motions: ${this.presentAmount()}\nTime after Last Movement including Reset: ${timeAfterReset}`);
105
+ this.log(logLevel_1.LogLevel.Debug, `Movement reset. Active Motions: ${this.presentAmount()}\tTime after Last Movement including Reset: ${timeAfterReset}`);
107
106
  cb();
108
107
  return;
109
108
  }
110
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Debug, `Movement reset in ${this.roomName} delayed.`);
109
+ this.log(logLevel_1.LogLevel.Debug, `Movement reset in ${this.roomName} delayed.`);
111
110
  utils_1.Utils.guardedTimeout(() => {
112
111
  timeAfterReset =
113
112
  utils_1.Utils.nowMS() - this._lastMovement.getTime() - this.getRoom().settings.movementResetTimer * 1000;
114
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Debug, `Delayed Movement reset in ${this.roomName}.\nActive Motions: ${this.presentAmount()}\nTime after Last Movement including Reset: ${timeAfterReset}`);
113
+ this.log(logLevel_1.LogLevel.Debug, `Delayed Movement reset. Active Motions: ${this.presentAmount()}\tTime after Last Movement including Reset: ${timeAfterReset}`);
115
114
  if (!this.anyPresent() && timeAfterReset > 0) {
116
115
  cb();
117
116
  }
@@ -0,0 +1,10 @@
1
+ /// <reference types="iobroker" />
2
+ import { HmIPDevice } from './hmIpDevice';
3
+ import { DeviceInfo } from '../DeviceInfo';
4
+ export declare class HmIpAccessPoint extends HmIPDevice {
5
+ private _ip;
6
+ get ip(): string;
7
+ constructor(pInfo: DeviceInfo);
8
+ update(idSplit: string[], state: ioBroker.State, initial?: boolean): void;
9
+ private updateBaseInformation;
10
+ }