hoffmation-base 0.1.41-1 → 0.1.41-13

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 (105) hide show
  1. package/lib/index.d.ts +1 -2
  2. package/lib/index.js +5 -4
  3. package/lib/models/deviceSettings/index.d.ts +1 -0
  4. package/lib/models/deviceSettings/index.js +1 -0
  5. package/lib/models/deviceSettings/motionSensorSettings.d.ts +9 -0
  6. package/lib/models/deviceSettings/motionSensorSettings.js +16 -0
  7. package/lib/models/deviceSettings/shutterSettings.d.ts +6 -0
  8. package/lib/models/deviceSettings/shutterSettings.js +6 -0
  9. package/lib/models/rooms/RoomBase.d.ts +7 -17
  10. package/lib/models/rooms/RoomBase.js +27 -32
  11. package/lib/models/rooms/RoomSettings/RoomSettings.js +1 -0
  12. package/lib/models/timeCallback.d.ts +7 -1
  13. package/lib/models/timeCallback.js +16 -10
  14. package/lib/server/devices/Heizgruppen.d.ts +1 -1
  15. package/lib/server/devices/Heizgruppen.js +3 -3
  16. package/lib/server/devices/IoBrokerBaseDevice.d.ts +11 -12
  17. package/lib/server/devices/IoBrokerBaseDevice.js +36 -38
  18. package/lib/server/devices/button.d.ts +1 -1
  19. package/lib/server/devices/button.js +5 -6
  20. package/lib/server/devices/device-cluster.d.ts +5 -4
  21. package/lib/server/devices/device-cluster.js +3 -2
  22. package/lib/server/devices/device-list.d.ts +4 -4
  23. package/lib/server/devices/device-list.js +5 -5
  24. package/lib/server/devices/deviceType.d.ts +1 -0
  25. package/lib/server/devices/deviceType.js +1 -0
  26. package/lib/server/devices/deviceUpdater.js +4 -4
  27. package/lib/server/devices/devices.d.ts +6 -7
  28. package/lib/server/devices/devices.js +78 -108
  29. package/lib/server/devices/groups/Fenster.d.ts +6 -6
  30. package/lib/server/devices/groups/Fenster.js +22 -24
  31. package/lib/server/devices/groups/fensterGroup.d.ts +2 -1
  32. package/lib/server/devices/groups/fensterGroup.js +42 -36
  33. package/lib/server/devices/groups/heatGroup.d.ts +2 -2
  34. package/lib/server/devices/groups/heatGroup.js +8 -8
  35. package/lib/server/devices/groups/lampenGroup.d.ts +3 -4
  36. package/lib/server/devices/groups/lampenGroup.js +12 -12
  37. package/lib/server/devices/groups/praesenzGroup.d.ts +6 -7
  38. package/lib/server/devices/groups/praesenzGroup.js +45 -40
  39. package/lib/server/devices/groups/tasterGroup.d.ts +1 -1
  40. package/lib/server/devices/groups/tasterGroup.js +3 -3
  41. package/lib/server/devices/hmIPDevices/hmIpBewegung.d.ts +12 -8
  42. package/lib/server/devices/hmIPDevices/hmIpBewegung.js +31 -26
  43. package/lib/server/devices/hmIPDevices/hmIpHeizgruppe.d.ts +8 -8
  44. package/lib/server/devices/hmIPDevices/hmIpHeizgruppe.js +40 -43
  45. package/lib/server/devices/hmIPDevices/hmIpLampe.d.ts +1 -2
  46. package/lib/server/devices/hmIPDevices/hmIpLampe.js +11 -13
  47. package/lib/server/devices/hmIPDevices/hmIpPraezenz.d.ts +5 -5
  48. package/lib/server/devices/hmIPDevices/hmIpPraezenz.js +17 -17
  49. package/lib/server/devices/iBaseDevice.d.ts +11 -0
  50. package/lib/server/devices/iBaseDevice.js +2 -0
  51. package/lib/server/devices/iButtonSwitch.d.ts +2 -2
  52. package/lib/server/devices/iEnergyManager.d.ts +18 -2
  53. package/lib/server/devices/iEnergyManager.js +28 -0
  54. package/lib/server/devices/iExcessEnergyConsumer.d.ts +3 -3
  55. package/lib/server/devices/iHeater.d.ts +3 -3
  56. package/lib/server/devices/iHumiditySensor.d.ts +2 -2
  57. package/lib/server/devices/iLamp.d.ts +3 -5
  58. package/lib/server/devices/iMotionSensor.d.ts +13 -0
  59. package/lib/server/devices/iMotionSensor.js +2 -0
  60. package/lib/server/devices/iShutter.d.ts +3 -3
  61. package/lib/server/devices/iTemperaturSensor.d.ts +2 -2
  62. package/lib/server/devices/iVibrationSensor.d.ts +9 -0
  63. package/lib/server/devices/iVibrationSensor.js +2 -0
  64. package/lib/server/devices/index.d.ts +3 -0
  65. package/lib/server/devices/index.js +3 -0
  66. package/lib/server/devices/jsObject/jsObjectEnergyManager.d.ts +36 -24
  67. package/lib/server/devices/jsObject/jsObjectEnergyManager.js +79 -39
  68. package/lib/server/devices/zigbee/index.d.ts +1 -0
  69. package/lib/server/devices/zigbee/index.js +1 -0
  70. package/lib/server/devices/zigbee/zigbeeAquaraMotion.d.ts +4 -4
  71. package/lib/server/devices/zigbee/zigbeeAquaraMotion.js +15 -16
  72. package/lib/server/devices/zigbee/zigbeeAquaraVibra.d.ts +11 -5
  73. package/lib/server/devices/zigbee/zigbeeAquaraVibra.js +48 -32
  74. package/lib/server/devices/zigbee/zigbeeIlluDimmer.d.ts +1 -2
  75. package/lib/server/devices/zigbee/zigbeeIlluDimmer.js +23 -25
  76. package/lib/server/devices/zigbee/zigbeeIlluLampe.d.ts +2 -2
  77. package/lib/server/devices/zigbee/zigbeeIlluLampe.js +7 -8
  78. package/lib/server/devices/zigbee/zigbeeIlluLedRGBCCT.d.ts +1 -2
  79. package/lib/server/devices/zigbee/zigbeeIlluLedRGBCCT.js +18 -20
  80. package/lib/server/devices/zigbee/zigbeeIlluShutter.d.ts +0 -2
  81. package/lib/server/devices/zigbee/zigbeeIlluShutter.js +26 -24
  82. package/lib/server/devices/zigbee/zigbeeMotionSensor.d.ts +8 -6
  83. package/lib/server/devices/zigbee/zigbeeMotionSensor.js +22 -21
  84. package/lib/server/devices/zigbee/zigbeeShutter.d.ts +13 -11
  85. package/lib/server/devices/zigbee/zigbeeShutter.js +43 -34
  86. package/lib/server/devices/zigbee/zigbeeUbisysShutter.d.ts +9 -0
  87. package/lib/server/devices/zigbee/zigbeeUbisysShutter.js +26 -0
  88. package/lib/server/services/ShutterService.d.ts +1 -2
  89. package/lib/server/services/ShutterService.js +6 -5
  90. package/lib/server/services/Telegram/telegram-service.d.ts +1 -1
  91. package/lib/server/services/Telegram/telegram-service.js +13 -11
  92. package/lib/server/services/api/api-service.d.ts +5 -5
  93. package/lib/server/services/api/api-service.js +5 -5
  94. package/lib/server/services/calendar/m/303/274ll-service.d.ts +4 -4
  95. package/lib/server/services/calendar/m/303/274ll-service.js +18 -14
  96. package/lib/server/services/dbo/postgreSqlPersist.d.ts +9 -9
  97. package/lib/server/services/dbo/postgreSqlPersist.js +13 -13
  98. package/lib/server/services/room-service/room-service.d.ts +5 -6
  99. package/lib/server/services/room-service/room-service.js +29 -30
  100. package/lib/server/services/time-callback-service.d.ts +9 -15
  101. package/lib/server/services/time-callback-service.js +39 -45
  102. package/lib/server/services/utils/utils.d.ts +2 -0
  103. package/lib/server/services/utils/utils.js +6 -10
  104. package/lib/tsconfig.tsbuildinfo +1 -1
  105. package/package.json +14 -14
