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,175 +1,175 @@
1
- import { LogLevel } from '../../../models/logLevel';
2
- import { Fenster } from '../hmIPDevices/Fenster';
3
- import { FensterPosition } from '../hmIPDevices/FensterPosition';
4
- import { ServerLogService } from '../../services/log-service';
5
- import { RoomBase } from '../../../models/rooms/RoomBase';
6
- import { TimeCallback, TimeCallbackType } from '../../../models/timeCallback';
7
- import { TimeCallbackService, TimeOfDay } from '../../services/time-callback-service';
8
- import { Utils } from '../../services/utils/utils';
9
- import { WeatherService } from '../../services/weather/weather-service';
10
-
11
- export class FensterGroup {
12
- public constructor(private _room: RoomBase, public fenster: Fenster[]) {
13
- for (const f of [...fenster]) {
14
- f.room = this._room;
15
- }
16
- }
17
-
18
- public allRolloDown(initial: boolean = false, savePosition: boolean = false): void {
19
- this.fenster.forEach((f) => {
20
- if (savePosition) f.desiredPosition = 0;
21
- if (f.rollo !== undefined) {
22
- ServerLogService.writeLog(
23
- LogLevel.Debug,
24
- `Fahre das Rollo zum Sonnenuntergang ${initial ? '(ggf. nachträglich) ' : ''}für ${
25
- f.rollo.info.customName
26
- } runter`,
27
- );
28
- f.rollo.down(initial);
29
- }
30
- });
31
- }
32
-
33
- public allRolloUp(savePosition: boolean = false): void {
34
- this.fenster.forEach((f) => {
35
- if (f.rollo === undefined) {
36
- return;
37
- }
38
-
39
- if (savePosition) {
40
- f.desiredPosition = 100;
41
- }
42
- f.rollo.up(false);
43
- });
44
- }
45
-
46
- public allRolloToLevel(level: number, savePosition: boolean = false): void {
47
- this.fenster.forEach((f) => {
48
- if (savePosition) {
49
- f.desiredPosition = level;
50
- }
51
- if (f.rollo !== undefined) {
52
- f.rollo.setLevel(level, false);
53
- }
54
- });
55
- }
56
-
57
- public initCallbacks(): void {
58
- if (this._room.Einstellungen.sonnenAufgangRollos && this._room.Einstellungen.rolloOffset) {
59
- ServerLogService.writeLog(LogLevel.Trace, `Sonnenaufgang TimeCallback für ${this._room.roomName} hinzufügen`);
60
- this._room.sonnenAufgangCallback = new TimeCallback(
61
- `${this._room.roomName} Sonnenaufgang Rollos`,
62
- TimeCallbackType.Sunrise,
63
- () => {
64
- if (this._room.skipNextRolloUp) {
65
- this._room.skipNextRolloUp = false;
66
- return;
67
- }
68
- this.sunriseUp();
69
- },
70
- this._room.Einstellungen.rolloOffset.sunrise,
71
- undefined,
72
- undefined,
73
- this._room.Einstellungen.rolloOffset,
74
- );
75
- if (!TimeCallbackService.darkOutsideOrNight(TimeCallbackService.dayType(this._room.Einstellungen.rolloOffset))) {
76
- this.sunriseUp(true);
77
- }
78
- TimeCallbackService.addCallback(this._room.sonnenAufgangCallback);
79
- }
80
-
81
- if (this._room.Einstellungen.sonnenUntergangRollos && this._room.Einstellungen.rolloOffset) {
82
- this._room.sonnenUntergangCallback = new TimeCallback(
83
- `${this._room.roomName} Sonnenuntergang Rollo`,
84
- TimeCallbackType.SunSet,
85
- () => {
86
- this.sunsetDown();
87
- },
88
- this._room.Einstellungen.rolloOffset.sunset,
89
- );
90
- if (TimeCallbackService.darkOutsideOrNight(TimeCallbackService.dayType(this._room.Einstellungen.rolloOffset))) {
91
- Utils.guardedTimeout(
92
- () => {
93
- this.allRolloDown(true, true);
94
- },
95
- 60000,
96
- this,
97
- );
98
- }
99
- TimeCallbackService.addCallback(this._room.sonnenUntergangCallback);
100
- }
101
-
102
- if (this._room.Einstellungen.rolloHeatReduction) {
103
- Utils.guardedInterval(this.setRolloByWeatherStatus, 15 * 60 * 1000, this, true);
104
- Utils.guardedTimeout(this.setRolloByWeatherStatus, 2 * 60 * 1000, this);
105
- }
106
- }
107
-
108
- private sunsetDown(): void {
109
- this.allRolloToLevel(0, true);
110
- if (this._room.PraesenzGroup.anyPresent() && this._room.Einstellungen.lampOffset) {
111
- this._room.LampenGroup.switchTimeConditional(TimeCallbackService.dayType(this._room.Einstellungen.lampOffset));
112
- }
113
- }
114
-
115
- public setRolloByWeatherStatus(): void {
116
- const timeOfDay: TimeOfDay = TimeCallbackService.dayType(this._room.Einstellungen.rolloOffset);
117
- const darkOutside: boolean = TimeCallbackService.darkOutsideOrNight(timeOfDay);
118
- this.fenster.forEach((f) => {
119
- if (!f.rollo) {
120
- return;
121
- }
122
- if (darkOutside) {
123
- f.restoreDesiredPosition();
124
- return;
125
- }
126
- let desiredPos: number = f.desiredPosition;
127
- if (desiredPos > 0) {
128
- WeatherService.weatherRolloPosition(
129
- desiredPos,
130
- this._room.HeatGroup.desiredTemp,
131
- this._room.HeatGroup.currentTemp,
132
- );
133
- }
134
- if (f.griffeInPosition(FensterPosition.offen) > 0 && desiredPos < 100) {
135
- return;
136
- }
137
- if (f.griffeInPosition(FensterPosition.kipp) > 0) {
138
- desiredPos = Math.max(30, desiredPos);
139
- }
140
- if (f.rollo.currentLevel === desiredPos) {
141
- // Rollo ist bereits auf der Zielposition
142
- return;
143
- }
144
- f.rollo.setLevel(desiredPos, false, true);
145
- });
146
- }
147
-
148
- public sunriseUp(initial: boolean = false): void {
149
- this.fenster.forEach((f) => {
150
- if (!f.noRolloOnSunrise && f.rollo) {
151
- ServerLogService.writeLog(
152
- LogLevel.Debug,
153
- `Fahre das Rollo zum Sonnenaufgang ${initial ? '(ggf. nachträglich)' : ''}für ${
154
- f.rollo.info.customName
155
- } hoch`,
156
- );
157
- f.setDesiredPosition(100);
158
- }
159
- });
160
- }
161
-
162
- public restoreRolloPosition(recalc: boolean = false): void {
163
- if (!recalc) {
164
- this.fenster.forEach((f) => {
165
- f.restoreDesiredPosition();
166
- });
167
- return;
168
- }
169
- if (!TimeCallbackService.darkOutsideOrNight(TimeCallbackService.dayType(this._room.Einstellungen.rolloOffset))) {
170
- this.sunriseUp(true);
171
- } else {
172
- this.sunsetDown();
173
- }
174
- }
175
- }
1
+ import { LogLevel } from '../../../models/logLevel';
2
+ import { Fenster } from '../hmIPDevices/Fenster';
3
+ import { FensterPosition } from '../hmIPDevices/FensterPosition';
4
+ import { ServerLogService } from '../../services/log-service';
5
+ import { RoomBase } from '../../../models/rooms/RoomBase';
6
+ import { TimeCallback, TimeCallbackType } from '../../../models/timeCallback';
7
+ import { TimeCallbackService, TimeOfDay } from '../../services/time-callback-service';
8
+ import { Utils } from '../../services/utils/utils';
9
+ import { WeatherService } from '../../services/weather/weather-service';
10
+
11
+ export class FensterGroup {
12
+ public constructor(private _room: RoomBase, public fenster: Fenster[]) {
13
+ for (const f of [...fenster]) {
14
+ f.room = this._room;
15
+ }
16
+ }
17
+
18
+ public allRolloDown(initial: boolean = false, savePosition: boolean = false): void {
19
+ this.fenster.forEach((f) => {
20
+ if (savePosition) f.desiredPosition = 0;
21
+ if (f.rollo !== undefined) {
22
+ ServerLogService.writeLog(
23
+ LogLevel.Debug,
24
+ `Fahre das Rollo zum Sonnenuntergang ${initial ? '(ggf. nachträglich) ' : ''}für ${
25
+ f.rollo.info.customName
26
+ } runter`,
27
+ );
28
+ f.rollo.down(initial);
29
+ }
30
+ });
31
+ }
32
+
33
+ public allRolloUp(savePosition: boolean = false): void {
34
+ this.fenster.forEach((f) => {
35
+ if (f.rollo === undefined) {
36
+ return;
37
+ }
38
+
39
+ if (savePosition) {
40
+ f.desiredPosition = 100;
41
+ }
42
+ f.rollo.up(false);
43
+ });
44
+ }
45
+
46
+ public allRolloToLevel(level: number, savePosition: boolean = false): void {
47
+ this.fenster.forEach((f) => {
48
+ if (savePosition) {
49
+ f.desiredPosition = level;
50
+ }
51
+ if (f.rollo !== undefined) {
52
+ f.rollo.setLevel(level, false);
53
+ }
54
+ });
55
+ }
56
+
57
+ public initCallbacks(): void {
58
+ if (this._room.Einstellungen.sonnenAufgangRollos && this._room.Einstellungen.rolloOffset) {
59
+ ServerLogService.writeLog(LogLevel.Trace, `Sonnenaufgang TimeCallback für ${this._room.roomName} hinzufügen`);
60
+ this._room.sonnenAufgangCallback = new TimeCallback(
61
+ `${this._room.roomName} Sonnenaufgang Rollos`,
62
+ TimeCallbackType.Sunrise,
63
+ () => {
64
+ if (this._room.skipNextRolloUp) {
65
+ this._room.skipNextRolloUp = false;
66
+ return;
67
+ }
68
+ this.sunriseUp();
69
+ },
70
+ this._room.Einstellungen.rolloOffset.sunrise,
71
+ undefined,
72
+ undefined,
73
+ this._room.Einstellungen.rolloOffset,
74
+ );
75
+ if (!TimeCallbackService.darkOutsideOrNight(TimeCallbackService.dayType(this._room.Einstellungen.rolloOffset))) {
76
+ this.sunriseUp(true);
77
+ }
78
+ TimeCallbackService.addCallback(this._room.sonnenAufgangCallback);
79
+ }
80
+
81
+ if (this._room.Einstellungen.sonnenUntergangRollos && this._room.Einstellungen.rolloOffset) {
82
+ this._room.sonnenUntergangCallback = new TimeCallback(
83
+ `${this._room.roomName} Sonnenuntergang Rollo`,
84
+ TimeCallbackType.SunSet,
85
+ () => {
86
+ this.sunsetDown();
87
+ },
88
+ this._room.Einstellungen.rolloOffset.sunset,
89
+ );
90
+ if (TimeCallbackService.darkOutsideOrNight(TimeCallbackService.dayType(this._room.Einstellungen.rolloOffset))) {
91
+ Utils.guardedTimeout(
92
+ () => {
93
+ this.allRolloDown(true, true);
94
+ },
95
+ 60000,
96
+ this,
97
+ );
98
+ }
99
+ TimeCallbackService.addCallback(this._room.sonnenUntergangCallback);
100
+ }
101
+
102
+ if (this._room.Einstellungen.rolloHeatReduction) {
103
+ Utils.guardedInterval(this.setRolloByWeatherStatus, 15 * 60 * 1000, this, true);
104
+ Utils.guardedTimeout(this.setRolloByWeatherStatus, 2 * 60 * 1000, this);
105
+ }
106
+ }
107
+
108
+ private sunsetDown(): void {
109
+ this.allRolloToLevel(0, true);
110
+ if (this._room.PraesenzGroup.anyPresent() && this._room.Einstellungen.lampOffset) {
111
+ this._room.LampenGroup.switchTimeConditional(TimeCallbackService.dayType(this._room.Einstellungen.lampOffset));
112
+ }
113
+ }
114
+
115
+ public setRolloByWeatherStatus(): void {
116
+ const timeOfDay: TimeOfDay = TimeCallbackService.dayType(this._room.Einstellungen.rolloOffset);
117
+ const darkOutside: boolean = TimeCallbackService.darkOutsideOrNight(timeOfDay);
118
+ this.fenster.forEach((f) => {
119
+ if (!f.rollo) {
120
+ return;
121
+ }
122
+ if (darkOutside) {
123
+ f.restoreDesiredPosition();
124
+ return;
125
+ }
126
+ let desiredPos: number = f.desiredPosition;
127
+ if (desiredPos > 0) {
128
+ WeatherService.weatherRolloPosition(
129
+ desiredPos,
130
+ this._room.HeatGroup.desiredTemp,
131
+ this._room.HeatGroup.currentTemp,
132
+ );
133
+ }
134
+ if (f.griffeInPosition(FensterPosition.offen) > 0 && desiredPos < 100) {
135
+ return;
136
+ }
137
+ if (f.griffeInPosition(FensterPosition.kipp) > 0) {
138
+ desiredPos = Math.max(30, desiredPos);
139
+ }
140
+ if (f.rollo.currentLevel === desiredPos) {
141
+ // Rollo ist bereits auf der Zielposition
142
+ return;
143
+ }
144
+ f.rollo.setLevel(desiredPos, false, true);
145
+ });
146
+ }
147
+
148
+ public sunriseUp(initial: boolean = false): void {
149
+ this.fenster.forEach((f) => {
150
+ if (!f.noRolloOnSunrise && f.rollo) {
151
+ ServerLogService.writeLog(
152
+ LogLevel.Debug,
153
+ `Fahre das Rollo zum Sonnenaufgang ${initial ? '(ggf. nachträglich)' : ''}für ${
154
+ f.rollo.info.customName
155
+ } hoch`,
156
+ );
157
+ f.setDesiredPosition(100);
158
+ }
159
+ });
160
+ }
161
+
162
+ public restoreRolloPosition(recalc: boolean = false): void {
163
+ if (!recalc) {
164
+ this.fenster.forEach((f) => {
165
+ f.restoreDesiredPosition();
166
+ });
167
+ return;
168
+ }
169
+ if (!TimeCallbackService.darkOutsideOrNight(TimeCallbackService.dayType(this._room.Einstellungen.rolloOffset))) {
170
+ this.sunriseUp(true);
171
+ } else {
172
+ this.sunsetDown();
173
+ }
174
+ }
175
+ }
@@ -1,32 +1,32 @@
1
- import { RoomBase } from '../../../models/rooms/RoomBase';
2
- import { HmIpHeizgruppe } from '../hmIPDevices/hmIpHeizgruppe';
3
-
4
- export class HeatGroup {
5
- public get currentTemp(): number {
6
- if (this.heaters.length === 0) {
7
- return -99;
8
- }
9
- let value: number = 0;
10
- for (const h of this.heaters) {
11
- value += h.iTemperatur;
12
- }
13
- return Math.round((value / this.heaters.length) * 10) / 10;
14
- }
15
-
16
- public get desiredTemp(): number {
17
- if (this.heaters.length === 0) {
18
- return -99;
19
- }
20
- let value: number = 0;
21
- for (const h of this.heaters) {
22
- value += h.desiredTemperatur;
23
- }
24
- return Math.round((value / this.heaters.length) * 10) / 10;
25
- }
26
-
27
- public constructor(private _room: RoomBase, public heaters: HmIpHeizgruppe[]) {
28
- for (const h of [...heaters]) {
29
- h.room = this._room;
30
- }
31
- }
32
- }
1
+ import { RoomBase } from '../../../models/rooms/RoomBase';
2
+ import { HmIpHeizgruppe } from '../hmIPDevices/hmIpHeizgruppe';
3
+
4
+ export class HeatGroup {
5
+ public get currentTemp(): number {
6
+ if (this.heaters.length === 0) {
7
+ return -99;
8
+ }
9
+ let value: number = 0;
10
+ for (const h of this.heaters) {
11
+ value += h.iTemperatur;
12
+ }
13
+ return Math.round((value / this.heaters.length) * 10) / 10;
14
+ }
15
+
16
+ public get desiredTemp(): number {
17
+ if (this.heaters.length === 0) {
18
+ return -99;
19
+ }
20
+ let value: number = 0;
21
+ for (const h of this.heaters) {
22
+ value += h.desiredTemperatur;
23
+ }
24
+ return Math.round((value / this.heaters.length) * 10) / 10;
25
+ }
26
+
27
+ public constructor(private _room: RoomBase, public heaters: HmIpHeizgruppe[]) {
28
+ for (const h of [...heaters]) {
29
+ h.room = this._room;
30
+ }
31
+ }
32
+ }
@@ -1,88 +1,88 @@
1
- import { HmIpLampe } from '../hmIPDevices/hmIpLampe';
2
- import { ZigbeeIkeaSteckdose } from '../zigbee/zigbeeIkeaSteckdose';
3
- import { ZigbeeIlluDimmer } from '../zigbee/zigbeeIlluDimmer';
4
- import { ZigbeeIlluLedRGBCCT } from '../zigbee/zigbeeIlluLedRGBCCT';
5
- import { TimeCallbackService, TimeOfDay } from '../../services/time-callback-service';
6
- import { RoomBase } from '../../../models/rooms/RoomBase';
7
- import { ZigbeeIlluLampe } from '../zigbee/zigbeeIlluLampe';
8
-
9
- export class LampenGroup {
10
- public constructor(
11
- private _room: RoomBase,
12
- public Lampen: Array<HmIpLampe | ZigbeeIlluDimmer | ZigbeeIlluLampe>,
13
- public Stecker: Array<ZigbeeIkeaSteckdose>,
14
- public LED: Array<ZigbeeIlluLedRGBCCT> = [],
15
- ) {
16
- for (const lamp of [...Lampen, ...Stecker, ...LED]) {
17
- lamp.room = this._room;
18
- }
19
- }
20
-
21
- public switchAll(target: boolean, force: boolean = false): void {
22
- this.setAllLampen(target, undefined, force);
23
- this.setAllStecker(target, undefined, force);
24
-
25
- this.LED.forEach((s) => {
26
- s.setLight(target);
27
- });
28
- }
29
-
30
- public switchTimeConditional(time: TimeOfDay): void {
31
- const darkOutside: boolean = TimeCallbackService.darkOutsideOrNight(time);
32
-
33
- let resultLampen = false;
34
- let resultSteckdosen = false;
35
- if (this.LED.length > 0) {
36
- this.LED.forEach((s) => {
37
- s.setTimeBased(time);
38
- });
39
- } else if (this.Stecker.length > 0) {
40
- resultSteckdosen = darkOutside;
41
- } else {
42
- resultLampen = darkOutside;
43
- }
44
-
45
- this.setAllLampen(resultLampen, time);
46
- this.setAllStecker(resultSteckdosen, time);
47
- }
48
-
49
- public setAllLampen(pValue: boolean, time?: TimeOfDay, force: boolean = false): void {
50
- if (this.Lampen?.length > 0) {
51
- this.Lampen.forEach((s) => {
52
- if (
53
- !pValue ||
54
- time === undefined ||
55
- (time === TimeOfDay.Night && s.settings.nightOn) ||
56
- (time === TimeOfDay.BeforeSunrise && s.settings.dawnOn) ||
57
- (time === TimeOfDay.AfterSunset && s.settings.duskOn)
58
- ) {
59
- const timeout: number = pValue && force ? 30 * 60 * 1000 : -1;
60
- s.setLight(pValue, timeout, force);
61
- }
62
- });
63
- }
64
- }
65
-
66
- public setAllStecker(pValue: boolean, time?: TimeOfDay, force: boolean = false): void {
67
- if (this.Stecker?.length > 0) {
68
- this.Stecker.forEach((s) => {
69
- if (
70
- !pValue ||
71
- time === undefined ||
72
- (time === TimeOfDay.Night && s.settings.nightOn) ||
73
- (time === TimeOfDay.BeforeSunrise && s.settings.dawnOn) ||
74
- (time === TimeOfDay.AfterSunset && s.settings.duskOn)
75
- ) {
76
- const timeout: number = pValue && force ? 30 * 60 * 1000 : -1;
77
- s.setStecker(pValue, timeout, force);
78
- }
79
- });
80
- }
81
- }
82
-
83
- public setAllLED(pValue: boolean, brightness: number = -1, color: string = '', colortemp: number = -1): void {
84
- this.LED.forEach((s) => {
85
- s.setLight(pValue, brightness, color, colortemp);
86
- });
87
- }
88
- }
1
+ import { HmIpLampe } from '../hmIPDevices/hmIpLampe';
2
+ import { ZigbeeIkeaSteckdose } from '../zigbee/zigbeeIkeaSteckdose';
3
+ import { ZigbeeIlluDimmer } from '../zigbee/zigbeeIlluDimmer';
4
+ import { ZigbeeIlluLedRGBCCT } from '../zigbee/zigbeeIlluLedRGBCCT';
5
+ import { TimeCallbackService, TimeOfDay } from '../../services/time-callback-service';
6
+ import { RoomBase } from '../../../models/rooms/RoomBase';
7
+ import { ZigbeeIlluLampe } from '../zigbee/zigbeeIlluLampe';
8
+
9
+ export class LampenGroup {
10
+ public constructor(
11
+ private _room: RoomBase,
12
+ public Lampen: Array<HmIpLampe | ZigbeeIlluDimmer | ZigbeeIlluLampe>,
13
+ public Stecker: Array<ZigbeeIkeaSteckdose>,
14
+ public LED: Array<ZigbeeIlluLedRGBCCT> = [],
15
+ ) {
16
+ for (const lamp of [...Lampen, ...Stecker, ...LED]) {
17
+ lamp.room = this._room;
18
+ }
19
+ }
20
+
21
+ public switchAll(target: boolean, force: boolean = false): void {
22
+ this.setAllLampen(target, undefined, force);
23
+ this.setAllStecker(target, undefined, force);
24
+
25
+ this.LED.forEach((s) => {
26
+ s.setLight(target);
27
+ });
28
+ }
29
+
30
+ public switchTimeConditional(time: TimeOfDay): void {
31
+ const darkOutside: boolean = TimeCallbackService.darkOutsideOrNight(time);
32
+
33
+ let resultLampen = false;
34
+ let resultSteckdosen = false;
35
+ if (this.LED.length > 0) {
36
+ this.LED.forEach((s) => {
37
+ s.setTimeBased(time);
38
+ });
39
+ } else if (this.Stecker.length > 0) {
40
+ resultSteckdosen = darkOutside;
41
+ } else {
42
+ resultLampen = darkOutside;
43
+ }
44
+
45
+ this.setAllLampen(resultLampen, time);
46
+ this.setAllStecker(resultSteckdosen, time);
47
+ }
48
+
49
+ public setAllLampen(pValue: boolean, time?: TimeOfDay, force: boolean = false): void {
50
+ if (this.Lampen?.length > 0) {
51
+ this.Lampen.forEach((s) => {
52
+ if (
53
+ !pValue ||
54
+ time === undefined ||
55
+ (time === TimeOfDay.Night && s.settings.nightOn) ||
56
+ (time === TimeOfDay.BeforeSunrise && s.settings.dawnOn) ||
57
+ (time === TimeOfDay.AfterSunset && s.settings.duskOn)
58
+ ) {
59
+ const timeout: number = pValue && force ? 30 * 60 * 1000 : -1;
60
+ s.setLight(pValue, timeout, force);
61
+ }
62
+ });
63
+ }
64
+ }
65
+
66
+ public setAllStecker(pValue: boolean, time?: TimeOfDay, force: boolean = false): void {
67
+ if (this.Stecker?.length > 0) {
68
+ this.Stecker.forEach((s) => {
69
+ if (
70
+ !pValue ||
71
+ time === undefined ||
72
+ (time === TimeOfDay.Night && s.settings.nightOn) ||
73
+ (time === TimeOfDay.BeforeSunrise && s.settings.dawnOn) ||
74
+ (time === TimeOfDay.AfterSunset && s.settings.duskOn)
75
+ ) {
76
+ const timeout: number = pValue && force ? 30 * 60 * 1000 : -1;
77
+ s.setStecker(pValue, timeout, force);
78
+ }
79
+ });
80
+ }
81
+ }
82
+
83
+ public setAllLED(pValue: boolean, brightness: number = -1, color: string = '', colortemp: number = -1): void {
84
+ this.LED.forEach((s) => {
85
+ s.setLight(pValue, brightness, color, colortemp);
86
+ });
87
+ }
88
+ }