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.
- package/.eslintrc.js +27 -27
- package/.github/workflows/npm-publish.yml +50 -0
- package/.prettierrc.js +9 -9
- package/LICENSE +21 -21
- package/index.js +1 -1
- package/models/connectionCallbacks.ts +13 -13
- package/models/daytime.ts +3 -3
- package/models/deviceConfig.ts +8 -8
- package/models/dimmerSettings.ts +5 -5
- package/models/iTemperaturDataPoint.ts +9 -9
- package/models/lampSettings.ts +5 -5
- package/models/ledSettings.ts +19 -19
- package/models/logLevel.ts +9 -9
- package/models/persistence/BasicRoomInfo.ts +3 -3
- package/models/persistence/DailyMovementCount.ts +3 -3
- package/models/persistence/RoomDetailInfo.ts +4 -4
- package/models/persistence/temperaturDataPoint.ts +12 -12
- package/models/persistence/todaysCount.ts +3 -3
- package/models/rooms/RoomBase.ts +357 -357
- package/models/rooms/RoomSettings/RoomSettings.ts +159 -159
- package/models/rooms/RoomSettings/hmIPRoomSettings.ts +53 -53
- package/models/rooms/RoomSettings/iRoomDefaultSettings.ts +17 -17
- package/models/rooms/RoomSettings/readme.md +17 -17
- package/models/rooms/RoomSettings/zigbeeRoomSettings.ts +51 -51
- package/models/rooms/iRoomImportEnforcer.ts +3 -3
- package/models/rooms/readme.md +11 -11
- package/models/temperaturSettings.ts +22 -22
- package/models/timeCallback.ts +90 -90
- package/package.json +1 -1
- package/server/config/config-readme.md +19 -19
- package/server/config/iConfig.ts +53 -53
- package/server/config/private/mainConfig.json +64 -64
- package/server/devices/DeviceInfo.ts +66 -66
- package/server/devices/Griffe.ts +31 -31
- package/server/devices/Heizgruppen.ts +91 -91
- package/server/devices/Rollos.ts +48 -48
- package/server/devices/deviceUpdater.ts +72 -72
- package/server/devices/devices.ts +189 -189
- package/server/devices/groups/fensterGroup.ts +175 -175
- package/server/devices/groups/heatGroup.ts +32 -32
- package/server/devices/groups/lampenGroup.ts +88 -88
- package/server/devices/groups/praesenzGroup.ts +182 -182
- package/server/devices/groups/smokeGroup.ts +16 -16
- package/server/devices/groups/sonosGroup.ts +33 -33
- package/server/devices/groups/tasterGroup.ts +48 -48
- package/server/devices/groups/waterGroup.ts +16 -16
- package/server/devices/hmIPDevices/Fenster.ts +114 -114
- package/server/devices/hmIPDevices/FensterPosition.ts +5 -5
- package/server/devices/hmIPDevices/TuerPosition.ts +4 -4
- package/server/devices/hmIPDevices/hmIpBewegung.ts +126 -126
- package/server/devices/hmIPDevices/hmIpDevice.ts +90 -90
- package/server/devices/hmIPDevices/hmIpDeviceType.ts +14 -14
- package/server/devices/hmIPDevices/hmIpGriff.ts +143 -143
- package/server/devices/hmIPDevices/hmIpHeizgruppe.ts +172 -172
- package/server/devices/hmIPDevices/hmIpHeizung.ts +69 -69
- package/server/devices/hmIPDevices/hmIpLampe.ts +119 -119
- package/server/devices/hmIPDevices/hmIpPraezenz.ts +99 -99
- package/server/devices/hmIPDevices/hmIpRoll.ts +133 -133
- package/server/devices/hmIPDevices/hmIpTaster.ts +82 -73
- package/server/devices/hmIPDevices/hmIpTherm.ts +19 -19
- package/server/devices/hmIPDevices/hmIpTuer.ts +115 -115
- package/server/devices/hmIPDevices/hmIpWippe.ts +55 -55
- package/server/devices/iDeviceUpdater.ts +4 -4
- package/server/devices/iIoBrokerDevice.ts +44 -44
- package/server/devices/iTaster.ts +6 -0
- package/server/devices/{hmIPDevices/hmIpTaste.ts → taste.ts} +84 -72
- package/server/devices/wledDevice.ts +124 -124
- package/server/devices/zigbee/ZigbeeActuator.ts +113 -113
- package/server/devices/zigbee/zigbeeAquaraVibra.ts +171 -171
- package/server/devices/zigbee/zigbeeAquaraWater.ts +94 -94
- package/server/devices/zigbee/zigbeeBlitzShp.ts +77 -77
- package/server/devices/zigbee/zigbeeDevice.ts +115 -115
- package/server/devices/zigbee/zigbeeDeviceType.ts +13 -13
- package/server/devices/zigbee/zigbeeHeimanSmoke.ts +99 -99
- package/server/devices/zigbee/zigbeeIkeaSteckdose.ts +31 -31
- package/server/devices/zigbee/zigbeeIlluActuator.ts +37 -37
- package/server/devices/zigbee/zigbeeIlluDimmer.ts +165 -165
- package/server/devices/zigbee/zigbeeIlluLampe.ts +33 -33
- package/server/devices/zigbee/zigbeeIlluLedRGBCCT.ts +137 -137
- package/server/ioBroker/connection.ts +1655 -1655
- package/server/ioBroker/ioBroker.main.ts +99 -99
- package/server/ioBroker/socketIOAuthInfo.ts +5 -5
- package/server/ioBroker/socketIOConnectOptions.ts +6 -6
- package/server/ioBroker/socketIOLogging.ts +29 -29
- package/server/ioBroker/socketIOVisCommand.ts +11 -11
- package/server/services/HTTPSOptions.ts +14 -14
- package/server/services/Sonos/OwnSonosDevices.ts +9 -0
- package/server/services/Sonos/mp3-server.ts +75 -75
- package/server/services/Sonos/polly-service.ts +100 -100
- package/server/services/Sonos/sonos-service.ts +194 -199
- package/server/services/Telegram/telegram-Commands.ts +237 -215
- package/server/services/Telegram/telegram-service.ts +171 -171
- package/server/services/Telegram/telegramMessageCalback.ts +11 -11
- package/server/services/calendar/muell-tonne.ts +82 -83
- package/server/services/calendar/m/303/274ll-service.ts +147 -146
- package/server/services/dbo/persist.ts +125 -125
- package/server/services/https-service.ts +71 -71
- package/server/services/log-service.ts +69 -69
- package/server/services/news-service.ts +81 -81
- package/server/services/settings-service.ts +15 -15
- package/server/services/time-callback-service.ts +223 -223
- package/server/services/utils/ringstorage.ts +24 -24
- package/server/services/utils/utils.ts +52 -52
- package/server/services/weather/weather-alert.ts +7 -7
- package/server/services/weather/weather-current.ts +26 -26
- package/server/services/weather/weather-daily.ts +22 -22
- package/server/services/weather/weather-feelsLike.ts +6 -6
- package/server/services/weather/weather-hourly.ts +17 -17
- package/server/services/weather/weather-item.ts +6 -6
- package/server/services/weather/weather-minutes.ts +4 -4
- package/server/services/weather/weather-service.ts +277 -277
- package/server/services/weather/weather-temp.ts +8 -8
- package/tsconfig.json +58 -58
|
@@ -1,172 +1,172 @@
|
|
|
1
|
-
import { LogLevel } from '../../../models/logLevel';
|
|
2
|
-
import { HmIPDevice } from './hmIpDevice';
|
|
3
|
-
import { HmIpDeviceType } from './hmIpDeviceType';
|
|
4
|
-
import { DeviceInfo } from '../DeviceInfo';
|
|
5
|
-
import { ServerLogService } from '../../services/log-service';
|
|
6
|
-
import { TemperaturSettings } from '../../../models/temperaturSettings';
|
|
7
|
-
import { Persist } from '../../services/dbo/persist';
|
|
8
|
-
import { HmIpHeizung } from './hmIpHeizung';
|
|
9
|
-
import { Devices } from '../devices';
|
|
10
|
-
import { Utils } from '../../services/utils/utils';
|
|
11
|
-
|
|
12
|
-
export class HmIpHeizgruppe extends HmIPDevice {
|
|
13
|
-
private _automaticMode: boolean = true;
|
|
14
|
-
private _iAutomaticInterval: NodeJS.Timeout;
|
|
15
|
-
private _level: number = 0;
|
|
16
|
-
private _temperatur: number = 0;
|
|
17
|
-
private _humidity: number = 0;
|
|
18
|
-
private _desiredTemperatur: number = 0;
|
|
19
|
-
private _setPointTemperaturID: string = '';
|
|
20
|
-
private _automaticFallBackTemperatur: number = 20;
|
|
21
|
-
private _automaticPoints: { [name: string]: TemperaturSettings } = {};
|
|
22
|
-
private _humidityCallbacks: Array<(pValue: number) => void> = [];
|
|
23
|
-
|
|
24
|
-
public constructor(pInfo: DeviceInfo) {
|
|
25
|
-
super(pInfo, HmIpDeviceType.HmIpHeizgruppe);
|
|
26
|
-
this._setPointTemperaturID = `${this.info.fullID}.1.SET_POINT_TEMPERATURE`;
|
|
27
|
-
this._iAutomaticInterval = Utils.guardedInterval(this.checkAutomaticChange, 300000, this); // Alle 5 Minuten prüfen
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
public get sLevel(): string {
|
|
31
|
-
return `${this._level * 100}%`;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
public get iLevel(): number {
|
|
35
|
-
return this._level;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
public get sTemperatur(): string {
|
|
39
|
-
return `${this._temperatur}°C`;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
public get iTemperatur(): number {
|
|
43
|
-
return this._temperatur;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
public get desiredTemperatur(): number {
|
|
47
|
-
return this._desiredTemperatur;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
public get humidity(): number {
|
|
51
|
-
return this._humidity;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
private set humidity(val: number) {
|
|
55
|
-
this._humidity = val;
|
|
56
|
-
for (const cb of this._humidityCallbacks) {
|
|
57
|
-
cb(val);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
public set desiredTemperatur(val: number) {
|
|
62
|
-
if (!this.ioConn) {
|
|
63
|
-
ServerLogService.writeLog(LogLevel.Error, `Keine Connection für "${this.info.customName}" bekannt.`);
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
ServerLogService.writeLog(LogLevel.Info, `Neue Temperatur (${val}) für "${this.info.customName}".`);
|
|
68
|
-
this.ioConn.setState(this._setPointTemperaturID, val, (err) => {
|
|
69
|
-
if (err) {
|
|
70
|
-
ServerLogService.writeLog(
|
|
71
|
-
LogLevel.Error,
|
|
72
|
-
`Temperaturänderung für "${this.info.customName}" ergab Fehler ${err}.`,
|
|
73
|
-
);
|
|
74
|
-
} else {
|
|
75
|
-
ServerLogService.writeLog(
|
|
76
|
-
LogLevel.Debug,
|
|
77
|
-
`Temperaturänderung für "${this.info.customName}" auf ${val} erfolgreich`,
|
|
78
|
-
);
|
|
79
|
-
}
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
public addHumidityCallback(pCallback: (pValue: number) => void): void {
|
|
84
|
-
this._humidityCallbacks.push(pCallback);
|
|
85
|
-
if (this._humidity > 0) {
|
|
86
|
-
pCallback(this._humidity);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
public deleteAutomaticPoint(name: string): void {
|
|
91
|
-
if (this._automaticPoints[name] !== undefined) delete this._automaticPoints[name];
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
public getBelongingHeizungen(): HmIpHeizung[] {
|
|
95
|
-
const result: HmIpHeizung[] = [];
|
|
96
|
-
for (const dID in Devices.hmIP) {
|
|
97
|
-
const d = Devices.hmIP[dID];
|
|
98
|
-
if (d.deviceType === HmIpDeviceType.HmIpHeizung && d.info.room === this.info.room) {
|
|
99
|
-
result.push(d as HmIpHeizung);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
return result;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
public setAutomaticPoint(name: string, setting: TemperaturSettings): void {
|
|
106
|
-
this._automaticPoints[name] = setting;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
public update(idSplit: string[], state: ioBroker.State, initial: boolean = false): void {
|
|
110
|
-
ServerLogService.writeLog(
|
|
111
|
-
LogLevel.Trace,
|
|
112
|
-
`Heizgruppe "${this.info.customName}" Update: ID: ${idSplit.join('.')} JSON: ${JSON.stringify(state)}`,
|
|
113
|
-
);
|
|
114
|
-
super.update(idSplit, state, initial, true);
|
|
115
|
-
|
|
116
|
-
switch (idSplit[3]) {
|
|
117
|
-
case '1':
|
|
118
|
-
this.updateBaseInformation(idSplit[4], state, initial);
|
|
119
|
-
break;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
private updateBaseInformation(name: string, state: ioBroker.State, initial: boolean) {
|
|
124
|
-
switch (name) {
|
|
125
|
-
case 'ACTUAL_TEMPERATURE':
|
|
126
|
-
this._temperatur = state.val as number;
|
|
127
|
-
break;
|
|
128
|
-
case 'LEVEL':
|
|
129
|
-
this._level = state.val as number;
|
|
130
|
-
break;
|
|
131
|
-
case 'HUMIDITY':
|
|
132
|
-
this.humidity = state.val as number;
|
|
133
|
-
break;
|
|
134
|
-
case 'SET_POINT_TEMPERATURE':
|
|
135
|
-
ServerLogService.writeLog(
|
|
136
|
-
LogLevel.Trace,
|
|
137
|
-
`Heizgruppe "${this.info.customName}" Update Soll-Temperatur JSON: ${JSON.stringify(state)}`,
|
|
138
|
-
);
|
|
139
|
-
this._desiredTemperatur = state.val as number;
|
|
140
|
-
break;
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
private checkAutomaticChange(): void {
|
|
145
|
-
if (!this._automaticMode) {
|
|
146
|
-
Persist.addTemperaturDataPoint(this);
|
|
147
|
-
return;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
for (const name in this._automaticPoints) {
|
|
151
|
-
if (this._automaticPoints[name] === undefined) {
|
|
152
|
-
continue;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
const settings: TemperaturSettings = this._automaticPoints[name];
|
|
156
|
-
if (!settings.isNowInRange()) {
|
|
157
|
-
continue;
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
if (this._desiredTemperatur !== settings.temperatur) {
|
|
161
|
-
ServerLogService.writeLog(
|
|
162
|
-
LogLevel.Debug,
|
|
163
|
-
`Automatische Temperaturanpassung für ${this.info.customName} auf ${settings.temperatur}°C`,
|
|
164
|
-
);
|
|
165
|
-
this.desiredTemperatur = settings.temperatur;
|
|
166
|
-
}
|
|
167
|
-
break;
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
Persist.addTemperaturDataPoint(this);
|
|
171
|
-
}
|
|
172
|
-
}
|
|
1
|
+
import { LogLevel } from '../../../models/logLevel';
|
|
2
|
+
import { HmIPDevice } from './hmIpDevice';
|
|
3
|
+
import { HmIpDeviceType } from './hmIpDeviceType';
|
|
4
|
+
import { DeviceInfo } from '../DeviceInfo';
|
|
5
|
+
import { ServerLogService } from '../../services/log-service';
|
|
6
|
+
import { TemperaturSettings } from '../../../models/temperaturSettings';
|
|
7
|
+
import { Persist } from '../../services/dbo/persist';
|
|
8
|
+
import { HmIpHeizung } from './hmIpHeizung';
|
|
9
|
+
import { Devices } from '../devices';
|
|
10
|
+
import { Utils } from '../../services/utils/utils';
|
|
11
|
+
|
|
12
|
+
export class HmIpHeizgruppe extends HmIPDevice {
|
|
13
|
+
private _automaticMode: boolean = true;
|
|
14
|
+
private _iAutomaticInterval: NodeJS.Timeout;
|
|
15
|
+
private _level: number = 0;
|
|
16
|
+
private _temperatur: number = 0;
|
|
17
|
+
private _humidity: number = 0;
|
|
18
|
+
private _desiredTemperatur: number = 0;
|
|
19
|
+
private _setPointTemperaturID: string = '';
|
|
20
|
+
private _automaticFallBackTemperatur: number = 20;
|
|
21
|
+
private _automaticPoints: { [name: string]: TemperaturSettings } = {};
|
|
22
|
+
private _humidityCallbacks: Array<(pValue: number) => void> = [];
|
|
23
|
+
|
|
24
|
+
public constructor(pInfo: DeviceInfo) {
|
|
25
|
+
super(pInfo, HmIpDeviceType.HmIpHeizgruppe);
|
|
26
|
+
this._setPointTemperaturID = `${this.info.fullID}.1.SET_POINT_TEMPERATURE`;
|
|
27
|
+
this._iAutomaticInterval = Utils.guardedInterval(this.checkAutomaticChange, 300000, this); // Alle 5 Minuten prüfen
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
public get sLevel(): string {
|
|
31
|
+
return `${this._level * 100}%`;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
public get iLevel(): number {
|
|
35
|
+
return this._level;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
public get sTemperatur(): string {
|
|
39
|
+
return `${this._temperatur}°C`;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
public get iTemperatur(): number {
|
|
43
|
+
return this._temperatur;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
public get desiredTemperatur(): number {
|
|
47
|
+
return this._desiredTemperatur;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
public get humidity(): number {
|
|
51
|
+
return this._humidity;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
private set humidity(val: number) {
|
|
55
|
+
this._humidity = val;
|
|
56
|
+
for (const cb of this._humidityCallbacks) {
|
|
57
|
+
cb(val);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
public set desiredTemperatur(val: number) {
|
|
62
|
+
if (!this.ioConn) {
|
|
63
|
+
ServerLogService.writeLog(LogLevel.Error, `Keine Connection für "${this.info.customName}" bekannt.`);
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
ServerLogService.writeLog(LogLevel.Info, `Neue Temperatur (${val}) für "${this.info.customName}".`);
|
|
68
|
+
this.ioConn.setState(this._setPointTemperaturID, val, (err) => {
|
|
69
|
+
if (err) {
|
|
70
|
+
ServerLogService.writeLog(
|
|
71
|
+
LogLevel.Error,
|
|
72
|
+
`Temperaturänderung für "${this.info.customName}" ergab Fehler ${err}.`,
|
|
73
|
+
);
|
|
74
|
+
} else {
|
|
75
|
+
ServerLogService.writeLog(
|
|
76
|
+
LogLevel.Debug,
|
|
77
|
+
`Temperaturänderung für "${this.info.customName}" auf ${val} erfolgreich`,
|
|
78
|
+
);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
public addHumidityCallback(pCallback: (pValue: number) => void): void {
|
|
84
|
+
this._humidityCallbacks.push(pCallback);
|
|
85
|
+
if (this._humidity > 0) {
|
|
86
|
+
pCallback(this._humidity);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
public deleteAutomaticPoint(name: string): void {
|
|
91
|
+
if (this._automaticPoints[name] !== undefined) delete this._automaticPoints[name];
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
public getBelongingHeizungen(): HmIpHeizung[] {
|
|
95
|
+
const result: HmIpHeizung[] = [];
|
|
96
|
+
for (const dID in Devices.hmIP) {
|
|
97
|
+
const d = Devices.hmIP[dID];
|
|
98
|
+
if (d.deviceType === HmIpDeviceType.HmIpHeizung && d.info.room === this.info.room) {
|
|
99
|
+
result.push(d as HmIpHeizung);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return result;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
public setAutomaticPoint(name: string, setting: TemperaturSettings): void {
|
|
106
|
+
this._automaticPoints[name] = setting;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
public update(idSplit: string[], state: ioBroker.State, initial: boolean = false): void {
|
|
110
|
+
ServerLogService.writeLog(
|
|
111
|
+
LogLevel.Trace,
|
|
112
|
+
`Heizgruppe "${this.info.customName}" Update: ID: ${idSplit.join('.')} JSON: ${JSON.stringify(state)}`,
|
|
113
|
+
);
|
|
114
|
+
super.update(idSplit, state, initial, true);
|
|
115
|
+
|
|
116
|
+
switch (idSplit[3]) {
|
|
117
|
+
case '1':
|
|
118
|
+
this.updateBaseInformation(idSplit[4], state, initial);
|
|
119
|
+
break;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
private updateBaseInformation(name: string, state: ioBroker.State, initial: boolean) {
|
|
124
|
+
switch (name) {
|
|
125
|
+
case 'ACTUAL_TEMPERATURE':
|
|
126
|
+
this._temperatur = state.val as number;
|
|
127
|
+
break;
|
|
128
|
+
case 'LEVEL':
|
|
129
|
+
this._level = state.val as number;
|
|
130
|
+
break;
|
|
131
|
+
case 'HUMIDITY':
|
|
132
|
+
this.humidity = state.val as number;
|
|
133
|
+
break;
|
|
134
|
+
case 'SET_POINT_TEMPERATURE':
|
|
135
|
+
ServerLogService.writeLog(
|
|
136
|
+
LogLevel.Trace,
|
|
137
|
+
`Heizgruppe "${this.info.customName}" Update Soll-Temperatur JSON: ${JSON.stringify(state)}`,
|
|
138
|
+
);
|
|
139
|
+
this._desiredTemperatur = state.val as number;
|
|
140
|
+
break;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
private checkAutomaticChange(): void {
|
|
145
|
+
if (!this._automaticMode) {
|
|
146
|
+
Persist.addTemperaturDataPoint(this);
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
for (const name in this._automaticPoints) {
|
|
151
|
+
if (this._automaticPoints[name] === undefined) {
|
|
152
|
+
continue;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
const settings: TemperaturSettings = this._automaticPoints[name];
|
|
156
|
+
if (!settings.isNowInRange()) {
|
|
157
|
+
continue;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
if (this._desiredTemperatur !== settings.temperatur) {
|
|
161
|
+
ServerLogService.writeLog(
|
|
162
|
+
LogLevel.Debug,
|
|
163
|
+
`Automatische Temperaturanpassung für ${this.info.customName} auf ${settings.temperatur}°C`,
|
|
164
|
+
);
|
|
165
|
+
this.desiredTemperatur = settings.temperatur;
|
|
166
|
+
}
|
|
167
|
+
break;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
Persist.addTemperaturDataPoint(this);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
@@ -1,69 +1,69 @@
|
|
|
1
|
-
import { LogLevel } from '../../../models/logLevel';
|
|
2
|
-
import { ServerLogService } from '../../services/log-service';
|
|
3
|
-
import { HmIPDevice } from './hmIpDevice';
|
|
4
|
-
import { HmIpDeviceType } from './hmIpDeviceType';
|
|
5
|
-
import { DeviceInfo } from '../DeviceInfo';
|
|
6
|
-
|
|
7
|
-
export class HmIpHeizung extends HmIPDevice {
|
|
8
|
-
private _temperatur: number = 0;
|
|
9
|
-
private _level: number = 0;
|
|
10
|
-
private _adaptionState: number | undefined;
|
|
11
|
-
private _desiredTemperatur: number = 0;
|
|
12
|
-
|
|
13
|
-
public get desiredTemperatur(): number {
|
|
14
|
-
return this._desiredTemperatur;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
public get iLevel(): number {
|
|
18
|
-
return this._level;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
public get iTemperatur(): number {
|
|
22
|
-
return this._temperatur;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
public constructor(pInfo: DeviceInfo) {
|
|
26
|
-
super(pInfo, HmIpDeviceType.HmIpHeizung);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
public update(idSplit: string[], state: ioBroker.State, initial: boolean = false): void {
|
|
30
|
-
ServerLogService.writeLog(
|
|
31
|
-
LogLevel.Trace,
|
|
32
|
-
`Heizung "${this.info.customName}" Update: ID: ${idSplit.join('.')} JSON: ${JSON.stringify(state)}`,
|
|
33
|
-
);
|
|
34
|
-
super.update(idSplit, state, initial, true);
|
|
35
|
-
|
|
36
|
-
switch (idSplit[3]) {
|
|
37
|
-
case '1':
|
|
38
|
-
this.updateBaseInformation(idSplit[4], state, initial);
|
|
39
|
-
break;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
private updateBaseInformation(name: string, state: ioBroker.State, initial: boolean) {
|
|
44
|
-
switch (name) {
|
|
45
|
-
case 'ACTUAL_TEMPERATURE':
|
|
46
|
-
this._temperatur = state.val as number;
|
|
47
|
-
break;
|
|
48
|
-
case 'LEVEL':
|
|
49
|
-
this._level = state.val as number;
|
|
50
|
-
break;
|
|
51
|
-
case 'VALVE_STATE':
|
|
52
|
-
this._adaptionState = state.val as number;
|
|
53
|
-
if (this._adaptionState !== 4) {
|
|
54
|
-
ServerLogService.writeLog(
|
|
55
|
-
LogLevel.Alert,
|
|
56
|
-
`Adaption State für Heizung "${this.info.customName}" ungewöhnlich: ${this._adaptionState}`,
|
|
57
|
-
);
|
|
58
|
-
}
|
|
59
|
-
break;
|
|
60
|
-
case 'SET_POINT_TEMPERATURE':
|
|
61
|
-
ServerLogService.writeLog(
|
|
62
|
-
LogLevel.Trace,
|
|
63
|
-
`Heizung "${this.info.customName}" Update Soll-Temperatur JSON: ${JSON.stringify(state)}`,
|
|
64
|
-
);
|
|
65
|
-
this._desiredTemperatur = state.val as number;
|
|
66
|
-
break;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
}
|
|
1
|
+
import { LogLevel } from '../../../models/logLevel';
|
|
2
|
+
import { ServerLogService } from '../../services/log-service';
|
|
3
|
+
import { HmIPDevice } from './hmIpDevice';
|
|
4
|
+
import { HmIpDeviceType } from './hmIpDeviceType';
|
|
5
|
+
import { DeviceInfo } from '../DeviceInfo';
|
|
6
|
+
|
|
7
|
+
export class HmIpHeizung extends HmIPDevice {
|
|
8
|
+
private _temperatur: number = 0;
|
|
9
|
+
private _level: number = 0;
|
|
10
|
+
private _adaptionState: number | undefined;
|
|
11
|
+
private _desiredTemperatur: number = 0;
|
|
12
|
+
|
|
13
|
+
public get desiredTemperatur(): number {
|
|
14
|
+
return this._desiredTemperatur;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
public get iLevel(): number {
|
|
18
|
+
return this._level;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
public get iTemperatur(): number {
|
|
22
|
+
return this._temperatur;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
public constructor(pInfo: DeviceInfo) {
|
|
26
|
+
super(pInfo, HmIpDeviceType.HmIpHeizung);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
public update(idSplit: string[], state: ioBroker.State, initial: boolean = false): void {
|
|
30
|
+
ServerLogService.writeLog(
|
|
31
|
+
LogLevel.Trace,
|
|
32
|
+
`Heizung "${this.info.customName}" Update: ID: ${idSplit.join('.')} JSON: ${JSON.stringify(state)}`,
|
|
33
|
+
);
|
|
34
|
+
super.update(idSplit, state, initial, true);
|
|
35
|
+
|
|
36
|
+
switch (idSplit[3]) {
|
|
37
|
+
case '1':
|
|
38
|
+
this.updateBaseInformation(idSplit[4], state, initial);
|
|
39
|
+
break;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
private updateBaseInformation(name: string, state: ioBroker.State, initial: boolean) {
|
|
44
|
+
switch (name) {
|
|
45
|
+
case 'ACTUAL_TEMPERATURE':
|
|
46
|
+
this._temperatur = state.val as number;
|
|
47
|
+
break;
|
|
48
|
+
case 'LEVEL':
|
|
49
|
+
this._level = state.val as number;
|
|
50
|
+
break;
|
|
51
|
+
case 'VALVE_STATE':
|
|
52
|
+
this._adaptionState = state.val as number;
|
|
53
|
+
if (this._adaptionState !== 4) {
|
|
54
|
+
ServerLogService.writeLog(
|
|
55
|
+
LogLevel.Alert,
|
|
56
|
+
`Adaption State für Heizung "${this.info.customName}" ungewöhnlich: ${this._adaptionState}`,
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
break;
|
|
60
|
+
case 'SET_POINT_TEMPERATURE':
|
|
61
|
+
ServerLogService.writeLog(
|
|
62
|
+
LogLevel.Trace,
|
|
63
|
+
`Heizung "${this.info.customName}" Update Soll-Temperatur JSON: ${JSON.stringify(state)}`,
|
|
64
|
+
);
|
|
65
|
+
this._desiredTemperatur = state.val as number;
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|