hoffmation-base 0.1.1 → 0.1.5

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 (113) hide show
  1. package/.eslintrc.js +27 -27
  2. package/.github/workflows/npm-publish.yml +50 -0
  3. package/.prettierrc.js +9 -9
  4. package/LICENSE +21 -21
  5. package/index.js +1 -1
  6. package/models/connectionCallbacks.ts +13 -13
  7. package/models/daytime.ts +3 -3
  8. package/models/deviceConfig.ts +8 -8
  9. package/models/dimmerSettings.ts +5 -5
  10. package/models/iTemperaturDataPoint.ts +9 -9
  11. package/models/lampSettings.ts +5 -5
  12. package/models/ledSettings.ts +19 -19
  13. package/models/logLevel.ts +9 -9
  14. package/models/persistence/BasicRoomInfo.ts +3 -3
  15. package/models/persistence/DailyMovementCount.ts +3 -3
  16. package/models/persistence/RoomDetailInfo.ts +4 -4
  17. package/models/persistence/temperaturDataPoint.ts +12 -12
  18. package/models/persistence/todaysCount.ts +3 -3
  19. package/models/rooms/RoomBase.ts +357 -357
  20. package/models/rooms/RoomSettings/RoomSettings.ts +159 -159
  21. package/models/rooms/RoomSettings/hmIPRoomSettings.ts +53 -53
  22. package/models/rooms/RoomSettings/iRoomDefaultSettings.ts +17 -17
  23. package/models/rooms/RoomSettings/readme.md +17 -17
  24. package/models/rooms/RoomSettings/zigbeeRoomSettings.ts +51 -51
  25. package/models/rooms/iRoomImportEnforcer.ts +3 -3
  26. package/models/rooms/readme.md +11 -11
  27. package/models/temperaturSettings.ts +22 -22
  28. package/models/timeCallback.ts +90 -90
  29. package/package.json +1 -1
  30. package/server/config/config-readme.md +19 -19
  31. package/server/config/iConfig.ts +53 -53
  32. package/server/config/private/mainConfig.json +64 -64
  33. package/server/devices/DeviceInfo.ts +66 -66
  34. package/server/devices/Griffe.ts +31 -31
  35. package/server/devices/Heizgruppen.ts +91 -91
  36. package/server/devices/Rollos.ts +48 -48
  37. package/server/devices/deviceUpdater.ts +72 -72
  38. package/server/devices/devices.ts +189 -189
  39. package/server/devices/groups/fensterGroup.ts +175 -175
  40. package/server/devices/groups/heatGroup.ts +32 -32
  41. package/server/devices/groups/lampenGroup.ts +88 -88
  42. package/server/devices/groups/praesenzGroup.ts +182 -182
  43. package/server/devices/groups/smokeGroup.ts +16 -16
  44. package/server/devices/groups/sonosGroup.ts +33 -33
  45. package/server/devices/groups/tasterGroup.ts +48 -48
  46. package/server/devices/groups/waterGroup.ts +16 -16
  47. package/server/devices/hmIPDevices/Fenster.ts +114 -114
  48. package/server/devices/hmIPDevices/FensterPosition.ts +5 -5
  49. package/server/devices/hmIPDevices/TuerPosition.ts +4 -4
  50. package/server/devices/hmIPDevices/hmIpBewegung.ts +126 -126
  51. package/server/devices/hmIPDevices/hmIpDevice.ts +90 -90
  52. package/server/devices/hmIPDevices/hmIpDeviceType.ts +14 -14
  53. package/server/devices/hmIPDevices/hmIpGriff.ts +143 -143
  54. package/server/devices/hmIPDevices/hmIpHeizgruppe.ts +172 -172
  55. package/server/devices/hmIPDevices/hmIpHeizung.ts +69 -69
  56. package/server/devices/hmIPDevices/hmIpLampe.ts +119 -119
  57. package/server/devices/hmIPDevices/hmIpPraezenz.ts +99 -99
  58. package/server/devices/hmIPDevices/hmIpRoll.ts +133 -133
  59. package/server/devices/hmIPDevices/hmIpTaster.ts +82 -73
  60. package/server/devices/hmIPDevices/hmIpTherm.ts +19 -19
  61. package/server/devices/hmIPDevices/hmIpTuer.ts +115 -115
  62. package/server/devices/hmIPDevices/hmIpWippe.ts +55 -55
  63. package/server/devices/iDeviceUpdater.ts +4 -4
  64. package/server/devices/iIoBrokerDevice.ts +44 -44
  65. package/server/devices/iTaster.ts +6 -0
  66. package/server/devices/{hmIPDevices/hmIpTaste.ts → taste.ts} +84 -72
  67. package/server/devices/wledDevice.ts +124 -124
  68. package/server/devices/zigbee/ZigbeeActuator.ts +113 -113
  69. package/server/devices/zigbee/zigbeeAquaraVibra.ts +171 -171
  70. package/server/devices/zigbee/zigbeeAquaraWater.ts +94 -94
  71. package/server/devices/zigbee/zigbeeBlitzShp.ts +77 -77
  72. package/server/devices/zigbee/zigbeeDevice.ts +115 -115
  73. package/server/devices/zigbee/zigbeeDeviceType.ts +13 -13
  74. package/server/devices/zigbee/zigbeeHeimanSmoke.ts +99 -99
  75. package/server/devices/zigbee/zigbeeIkeaSteckdose.ts +31 -31
  76. package/server/devices/zigbee/zigbeeIlluActuator.ts +37 -37
  77. package/server/devices/zigbee/zigbeeIlluDimmer.ts +165 -165
  78. package/server/devices/zigbee/zigbeeIlluLampe.ts +33 -33
  79. package/server/devices/zigbee/zigbeeIlluLedRGBCCT.ts +137 -137
  80. package/server/ioBroker/connection.ts +1655 -1655
  81. package/server/ioBroker/ioBroker.main.ts +99 -99
  82. package/server/ioBroker/socketIOAuthInfo.ts +5 -5
  83. package/server/ioBroker/socketIOConnectOptions.ts +6 -6
  84. package/server/ioBroker/socketIOLogging.ts +29 -29
  85. package/server/ioBroker/socketIOVisCommand.ts +11 -11
  86. package/server/services/HTTPSOptions.ts +14 -14
  87. package/server/services/Sonos/OwnSonosDevices.ts +9 -0
  88. package/server/services/Sonos/mp3-server.ts +75 -75
  89. package/server/services/Sonos/polly-service.ts +100 -100
  90. package/server/services/Sonos/sonos-service.ts +194 -199
  91. package/server/services/Telegram/telegram-Commands.ts +237 -215
  92. package/server/services/Telegram/telegram-service.ts +171 -171
  93. package/server/services/Telegram/telegramMessageCalback.ts +11 -11
  94. package/server/services/calendar/muell-tonne.ts +82 -83
  95. package/server/services/calendar/m/303/274ll-service.ts +147 -146
  96. package/server/services/dbo/persist.ts +125 -125
  97. package/server/services/https-service.ts +71 -71
  98. package/server/services/log-service.ts +69 -69
  99. package/server/services/news-service.ts +81 -81
  100. package/server/services/settings-service.ts +15 -15
  101. package/server/services/time-callback-service.ts +223 -223
  102. package/server/services/utils/ringstorage.ts +24 -24
  103. package/server/services/utils/utils.ts +52 -52
  104. package/server/services/weather/weather-alert.ts +7 -7
  105. package/server/services/weather/weather-current.ts +26 -26
  106. package/server/services/weather/weather-daily.ts +22 -22
  107. package/server/services/weather/weather-feelsLike.ts +6 -6
  108. package/server/services/weather/weather-hourly.ts +17 -17
  109. package/server/services/weather/weather-item.ts +6 -6
  110. package/server/services/weather/weather-minutes.ts +4 -4
  111. package/server/services/weather/weather-service.ts +277 -277
  112. package/server/services/weather/weather-temp.ts +8 -8
  113. package/tsconfig.json +58 -58