@@ -2,30 +2,31 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MuellService = void 0;
4
4
  const node_ical_1 = require("node-ical");
5
- const timeCallback_1 = require("../../../models/timeCallback");
6
- const log_service_1 = require("../log-service/log-service");
7
- const utils_1 = require("../utils/utils");
5
+ const models_1 = require("../../../models");
6
+ const log_service_1 = require("../log-service");
7
+ const utils_1 = require("../utils");
8
8
  const muell_tonne_1 = require("./muell-tonne");
9
9
  const time_callback_service_1 = require("../time-callback-service");
10
- const logLevel_1 = require("../../../models/logLevel");
11
10
  class MuellService {
12
11
  static intialize(config, defaultSonosDevice) {
13
12
  this.defaultSonosDevice = defaultSonosDevice;
14
13
  this._active = true;
15
14
  this._calendarURL = config.calendarURL;
16
- this.updateTimeCallback = new timeCallback_1.TimeCallback('MuelltonnenServiceUpdater', timeCallback_1.TimeCallbackType.TimeOfDay, () => {
15
+ this.updateTimeCallback = new models_1.TimeCallback('MuelltonnenServiceUpdater', models_1.TimeCallbackType.TimeOfDay, () => {
17
16
  this.updateCalendar(false);
18
17
  }, 0, 2, 0);
19
18
  time_callback_service_1.TimeCallbackService.addCallback(this.updateTimeCallback);
20
- this.checkTimeCallback = new timeCallback_1.TimeCallback('MuelltonnenServiceChecker', timeCallback_1.TimeCallbackType.TimeOfDay, () => {
19
+ this.checkTimeCallback = new models_1.TimeCallback('MuelltonnenServiceChecker', models_1.TimeCallbackType.TimeOfDay, () => {
21
20
  this.checkAll();
22
21
  }, 0, 18, 0);
23
22
  time_callback_service_1.TimeCallbackService.addCallback(this.checkTimeCallback);
24
23
  this.updateCalendar();
25
24
  }
26
25
  static updateCalendar(checkAfterwards = true) {
27
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Debug, `Muell Service wird nun initialisiert`);
28
- node_ical_1.async.fromURL(this._calendarURL).then((data) => {
26
+ log_service_1.ServerLogService.writeLog(models_1.LogLevel.Debug, `Muell Service wird nun initialisiert`);
27
+ node_ical_1.async
28
+ .fromURL(this._calendarURL)
29
+ .then((data) => {
29
30
  this.gelbeTonne = new muell_tonne_1.MuellTonne('Gelbe Tonne', this.defaultSonosDevice);
30
31
  this.graueTonne = new muell_tonne_1.MuellTonne('Graue Tonne', this.defaultSonosDevice);
31
32
  this.blaueTonne = new muell_tonne_1.MuellTonne('Blaue Tonne', this.defaultSonosDevice);
@@ -40,7 +41,7 @@ class MuellService {
40
41
  continue;
41
42
  }
42
43
  const ev = data[k];
43
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.DeepTrace, `${ev.summary} is in ${ev.location} on the ${ev.start.getDate()} of ${this.months[ev.start.getMonth()]} at ${ev.start.toLocaleTimeString('en-GB')}`);
44
+ log_service_1.ServerLogService.writeLog(models_1.LogLevel.DeepTrace, `${ev.summary} is in ${ev.location} on the ${ev.start.getDate()} of ${this.months[ev.start.getMonth()]} at ${ev.start.toLocaleTimeString('en-GB')}`);
44
45
  if (ev.start.getTime() < todayMidnight) {
45
46
  continue;
46
47
  }
@@ -59,7 +60,7 @@ class MuellService {
59
60
  this.brauneTonne.dates.push(ev.start);
60
61
  break;
61
62
  default:
62
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Warn, `Unbekannte Mülltonne (${ev.summary})`);
63
+ log_service_1.ServerLogService.writeLog(models_1.LogLevel.Warn, `Unbekannte Mülltonne (${ev.summary})`);
63
64
  }
64
65
  }
65
66
  this.gelbeTonne.sortDates();
@@ -70,6 +71,9 @@ class MuellService {
70
71
  if (checkAfterwards) {
71
72
  this.checkAll();
72
73
  }
74
+ })
75
+ .catch((r) => {
76
+ log_service_1.ServerLogService.writeLog(models_1.LogLevel.Error, `Loading Trash Calendar failed with error: "${r}"`);
73
77
  });
74
78
  }
75
79
  static checkAll(pRetries = 10) {
@@ -78,18 +82,18 @@ class MuellService {
78
82
  }
79
83
  const now = new Date();
80
84
  if (now.getTime() - this.lastCheck.getTime() < 60000 && now.getDate() === this.lastCheck.getDate()) {
81
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Trace, `MüllService.checkAll: Skipped weil wir gerade erst geprüft hatten.`);
85
+ log_service_1.ServerLogService.writeLog(models_1.LogLevel.Trace, `MüllService.checkAll: Skipped weil wir gerade erst geprüft hatten.`);
82
86
  return;
83
87
  }
84
88
  if (this.gelbeTonne === undefined) {
85
89
  if (pRetries > 0) {
86
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Warn, `Der Müllservice ist noch nicht bereit --> warten`);
90
+ log_service_1.ServerLogService.writeLog(models_1.LogLevel.Warn, `Der Müllservice ist noch nicht bereit --> warten`);
87
91
  utils_1.Utils.guardedTimeout(() => {
88
92
  MuellService.checkAll(pRetries - 1);
89
93
  }, 1000);
90
94
  }
91
95
  else {
92
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Error, `Der Müllservice ist trotz Warten nicht bereit --> Abbruch`);
96
+ log_service_1.ServerLogService.writeLog(models_1.LogLevel.Error, `Der Müllservice ist trotz Warten nicht bereit --> Abbruch`);
93
97
  }
94
98
  return;
95
99
  }
@@ -102,7 +106,7 @@ class MuellService {
102
106
  }
103
107
  exports.MuellService = MuellService;
104
108
  MuellService.alleTonnen = [];
109
+ MuellService.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
105
110
  MuellService.lastCheck = new Date(0);
106
111
  MuellService._active = false;
107
112
  MuellService.defaultSonosDevice = undefined;
108
- MuellService.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
@@ -1,13 +1,13 @@
1
1
  import { iPersist } from './iPersist';
2
- import { RoomBase } from '../../../models/rooms/RoomBase';
3
- import { IoBrokerBaseDevice } from '../../devices/IoBrokerBaseDevice';
4
- import { CountToday } from '../../../models/persistence/todaysCount';
5
- import { TemperaturDataPoint } from '../../../models/persistence/temperaturDataPoint';
6
- import { HmIpHeizgruppe } from '../../devices/hmIPDevices/hmIpHeizgruppe';
7
- import { CurrentIlluminationDataPoint } from '../../../models/persistence/CurrentIlluminationDataPoint';
8
- import { iPersistenceSettings } from '../../config/iConfig';
9
- import { ShutterCalibration } from '../../../models/persistence/ShutterCalibration';
10
- import { EnergyCalculation } from '../../../models/persistence/EnergyCalculation';
2
+ import { RoomBase } from '../../../models';
3
+ import { IoBrokerBaseDevice } from '../../devices';
4
+ import { CountToday } from '../../../models';
5
+ import { TemperaturDataPoint } from '../../../models';
6
+ import { HmIpHeizgruppe } from '../../devices';
7
+ import { CurrentIlluminationDataPoint } from '../../../models';
8
+ import { iPersistenceSettings } from '../../config';
9
+ import { ShutterCalibration } from '../../../models';
10
+ import { EnergyCalculation } from '../../../models';
11
11
  export declare class PostgreSqlPersist implements iPersist {
12
12
  private psql;
13
13
  initialized: boolean;
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PostgreSqlPersist = void 0;
4
- const todaysCount_1 = require("../../../models/persistence/todaysCount");
4
+ const models_1 = require("../../../models");
5
5
  const pg_1 = require("pg");
6
- const log_service_1 = require("../log-service/log-service");
7
- const logLevel_1 = require("../../../models/logLevel");
6
+ const log_service_1 = require("../log-service");
7
+ const models_2 = require("../../../models");
8
8
  class PostgreSqlPersist {
9
9
  constructor(config) {
10
10
  this.initialized = false;
@@ -22,7 +22,7 @@ values ('${room.roomName}',${room.settings.etage})
22
22
  `);
23
23
  }
24
24
  addTemperaturDataPoint(hzGrp) {
25
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Trace, `Persisting Temperatur Data for ${hzGrp.info.customName}`);
25
+ log_service_1.ServerLogService.writeLog(models_2.LogLevel.Trace, `Persisting Temperatur Data for ${hzGrp.info.customName}`);
26
26
  this.query(`
27
27
  insert into hoffmation_schema."TemperaturData" ("date", humidity, "istTemperatur", level, name, "sollTemperatur")
28
28
  values ('${new Date().toISOString()}',${hzGrp.humidity},${hzGrp.iTemperatur},${hzGrp.iLevel},'${hzGrp.info.customName}',${hzGrp.desiredTemperatur});`);
@@ -44,11 +44,11 @@ values ('${new Date().toISOString()}',${hzGrp.humidity},${hzGrp.iTemperatur},${h
44
44
  if (dbResult !== null && dbResult.length > 0) {
45
45
  return dbResult[0];
46
46
  }
47
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Debug, `Es gibt noch keinen persistierten Counter für ${device.info.fullName}`);
48
- return new todaysCount_1.CountToday(device.info.fullID, 0);
47
+ log_service_1.ServerLogService.writeLog(models_2.LogLevel.Debug, `Es gibt noch keinen persistierten Counter für ${device.info.fullName}`);
48
+ return new models_1.CountToday(device.info.fullID, 0);
49
49
  }
50
50
  getShutterCalibration(_device) {
51
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Warn, `Postgres doesn't support Shutter Calibration yet.`);
51
+ log_service_1.ServerLogService.writeLog(models_2.LogLevel.Warn, `Postgres doesn't support Shutter Calibration yet.`);
52
52
  return new Promise((_res, reject) => {
53
53
  reject('Not Implemented');
54
54
  });
@@ -182,7 +182,7 @@ alter table "TemperaturData"
182
182
  END
183
183
  $$;`);
184
184
  this.initialized = true;
185
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Info, `Postgres DB initialized`);
185
+ log_service_1.ServerLogService.writeLog(models_2.LogLevel.Info, `Postgres DB initialized`);
186
186
  }
187
187
  persistCurrentIllumination(data) {
188
188
  this.query(`
@@ -191,7 +191,7 @@ values ('${data.roomName}','${data.deviceID}',${data.currentIllumination},'${dat
191
191
  `);
192
192
  }
193
193
  persistShutterCalibration(_data) {
194
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Warn, `Postgres doesn't support Shutter Calibration yet.`);
194
+ log_service_1.ServerLogService.writeLog(models_2.LogLevel.Warn, `Postgres doesn't support Shutter Calibration yet.`);
195
195
  }
196
196
  persistTodayCount(device, count, oldCount) {
197
197
  this.query(`
@@ -238,18 +238,18 @@ LIMIT ${limit}
238
238
  resolve(result.rows);
239
239
  })
240
240
  .catch((r) => {
241
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Warn, `Postgres Query failed: ${r}`);
241
+ log_service_1.ServerLogService.writeLog(models_2.LogLevel.Warn, `Postgres Query failed: ${r}`);
242
242
  resolve(null);
243
243
  });
244
244
  });
245
245
  }
246
246
  isPsqlReady() {
247
247
  if (!this.initialized) {
248
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Warn, `Db is not yet initialized`);
248
+ log_service_1.ServerLogService.writeLog(models_2.LogLevel.Warn, `Db is not yet initialized`);
249
249
  return false;
250
250
  }
251
251
  if (!this.psql) {
252
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Error, `PSQL client missing`);
252
+ log_service_1.ServerLogService.writeLog(models_2.LogLevel.Error, `PSQL client missing`);
253
253
  return false;
254
254
  }
255
255
  return true;
@@ -258,7 +258,7 @@ LIMIT ${limit}
258
258
  this.query(`
259
259
  insert into hoffmation_schema."EnergyCalculation" ("startDate", "endDate", "selfConsumedKwH", "injectedKwH",
260
260
  "drawnKwH")
261
- values ('${new Date(calc.startMs).toISOString()}','${new Date(calc.startMs).toISOString()}',
261
+ values ('${new Date(calc.startMs).toISOString()}','${new Date(calc.endMs).toISOString()}',
262
262
  ${calc.selfConsumedKwH}, ${calc.injectedKwH}, ${calc.drawnKwH});
263
263
  `);
264
264
  }
@@ -1,7 +1,6 @@
1
- import { ringStorage } from '../utils/ringstorage';
2
- import { RoomBase } from '../../../models/rooms/RoomBase';
3
- import { iRoomBase } from '../../../models/rooms/iRoomBase';
4
- import { IoBrokerBaseDevice } from '../../devices/IoBrokerBaseDevice';
1
+ import { ringStorage } from '../utils';
2
+ import { iRoomBase, RoomBase } from '../../../models';
3
+ import { IBaseDevice } from '../../devices';
5
4
  export declare class RoomService {
6
5
  static Rooms: Map<string, RoomBase>;
7
6
  static awayModeActive: boolean;
@@ -27,11 +26,11 @@ export declare class RoomService {
27
26
  * @param floor the level on which all lamps shall be changed -1 equals all rooms
28
27
  * @param status
29
28
  */
30
- static setAllLampsOfFloor(floor: number, status?: boolean): void;
29
+ static setAllLampsOfFloor(floor: number, status?: boolean, timeout?: number): void;
31
30
  static clearAllAlarms(): void;
32
31
  static startAwayMode(): void;
33
32
  static startNightAlarmMode(): void;
34
- static startIntrusionAlarm(room: iRoomBase, device: IoBrokerBaseDevice): void;
33
+ static startIntrusionAlarm(room: iRoomBase, device: IBaseDevice): void;
35
34
  static endAlarmModes(): void;
36
35
  static getLastMovements(): string;
37
36
  private static stopIntrusionAlarm;
@@ -1,13 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RoomService = void 0;
4
- const ringstorage_1 = require("../utils/ringstorage");
5
- const log_service_1 = require("../log-service/log-service");
6
- const logLevel_1 = require("../../../models/logLevel");
7
- const sonos_service_1 = require("../Sonos/sonos-service");
8
- const res_1 = require("../Translation/res");
9
- const utils_1 = require("../utils/utils");
10
- const telegram_service_1 = require("../Telegram/telegram-service");
4
+ const utils_1 = require("../utils");
5
+ const models_1 = require("../../../models");
6
+ const log_service_1 = require("../log-service");
7
+ const Sonos_1 = require("../Sonos");
8
+ const Translation_1 = require("../Translation");
9
+ const Telegram_1 = require("../Telegram");
11
10
  class RoomService {
12
11
  static addToRoomList(room) {
13
12
  RoomService.Rooms.set(room.roomName, room);
@@ -34,12 +33,12 @@ class RoomService {
34
33
  * @param floor the level on which all lamps shall be changed -1 equals all rooms
35
34
  * @param status
36
35
  */
37
- static setAllLampsOfFloor(floor, status = false) {
36
+ static setAllLampsOfFloor(floor, status = false, timeout) {
38
37
  var _a, _b, _c;
39
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Info, `Schalte alle Lampen in Etage ${floor} auf den Wert ${status}`);
38
+ log_service_1.ServerLogService.writeLog(models_1.LogLevel.Info, `Schalte alle Lampen in Etage ${floor} auf den Wert ${status}`);
40
39
  const rooms = floor > -1 ? this.getAllRoomsOfFloor(floor) : this.Rooms.entries();
41
40
  for (const [_name, room] of rooms) {
42
- (_a = room.LampenGroup) === null || _a === void 0 ? void 0 : _a.setAllLampen(status, -1, true);
41
+ (_a = room.LampenGroup) === null || _a === void 0 ? void 0 : _a.setAllLampen(status, -1, true, timeout);
43
42
  (_b = room.LampenGroup) === null || _b === void 0 ? void 0 : _b.setAllLED(status);
44
43
  (_c = room.LampenGroup) === null || _c === void 0 ? void 0 : _c.setAllStecker(status, -1, true);
45
44
  }
@@ -58,36 +57,36 @@ class RoomService {
58
57
  this.restoreLight();
59
58
  }
60
59
  static startAwayMode() {
61
- sonos_service_1.SonosService.speakOnAll(res_1.Res.alarmArmed(), 40);
60
+ Sonos_1.SonosService.speakOnAll(Translation_1.Res.alarmArmed(), 40);
62
61
  if (this._awayModeTimeout) {
63
62
  clearTimeout(this._awayModeTimeout);
64
63
  }
65
64
  this._awayModeTimeout = utils_1.Utils.guardedTimeout(() => {
66
65
  this.awayModeActive = true;
67
66
  this._awayModeTimeout = undefined;
68
- telegram_service_1.TelegramService.inform(`Alarm ist nun scharf. Gute Reise!`);
67
+ Telegram_1.TelegramService.inform(`Alarm ist nun scharf. Gute Reise!`);
69
68
  }, 60000, this);
70
69
  }
71
70
  static startNightAlarmMode() {
72
- sonos_service_1.SonosService.speakOnAll(res_1.Res.alarmNightModeArmed(), 30);
71
+ Sonos_1.SonosService.speakOnAll(Translation_1.Res.alarmNightModeArmed(), 30);
73
72
  if (this._nightModeTimeout) {
74
73
  clearTimeout(this._nightModeTimeout);
75
74
  }
76
75
  this._nightModeTimeout = utils_1.Utils.guardedTimeout(() => {
77
76
  this.nightAlarmActive = true;
78
77
  this._nightModeTimeout = undefined;
79
- telegram_service_1.TelegramService.inform(`Alarm ist nun scharf. Süße Träume!`);
78
+ Telegram_1.TelegramService.inform(`Alarm ist nun scharf. Süße Träume!`);
80
79
  }, 60000, this);
81
80
  }
82
81
  static startIntrusionAlarm(room, device) {
83
82
  const message = `!Potenzieller Eindringling! Bewegung in ${room.roomName} von ${device.info.fullName} festgestellt`;
84
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Info, message);
83
+ log_service_1.ServerLogService.writeLog(models_1.LogLevel.Info, message);
85
84
  if (!this.awayModeActive && !this.nightAlarmActive) {
86
85
  this.stopIntrusionAlarm();
87
86
  return;
88
87
  }
89
88
  utils_1.Utils.guardedNewThread(() => {
90
- telegram_service_1.TelegramService.inform(message);
89
+ Telegram_1.TelegramService.inform(message);
91
90
  }, this);
92
91
  if (this._intrusionAlarmActive) {
93
92
  return;
@@ -97,12 +96,12 @@ class RoomService {
97
96
  }
98
97
  static endAlarmModes() {
99
98
  if (this.awayModeActive) {
100
- telegram_service_1.TelegramService.sendMessage(telegram_service_1.TelegramService.subscribedIDs, `Alarmanalage entschärft`);
101
- sonos_service_1.SonosService.speakOnAll(res_1.Res.welcomeHome(), 35);
99
+ Telegram_1.TelegramService.sendMessage(Telegram_1.TelegramService.subscribedIDs, `Alarmanalage entschärft`);
100
+ Sonos_1.SonosService.speakOnAll(Translation_1.Res.welcomeHome(), 35);
102
101
  }
103
102
  if (this.nightAlarmActive) {
104
- telegram_service_1.TelegramService.sendMessage(telegram_service_1.TelegramService.subscribedIDs, `Nachtmodus der Alarmanlage entschärft`);
105
- sonos_service_1.SonosService.speakOnAll(res_1.Res.goodMorning(), 30);
103
+ Telegram_1.TelegramService.sendMessage(Telegram_1.TelegramService.subscribedIDs, `Nachtmodus der Alarmanlage entschärft`);
104
+ Sonos_1.SonosService.speakOnAll(Translation_1.Res.goodMorning(), 30);
106
105
  }
107
106
  if (this._nightModeTimeout) {
108
107
  clearTimeout(this._nightModeTimeout);
@@ -118,7 +117,7 @@ class RoomService {
118
117
  return this.movementHistory.readAmount(15).join('\n');
119
118
  }
120
119
  static stopIntrusionAlarm() {
121
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Info, `Stoppe Intrusion Alarm`);
120
+ log_service_1.ServerLogService.writeLog(models_1.LogLevel.Info, `Stoppe Intrusion Alarm`);
122
121
  if (this._intrusionAlarmTimeout) {
123
122
  clearTimeout(this._intrusionAlarmTimeout);
124
123
  }
@@ -127,7 +126,7 @@ class RoomService {
127
126
  }
128
127
  this._intrusionAlarmActive = false;
129
128
  this._intrusionAlarmLevel = 0;
130
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Alert, `Alarm wurde beendet --> Fahre Rollos in Ausgangsposition.`);
129
+ log_service_1.ServerLogService.writeLog(models_1.LogLevel.Alert, `Alarm wurde beendet --> Fahre Rollos in Ausgangsposition.`);
131
130
  this.restoreRolloPosition();
132
131
  this.restoreLight();
133
132
  }
@@ -142,11 +141,11 @@ class RoomService {
142
141
  let newTimeout = 20000;
143
142
  const alarmAutomaticEnd = 15;
144
143
  if (this._intrusionAlarmLevel === 1) {
145
- speakMessage = res_1.Res.intruderGreeting();
144
+ speakMessage = Translation_1.Res.intruderGreeting();
146
145
  volume = 40;
147
146
  }
148
147
  else if (this._intrusionAlarmLevel === 2) {
149
- speakMessage = res_1.Res.intruderShutterUpPleaseLeave();
148
+ speakMessage = Translation_1.Res.intruderShutterUpPleaseLeave();
150
149
  utils_1.Utils.guardedNewThread(() => {
151
150
  this.setAllRolloOfFloor(-1, 100);
152
151
  this.setAllLampsOfFloor(-1, true);
@@ -154,11 +153,11 @@ class RoomService {
154
153
  }
155
154
  else if (this._intrusionAlarmLevel === 3) {
156
155
  volume = 70;
157
- speakMessage = res_1.Res.intruderLeaveAndOwnerInformed();
156
+ speakMessage = Translation_1.Res.intruderLeaveAndOwnerInformed();
158
157
  }
159
158
  else if (this._intrusionAlarmLevel <= 5) {
160
159
  volume = 80;
161
- speakMessage = res_1.Res.intruderAdditionalDefenseWarning();
160
+ speakMessage = Translation_1.Res.intruderAdditionalDefenseWarning();
162
161
  }
163
162
  else if (this._intrusionAlarmLevel >= alarmAutomaticEnd) {
164
163
  this.stopIntrusionAlarm();
@@ -166,15 +165,15 @@ class RoomService {
166
165
  }
167
166
  else {
168
167
  volume = 90;
169
- speakMessage = res_1.Res.intruderAlarm();
168
+ speakMessage = Translation_1.Res.intruderAlarm();
170
169
  newTimeout = 10000;
171
170
  }
172
171
  this._intrusionAlarmTimeout = utils_1.Utils.guardedTimeout(() => {
173
172
  this.performNextIntrusionLevel();
174
173
  }, newTimeout, this);
175
174
  utils_1.Utils.guardedNewThread(() => {
176
- sonos_service_1.SonosService.speakOnAll(speakMessage, volume);
177
- telegram_service_1.TelegramService.inform(`Eindringling erhielt folgende Nachricht: "${speakMessage}"\nAlarmlevel ist ${this._intrusionAlarmLevel}\t Automatisches Ende bei ${alarmAutomaticEnd}`);
175
+ Sonos_1.SonosService.speakOnAll(speakMessage, volume);
176
+ Telegram_1.TelegramService.inform(`Eindringling erhielt folgende Nachricht: "${speakMessage}"\nAlarmlevel ist ${this._intrusionAlarmLevel}\t Automatisches Ende bei ${alarmAutomaticEnd}`);
178
177
  }, this);
179
178
  }
180
179
  static restoreRolloPosition() {
@@ -193,6 +192,6 @@ exports.RoomService = RoomService;
193
192
  RoomService.Rooms = new Map();
194
193
  RoomService.awayModeActive = false;
195
194
  RoomService.nightAlarmActive = false;
196
- RoomService.movementHistory = new ringstorage_1.ringStorage(15);
195
+ RoomService.movementHistory = new utils_1.ringStorage(15);
197
196
  RoomService._intrusionAlarmActive = false;
198
197
  RoomService._intrusionAlarmLevel = 0;
@@ -1,10 +1,4 @@
1
- import { TimeCallback } from '../../models/timeCallback';
2
- export declare enum TimeOfDay {
3
- BeforeSunrise = 1,
4
- Daylight = 2,
5
- AfterSunset = 3,
6
- Night = 4
7
- }
1
+ import { TimeCallback, TimeOfDay } from '../../models';
8
2
  export declare class SunTimeOffsets {
9
3
  sunrise: number;
10
4
  sunset: number;
@@ -13,27 +7,27 @@ export declare class SunTimeOffsets {
13
7
  maximumHours: number;
14
8
  maximumMinutes: number;
15
9
  constructor(sunrise?: number, sunset?: number, minimumHours?: number, minimumMinutes?: number, maximumHours?: number, maximumMinutes?: number);
16
- getNextMinimumSunrise(): Date;
17
- getNextMaximumSunset(): Date;
10
+ getNextMinimumSunrise(date?: Date): Date;
11
+ getNextMaximumSunset(date?: Date): Date;
18
12
  }
19
13
  export declare class TimeCallbackService {
20
14
  private static _todaySunRise;
21
15
  private static _todaySunSet;
22
- private static _nextSunRise;
23
- private static _nextSunSet;
24
16
  private static _callbacks;
25
17
  private static _iCheckTimeout;
26
18
  private static _lastCheck;
19
+ private static _nextSunRise;
20
+ static get nextSunRise(): Date;
21
+ private static _nextSunSet;
22
+ static get nextSunSet(): Date;
27
23
  static dayType(pOffset: SunTimeOffsets): TimeOfDay;
28
24
  static darkOutsideOrNight(dayType: TimeOfDay): boolean;
29
25
  static stopInterval(): void;
30
- static get nextSunRise(): Date;
31
- static get nextSunSet(): Date;
32
26
  static init(): void;
33
27
  static addCallback(pCallback: TimeCallback): void;
34
28
  static performCheck(): void;
35
29
  static recalcSunTimes(): void;
36
30
  static removeCallback(pCallback: TimeCallback): void;
37
- static updateSunRise(pDay?: Date): void;
38
- static updateSunSet(pDay?: Date): void;
31
+ static updateSunRise(pDay?: Date, lat?: number, long?: number): void;
32
+ static updateSunSet(pDay?: Date, lat?: number, long?: number): void;
39
33
  }
@@ -1,20 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TimeCallbackService = exports.SunTimeOffsets = exports.TimeOfDay = void 0;
3
+ exports.TimeCallbackService = exports.SunTimeOffsets = void 0;
4
4
  const sunrise_sunset_js_1 = require("sunrise-sunset-js");
5
- const timeCallback_1 = require("../../models/timeCallback");
6
- const log_service_1 = require("./log-service/log-service");
7
- const utils_1 = require("./utils/utils");
5
+ const models_1 = require("../../models");
6
+ const log_service_1 = require("./log-service");
7
+ const utils_1 = require("./utils");
8
8
  const settings_service_1 = require("./settings-service");
9
- const devices_1 = require("../devices/devices");
10
- const logLevel_1 = require("../../models/logLevel");
11
- var TimeOfDay;
12
- (function (TimeOfDay) {
13
- TimeOfDay[TimeOfDay["BeforeSunrise"] = 1] = "BeforeSunrise";
14
- TimeOfDay[TimeOfDay["Daylight"] = 2] = "Daylight";
15
- TimeOfDay[TimeOfDay["AfterSunset"] = 3] = "AfterSunset";
16
- TimeOfDay[TimeOfDay["Night"] = 4] = "Night";
17
- })(TimeOfDay = exports.TimeOfDay || (exports.TimeOfDay = {}));
9
+ const devices_1 = require("../devices");
18
10
  class SunTimeOffsets {
19
11
  constructor(sunrise = 0, sunset = 0, minimumHours = 6, minimumMinutes = 24, maximumHours = 22, maximumMinutes = 30) {
20
12
  this.sunrise = sunrise;
@@ -24,23 +16,31 @@ class SunTimeOffsets {
24
16
  this.maximumHours = maximumHours;
25
17
  this.maximumMinutes = maximumMinutes;
26
18
  }
27
- getNextMinimumSunrise() {
28
- const today = new Date(new Date().setHours(this.minimumHours, this.minimumMinutes));
29
- if (today > new Date()) {
19
+ getNextMinimumSunrise(date = new Date()) {
20
+ const dateCopy = new Date(date);
21
+ const today = new Date(dateCopy.setHours(this.minimumHours, this.minimumMinutes, 0, 0));
22
+ if (today > date) {
30
23
  return today;
31
24
  }
32
- return new Date(today.getTime() + 24 * 60 * 60 * 1000);
25
+ return new Date(today.setDate(today.getDate() + 1));
33
26
  }
34
- getNextMaximumSunset() {
35
- const today = new Date(new Date().setHours(this.maximumHours, this.maximumMinutes));
36
- if (today > new Date()) {
27
+ getNextMaximumSunset(date = new Date()) {
28
+ const dateCopy = new Date(date);
29
+ const today = new Date(dateCopy.setHours(this.maximumHours, this.maximumMinutes, 0, 0));
30
+ if (today > date) {
37
31
  return today;
38
32
  }
39
- return new Date(today.getTime() + 24 * 60 * 60 * 1000);
33
+ return new Date(today.setDate(today.getDate() + 1));
40
34
  }
41
35
  }
42
36
  exports.SunTimeOffsets = SunTimeOffsets;
43
37
  class TimeCallbackService {
38
+ static get nextSunRise() {
39
+ return TimeCallbackService._nextSunRise;
40
+ }
41
+ static get nextSunSet() {
42
+ return TimeCallbackService._nextSunSet;
43
+ }
44
44
  static dayType(pOffset) {
45
45
  const now = new Date();
46
46
  const hours = now.getHours();
@@ -51,7 +51,7 @@ class TimeCallbackService {
51
51
  if ((hours < nightEnd.hours && hours > nightStart.hours) ||
52
52
  (hours === nightEnd.hours && minutes < nightEnd.minutes) ||
53
53
  (hours === nightStart.hours && minutes > nightStart.minutes)) {
54
- return TimeOfDay.Night;
54
+ return models_1.TimeOfDay.Night;
55
55
  }
56
56
  }
57
57
  else {
@@ -59,7 +59,7 @@ class TimeCallbackService {
59
59
  hours < nightEnd.hours ||
60
60
  (hours === nightStart.hours && minutes >= nightStart.minutes) ||
61
61
  (hours === nightEnd.hours && minutes <= nightEnd.minutes)) {
62
- return TimeOfDay.Night;
62
+ return models_1.TimeOfDay.Night;
63
63
  }
64
64
  }
65
65
  let sunset = new Date(TimeCallbackService._todaySunSet.getTime() + pOffset.sunset * 60 * 1000);
@@ -68,11 +68,11 @@ class TimeCallbackService {
68
68
  maximumSunset.setDate(maximumSunset.getDate() - 1);
69
69
  }
70
70
  if (maximumSunset < sunset && maximumSunset.getDate() === sunset.getDate()) {
71
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Trace, `Maximum Sunset vor nächstem Sunset: Sunset ${sunset.toLocaleString()}\t\t${maximumSunset.toLocaleString()}`);
71
+ log_service_1.ServerLogService.writeLog(models_1.LogLevel.Trace, `Maximum Sunset vor nächstem Sunset: Sunset ${sunset.toLocaleString()}\t\t${maximumSunset.toLocaleString()}`);
72
72
  sunset = maximumSunset;
73
73
  }
74
74
  if (now > sunset) {
75
- return TimeOfDay.AfterSunset;
75
+ return models_1.TimeOfDay.AfterSunset;
76
76
  }
77
77
  const minimumSunrise = pOffset.getNextMinimumSunrise();
78
78
  let sunrise = new Date(TimeCallbackService._todaySunRise.getTime() + pOffset.sunrise * 60 * 1000);
@@ -80,19 +80,19 @@ class TimeCallbackService {
80
80
  minimumSunrise.setDate(minimumSunrise.getDate() - 1);
81
81
  }
82
82
  if (minimumSunrise > sunrise && minimumSunrise.getDate() === sunrise.getDate()) {
83
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Trace, `Minimum Sunset nach aktuellem Sunrise: Sunset ${sunrise.toLocaleString()}\t\t${minimumSunrise.toLocaleString()}`);
83
+ log_service_1.ServerLogService.writeLog(models_1.LogLevel.Trace, `Minimum Sunset nach aktuellem Sunrise: Sunset ${sunrise.toLocaleString()}\t\t${minimumSunrise.toLocaleString()}`);
84
84
  sunrise = minimumSunrise;
85
85
  }
86
86
  if (now < sunrise && now.getDate() == sunrise.getDate()) {
87
- return TimeOfDay.BeforeSunrise;
87
+ return models_1.TimeOfDay.BeforeSunrise;
88
88
  }
89
- return TimeOfDay.Daylight;
89
+ return models_1.TimeOfDay.Daylight;
90
90
  }
91
91
  static darkOutsideOrNight(dayType) {
92
92
  switch (dayType) {
93
- case TimeOfDay.Night:
94
- case TimeOfDay.BeforeSunrise:
95
- case TimeOfDay.AfterSunset:
93
+ case models_1.TimeOfDay.Night:
94
+ case models_1.TimeOfDay.BeforeSunrise:
95
+ case models_1.TimeOfDay.AfterSunset:
96
96
  return true;
97
97
  default:
98
98
  return false;
@@ -104,18 +104,12 @@ class TimeCallbackService {
104
104
  this._iCheckTimeout = undefined;
105
105
  }
106
106
  }
107
- static get nextSunRise() {
108
- return TimeCallbackService._nextSunRise;
109
- }
110
- static get nextSunSet() {
111
- return TimeCallbackService._nextSunSet;
112
- }
113
107
  static init() {
114
- const dailyRecalc = new timeCallback_1.TimeCallback('Midnight Recalc', timeCallback_1.TimeCallbackType.TimeOfDay, () => {
108
+ const dailyRecalc = new models_1.TimeCallback('Midnight Recalc', models_1.TimeCallbackType.TimeOfDay, () => {
115
109
  TimeCallbackService.recalcSunTimes();
116
110
  devices_1.Devices.midnightReset();
117
111
  }, 0, 0, 0);
118
- const daily3oClockRecalc = new timeCallback_1.TimeCallback('Daily3oClockRecalc', timeCallback_1.TimeCallbackType.TimeOfDay, () => {
112
+ const daily3oClockRecalc = new models_1.TimeCallback('Daily3oClockRecalc', models_1.TimeCallbackType.TimeOfDay, () => {
119
113
  devices_1.Devices.resetPraesenzCount();
120
114
  }, 0, 3, 0);
121
115
  TimeCallbackService.recalcSunTimes();
@@ -127,7 +121,7 @@ class TimeCallbackService {
127
121
  TimeCallbackService._callbacks.push(pCallback);
128
122
  }
129
123
  static performCheck() {
130
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Trace, `Perform TimeCallBackCheck`);
124
+ log_service_1.ServerLogService.writeLog(models_1.LogLevel.Trace, `Perform TimeCallBackCheck`);
131
125
  const now = new Date();
132
126
  for (const tc of TimeCallbackService._callbacks) {
133
127
  if (tc.nextToDo === undefined || tc.nextToDo < tc.lastDone) {
@@ -157,7 +151,7 @@ class TimeCallbackService {
157
151
  TimeCallbackService._todaySunSet = (0, sunrise_sunset_js_1.getSunset)(51.529556852253826, 7.097266042276687, new Date());
158
152
  TimeCallbackService.updateSunSet();
159
153
  TimeCallbackService.updateSunRise();
160
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Info, `Nächster Sonnenaufgang um ${TimeCallbackService.nextSunRise.toLocaleTimeString('de-DE')}
154
+ log_service_1.ServerLogService.writeLog(models_1.LogLevel.Info, `Nächster Sonnenaufgang um ${TimeCallbackService.nextSunRise.toLocaleTimeString('de-DE')}
161
155
  Nächster Sonnenuntergang um ${TimeCallbackService._nextSunSet.toLocaleTimeString('de-DE')}`);
162
156
  }
163
157
  static removeCallback(pCallback) {
@@ -170,11 +164,11 @@ Nächster Sonnenuntergang um ${TimeCallbackService._nextSunSet.toLocaleTimeStrin
170
164
  return;
171
165
  }
172
166
  }
173
- static updateSunRise(pDay = new Date()) {
174
- TimeCallbackService._nextSunRise = (0, sunrise_sunset_js_1.getSunrise)(51.529556852253826, 7.097266042276687, pDay);
167
+ static updateSunRise(pDay = new Date(), lat = 51.529556852253826, long = 7.097266042276687) {
168
+ TimeCallbackService._nextSunRise = (0, sunrise_sunset_js_1.getSunrise)(lat, long, pDay);
175
169
  }
176
- static updateSunSet(pDay = new Date()) {
177
- TimeCallbackService._nextSunSet = (0, sunrise_sunset_js_1.getSunset)(51.529556852253826, 7.097266042276687, pDay);
170
+ static updateSunSet(pDay = new Date(), lat = 51.529556852253826, long = 7.097266042276687) {
171
+ TimeCallbackService._nextSunSet = (0, sunrise_sunset_js_1.getSunset)(lat, long, pDay);
178
172
  }
179
173
  }
180
174
  exports.TimeCallbackService = TimeCallbackService;
@@ -1,5 +1,7 @@
1
1
  /// <reference types="node" />
2
+ import { iPersist } from '../dbo';
2
3
  export declare class Utils {
4
+ static dbo: iPersist | undefined;
3
5
  static catchEm<T>(promise: Promise<T>): Promise<{
4
6
  reason: Error | null;
5
7
  data: T | null;