hoffmation-base 0.1.29-9 → 0.1.30-4

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 (28) hide show
  1. package/lib/index.js +4 -0
  2. package/lib/models/dimmerSettings.d.ts +7 -4
  3. package/lib/models/dimmerSettings.js +8 -4
  4. package/lib/models/rooms/RoomBase.js +10 -9
  5. package/lib/server/config/iConfig.d.ts +9 -0
  6. package/lib/server/devices/hmIPDevices/hmIpTuer.js +2 -1
  7. package/lib/server/devices/zigbee/zigbeeAquaraMotion.d.ts +5 -1
  8. package/lib/server/devices/zigbee/zigbeeAquaraMotion.js +14 -10
  9. package/lib/server/devices/zigbee/zigbeeAquaraVibra.js +2 -1
  10. package/lib/server/devices/zigbee/zigbeeAquaraWater.js +7 -6
  11. package/lib/server/devices/zigbee/zigbeeHeimanSmoke.js +7 -6
  12. package/lib/server/devices/zigbee/zigbeeIlluDimmer.d.ts +1 -1
  13. package/lib/server/devices/zigbee/zigbeeIlluDimmer.js +19 -14
  14. package/lib/server/devices/zigbee/zigbeeMagnetContact.js +4 -4
  15. package/lib/server/services/Sonos/sonos-service.js +0 -2
  16. package/lib/server/services/Translation/iRessources.d.ts +25 -0
  17. package/lib/server/services/Translation/iRessources.js +2 -0
  18. package/lib/server/services/Translation/index.d.ts +2 -0
  19. package/lib/server/services/Translation/index.js +14 -0
  20. package/lib/server/services/Translation/res.d.ts +83 -0
  21. package/lib/server/services/Translation/res.js +147 -0
  22. package/lib/server/services/Translation/resources.json +78 -0
  23. package/lib/server/services/index.d.ts +1 -0
  24. package/lib/server/services/index.js +1 -0
  25. package/lib/server/services/log-service.d.ts +3 -1
  26. package/lib/server/services/log-service.js +9 -3
  27. package/lib/tsconfig.tsbuildinfo +1 -1
  28. package/package.json +10 -10