@@ -1,77 +1,77 @@
1
- import { LogLevel } from '../../../models/logLevel';
2
- import { ServerLogService } from '../../services/log-service';
3
- import { DeviceInfo } from '../DeviceInfo';
4
- import { ZigbeeDevice } from './zigbeeDevice';
5
- import { ZigbeeDeviceType } from './zigbeeDeviceType';
6
- import { LampSettings } from '../../../models/lampSettings';
7
-
8
- export class ZigbeeBlitzShp extends ZigbeeDevice {
9
- public steckerOn: boolean = false;
10
- public current: number = 0;
11
- public energy: number = 0;
12
- public loadPower: number = 0;
13
- public settings: LampSettings = new LampSettings();
14
- private steckerOnSwitchID: string = '';
15
-
16
- public constructor(pInfo: DeviceInfo) {
17
- super(pInfo, ZigbeeDeviceType.ZigbeeBlitzShp);
18
- this.steckerOnSwitchID = `${this.info.fullID}.state`;
19
- }
20
-
21
- public update(idSplit: string[], state: ioBroker.State, initial: boolean = false): void {
22
- ServerLogService.writeLog(
23
- LogLevel.DeepTrace,
24
- `Stecker Update für "${this.info.customName}": ID: ${idSplit.join('.')} JSON: ${JSON.stringify(state)}`,
25
- );
26
- super.update(idSplit, state, initial, true);
27
- switch (idSplit[3]) {
28
- case 'state':
29
- ServerLogService.writeLog(LogLevel.Trace, `Stecker Update für ${this.info.customName} auf ${state.val}`);
30
- this.steckerOn = state.val as boolean;
31
- break;
32
- case 'energy':
33
- ServerLogService.writeLog(
34
- LogLevel.Trace,
35
- `Stecker Update für ${this.info.customName} auf Energie: ${state.val}`,
36
- );
37
- this.energy = state.val as number;
38
- break;
39
- case 'current':
40
- ServerLogService.writeLog(LogLevel.Trace, `Stecker Update für ${this.info.customName} auf Strom: ${state.val}`);
41
- this.current = state.val as number;
42
- break;
43
- case 'load_power':
44
- ServerLogService.writeLog(
45
- LogLevel.Trace,
46
- `Stecker Update für ${this.info.customName} auf Leistungsaufnahme: ${state.val}`,
47
- );
48
- this.loadPower = state.val as number;
49
- break;
50
- }
51
- }
52
-
53
- public setStecker(pValue: boolean): void {
54
- if (this.steckerOnSwitchID === '') {
55
- ServerLogService.writeLog(LogLevel.Error, `Keine Switch ID für "${this.info.customName}" bekannt.`);
56
- return;
57
- }
58
-
59
- if (!this.ioConn) {
60
- ServerLogService.writeLog(LogLevel.Error, `Keine Connection für "${this.info.customName}" bekannt.`);
61
- return;
62
- }
63
-
64
- ServerLogService.writeLog(LogLevel.Debug, `Stecker schalten: "${this.info.customName}" Wert: ${pValue}`);
65
- this.ioConn.setState(this.steckerOnSwitchID, pValue, (err) => {
66
- if (err) {
67
- console.log(`Stecker schalten ergab Fehler: ${err}`);
68
- }
69
- });
70
- }
71
-
72
- public toggleStecker(): boolean {
73
- const newVal = !this.steckerOn;
74
- this.setStecker(newVal);
75
- return newVal;
76
- }
77
- }
1
+ import { LogLevel } from '../../../models/logLevel';
2
+ import { ServerLogService } from '../../services/log-service';
3
+ import { DeviceInfo } from '../DeviceInfo';
4
+ import { ZigbeeDevice } from './zigbeeDevice';
5
+ import { ZigbeeDeviceType } from './zigbeeDeviceType';
6
+ import { LampSettings } from '../../../models/lampSettings';
7
+
8
+ export class ZigbeeBlitzShp extends ZigbeeDevice {
9
+ public steckerOn: boolean = false;
10
+ public current: number = 0;
11
+ public energy: number = 0;
12
+ public loadPower: number = 0;
13
+ public settings: LampSettings = new LampSettings();
14
+ private steckerOnSwitchID: string = '';
15
+
16
+ public constructor(pInfo: DeviceInfo) {
17
+ super(pInfo, ZigbeeDeviceType.ZigbeeBlitzShp);
18
+ this.steckerOnSwitchID = `${this.info.fullID}.state`;
19
+ }
20
+
21
+ public update(idSplit: string[], state: ioBroker.State, initial: boolean = false): void {
22
+ ServerLogService.writeLog(
23
+ LogLevel.DeepTrace,
24
+ `Stecker Update für "${this.info.customName}": ID: ${idSplit.join('.')} JSON: ${JSON.stringify(state)}`,
25
+ );
26
+ super.update(idSplit, state, initial, true);
27
+ switch (idSplit[3]) {
28
+ case 'state':
29
+ ServerLogService.writeLog(LogLevel.Trace, `Stecker Update für ${this.info.customName} auf ${state.val}`);
30
+ this.steckerOn = state.val as boolean;
31
+ break;
32
+ case 'energy':
33
+ ServerLogService.writeLog(
34
+ LogLevel.Trace,
35
+ `Stecker Update für ${this.info.customName} auf Energie: ${state.val}`,
36
+ );
37
+ this.energy = state.val as number;
38
+ break;
39
+ case 'current':
40
+ ServerLogService.writeLog(LogLevel.Trace, `Stecker Update für ${this.info.customName} auf Strom: ${state.val}`);
41
+ this.current = state.val as number;
42
+ break;
43
+ case 'load_power':
44
+ ServerLogService.writeLog(
45
+ LogLevel.Trace,
46
+ `Stecker Update für ${this.info.customName} auf Leistungsaufnahme: ${state.val}`,
47
+ );
48
+ this.loadPower = state.val as number;
49
+ break;
50
+ }
51
+ }
52
+
53
+ public setStecker(pValue: boolean): void {
54
+ if (this.steckerOnSwitchID === '') {
55
+ ServerLogService.writeLog(LogLevel.Error, `Keine Switch ID für "${this.info.customName}" bekannt.`);
56
+ return;
57
+ }
58
+
59
+ if (!this.ioConn) {
60
+ ServerLogService.writeLog(LogLevel.Error, `Keine Connection für "${this.info.customName}" bekannt.`);
61
+ return;
62
+ }
63
+
64
+ ServerLogService.writeLog(LogLevel.Debug, `Stecker schalten: "${this.info.customName}" Wert: ${pValue}`);
65
+ this.ioConn.setState(this.steckerOnSwitchID, pValue, (err) => {
66
+ if (err) {
67
+ console.log(`Stecker schalten ergab Fehler: ${err}`);
68
+ }
69
+ });
70
+ }
71
+
72
+ public toggleStecker(): boolean {
73
+ const newVal = !this.steckerOn;
74
+ this.setStecker(newVal);
75
+ return newVal;
76
+ }
77
+ }
@@ -1,115 +1,115 @@
1
- import { ZigbeeDeviceType } from './zigbeeDeviceType';
2
- import { DeviceInfo } from '../DeviceInfo';
3
- import { LogLevel } from '../../../models/logLevel';
4
- import { ZigbeeAddDeviceItem, ZigbeeRoomSettings } from '../../../models/rooms/RoomSettings/zigbeeRoomSettings';
5
- import { ServerLogService } from '../../services/log-service';
6
- import { ioBrokerBaseDevice } from '../iIoBrokerDevice';
7
- import { RoomBase } from '../../../models/rooms/RoomBase';
8
-
9
- export class ZigbeeDevice extends ioBrokerBaseDevice {
10
- private static roomSettings: { [id: string]: ZigbeeRoomSettings } = {};
11
- public room: RoomBase | undefined = undefined;
12
- public deviceType: ZigbeeDeviceType;
13
- public available: boolean = false;
14
- public linkQuality: number = 0;
15
- public battery: number = -1;
16
- public voltage: string = '';
17
-
18
- public static addRoom(shortName: string, settings: ZigbeeRoomSettings): void {
19
- if (this.roomSettings[shortName] !== undefined) {
20
- ServerLogService.writeLog(
21
- LogLevel.Alert,
22
- `Es gibt bereits ein Registrat für ZigbeeRoomsettings für den Raumnamen "${shortName}"`,
23
- );
24
- return;
25
- }
26
- this.roomSettings[shortName] = settings;
27
- }
28
-
29
- public static checkMissing(): void {
30
- for (const rName in this.roomSettings) {
31
- this.roomSettings[rName].checkMissing();
32
- }
33
- }
34
-
35
- public constructor(pInfo: DeviceInfo, pType: ZigbeeDeviceType) {
36
- super(pInfo);
37
- this.deviceType = pType;
38
- this.addToCorrectRoom();
39
- }
40
-
41
- protected addToCorrectRoom(): void {
42
- const settings: ZigbeeRoomSettings | undefined = ZigbeeDevice.roomSettings[this.info.room];
43
- if (settings !== undefined) {
44
- if (settings.devices[this.deviceType] === undefined) {
45
- ServerLogService.missingZigbeeRoomHandling(settings.RoomName, this.deviceType);
46
- return;
47
- }
48
- const deviceSettings: ZigbeeAddDeviceItem | undefined =
49
- settings.devices[this.deviceType][this.info.deviceRoomIndex];
50
- if (deviceSettings === undefined) {
51
- ServerLogService.missingZigbeeRoomIndexHandling(settings.RoomName, this.info.deviceRoomIndex, this.deviceType);
52
- return;
53
- }
54
-
55
- if (deviceSettings.customName !== undefined) {
56
- this.info.customName = deviceSettings.customName;
57
- }
58
- deviceSettings.setID(this.info.devID);
59
- deviceSettings.added = true;
60
- ServerLogService.addedZigbeeDeviceToRoom(settings.RoomName, this.deviceType, this.info.deviceRoomIndex);
61
- return;
62
- }
63
- ServerLogService.writeLog(LogLevel.Warn, `${this.info.room} ist noch kein bekannter Raum für Zigbee Geräte`);
64
- }
65
-
66
- public update(idSplit: string[], state: ioBroker.State, initial: boolean = false, pOverride: boolean = false): void {
67
- ServerLogService.writeLog(
68
- LogLevel.DeepTrace,
69
- `Zigbee:Update für "${this.info.customName}": ID: ${idSplit.join('.')} JSON: ${JSON.stringify(state)}`,
70
- );
71
- if (!pOverride) {
72
- ServerLogService.writeLog(
73
- LogLevel.Warn,
74
- `Keine Update Überschreibung für "${this.info.customName}":\n\tID: ${idSplit.join(
75
- '.',
76
- )}\n\tData: ${JSON.stringify(state)}`,
77
- );
78
- }
79
-
80
- switch (idSplit[3]) {
81
- case 'available':
82
- this.available = state.val as boolean;
83
- if (!this.available) {
84
- ServerLogService.writeLog(
85
- LogLevel.Debug,
86
- `Das Zigbee Gerät mit dem Namen "${this.info.customName}" ist nicht erreichbar.`,
87
- );
88
- }
89
- break;
90
- case 'battery':
91
- this.battery = state.val as number;
92
- if (this.battery < 20) {
93
- ServerLogService.writeLog(
94
- LogLevel.Alert,
95
- `Das Zigbee Gerät mit dem Namen "${this.info.customName}" hat unter 20% Batterie.`,
96
- );
97
- }
98
- break;
99
-
100
- case 'link_quality':
101
- this.linkQuality = state.val as number;
102
- if (this.linkQuality < 5) {
103
- ServerLogService.writeLog(
104
- LogLevel.Debug,
105
- `Das Zigbee Gerät mit dem Namen "${this.info.customName}" hat eine schlechte Verbindung (${this.linkQuality}).`,
106
- );
107
- }
108
- break;
109
-
110
- case 'voltage':
111
- this.voltage = state.val as string;
112
- break;
113
- }
114
- }
115
- }
1
+ import { ZigbeeDeviceType } from './zigbeeDeviceType';
2
+ import { DeviceInfo } from '../DeviceInfo';
3
+ import { LogLevel } from '../../../models/logLevel';
4
+ import { ZigbeeAddDeviceItem, ZigbeeRoomSettings } from '../../../models/rooms/RoomSettings/zigbeeRoomSettings';
5
+ import { ServerLogService } from '../../services/log-service';
6
+ import { ioBrokerBaseDevice } from '../iIoBrokerDevice';
7
+ import { RoomBase } from '../../../models/rooms/RoomBase';
8
+
9
+ export class ZigbeeDevice extends ioBrokerBaseDevice {
10
+ private static roomSettings: { [id: string]: ZigbeeRoomSettings } = {};
11
+ public room: RoomBase | undefined = undefined;
12
+ public deviceType: ZigbeeDeviceType;
13
+ public available: boolean = false;
14
+ public linkQuality: number = 0;
15
+ public battery: number = -1;
16
+ public voltage: string = '';
17
+
18
+ public static addRoom(shortName: string, settings: ZigbeeRoomSettings): void {
19
+ if (this.roomSettings[shortName] !== undefined) {
20
+ ServerLogService.writeLog(
21
+ LogLevel.Alert,
22
+ `Es gibt bereits ein Registrat für ZigbeeRoomsettings für den Raumnamen "${shortName}"`,
23
+ );
24
+ return;
25
+ }
26
+ this.roomSettings[shortName] = settings;
27
+ }
28
+
29
+ public static checkMissing(): void {
30
+ for (const rName in this.roomSettings) {
31
+ this.roomSettings[rName].checkMissing();
32
+ }
33
+ }
34
+
35
+ public constructor(pInfo: DeviceInfo, pType: ZigbeeDeviceType) {
36
+ super(pInfo);
37
+ this.deviceType = pType;
38
+ this.addToCorrectRoom();
39
+ }
40
+
41
+ protected addToCorrectRoom(): void {
42
+ const settings: ZigbeeRoomSettings | undefined = ZigbeeDevice.roomSettings[this.info.room];
43
+ if (settings !== undefined) {
44
+ if (settings.devices[this.deviceType] === undefined) {
45
+ ServerLogService.missingZigbeeRoomHandling(settings.RoomName, this.deviceType);
46
+ return;
47
+ }
48
+ const deviceSettings: ZigbeeAddDeviceItem | undefined =
49
+ settings.devices[this.deviceType][this.info.deviceRoomIndex];
50
+ if (deviceSettings === undefined) {
51
+ ServerLogService.missingZigbeeRoomIndexHandling(settings.RoomName, this.info.deviceRoomIndex, this.deviceType);
52
+ return;
53
+ }
54
+
55
+ if (deviceSettings.customName !== undefined) {
56
+ this.info.customName = deviceSettings.customName;
57
+ }
58
+ deviceSettings.setID(this.info.devID);
59
+ deviceSettings.added = true;
60
+ ServerLogService.addedZigbeeDeviceToRoom(settings.RoomName, this.deviceType, this.info.deviceRoomIndex);
61
+ return;
62
+ }
63
+ ServerLogService.writeLog(LogLevel.Warn, `${this.info.room} ist noch kein bekannter Raum für Zigbee Geräte`);
64
+ }
65
+
66
+ public update(idSplit: string[], state: ioBroker.State, initial: boolean = false, pOverride: boolean = false): void {
67
+ ServerLogService.writeLog(
68
+ LogLevel.DeepTrace,
69
+ `Zigbee:Update für "${this.info.customName}": ID: ${idSplit.join('.')} JSON: ${JSON.stringify(state)}`,
70
+ );
71
+ if (!pOverride) {
72
+ ServerLogService.writeLog(
73
+ LogLevel.Warn,
74
+ `Keine Update Überschreibung für "${this.info.customName}":\n\tID: ${idSplit.join(
75
+ '.',
76
+ )}\n\tData: ${JSON.stringify(state)}`,
77
+ );
78
+ }
79
+
80
+ switch (idSplit[3]) {
81
+ case 'available':
82
+ this.available = state.val as boolean;
83
+ if (!this.available) {
84
+ ServerLogService.writeLog(
85
+ LogLevel.Debug,
86
+ `Das Zigbee Gerät mit dem Namen "${this.info.customName}" ist nicht erreichbar.`,
87
+ );
88
+ }
89
+ break;
90
+ case 'battery':
91
+ this.battery = state.val as number;
92
+ if (this.battery < 20) {
93
+ ServerLogService.writeLog(
94
+ LogLevel.Alert,
95
+ `Das Zigbee Gerät mit dem Namen "${this.info.customName}" hat unter 20% Batterie.`,
96
+ );
97
+ }
98
+ break;
99
+
100
+ case 'link_quality':
101
+ this.linkQuality = state.val as number;
102
+ if (this.linkQuality < 5) {
103
+ ServerLogService.writeLog(
104
+ LogLevel.Debug,
105
+ `Das Zigbee Gerät mit dem Namen "${this.info.customName}" hat eine schlechte Verbindung (${this.linkQuality}).`,
106
+ );
107
+ }
108
+ break;
109
+
110
+ case 'voltage':
111
+ this.voltage = state.val as string;
112
+ break;
113
+ }
114
+ }
115
+ }
@@ -1,13 +1,13 @@
1
- export enum ZigbeeDeviceType {
2
- unknown = 0,
3
- ZigbeeIkeaFernbedienung = 1,
4
- ZigbeeIkeaSteckdose = 2,
5
- ZigbeeIlluLedRGBCCT = 3,
6
- ZigbeeAquaraVibra = 4,
7
- ZigbeeIlluDimmer = 5,
8
- ZigbeeHeimanSmoke = 6,
9
- ZigbeeAquaraWater = 7,
10
- ZigbeeBlitzShp = 8,
11
- ZigbeeIlluLampe = 9,
12
- ZigbeeIlluActuator = 10,
13
- }
1
+ export enum ZigbeeDeviceType {
2
+ unknown = 0,
3
+ ZigbeeIkeaFernbedienung = 1,
4
+ ZigbeeIkeaSteckdose = 2,
5
+ ZigbeeIlluLedRGBCCT = 3,
6
+ ZigbeeAquaraVibra = 4,
7
+ ZigbeeIlluDimmer = 5,
8
+ ZigbeeHeimanSmoke = 6,
9
+ ZigbeeAquaraWater = 7,
10
+ ZigbeeBlitzShp = 8,
11
+ ZigbeeIlluLampe = 9,
12
+ ZigbeeIlluActuator = 10,
13
+ }
@@ -1,99 +1,99 @@
1
- import { LogLevel } from '../../../models/logLevel';
2
- import { DeviceInfo } from '../DeviceInfo';
3
- import { ZigbeeDevice } from './zigbeeDevice';
4
- import { ZigbeeDeviceType } from './zigbeeDeviceType';
5
- import { ServerLogService } from '../../services/log-service';
6
- import { SonosService } from '../../services/Sonos/sonos-service';
7
- import { RoomBase } from '../../../models/rooms/RoomBase';
8
- import { Utils } from '../../services/utils/utils';
9
- import { PollyService } from '../../services/Sonos/polly-service';
10
-
11
- export class ZigbeeHeimanSmoke extends ZigbeeDevice {
12
- public smoke: boolean = false;
13
- private _roomName: string = '';
14
- public iAlarm: NodeJS.Timeout | undefined = undefined;
15
- private _messageAlarmFirst: string = '';
16
- private _messageAlarm: string = '';
17
- private _messageAlarmEnd: string = '';
18
-
19
- public set roomName(val: string) {
20
- this._roomName = val;
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.`;
24
- PollyService.preloadTTS(this._messageAlarmFirst);
25
- PollyService.preloadTTS(this._messageAlarm);
26
- PollyService.preloadTTS(this._messageAlarmEnd);
27
- }
28
-
29
- public constructor(pInfo: DeviceInfo) {
30
- super(pInfo, ZigbeeDeviceType.ZigbeeHeimanSmoke);
31
- this._messageAlarmFirst = `Rauchmelder in ${this._roomName} ausgelöst. Möglicher Brand in ${this._roomName}`;
32
- this._messageAlarm = `Rauchmelder in ${this._roomName} aktiv. Möglicher Brand in ${this._roomName}`;
33
- this._messageAlarmEnd = `Rauchmelder Alarm Ende: Gefahr in ${this._roomName} zu Ende.`;
34
- }
35
-
36
- public update(idSplit: string[], state: ioBroker.State, initial: boolean = false): void {
37
- ServerLogService.writeLog(
38
- LogLevel.DeepTrace,
39
- `Smoke Update für "${this.info.customName}": ID: ${idSplit.join('.')} JSON: ${JSON.stringify(state)}`,
40
- );
41
- super.update(idSplit, state, initial, true);
42
- switch (idSplit[3]) {
43
- case 'smoke':
44
- ServerLogService.writeLog(LogLevel.Debug, `Smoke Update für ${this.info.customName} auf Rauch: ${state.val}`);
45
- const newVal: boolean = state.val === true;
46
- if (this.smoke === true && !newVal) {
47
- this.stopAlarm();
48
- } else if (newVal) {
49
- this.startAlarm();
50
- }
51
- this.smoke = newVal;
52
- break;
53
- }
54
- }
55
-
56
- private startAlarm(): void {
57
- if (this.iAlarm !== undefined) {
58
- clearInterval(this.iAlarm);
59
- }
60
- this.iAlarm = Utils.guardedInterval(
61
- () => {
62
- this.alarm();
63
- },
64
- 15000,
65
- this,
66
- );
67
- this.alarm(true);
68
- }
69
-
70
- public stopAlarm(quiet: boolean = false): void {
71
- if (this.iAlarm) {
72
- clearInterval(this.iAlarm);
73
- }
74
- if (quiet) {
75
- return;
76
- }
77
- const message = this._messageAlarmEnd;
78
- Utils.guardedNewThread(() => {
79
- ServerLogService.writeLog(LogLevel.Alert, message);
80
- });
81
- Utils.guardedNewThread(() => {
82
- SonosService.speakOnAll(message);
83
- });
84
- }
85
-
86
- private alarm(first: boolean = false): void {
87
- const message = first ? this._messageAlarmFirst : this._messageAlarm;
88
- Utils.guardedNewThread(() => {
89
- ServerLogService.writeLog(LogLevel.Alert, message);
90
- });
91
- Utils.guardedNewThread(() => {
92
- SonosService.speakOnAll(message, 100);
93
- });
94
- Utils.guardedNewThread(() => {
95
- // Roll all Rollos up, to ensure free sight for firefighters
96
- RoomBase.setAllRolloOfFloor(-1, 100);
97
- });
98
- }
99
- }
1
+ import { LogLevel } from '../../../models/logLevel';
2
+ import { DeviceInfo } from '../DeviceInfo';
3
+ import { ZigbeeDevice } from './zigbeeDevice';
4
+ import { ZigbeeDeviceType } from './zigbeeDeviceType';
5
+ import { ServerLogService } from '../../services/log-service';
6
+ import { SonosService } from '../../services/Sonos/sonos-service';
7
+ import { RoomBase } from '../../../models/rooms/RoomBase';
8
+ import { Utils } from '../../services/utils/utils';
9
+ import { PollyService } from '../../services/Sonos/polly-service';
10
+
11
+ export class ZigbeeHeimanSmoke extends ZigbeeDevice {
12
+ public smoke: boolean = false;
13
+ private _roomName: string = '';
14
+ public iAlarm: NodeJS.Timeout | undefined = undefined;
15
+ private _messageAlarmFirst: string = '';
16
+ private _messageAlarm: string = '';
17
+ private _messageAlarmEnd: string = '';
18
+
19
+ public set roomName(val: string) {
20
+ this._roomName = val;
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.`;
24
+ PollyService.preloadTTS(this._messageAlarmFirst);
25
+ PollyService.preloadTTS(this._messageAlarm);
26
+ PollyService.preloadTTS(this._messageAlarmEnd);
27
+ }
28
+
29
+ public constructor(pInfo: DeviceInfo) {
30
+ super(pInfo, ZigbeeDeviceType.ZigbeeHeimanSmoke);
31
+ this._messageAlarmFirst = `Rauchmelder in ${this._roomName} ausgelöst. Möglicher Brand in ${this._roomName}`;
32
+ this._messageAlarm = `Rauchmelder in ${this._roomName} aktiv. Möglicher Brand in ${this._roomName}`;
33
+ this._messageAlarmEnd = `Rauchmelder Alarm Ende: Gefahr in ${this._roomName} zu Ende.`;
34
+ }
35
+
36
+ public update(idSplit: string[], state: ioBroker.State, initial: boolean = false): void {
37
+ ServerLogService.writeLog(
38
+ LogLevel.DeepTrace,
39
+ `Smoke Update für "${this.info.customName}": ID: ${idSplit.join('.')} JSON: ${JSON.stringify(state)}`,
40
+ );
41
+ super.update(idSplit, state, initial, true);
42
+ switch (idSplit[3]) {
43
+ case 'smoke':
44
+ ServerLogService.writeLog(LogLevel.Debug, `Smoke Update für ${this.info.customName} auf Rauch: ${state.val}`);
45
+ const newVal: boolean = state.val === true;
46
+ if (this.smoke === true && !newVal) {
47
+ this.stopAlarm();
48
+ } else if (newVal) {
49
+ this.startAlarm();
50
+ }
51
+ this.smoke = newVal;
52
+ break;
53
+ }
54
+ }
55
+
56
+ private startAlarm(): void {
57
+ if (this.iAlarm !== undefined) {
58
+ clearInterval(this.iAlarm);
59
+ }
60
+ this.iAlarm = Utils.guardedInterval(
61
+ () => {
62
+ this.alarm();
63
+ },
64
+ 15000,
65
+ this,
66
+ );
67
+ this.alarm(true);
68
+ }
69
+
70
+ public stopAlarm(quiet: boolean = false): void {
71
+ if (this.iAlarm) {
72
+ clearInterval(this.iAlarm);
73
+ }
74
+ if (quiet) {
75
+ return;
76
+ }
77
+ const message = this._messageAlarmEnd;
78
+ Utils.guardedNewThread(() => {
79
+ ServerLogService.writeLog(LogLevel.Alert, message);
80
+ });
81
+ Utils.guardedNewThread(() => {
82
+ SonosService.speakOnAll(message);
83
+ });
84
+ }
85
+
86
+ private alarm(first: boolean = false): void {
87
+ const message = first ? this._messageAlarmFirst : this._messageAlarm;
88
+ Utils.guardedNewThread(() => {
89
+ ServerLogService.writeLog(LogLevel.Alert, message);
90
+ });
91
+ Utils.guardedNewThread(() => {
92
+ SonosService.speakOnAll(message, 100);
93
+ });
94
+ Utils.guardedNewThread(() => {
95
+ // Roll all Rollos up, to ensure free sight for firefighters
96
+ RoomBase.setAllRolloOfFloor(-1, 100);
97
+ });
98
+ }
99
+ }