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,31 +1,31 @@
1
- import { LogLevel } from '../../../models/logLevel';
2
- import { DeviceInfo } from '../DeviceInfo';
3
- import { ZigbeeDeviceType } from './zigbeeDeviceType';
4
- import { ServerLogService } from '../../services/log-service';
5
- import { ZigbeeActuator } from './ZigbeeActuator';
6
-
7
- export class ZigbeeIkeaSteckdose extends ZigbeeActuator {
8
- public get steckerOn(): boolean {
9
- return super.actuatorOn;
10
- }
11
-
12
- public constructor(pInfo: DeviceInfo) {
13
- super(pInfo, ZigbeeDeviceType.ZigbeeIkeaSteckdose, `${pInfo.fullID}.state`);
14
- }
15
-
16
- public update(idSplit: string[], state: ioBroker.State, initial: boolean = false): void {
17
- ServerLogService.writeLog(
18
- LogLevel.DeepTrace,
19
- `Stecker Update für "${this.info.customName}": ID: ${idSplit.join('.')} JSON: ${JSON.stringify(state)}`,
20
- );
21
- super.update(idSplit, state, initial, true);
22
- }
23
-
24
- public setStecker(pValue: boolean, timeout: number = -1, force: boolean = false): void {
25
- super.setActuator(pValue, timeout, force);
26
- }
27
-
28
- public toggleStecker(force: boolean = false): boolean {
29
- return super.toggleActuator(force);
30
- }
31
- }
1
+ import { LogLevel } from '../../../models/logLevel';
2
+ import { DeviceInfo } from '../DeviceInfo';
3
+ import { ZigbeeDeviceType } from './zigbeeDeviceType';
4
+ import { ServerLogService } from '../../services/log-service';
5
+ import { ZigbeeActuator } from './ZigbeeActuator';
6
+
7
+ export class ZigbeeIkeaSteckdose extends ZigbeeActuator {
8
+ public get steckerOn(): boolean {
9
+ return super.actuatorOn;
10
+ }
11
+
12
+ public constructor(pInfo: DeviceInfo) {
13
+ super(pInfo, ZigbeeDeviceType.ZigbeeIkeaSteckdose, `${pInfo.fullID}.state`);
14
+ }
15
+
16
+ public update(idSplit: string[], state: ioBroker.State, initial: boolean = false): void {
17
+ ServerLogService.writeLog(
18
+ LogLevel.DeepTrace,
19
+ `Stecker Update für "${this.info.customName}": ID: ${idSplit.join('.')} JSON: ${JSON.stringify(state)}`,
20
+ );
21
+ super.update(idSplit, state, initial, true);
22
+ }
23
+
24
+ public setStecker(pValue: boolean, timeout: number = -1, force: boolean = false): void {
25
+ super.setActuator(pValue, timeout, force);
26
+ }
27
+
28
+ public toggleStecker(force: boolean = false): boolean {
29
+ return super.toggleActuator(force);
30
+ }
31
+ }
@@ -1,37 +1,37 @@
1
- import { LogLevel } from '../../../models/logLevel';
2
- import { DeviceInfo } from '../DeviceInfo';
3
- import { ZigbeeDeviceType } from './zigbeeDeviceType';
4
- import { ServerLogService } from '../../services/log-service';
5
- import { ZigbeeActuator } from './ZigbeeActuator';
6
-
7
- export class ZigbeeIlluActuator extends ZigbeeActuator {
8
- public get isActuatorOn(): boolean {
9
- return this.actuatorOn;
10
- }
11
- public constructor(pInfo: DeviceInfo, deviceType: ZigbeeDeviceType = ZigbeeDeviceType.ZigbeeIlluActuator) {
12
- super(pInfo, deviceType, `${pInfo.fullID}.state`);
13
- }
14
-
15
- public update(
16
- idSplit: string[],
17
- state: ioBroker.State,
18
- initial: boolean = false,
19
- handledByChildObject: boolean = false,
20
- ): void {
21
- if (!handledByChildObject) {
22
- ServerLogService.writeLog(
23
- LogLevel.DeepTrace,
24
- `Aktuator Update für "${this.info.customName}": ID: ${idSplit.join('.')} JSON: ${JSON.stringify(state)}`,
25
- );
26
- }
27
- super.update(idSplit, state, initial, true);
28
- }
29
-
30
- public setActuator(pValue: boolean, timeout: number = -1, force: boolean = false): void {
31
- super.setActuator(pValue, timeout, force);
32
- }
33
-
34
- public toggleActuator(force: boolean = false): boolean {
35
- return super.toggleActuator(force);
36
- }
37
- }
1
+ import { LogLevel } from '../../../models/logLevel';
2
+ import { DeviceInfo } from '../DeviceInfo';
3
+ import { ZigbeeDeviceType } from './zigbeeDeviceType';
4
+ import { ServerLogService } from '../../services/log-service';
5
+ import { ZigbeeActuator } from './ZigbeeActuator';
6
+
7
+ export class ZigbeeIlluActuator extends ZigbeeActuator {
8
+ public get isActuatorOn(): boolean {
9
+ return this.actuatorOn;
10
+ }
11
+ public constructor(pInfo: DeviceInfo, deviceType: ZigbeeDeviceType = ZigbeeDeviceType.ZigbeeIlluActuator) {
12
+ super(pInfo, deviceType, `${pInfo.fullID}.state`);
13
+ }
14
+
15
+ public update(
16
+ idSplit: string[],
17
+ state: ioBroker.State,
18
+ initial: boolean = false,
19
+ handledByChildObject: boolean = false,
20
+ ): void {
21
+ if (!handledByChildObject) {
22
+ ServerLogService.writeLog(
23
+ LogLevel.DeepTrace,
24
+ `Aktuator Update für "${this.info.customName}": ID: ${idSplit.join('.')} JSON: ${JSON.stringify(state)}`,
25
+ );
26
+ }
27
+ super.update(idSplit, state, initial, true);
28
+ }
29
+
30
+ public setActuator(pValue: boolean, timeout: number = -1, force: boolean = false): void {
31
+ super.setActuator(pValue, timeout, force);
32
+ }
33
+
34
+ public toggleActuator(force: boolean = false): boolean {
35
+ return super.toggleActuator(force);
36
+ }
37
+ }
@@ -1,165 +1,165 @@
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 { DimmerSettings } from '../../../models/dimmerSettings';
7
- import { TimeOfDay } from '../../services/time-callback-service';
8
- import { Utils } from '../../services/utils/utils';
9
-
10
- export class ZigbeeIlluDimmer extends ZigbeeDevice {
11
- public on: boolean = false;
12
- public queuedValue: boolean | null = null;
13
- public brightness: number = 0;
14
- public transitionTime: number = 0;
15
- public settings: DimmerSettings = new DimmerSettings();
16
- private stateID: string = 'state';
17
- private brightnessID: string = 'brightness';
18
- private transitionID: string = 'transition_time';
19
- private turnOffTimeout: NodeJS.Timeout | undefined = undefined;
20
- private turnOffTime: number = 0;
21
-
22
- public constructor(pInfo: DeviceInfo) {
23
- super(pInfo, ZigbeeDeviceType.ZigbeeIlluDimmer);
24
- this.stateID = `${this.info.fullID}.state`;
25
- this.brightnessID = `${this.info.fullID}.brightness`;
26
- this.transitionID = `${this.info.fullID}.transition_time`;
27
- }
28
-
29
- public update(idSplit: string[], state: ioBroker.State, initial: boolean = false): void {
30
- this.queuedValue = null;
31
- ServerLogService.writeLog(
32
- LogLevel.DeepTrace,
33
- `Dimmer Update für "${this.info.customName}": ID: ${idSplit.join('.')} JSON: ${JSON.stringify(state)}`,
34
- );
35
- super.update(idSplit, state, initial, true);
36
- switch (idSplit[3]) {
37
- case 'state':
38
- ServerLogService.writeLog(LogLevel.Trace, `Dimmer Update für ${this.info.customName} auf ${state.val}`);
39
- this.on = state.val as boolean;
40
- break;
41
- case 'brightness':
42
- ServerLogService.writeLog(
43
- LogLevel.Trace,
44
- `Dimmer Helligkeit Update für ${this.info.customName} auf ${state.val}`,
45
- );
46
- this.brightness = state.val as number;
47
- break;
48
- case 'transition_time':
49
- ServerLogService.writeLog(
50
- LogLevel.Trace,
51
- `Dimmer Transition Time Update für ${this.info.customName} auf ${state.val}`,
52
- );
53
- this.transitionTime = state.val as number;
54
- break;
55
- }
56
- }
57
-
58
- public setTimeBased(time: TimeOfDay, timeout: number = -1, force: boolean = false): void {
59
- switch (time) {
60
- case TimeOfDay.Night:
61
- this.setLight(true, timeout, force, 50);
62
- break;
63
- case TimeOfDay.AfterSunset:
64
- case TimeOfDay.BeforeSunrise:
65
- this.setLight(true, timeout, force, 75);
66
- break;
67
- case TimeOfDay.Daylight:
68
- this.setLight(true, timeout, force, 100);
69
- break;
70
- }
71
- }
72
-
73
- public setLight(
74
- pValue: boolean,
75
- timeout: number = -1,
76
- force: boolean = false,
77
- brightness: number = -1,
78
- transitionTime: number = -1,
79
- ): void {
80
- if (this.stateID === '') {
81
- ServerLogService.writeLog(LogLevel.Error, `Keine State ID für "${this.info.customName}" bekannt.`);
82
- return;
83
- }
84
-
85
- if (!this.ioConn) {
86
- ServerLogService.writeLog(LogLevel.Error, `Keine Connection für "${this.info.customName}" bekannt.`);
87
- return;
88
- }
89
-
90
- if (transitionTime > -1) {
91
- this.ioConn.setState(this.transitionID, transitionTime, (err) => {
92
- if (err) {
93
- ServerLogService.writeLog(LogLevel.Error, `Dimmer TransitionTime schalten ergab Fehler: ${err}`);
94
- }
95
- });
96
- }
97
-
98
- if (!force && Utils.nowMS() < this.turnOffTime) {
99
- ServerLogService.writeLog(
100
- LogLevel.Debug,
101
- `Skip automatic command for "${this.info.customName}" to ${pValue} as it is locked until ${new Date(
102
- this.turnOffTime,
103
- ).toLocaleTimeString()}`,
104
- );
105
- return;
106
- }
107
-
108
- if (pValue && brightness === -1 && this.brightness < 10) {
109
- brightness = 10;
110
- }
111
- ServerLogService.writeLog(
112
- LogLevel.Debug,
113
- `Dimmer Schalten: "${this.info.customName}" An: ${pValue}\tHelligkeit: ${brightness}%`,
114
- );
115
-
116
- this.ioConn.setState(this.stateID, pValue, (err) => {
117
- if (err) {
118
- ServerLogService.writeLog(LogLevel.Error, `Dimmer schalten ergab Fehler: ${err}`);
119
- }
120
- });
121
- this.queuedValue = pValue;
122
-
123
- if (brightness > -1) {
124
- this.ioConn.setState(this.brightnessID, brightness, (err) => {
125
- if (err) {
126
- ServerLogService.writeLog(LogLevel.Error, `Dimmer Helligkeit schalten ergab Fehler: ${err}`);
127
- }
128
- });
129
- }
130
- if (this.turnOffTimeout !== undefined) {
131
- clearTimeout(this.turnOffTimeout);
132
- this.turnOffTimeout = undefined;
133
- }
134
-
135
- if (timeout < 0 || !pValue) {
136
- return;
137
- }
138
-
139
- this.turnOffTime = Utils.nowMS() + timeout;
140
- this.turnOffTimeout = Utils.guardedTimeout(
141
- () => {
142
- ServerLogService.writeLog(LogLevel.Debug, `Delayed Turnoff for "${this.info.customName}" initiated`);
143
- this.turnOffTimeout = undefined;
144
- if (!this.room) {
145
- this.setLight(false, -1, true);
146
- } else {
147
- this.room.setLightTimeBased(true);
148
- }
149
- },
150
- timeout,
151
- this,
152
- );
153
- }
154
-
155
- public toggleLight(time?: TimeOfDay, force: boolean = false): boolean {
156
- const newVal = this.queuedValue !== null ? !this.queuedValue : !this.on;
157
- const timeout: number = newVal && force ? 30 * 60 * 1000 : -1;
158
- if (newVal && time !== undefined) {
159
- this.setTimeBased(time, timeout, force);
160
- return true;
161
- }
162
- this.setLight(newVal, timeout, force);
163
- return newVal;
164
- }
165
- }
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 { DimmerSettings } from '../../../models/dimmerSettings';
7
+ import { TimeOfDay } from '../../services/time-callback-service';
8
+ import { Utils } from '../../services/utils/utils';
9
+
10
+ export class ZigbeeIlluDimmer extends ZigbeeDevice {
11
+ public on: boolean = false;
12
+ public queuedValue: boolean | null = null;
13
+ public brightness: number = 0;
14
+ public transitionTime: number = 0;
15
+ public settings: DimmerSettings = new DimmerSettings();
16
+ private stateID: string = 'state';
17
+ private brightnessID: string = 'brightness';
18
+ private transitionID: string = 'transition_time';
19
+ private turnOffTimeout: NodeJS.Timeout | undefined = undefined;
20
+ private turnOffTime: number = 0;
21
+
22
+ public constructor(pInfo: DeviceInfo) {
23
+ super(pInfo, ZigbeeDeviceType.ZigbeeIlluDimmer);
24
+ this.stateID = `${this.info.fullID}.state`;
25
+ this.brightnessID = `${this.info.fullID}.brightness`;
26
+ this.transitionID = `${this.info.fullID}.transition_time`;
27
+ }
28
+
29
+ public update(idSplit: string[], state: ioBroker.State, initial: boolean = false): void {
30
+ this.queuedValue = null;
31
+ ServerLogService.writeLog(
32
+ LogLevel.DeepTrace,
33
+ `Dimmer Update für "${this.info.customName}": ID: ${idSplit.join('.')} JSON: ${JSON.stringify(state)}`,
34
+ );
35
+ super.update(idSplit, state, initial, true);
36
+ switch (idSplit[3]) {
37
+ case 'state':
38
+ ServerLogService.writeLog(LogLevel.Trace, `Dimmer Update für ${this.info.customName} auf ${state.val}`);
39
+ this.on = state.val as boolean;
40
+ break;
41
+ case 'brightness':
42
+ ServerLogService.writeLog(
43
+ LogLevel.Trace,
44
+ `Dimmer Helligkeit Update für ${this.info.customName} auf ${state.val}`,
45
+ );
46
+ this.brightness = state.val as number;
47
+ break;
48
+ case 'transition_time':
49
+ ServerLogService.writeLog(
50
+ LogLevel.Trace,
51
+ `Dimmer Transition Time Update für ${this.info.customName} auf ${state.val}`,
52
+ );
53
+ this.transitionTime = state.val as number;
54
+ break;
55
+ }
56
+ }
57
+
58
+ public setTimeBased(time: TimeOfDay, timeout: number = -1, force: boolean = false): void {
59
+ switch (time) {
60
+ case TimeOfDay.Night:
61
+ this.setLight(true, timeout, force, 50);
62
+ break;
63
+ case TimeOfDay.AfterSunset:
64
+ case TimeOfDay.BeforeSunrise:
65
+ this.setLight(true, timeout, force, 75);
66
+ break;
67
+ case TimeOfDay.Daylight:
68
+ this.setLight(true, timeout, force, 100);
69
+ break;
70
+ }
71
+ }
72
+
73
+ public setLight(
74
+ pValue: boolean,
75
+ timeout: number = -1,
76
+ force: boolean = false,
77
+ brightness: number = -1,
78
+ transitionTime: number = -1,
79
+ ): void {
80
+ if (this.stateID === '') {
81
+ ServerLogService.writeLog(LogLevel.Error, `Keine State ID für "${this.info.customName}" bekannt.`);
82
+ return;
83
+ }
84
+
85
+ if (!this.ioConn) {
86
+ ServerLogService.writeLog(LogLevel.Error, `Keine Connection für "${this.info.customName}" bekannt.`);
87
+ return;
88
+ }
89
+
90
+ if (transitionTime > -1) {
91
+ this.ioConn.setState(this.transitionID, transitionTime, (err) => {
92
+ if (err) {
93
+ ServerLogService.writeLog(LogLevel.Error, `Dimmer TransitionTime schalten ergab Fehler: ${err}`);
94
+ }
95
+ });
96
+ }
97
+
98
+ if (!force && Utils.nowMS() < this.turnOffTime) {
99
+ ServerLogService.writeLog(
100
+ LogLevel.Debug,
101
+ `Skip automatic command for "${this.info.customName}" to ${pValue} as it is locked until ${new Date(
102
+ this.turnOffTime,
103
+ ).toLocaleTimeString()}`,
104
+ );
105
+ return;
106
+ }
107
+
108
+ if (pValue && brightness === -1 && this.brightness < 10) {
109
+ brightness = 10;
110
+ }
111
+ ServerLogService.writeLog(
112
+ LogLevel.Debug,
113
+ `Dimmer Schalten: "${this.info.customName}" An: ${pValue}\tHelligkeit: ${brightness}%`,
114
+ );
115
+
116
+ this.ioConn.setState(this.stateID, pValue, (err) => {
117
+ if (err) {
118
+ ServerLogService.writeLog(LogLevel.Error, `Dimmer schalten ergab Fehler: ${err}`);
119
+ }
120
+ });
121
+ this.queuedValue = pValue;
122
+
123
+ if (brightness > -1) {
124
+ this.ioConn.setState(this.brightnessID, brightness, (err) => {
125
+ if (err) {
126
+ ServerLogService.writeLog(LogLevel.Error, `Dimmer Helligkeit schalten ergab Fehler: ${err}`);
127
+ }
128
+ });
129
+ }
130
+ if (this.turnOffTimeout !== undefined) {
131
+ clearTimeout(this.turnOffTimeout);
132
+ this.turnOffTimeout = undefined;
133
+ }
134
+
135
+ if (timeout < 0 || !pValue) {
136
+ return;
137
+ }
138
+
139
+ this.turnOffTime = Utils.nowMS() + timeout;
140
+ this.turnOffTimeout = Utils.guardedTimeout(
141
+ () => {
142
+ ServerLogService.writeLog(LogLevel.Debug, `Delayed Turnoff for "${this.info.customName}" initiated`);
143
+ this.turnOffTimeout = undefined;
144
+ if (!this.room) {
145
+ this.setLight(false, -1, true);
146
+ } else {
147
+ this.room.setLightTimeBased(true);
148
+ }
149
+ },
150
+ timeout,
151
+ this,
152
+ );
153
+ }
154
+
155
+ public toggleLight(time?: TimeOfDay, force: boolean = false): boolean {
156
+ const newVal = this.queuedValue !== null ? !this.queuedValue : !this.on;
157
+ const timeout: number = newVal && force ? 30 * 60 * 1000 : -1;
158
+ if (newVal && time !== undefined) {
159
+ this.setTimeBased(time, timeout, force);
160
+ return true;
161
+ }
162
+ this.setLight(newVal, timeout, force);
163
+ return newVal;
164
+ }
165
+ }
@@ -1,33 +1,33 @@
1
- import { LogLevel } from '../../../models/logLevel';
2
- import { ServerLogService } from '../../services/log-service';
3
- import { DeviceInfo } from '../DeviceInfo';
4
- import { ZigbeeDeviceType } from './zigbeeDeviceType';
5
- import { ZigbeeIlluActuator } from './zigbeeIlluActuator';
6
-
7
- export class ZigbeeIlluLampe extends ZigbeeIlluActuator {
8
- public get lampOn(): boolean {
9
- return super.actuatorOn;
10
- }
11
-
12
- public constructor(pInfo: DeviceInfo) {
13
- super(pInfo, ZigbeeDeviceType.ZigbeeIlluLampe);
14
- }
15
-
16
- public update(idSplit: string[], state: ioBroker.State, initial: boolean = false): void {
17
- super.update(idSplit, state, initial, true);
18
- switch (idSplit[3]) {
19
- case 'state':
20
- ServerLogService.writeLog(LogLevel.Trace, `Lampen Update für ${this.info.customName} auf ${state.val}`);
21
- break;
22
- }
23
- }
24
-
25
- public setLight(pValue: boolean, timeout: number = -1, force: boolean = false): void {
26
- ServerLogService.writeLog(LogLevel.Debug, `Lampenaktor schalten: "${this.info.customName}" Wert: ${pValue}`);
27
- super.setActuator(pValue, timeout, force);
28
- }
29
-
30
- public toggleLight(force: boolean = false): boolean {
31
- return super.toggleActuator(force);
32
- }
33
- }
1
+ import { LogLevel } from '../../../models/logLevel';
2
+ import { ServerLogService } from '../../services/log-service';
3
+ import { DeviceInfo } from '../DeviceInfo';
4
+ import { ZigbeeDeviceType } from './zigbeeDeviceType';
5
+ import { ZigbeeIlluActuator } from './zigbeeIlluActuator';
6
+
7
+ export class ZigbeeIlluLampe extends ZigbeeIlluActuator {
8
+ public get lampOn(): boolean {
9
+ return super.actuatorOn;
10
+ }
11
+
12
+ public constructor(pInfo: DeviceInfo) {
13
+ super(pInfo, ZigbeeDeviceType.ZigbeeIlluLampe);
14
+ }
15
+
16
+ public update(idSplit: string[], state: ioBroker.State, initial: boolean = false): void {
17
+ super.update(idSplit, state, initial, true);
18
+ switch (idSplit[3]) {
19
+ case 'state':
20
+ ServerLogService.writeLog(LogLevel.Trace, `Lampen Update für ${this.info.customName} auf ${state.val}`);
21
+ break;
22
+ }
23
+ }
24
+
25
+ public setLight(pValue: boolean, timeout: number = -1, force: boolean = false): void {
26
+ ServerLogService.writeLog(LogLevel.Debug, `Lampenaktor schalten: "${this.info.customName}" Wert: ${pValue}`);
27
+ super.setActuator(pValue, timeout, force);
28
+ }
29
+
30
+ public toggleLight(force: boolean = false): boolean {
31
+ return super.toggleActuator(force);
32
+ }
33
+ }