hoffmation-base 0.0.1
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.
- package/.eslintrc.js +27 -0
- package/.prettierrc.js +9 -0
- package/LICENSE +21 -0
- package/README.md +1 -0
- package/index.js +1 -0
- package/models/connectionCallbacks.ts +13 -0
- package/models/daytime.ts +3 -0
- package/models/deviceConfig.ts +8 -0
- package/models/dimmerSettings.ts +5 -0
- package/models/lampSettings.ts +5 -0
- package/models/ledSettings.ts +19 -0
- package/models/logLevel.ts +9 -0
- package/models/persistence/BasicRoomInfo.ts +3 -0
- package/models/persistence/DailyMovementCount.ts +3 -0
- package/models/persistence/RoomDetailInfo.ts +4 -0
- package/models/persistence/temperaturDataPoint.ts +12 -0
- package/models/persistence/todaysCount.ts +3 -0
- package/models/rooms/RoomBase.ts +357 -0
- package/models/rooms/RoomSettings/RoomSettings.ts +159 -0
- package/models/rooms/RoomSettings/hmIPRoomSettings.ts +53 -0
- package/models/rooms/RoomSettings/iRoomDefaultSettings.ts +17 -0
- package/models/rooms/RoomSettings/readme.md +18 -0
- package/models/rooms/RoomSettings/zigbeeRoomSettings.ts +51 -0
- package/models/rooms/iRoomImportEnforcer.ts +3 -0
- package/models/rooms/readme.md +11 -0
- package/models/temperaturSettings.ts +22 -0
- package/models/timeCallback.ts +90 -0
- package/package.json +57 -0
- package/server/config/config-readme.md +19 -0
- package/server/config/iConfig.ts +53 -0
- package/server/devices/DeviceInfo.ts +66 -0
- package/server/devices/Griffe.ts +31 -0
- package/server/devices/Heizgruppen.ts +91 -0
- package/server/devices/Rollos.ts +48 -0
- package/server/devices/deviceUpdater.ts +72 -0
- package/server/devices/devices.ts +189 -0
- package/server/devices/groups/fensterGroup.ts +175 -0
- package/server/devices/groups/heatGroup.ts +32 -0
- package/server/devices/groups/lampenGroup.ts +88 -0
- package/server/devices/groups/praesenzGroup.ts +182 -0
- package/server/devices/groups/smokeGroup.ts +16 -0
- package/server/devices/groups/sonosGroup.ts +33 -0
- package/server/devices/groups/tasterGroup.ts +48 -0
- package/server/devices/groups/waterGroup.ts +16 -0
- package/server/devices/hmIPDevices/Fenster.ts +114 -0
- package/server/devices/hmIPDevices/FensterPosition.ts +5 -0
- package/server/devices/hmIPDevices/TuerPosition.ts +4 -0
- package/server/devices/hmIPDevices/hmIpBewegung.ts +126 -0
- package/server/devices/hmIPDevices/hmIpDevice.ts +90 -0
- package/server/devices/hmIPDevices/hmIpDeviceType.ts +14 -0
- package/server/devices/hmIPDevices/hmIpGriff.ts +143 -0
- package/server/devices/hmIPDevices/hmIpHeizgruppe.ts +172 -0
- package/server/devices/hmIPDevices/hmIpHeizung.ts +69 -0
- package/server/devices/hmIPDevices/hmIpLampe.ts +119 -0
- package/server/devices/hmIPDevices/hmIpPraezenz.ts +99 -0
- package/server/devices/hmIPDevices/hmIpRoll.ts +133 -0
- package/server/devices/hmIPDevices/hmIpTaste.ts +72 -0
- package/server/devices/hmIPDevices/hmIpTaster.ts +73 -0
- package/server/devices/hmIPDevices/hmIpTherm.ts +19 -0
- package/server/devices/hmIPDevices/hmIpTuer.ts +115 -0
- package/server/devices/hmIPDevices/hmIpWippe.ts +55 -0
- package/server/devices/iDeviceUpdater.ts +4 -0
- package/server/devices/iIoBrokerDevice.ts +44 -0
- package/server/devices/wledDevice.ts +124 -0
- package/server/devices/zigbee/ZigbeeActuator.ts +113 -0
- package/server/devices/zigbee/zigbeeAquaraVibra.ts +171 -0
- package/server/devices/zigbee/zigbeeAquaraWater.ts +94 -0
- package/server/devices/zigbee/zigbeeBlitzShp.ts +77 -0
- package/server/devices/zigbee/zigbeeDevice.ts +115 -0
- package/server/devices/zigbee/zigbeeDeviceType.ts +13 -0
- package/server/devices/zigbee/zigbeeHeimanSmoke.ts +99 -0
- package/server/devices/zigbee/zigbeeIkeaSteckdose.ts +31 -0
- package/server/devices/zigbee/zigbeeIlluActuator.ts +37 -0
- package/server/devices/zigbee/zigbeeIlluDimmer.ts +165 -0
- package/server/devices/zigbee/zigbeeIlluLampe.ts +33 -0
- package/server/devices/zigbee/zigbeeIlluLedRGBCCT.ts +137 -0
- package/server/ioBroker/connection.ts +1655 -0
- package/server/ioBroker/ioBroker.main.ts +99 -0
- package/server/ioBroker/socketIOAuthInfo.ts +5 -0
- package/server/ioBroker/socketIOConnectOptions.ts +6 -0
- package/server/ioBroker/socketIOLogging.ts +29 -0
- package/server/ioBroker/socketIOVisCommand.ts +11 -0
- package/server/services/HTTPSOptions.ts +14 -0
- package/server/services/Sonos/mp3-server.ts +75 -0
- package/server/services/Sonos/polly-service.ts +100 -0
- package/server/services/Sonos/sonos-service.ts +199 -0
- package/server/services/Telegram/telegram-Commands.ts +215 -0
- package/server/services/Telegram/telegram-service.ts +171 -0
- package/server/services/Telegram/telegramMessageCalback.ts +11 -0
- package/server/services/calendar/m/303/274ll-service.ts +224 -0
- package/server/services/dbo/persist.ts +125 -0
- package/server/services/https-service.ts +71 -0
- package/server/services/log-service.ts +69 -0
- package/server/services/news-service.ts +81 -0
- package/server/services/settings-service.ts +23 -0
- package/server/services/time-callback-service.ts +223 -0
- package/server/services/utils/ringstorage.ts +24 -0
- package/server/services/utils/utils.ts +52 -0
- package/server/services/weather/weather-alert.ts +7 -0
- package/server/services/weather/weather-current.ts +26 -0
- package/server/services/weather/weather-daily.ts +22 -0
- package/server/services/weather/weather-feelsLike.ts +6 -0
- package/server/services/weather/weather-hourly.ts +17 -0
- package/server/services/weather/weather-item.ts +6 -0
- package/server/services/weather/weather-minutes.ts +4 -0
- package/server/services/weather/weather-service.ts +277 -0
- package/server/services/weather/weather-temp.ts +8 -0
- package/tsconfig.json +59 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { DeviceInfo } from '../DeviceInfo';
|
|
2
|
+
import { ZigbeeDeviceType } from './zigbeeDeviceType';
|
|
3
|
+
import { LogLevel } from '/models/logLevel';
|
|
4
|
+
import { ServerLogService } from '/server/services/log-service';
|
|
5
|
+
import { ZigbeeActuator } from '/server/devices/zigbee/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
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { DeviceInfo } from '../DeviceInfo';
|
|
2
|
+
import { ZigbeeDeviceType } from './zigbeeDeviceType';
|
|
3
|
+
import { LogLevel } from '/models/logLevel';
|
|
4
|
+
import { ServerLogService } from '/server/services/log-service';
|
|
5
|
+
import { ZigbeeActuator } from '/server/devices/zigbee/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
|
+
}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { DeviceInfo } from '../DeviceInfo';
|
|
2
|
+
import { ZigbeeDevice } from './zigbeeDevice';
|
|
3
|
+
import { ZigbeeDeviceType } from './zigbeeDeviceType';
|
|
4
|
+
import { DimmerSettings } from '/models/dimmerSettings';
|
|
5
|
+
import { LogLevel } from '/models/logLevel';
|
|
6
|
+
import { ServerLogService } from '/server/services/log-service';
|
|
7
|
+
import { TimeOfDay } from '/server/services/time-callback-service';
|
|
8
|
+
import { Utils } from '/server/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
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { DeviceInfo } from '../DeviceInfo';
|
|
2
|
+
import { ZigbeeDeviceType } from './zigbeeDeviceType';
|
|
3
|
+
import { LogLevel } from '/models/logLevel';
|
|
4
|
+
import { ServerLogService } from '/server/services/log-service';
|
|
5
|
+
import { ZigbeeIlluActuator } from '/server/devices/zigbee/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
|
+
}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { DeviceInfo } from '../DeviceInfo';
|
|
2
|
+
import { ZigbeeDevice } from './zigbeeDevice';
|
|
3
|
+
import { ZigbeeDeviceType } from './zigbeeDeviceType';
|
|
4
|
+
import { LedSettings } from '/models/ledSettings';
|
|
5
|
+
import { LogLevel } from '/models/logLevel';
|
|
6
|
+
import { ServerLogService } from '/server/services/log-service';
|
|
7
|
+
import { TimeOfDay } from '/server/services/time-callback-service';
|
|
8
|
+
|
|
9
|
+
export class ZigbeeIlluLedRGBCCT extends ZigbeeDevice {
|
|
10
|
+
public static DEFAULT_COLOR_WARM: string = '#f2b200';
|
|
11
|
+
public on: boolean = false;
|
|
12
|
+
public brightness: number = 0;
|
|
13
|
+
public color: string = '#fcba32';
|
|
14
|
+
public colortemp: number = 500;
|
|
15
|
+
public settings: LedSettings = new LedSettings();
|
|
16
|
+
private stateID: string = 'state';
|
|
17
|
+
private brightnessID: string = 'brightness';
|
|
18
|
+
private colorID: string = '';
|
|
19
|
+
private colorTempID: string = '';
|
|
20
|
+
private effectID: string = '';
|
|
21
|
+
|
|
22
|
+
public constructor(pInfo: DeviceInfo) {
|
|
23
|
+
super(pInfo, ZigbeeDeviceType.ZigbeeIlluLedRGBCCT);
|
|
24
|
+
this.stateID = `${this.info.fullID}.state`;
|
|
25
|
+
this.brightnessID = `${this.info.fullID}.brightness`;
|
|
26
|
+
this.colorID = `${this.info.fullID}.color`;
|
|
27
|
+
this.colorTempID = `${this.info.fullID}.colortemp`;
|
|
28
|
+
this.effectID = `${this.info.fullID}.effect`;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
public update(idSplit: string[], state: ioBroker.State, initial: boolean = false): void {
|
|
32
|
+
ServerLogService.writeLog(
|
|
33
|
+
LogLevel.DeepTrace,
|
|
34
|
+
`LED Update für "${this.info.customName}": ID: ${idSplit.join('.')} JSON: ${JSON.stringify(state)}`,
|
|
35
|
+
);
|
|
36
|
+
super.update(idSplit, state, initial, true);
|
|
37
|
+
switch (idSplit[3]) {
|
|
38
|
+
case 'state':
|
|
39
|
+
ServerLogService.writeLog(LogLevel.Trace, `LED Update für ${this.info.customName} auf ${state.val}`);
|
|
40
|
+
this.on = state.val as boolean;
|
|
41
|
+
break;
|
|
42
|
+
case 'brightness':
|
|
43
|
+
ServerLogService.writeLog(LogLevel.Trace, `LED Helligkeit Update für ${this.info.customName} auf ${state.val}`);
|
|
44
|
+
this.brightness = state.val as number;
|
|
45
|
+
break;
|
|
46
|
+
case 'color':
|
|
47
|
+
ServerLogService.writeLog(LogLevel.Trace, `LED Color Update für ${this.info.customName} auf ${state.val}`);
|
|
48
|
+
this.color = state.val as string;
|
|
49
|
+
break;
|
|
50
|
+
case 'colortemp':
|
|
51
|
+
ServerLogService.writeLog(LogLevel.Trace, `LED Color Update für ${this.info.customName} auf ${state.val}`);
|
|
52
|
+
this.colortemp = state.val as number;
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
public setTimeBased(time: TimeOfDay): void {
|
|
58
|
+
switch (time) {
|
|
59
|
+
case TimeOfDay.Night:
|
|
60
|
+
if (this.settings.nightOn) {
|
|
61
|
+
this.setLight(true, this.settings.nightBrightness, this.settings.nightColor, this.settings.nightColorTemp);
|
|
62
|
+
}
|
|
63
|
+
break;
|
|
64
|
+
case TimeOfDay.AfterSunset:
|
|
65
|
+
if (this.settings.duskOn) {
|
|
66
|
+
this.setLight(true, this.settings.duskBrightness, this.settings.duskColor, this.settings.duskColorTemp);
|
|
67
|
+
}
|
|
68
|
+
break;
|
|
69
|
+
case TimeOfDay.BeforeSunrise:
|
|
70
|
+
if (this.settings.dawnOn) {
|
|
71
|
+
this.setLight(true, this.settings.dawnBrightness, this.settings.dawnColor, this.settings.dawnColorTemp);
|
|
72
|
+
}
|
|
73
|
+
break;
|
|
74
|
+
case TimeOfDay.Daylight:
|
|
75
|
+
if (this.settings.dayOn) {
|
|
76
|
+
this.setLight(true, this.settings.dayBrightness, this.settings.dayColor, this.settings.dayColorTemp);
|
|
77
|
+
}
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
public setLight(pValue: boolean, brightness: number = -1, color: string = '', colortemp: number = -1): void {
|
|
83
|
+
if (this.stateID === '') {
|
|
84
|
+
ServerLogService.writeLog(LogLevel.Error, `Keine State ID für "${this.info.customName}" bekannt.`);
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
if (!this.ioConn) {
|
|
89
|
+
ServerLogService.writeLog(LogLevel.Error, `Keine Connection für "${this.info.customName}" bekannt.`);
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
if (pValue && brightness === -1 && this.brightness < 10) {
|
|
94
|
+
brightness = 10;
|
|
95
|
+
}
|
|
96
|
+
ServerLogService.writeLog(
|
|
97
|
+
LogLevel.Debug,
|
|
98
|
+
`LED Schalten: "${this.info.customName}" An: ${pValue}\tHelligkeit: ${brightness}%\tFarbe: "${color}"\tColorTemperatur: ${colortemp}`,
|
|
99
|
+
);
|
|
100
|
+
|
|
101
|
+
if (color !== '') {
|
|
102
|
+
this.ioConn.setState(this.colorID, color, (err) => {
|
|
103
|
+
if (err) {
|
|
104
|
+
ServerLogService.writeLog(LogLevel.Error, `LED Farbe schalten ergab Fehler: ${err}`);
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
if (colortemp > -1) {
|
|
110
|
+
this.ioConn.setState(this.colorTempID, colortemp, (err) => {
|
|
111
|
+
if (err) {
|
|
112
|
+
ServerLogService.writeLog(LogLevel.Error, `LED Farbwärme schalten ergab Fehler: ${err}`);
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
this.ioConn.setState(this.stateID, pValue, (err) => {
|
|
118
|
+
if (err) {
|
|
119
|
+
ServerLogService.writeLog(LogLevel.Error, `LED schalten ergab Fehler: ${err}`);
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
if (brightness > -1) {
|
|
124
|
+
this.ioConn.setState(this.brightnessID, brightness, (err) => {
|
|
125
|
+
if (err) {
|
|
126
|
+
ServerLogService.writeLog(LogLevel.Error, `LED Helligkeit schalten ergab Fehler: ${err}`);
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
public toggleLight(): boolean {
|
|
133
|
+
const newVal = !this.on;
|
|
134
|
+
this.setLight(newVal);
|
|
135
|
+
return newVal;
|
|
136
|
+
}
|
|
137
|
+
}
|