package/lib/index.js CHANGED
@@ -25,6 +25,10 @@ exports.HoffmationInitializationObject = HoffmationInitializationObject;
25
25
  class HoffmationBase {
26
26
  static async initializeBeforeIoBroker(initObject) {
27
27
  server_1.SettingsService.initialize(initObject.config);
28
+ server_1.Res.initialize(initObject.config.translationSettings);
29
+ if (initObject.config.logSettings) {
30
+ server_1.ServerLogService.initialize(initObject.config.logSettings);
31
+ }
28
32
  server_1.ServerLogService.writeLog(models_1.LogLevel.Info, `Hoffmation-Base Startup`);
29
33
  if (initObject.config.persistence) {
30
34
  await server_1.Persist.initialize(initObject.config.persistence);
@@ -1,5 +1,8 @@
1
- export declare class DimmerSettings {
2
- dawnOn: boolean;
3
- duskOn: boolean;
4
- nightOn: boolean;
1
+ import { ActuatorSettings } from './actuatorSettings';
2
+ export declare class DimmerSettings extends ActuatorSettings {
3
+ nightBrightness: number;
4
+ dawnBrightness: number;
5
+ duskBrightness: number;
6
+ dayBrightness: number;
7
+ turnOnThreshhold: number;
5
8
  }
@@ -1,11 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DimmerSettings = void 0;
4
- class DimmerSettings {
4
+ const actuatorSettings_1 = require("./actuatorSettings");
5
+ class DimmerSettings extends actuatorSettings_1.ActuatorSettings {
5
6
  constructor() {
6
- this.dawnOn = true;
7
- this.duskOn = true;
8
- this.nightOn = true;
7
+ super(...arguments);
8
+ this.nightBrightness = 50;
9
+ this.dawnBrightness = 75;
10
+ this.duskBrightness = 75;
11
+ this.dayBrightness = 100;
12
+ this.turnOnThreshhold = -1;
9
13
  }
10
14
  }
11
15
  exports.DimmerSettings = DimmerSettings;
@@ -17,6 +17,7 @@ const persist_1 = require("../../server/services/dbo/persist");
17
17
  const time_callback_service_1 = require("../../server/services/time-callback-service");
18
18
  const sonos_service_1 = require("../../server/services/Sonos/sonos-service");
19
19
  const sonosGroup_1 = require("../../server/devices/groups/sonosGroup");
20
+ const res_1 = require("../../server/services/Translation/res");
20
21
  class RoomBase {
21
22
  constructor(roomName, Einstellungen) {
22
23
  this.roomName = roomName;
@@ -88,7 +89,7 @@ class RoomBase {
88
89
  this.restoreLight();
89
90
  }
90
91
  static startAwayMode() {
91
- sonos_service_1.SonosService.speakOnAll(`Alarmanlage wird scharfgeschaltet.`, 40);
92
+ sonos_service_1.SonosService.speakOnAll(res_1.Res.alarmArmed(), 40);
92
93
  if (this._awayModeTimer) {
93
94
  clearTimeout(this._awayModeTimer);
94
95
  }
@@ -99,7 +100,7 @@ class RoomBase {
99
100
  }, 60000, this);
100
101
  }
101
102
  static startNightAlarmMode() {
102
- sonos_service_1.SonosService.speakOnAll(`Alarmanlage wird für die Nacht scharfgeschaltet. Gute Nacht!`, 30);
103
+ sonos_service_1.SonosService.speakOnAll(res_1.Res.alarmNightModeArmed(), 30);
103
104
  if (this._nightModeTimer) {
104
105
  clearTimeout(this._nightModeTimer);
105
106
  }
@@ -128,11 +129,11 @@ class RoomBase {
128
129
  static endAlarmModes() {
129
130
  if (this.awayModeActive) {
130
131
  telegram_service_1.TelegramService.sendMessage(telegram_service_1.TelegramService.subscribedIDs, `Alarmanalage entschärft`);
131
- sonos_service_1.SonosService.speakOnAll(`Willkommen Zuhause!`, 35);
132
+ sonos_service_1.SonosService.speakOnAll(res_1.Res.welcomeHome(), 35);
132
133
  }
133
134
  if (this.nightAlarmActive) {
134
135
  telegram_service_1.TelegramService.sendMessage(telegram_service_1.TelegramService.subscribedIDs, `Nachtmodus der Alarmanlage entschärft`);
135
- sonos_service_1.SonosService.speakOnAll(`Guten Morgen!`, 30);
136
+ sonos_service_1.SonosService.speakOnAll(res_1.Res.goodMorning(), 30);
136
137
  }
137
138
  if (this._nightModeTimer) {
138
139
  clearTimeout(this._nightModeTimer);
@@ -240,11 +241,11 @@ class RoomBase {
240
241
  let newTimeout = 20000;
241
242
  const alarmAutomaticEnd = 15;
242
243
  if (this._intrusionAlarmLevel === 1) {
243
- speakMessage = `Hallo potenzieller Eindringling! Das Alarmprotokoll ist initiiert bitte verlassen Sie umgehend das Gebäude!`;
244
+ speakMessage = res_1.Res.intruderGreeting();
244
245
  volume = 40;
245
246
  }
246
247
  else if (this._intrusionAlarmLevel === 2) {
247
- speakMessage = `Alle Rollos fahren hoch, bitte begeben Sie sich zum nächsten Ausgang`;
248
+ speakMessage = res_1.Res.intruderShutterUpPleaseLeave();
248
249
  utils_1.Utils.guardedNewThread(() => {
249
250
  this.setAllRolloOfFloor(-1, 100);
250
251
  this.setAllLampsOfFloor(-1, true);
@@ -252,11 +253,11 @@ class RoomBase {
252
253
  }
253
254
  else if (this._intrusionAlarmLevel === 3) {
254
255
  volume = 70;
255
- speakMessage = `Verlassen Sie sofort das Gebäude! Die Behörden sind informiert`;
256
+ speakMessage = res_1.Res.intruderLeaveAndOwnerInformed();
256
257
  }
257
258
  else if (this._intrusionAlarmLevel <= 5) {
258
259
  volume = 80;
259
- speakMessage = `Weitere Abwehrmaßnahmen werden eingeleitet`;
260
+ speakMessage = res_1.Res.intruderAdditionalDefenseWarning();
260
261
  }
261
262
  else if (this._intrusionAlarmLevel >= alarmAutomaticEnd) {
262
263
  this.stopIntrusionAlarm();
@@ -264,7 +265,7 @@ class RoomBase {
264
265
  }
265
266
  else {
266
267
  volume = 90;
267
- speakMessage = `Alarm. Einbrecher erkannt.`;
268
+ speakMessage = res_1.Res.intruderAlarm();
268
269
  newTimeout = 10000;
269
270
  }
270
271
  this._intrusionAlarmTimeout = utils_1.Utils.guardedTimeout(() => {
@@ -6,6 +6,8 @@ interface iSonosSettings {
6
6
  export interface iConfig {
7
7
  expressPort?: number;
8
8
  ioBrokerUrl: string;
9
+ logSettings?: iLogSettings;
10
+ translationSettings: iTranslationSettings;
9
11
  mp3Server?: iMp3Settings;
10
12
  muell?: iMuellSettings;
11
13
  persistence?: iPersistenceSettings;
@@ -16,6 +18,10 @@ export interface iConfig {
16
18
  timeSettings: iTimeSettings;
17
19
  weather?: iWeatherSettings;
18
20
  }
21
+ export interface iLogSettings {
22
+ logLevel: number;
23
+ useTimestamp: boolean;
24
+ }
19
25
  export interface iTimePair {
20
26
  hours: number;
21
27
  minutes: number;
@@ -54,4 +60,7 @@ export interface iWeatherSettings {
54
60
  export interface iMuellSettings {
55
61
  calendarURL: string;
56
62
  }
63
+ export interface iTranslationSettings {
64
+ language: string;
65
+ }
57
66
  export {};
@@ -9,6 +9,7 @@ const MagnetPosition_1 = require("../models/MagnetPosition");
9
9
  const telegram_service_1 = require("../../services/Telegram/telegram-service");
10
10
  const logLevel_1 = require("../../../models/logLevel");
11
11
  const sonos_service_1 = require("../../services/Sonos/sonos-service");
12
+ const res_1 = require("../../services/Translation/res");
12
13
  class HmIpTuer extends hmIpDevice_1.HmIPDevice {
13
14
  constructor(pInfo) {
14
15
  super(pInfo, deviceType_1.DeviceType.HmIpTuer);
@@ -66,7 +67,7 @@ class HmIpTuer extends hmIpDevice_1.HmIPDevice {
66
67
  return;
67
68
  }
68
69
  else if (this._iOpen === undefined) {
69
- const message = `"${this.info.customName}" was opened`;
70
+ const message = res_1.Res.wasOpened(this.info.customName);
70
71
  //const message: string = `Die Tür mit dem Namen "${this.info.customName}" wurde geöfnet!`
71
72
  telegram_service_1.TelegramService.inform(message);
72
73
  sonos_service_1.SonosService.speakOnAll(message, 40);
@@ -23,7 +23,11 @@ export declare class ZigbeeAquaraMotion extends ZigbeeDevice implements iIllumin
23
23
  get detectionsToday(): number;
24
24
  set detectionsToday(pVal: number);
25
25
  constructor(pInfo: DeviceInfo);
26
- addMovementCallback(pCallback: (pValue: boolean) => void): void;
26
+ /**
27
+ * Adds a callback for when a motion state has changed.
28
+ * @param pCallback Function that accepts the new state as parameter
29
+ */
30
+ addMovementCallback(pCallback: (newState: boolean) => void): void;
27
31
  updateMovement(newState: boolean): void;
28
32
  update(idSplit: string[], state: ioBroker.State, initial?: boolean): void;
29
33
  private resetFallbackTimeout;
@@ -25,11 +25,11 @@ class ZigbeeAquaraMotion extends zigbeeDevice_1.ZigbeeDevice {
25
25
  persist_1.Persist.getCount(this)
26
26
  .then((todayCount) => {
27
27
  this.detectionsToday = todayCount.counter;
28
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Debug, `Bewegungscounter "${this.info.customName}" vorinitialisiert mit ${this.detectionsToday}`);
28
+ log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Debug, `Preinitialized movement counter for "${this.info.customName}" with ${this.detectionsToday}`);
29
29
  this._initialized = true;
30
30
  })
31
31
  .catch((err) => {
32
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Warn, `Failed to initialize Movement Counter for "${this.info.customName}", err ${err.message}`);
32
+ log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Warn, `Failed to initialize movement counter for "${this.info.customName}", err ${err.message}`);
33
33
  });
34
34
  }
35
35
  // Currently measured brightness in lux
@@ -53,7 +53,7 @@ class ZigbeeAquaraMotion extends zigbeeDevice_1.ZigbeeDevice {
53
53
  this.setState(this.occupancyTimeoutID, value, () => {
54
54
  this._motionTimeout = value;
55
55
  }, (err) => {
56
- console.log(`Error occured while setting motion timeout: ${err}`);
56
+ console.log(`Error occurred while setting motion timeout: ${err}`);
57
57
  });
58
58
  }
59
59
  get detectionsToday() {
@@ -64,19 +64,23 @@ class ZigbeeAquaraMotion extends zigbeeDevice_1.ZigbeeDevice {
64
64
  this._detectionsToday = pVal;
65
65
  persist_1.Persist.persistTodayCount(this, pVal, oldVal);
66
66
  }
67
+ /**
68
+ * Adds a callback for when a motion state has changed.
69
+ * @param pCallback Function that accepts the new state as parameter
70
+ */
67
71
  addMovementCallback(pCallback) {
68
72
  this._movementDetectedCallback.push(pCallback);
69
73
  }
70
74
  updateMovement(newState) {
71
75
  if (!this._initialized && newState) {
72
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Trace, `Bewegung für "${this.info.customName}" erkannt aber die Initialisierung aus der DB ist noch nicht erfolgt --> verzögern`);
76
+ log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Trace, `Movement recognized for "${this.info.customName}", but database initialization has not finished yet --> delay.`);
73
77
  utils_1.Utils.guardedTimeout(() => {
74
78
  this.updateMovement(newState);
75
79
  }, 1000, this);
76
80
  return;
77
81
  }
78
82
  if (newState === this.movementDetected) {
79
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Debug, `Überspringe Bewegung für "${this.info.customName}" da bereits der Wert ${newState} vorliegt`);
83
+ log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Debug, `Skip movement for "${this.info.customName}" because state is already ${newState}`);
80
84
  if (newState) {
81
85
  // Wenn ein Sensor sich nicht von alleine zurücksetzt, hier erzwingen.
82
86
  this.resetFallbackTimeout();
@@ -86,18 +90,18 @@ class ZigbeeAquaraMotion extends zigbeeDevice_1.ZigbeeDevice {
86
90
  }
87
91
  this.resetFallbackTimeout();
88
92
  this.movementDetected = newState;
89
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Debug, `Neuer Bewegunsstatus Wert für "${this.info.customName}": ${newState}`);
93
+ log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Debug, `New movement state for "${this.info.customName}": ${newState}`);
90
94
  if (newState) {
91
95
  this.startFallbackTimeout();
92
96
  this.detectionsToday++;
93
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Trace, `Dies ist die ${this.detectionsToday} Bewegung für "${this.info.customName}"`);
97
+ log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Trace, `This is movement no. ${this.detectionsToday} for "${this.info.customName}"`);
94
98
  }
95
99
  for (const c of this._movementDetectedCallback) {
96
100
  c(newState);
97
101
  }
98
102
  }
99
103
  update(idSplit, state, initial = false) {
100
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.DeepTrace, `Stecker Update für "${this.info.customName}": ID: ${idSplit.join('.')} JSON: ${JSON.stringify(state)}`);
104
+ log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.DeepTrace, `Motion update for "${this.info.customName}": ID: ${idSplit.join('.')} JSON: ${JSON.stringify(state)}`);
101
105
  super.update(idSplit, state, initial, true);
102
106
  switch (idSplit[3]) {
103
107
  case 'occupancy':
@@ -108,13 +112,13 @@ class ZigbeeAquaraMotion extends zigbeeDevice_1.ZigbeeDevice {
108
112
  log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Trace, `Motion sensor: Update for time since last motion of ${this.info.customName}: ${state.val}`);
109
113
  this._timeSinceLastMotion = state.val;
110
114
  break;
111
- case 'illumincance':
115
+ case 'illuminance':
112
116
  log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Trace, `Motion sensor: Update for illuminance of ${this.info.customName}: ${state.val}`);
113
117
  this.currentIllumination = state.val;
114
118
  break;
115
119
  case 'occupancy_timeout':
116
120
  log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Trace, `Motion sensor: Update for motion timeout of ${this.info.customName}: ${state.val}`);
117
- this._illuminance = state.val;
121
+ this._motionTimeout = state.val;
118
122
  break;
119
123
  }
120
124
  }
@@ -8,6 +8,7 @@ const polly_service_1 = require("../../services/Sonos/polly-service");
8
8
  const zigbeeDevice_1 = require("./zigbeeDevice");
9
9
  const logLevel_1 = require("../../../models/logLevel");
10
10
  const sonos_service_1 = require("../../services/Sonos/sonos-service");
11
+ const res_1 = require("../../services/Translation/res");
11
12
  class ZigbeeAquaraVibra extends zigbeeDevice_1.ZigbeeDevice {
12
13
  // TODO Set Sensitivity
13
14
  constructor(pInfo) {
@@ -24,7 +25,7 @@ class ZigbeeAquaraVibra extends zigbeeDevice_1.ZigbeeDevice {
24
25
  this.vibrationBlockedTimeStamp = 0;
25
26
  this._idSensitivity = '';
26
27
  this._vibrationBlocked = false;
27
- this._alarmMessage = `Alarm bei ${this.info.customName}. Ich wiederhole: Alarm bei ${this.info.customName}`;
28
+ this._alarmMessage = res_1.Res.vibrationAlarm(this.info.customName);
28
29
  polly_service_1.PollyService.preloadTTS(this._alarmMessage);
29
30
  this._idSensitivity = `${this.info.fullID}.sensitivity`;
30
31
  }
@@ -8,6 +8,7 @@ const polly_service_1 = require("../../services/Sonos/polly-service");
8
8
  const zigbeeDevice_1 = require("./zigbeeDevice");
9
9
  const logLevel_1 = require("../../../models/logLevel");
10
10
  const sonos_service_1 = require("../../services/Sonos/sonos-service");
11
+ const res_1 = require("../../services/Translation/res");
11
12
  class ZigbeeAquaraWater extends zigbeeDevice_1.ZigbeeDevice {
12
13
  constructor(pInfo) {
13
14
  super(pInfo, deviceType_1.DeviceType.ZigbeeAquaraWater);
@@ -17,15 +18,15 @@ class ZigbeeAquaraWater extends zigbeeDevice_1.ZigbeeDevice {
17
18
  this._messageAlarmFirst = '';
18
19
  this._messageAlarm = '';
19
20
  this._messageAlarmEnd = '';
20
- this._messageAlarmFirst = `${this.info.customName} erkennt Wasser. Möglicher Rohrbruch in ${this._roomName}`;
21
- this._messageAlarm = `${this.info.customName} hat ausgelöst. Poolparty in ${this._roomName}`;
22
- this._messageAlarmEnd = `Wasser Alarm Ende: Überflutung in ${this._roomName} zu Ende.`;
21
+ this._messageAlarmFirst = res_1.Res.waterAlarmStart(this.info.customName, this._roomName);
22
+ this._messageAlarm = res_1.Res.waterAlarmRepeat(this.info.customName, this._roomName);
23
+ this._messageAlarmEnd = res_1.Res.waterAlarmEnd(this._roomName);
23
24
  }
24
25
  set roomName(val) {
25
26
  this._roomName = val;
26
- this._messageAlarmFirst = `${this.info.customName} erkennt Wasser. Möglicher Rohrbruch in ${this._roomName}`;
27
- this._messageAlarm = `${this.info.customName} hat ausgelöst. Poolparty in ${this._roomName}`;
28
- this._messageAlarmEnd = `Wasser Alarm Ende: Überflutung in ${this._roomName} zu Ende.`;
27
+ this._messageAlarmFirst = res_1.Res.waterAlarmStart(this.info.customName, this._roomName);
28
+ this._messageAlarm = res_1.Res.waterAlarmRepeat(this.info.customName, this._roomName);
29
+ this._messageAlarmEnd = res_1.Res.waterAlarmEnd(this._roomName);
29
30
  polly_service_1.PollyService.preloadTTS(this._messageAlarmFirst);
30
31
  polly_service_1.PollyService.preloadTTS(this._messageAlarm);
31
32
  polly_service_1.PollyService.preloadTTS(this._messageAlarmEnd);
@@ -9,6 +9,7 @@ const polly_service_1 = require("../../services/Sonos/polly-service");
9
9
  const zigbeeDevice_1 = require("./zigbeeDevice");
10
10
  const logLevel_1 = require("../../../models/logLevel");
11
11
  const sonos_service_1 = require("../../services/Sonos/sonos-service");
12
+ const res_1 = require("../../services/Translation/res");
12
13
  class ZigbeeHeimanSmoke extends zigbeeDevice_1.ZigbeeDevice {
13
14
  constructor(pInfo) {
14
15
  super(pInfo, deviceType_1.DeviceType.ZigbeeHeimanSmoke);
@@ -18,15 +19,15 @@ class ZigbeeHeimanSmoke extends zigbeeDevice_1.ZigbeeDevice {
18
19
  this._messageAlarmFirst = '';
19
20
  this._messageAlarm = '';
20
21
  this._messageAlarmEnd = '';
21
- this._messageAlarmFirst = `Rauchmelder in ${this._roomName} ausgelöst. Möglicher Brand in ${this._roomName}`;
22
- this._messageAlarm = `Rauchmelder in ${this._roomName} aktiv. Möglicher Brand in ${this._roomName}`;
23
- this._messageAlarmEnd = `Rauchmelder Alarm Ende: Gefahr in ${this._roomName} zu Ende.`;
22
+ this._messageAlarmFirst = res_1.Res.fireAlarmStart(this._roomName, this.info.customName);
23
+ this._messageAlarm = res_1.Res.fireAlarmRepeat(this._roomName, this.info.customName);
24
+ this._messageAlarmEnd = res_1.Res.fireAlarmEnd(this._roomName);
24
25
  }
25
26
  set roomName(val) {
26
27
  this._roomName = val;
27
- this._messageAlarmFirst = `Rauchmelder in ${this._roomName} ausgelöst. Möglicher Brand in ${this._roomName}`;
28
- this._messageAlarm = `Rauchmelder in ${this._roomName} aktiv. Möglicher Brand in ${this._roomName}`;
29
- this._messageAlarmEnd = `Rauchmelder Alarm Ende: Gefahr in ${this._roomName} zu Ende.`;
28
+ this._messageAlarmFirst = res_1.Res.fireAlarmStart(this._roomName, this.info.customName);
29
+ this._messageAlarm = res_1.Res.fireAlarmRepeat(this._roomName, this.info.customName);
30
+ this._messageAlarmEnd = res_1.Res.fireAlarmEnd(this._roomName);
30
31
  polly_service_1.PollyService.preloadTTS(this._messageAlarmFirst);
31
32
  polly_service_1.PollyService.preloadTTS(this._messageAlarm);
32
33
  polly_service_1.PollyService.preloadTTS(this._messageAlarmEnd);
@@ -19,5 +19,5 @@ export declare class ZigbeeIlluDimmer extends ZigbeeDevice implements iLamp {
19
19
  update(idSplit: string[], state: ioBroker.State, initial?: boolean): void;
20
20
  setTimeBased(time: TimeOfDay, timeout?: number, force?: boolean): void;
21
21
  setLight(pValue: boolean, timeout?: number, force?: boolean, brightness?: number, transitionTime?: number): void;
22
- toggleLight(time?: TimeOfDay, force?: boolean): boolean;
22
+ toggleLight(time?: TimeOfDay, force?: boolean, calculateTime?: boolean): boolean;
23
23
  }
@@ -47,14 +47,16 @@ class ZigbeeIlluDimmer extends zigbeeDevice_1.ZigbeeDevice {
47
47
  setTimeBased(time, timeout = -1, force = false) {
48
48
  switch (time) {
49
49
  case time_callback_service_1.TimeOfDay.Night:
50
- this.setLight(true, timeout, force, 50);
50
+ this.setLight(true, timeout, force, this.settings.nightBrightness);
51
51
  break;
52
52
  case time_callback_service_1.TimeOfDay.AfterSunset:
53
+ this.setLight(true, timeout, force, this.settings.dawnBrightness);
54
+ break;
53
55
  case time_callback_service_1.TimeOfDay.BeforeSunrise:
54
- this.setLight(true, timeout, force, 75);
56
+ this.setLight(true, timeout, force, this.settings.duskBrightness);
55
57
  break;
56
58
  case time_callback_service_1.TimeOfDay.Daylight:
57
- this.setLight(true, timeout, force, 100);
59
+ this.setLight(true, timeout, force, this.settings.dayBrightness);
58
60
  break;
59
61
  }
60
62
  }
@@ -82,18 +84,17 @@ class ZigbeeIlluDimmer extends zigbeeDevice_1.ZigbeeDevice {
82
84
  brightness = 10;
83
85
  }
84
86
  log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Debug, `Dimmer Schalten: "${this.info.customName}" An: ${pValue}\tHelligkeit: ${brightness}%`);
85
- this.ioConn.setState(this.stateID, pValue, (err) => {
86
- if (err) {
87
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Error, `Dimmer schalten ergab Fehler: ${err}`);
88
- }
89
- });
87
+ this.setState(this.stateID, pValue);
90
88
  this.queuedValue = pValue;
91
89
  if (brightness > -1) {
92
- this.ioConn.setState(this.brightnessID, brightness, (err) => {
93
- if (err) {
94
- log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Error, `Dimmer Helligkeit schalten ergab Fehler: ${err}`);
95
- }
96
- });
90
+ if (brightness < this.settings.turnOnThreshhold) {
91
+ this.setState(this.brightnessID, this.settings.turnOnThreshhold, () => {
92
+ this.setState(this.brightnessID, brightness);
93
+ });
94
+ }
95
+ else {
96
+ this.setState(this.brightnessID, brightness);
97
+ }
97
98
  }
98
99
  if (this.turnOffTimeout !== undefined) {
99
100
  clearTimeout(this.turnOffTimeout);
@@ -114,9 +115,13 @@ class ZigbeeIlluDimmer extends zigbeeDevice_1.ZigbeeDevice {
114
115
  }
115
116
  }, timeout, this);
116
117
  }
117
- toggleLight(time, force = false) {
118
+ toggleLight(time, force = false, calculateTime = false) {
119
+ var _a;
118
120
  const newVal = this.queuedValue !== null ? !this.queuedValue : !this.lightOn;
119
121
  const timeout = newVal && force ? 30 * 60 * 1000 : -1;
122
+ if (newVal && time === undefined && calculateTime && this.room !== undefined) {
123
+ time = time_callback_service_1.TimeCallbackService.dayType((_a = this.room) === null || _a === void 0 ? void 0 : _a.Einstellungen.lampOffset);
124
+ }
120
125
  if (newVal && time !== undefined) {
121
126
  this.setTimeBased(time, timeout, force);
122
127
  return true;
@@ -8,6 +8,7 @@ const logLevel_1 = require("../../../models/logLevel");
8
8
  const sonos_service_1 = require("../../services/Sonos/sonos-service");
9
9
  const zigbeeDevice_1 = require("./zigbeeDevice");
10
10
  const MagnetPosition_1 = require("../models/MagnetPosition");
11
+ const res_1 = require("../../services/Translation/res");
11
12
  class ZigbeeMagnetContact extends zigbeeDevice_1.ZigbeeDevice {
12
13
  constructor(pInfo, deviceType) {
13
14
  super(pInfo, deviceType);
@@ -40,9 +41,9 @@ class ZigbeeMagnetContact extends zigbeeDevice_1.ZigbeeDevice {
40
41
  if (pValue === MagnetPosition_1.MagnetPosition.closed) {
41
42
  if (this._iOpen !== undefined) {
42
43
  clearInterval(this._iOpen);
43
- let message = `${this.info.customName} closed after ${this.minutesOpen} minutes!`;
44
+ let message = res_1.Res.closedAfterMinutes(this.info.customName, this.minutesOpen.toString(10));
44
45
  if (this.minutesOpen === 0) {
45
- message = `"${this.info.customName}" just closed`;
46
+ message = res_1.Res.justClosed(this.info.customName);
46
47
  }
47
48
  // const message: string = `Die Tür mit dem Namen "${this.info.customName}" wurde nach ${this.minutesOpen} Minuten geschlossen!`;
48
49
  log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Info, message);
@@ -53,8 +54,7 @@ class ZigbeeMagnetContact extends zigbeeDevice_1.ZigbeeDevice {
53
54
  return;
54
55
  }
55
56
  else if (this._iOpen === undefined) {
56
- const message = `"${this.info.customName}" was opened`;
57
- //const message: string = `Die Tür mit dem Namen "${this.info.customName}" wurde geöfnet!`
57
+ const message = res_1.Res.wasOpened(this.info.customName);
58
58
  telegram_service_1.TelegramService.inform(message);
59
59
  sonos_service_1.SonosService.speakOnAll(message, 40);
60
60
  this._iOpen = utils_1.Utils.guardedInterval(() => {
@@ -100,8 +100,6 @@ class SonosService {
100
100
  }
101
101
  const specificTimeout = Math.ceil(duration / 1000) + 5;
102
102
  const options = {
103
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
104
- // @ts-ignore
105
103
  catchQueueErrors: true,
106
104
  trackUri: `${(_b = settings_service_1.SettingsService.settings.mp3Server) === null || _b === void 0 ? void 0 : _b.serverAddress}/file.mp3?fname=${mp3Name}`,
107
105
  delayMs: 750,
@@ -0,0 +1,25 @@
1
+ export interface IRessourceObject {
2
+ de?: string;
3
+ en: string;
4
+ }
5
+ export interface IRessources {
6
+ alarmArmed: IRessourceObject;
7
+ alarmNightModeArmed: IRessourceObject;
8
+ closedAfterMinutes: IRessourceObject;
9
+ fireAlarmEnd: IRessourceObject;
10
+ fireAlarmRepeat: IRessourceObject;
11
+ fireAlarmStart: IRessourceObject;
12
+ goodMorning: IRessourceObject;
13
+ intruderAlarm: IRessourceObject;
14
+ intruderAdditionalDefenseWarning: IRessourceObject;
15
+ intruderGreeting: IRessourceObject;
16
+ intruderLeaveAndOwnerInformed: IRessourceObject;
17
+ intruderShutterUpPleaseLeave: IRessourceObject;
18
+ justClosed: IRessourceObject;
19
+ vibrationAlarm: IRessourceObject;
20
+ waterAlarmEnd: IRessourceObject;
21
+ waterAlarmRepeat: IRessourceObject;
22
+ waterAlarmStart: IRessourceObject;
23
+ wasOpened: IRessourceObject;
24
+ welcomeHome: IRessourceObject;
25
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ export * from './iRessources';
2
+ export * from './res';
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./iRessources"), exports);
14
+ __exportStar(require("./res"), exports);
@@ -0,0 +1,83 @@
1
+ import { iTranslationSettings } from '../../config/iConfig';
2
+ export declare class Res {
3
+ private static translations;
4
+ private static selectedLanguage;
5
+ static initialize(config: iTranslationSettings): void;
6
+ /**
7
+ * Retrieves a string like `Alarm system arming."`
8
+ */
9
+ static alarmArmed(): string;
10
+ /**
11
+ * Retrieves a string like `Alarm system will be armed in night mode. Sweet Dreams!"`
12
+ */
13
+ static alarmNightModeArmed(): string;
14
+ /**
15
+ * Retrieves a string like `"@P0" closed after @P1 minutes`
16
+ */
17
+ static closedAfterMinutes(deviceCustomName: string, minutes: string): string;
18
+ /**
19
+ * Retrieves a string like `No more smoke: Danger in "@P0" resolved.`
20
+ */
21
+ static fireAlarmEnd(roomName: string): string;
22
+ /**
23
+ * Retrieves a string like `Smoke detector "@P0" active. Possible fire in "@P1".`
24
+ */
25
+ static fireAlarmRepeat(roomName: string, deviceCustomName: string): string;
26
+ /**
27
+ * Retrieves a string like `Smoke detector "@P0" triggered. Possible fire in "@P1".`
28
+ */
29
+ static fireAlarmStart(roomName: string, deviceCustomName: string): string;
30
+ /**
31
+ * Retrieves a string like `Good Morning`
32
+ */
33
+ static goodMorning(): string;
34
+ /**
35
+ * Retrieves a string like "Alarm. Intruder detected"
36
+ */
37
+ static intruderAlarm(): string;
38
+ /**
39
+ * Retrieves a string like "Additional defense protocol initiated."
40
+ */
41
+ static intruderAdditionalDefenseWarning(): string;
42
+ /**
43
+ * Retrieves a string like "Hello potential intruder! You're beeing recorded and the alarm protocol is initiated please leave the building immediately!"
44
+ */
45
+ static intruderGreeting(): string;
46
+ /**
47
+ * Retrieves a string like "Leave now! The owners and additional emergency contacts are informed!"
48
+ */
49
+ static intruderLeaveAndOwnerInformed(): string;
50
+ /**
51
+ * Retrieves a string like "All shutter are opening, please leave immediatly."
52
+ */
53
+ static intruderShutterUpPleaseLeave(): string;
54
+ /**
55
+ * Retrieves a string like `"@P0" just closed`
56
+ */
57
+ static justClosed(deviceCustomName: string): string;
58
+ /**
59
+ * Retrieves a string like `Vibration Alert from "@P0". I repeat: Alarm at "@P0"`
60
+ */
61
+ static vibrationAlarm(deviceCustomName: string): string;
62
+ /**
63
+ * Retrieves a string like `Water alarm end: Flooding in "@P0" over.`
64
+ */
65
+ static waterAlarmEnd(roomName: string): string;
66
+ /**
67
+ * Retrieves a string like `"@P0" has triggered. Pool party in "@P1".`
68
+ */
69
+ static waterAlarmRepeat(deviceCustomName: string, roomName: string): string;
70
+ /**
71
+ * Retrieves a string like `"@P0" detects water. Possible pipe burst in "@P1".`
72
+ */
73
+ static waterAlarmStart(deviceCustomName: string, roomName: string): string;
74
+ /**
75
+ * Retrieves a string like "Vibration Alert from "@P0". I repeat: Alarm at "@P0""
76
+ */
77
+ static welcomeHome(): string;
78
+ /**
79
+ * Retrieves a string like `"@P0" was opened`
80
+ */
81
+ static wasOpened(deviceCustomName: string): string;
82
+ private static fill;
83
+ }