hoffmation-base 1.0.15 → 1.0.18-alpha.0
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/lib/index.js +1 -1
- package/lib/models/deviceSettings/acSettings.d.ts +2 -2
- package/lib/models/deviceSettings/acSettings.js +2 -2
- package/lib/models/index.d.ts +1 -1
- package/lib/models/index.js +1 -1
- package/lib/models/temperatureSettings.d.ts +12 -0
- package/lib/models/{temperaturSettings.js → temperatureSettings.js} +14 -14
- package/lib/server/devices/Heizgruppen.d.ts +0 -1
- package/lib/server/devices/Heizgruppen.js +5 -16
- package/lib/server/devices/baseDeviceInterfaces/iHeater.d.ts +4 -4
- package/lib/server/devices/baseDeviceInterfaces/iHumiditySensor.d.ts +1 -0
- package/lib/server/devices/baseDeviceInterfaces/iHumiditySensor.js +2 -0
- package/lib/server/devices/baseDeviceInterfaces/{iTemperaturSensor.d.ts → iTemperatureSensor.d.ts} +3 -3
- package/lib/server/devices/baseDeviceInterfaces/{iTemperaturSensor.js → iTemperatureSensor.js} +0 -0
- package/lib/server/devices/baseDeviceInterfaces/index.d.ts +1 -1
- package/lib/server/devices/baseDeviceInterfaces/index.js +1 -1
- package/lib/server/devices/device-cluster.js +1 -1
- package/lib/server/devices/device-list.d.ts +2 -2
- package/lib/server/devices/device-list.js +6 -6
- package/lib/server/devices/groups/fensterGroup.js +1 -1
- package/lib/server/devices/groups/heatGroup.d.ts +13 -3
- package/lib/server/devices/groups/heatGroup.js +76 -42
- package/lib/server/devices/hmIPDevices/hmIpGriff.js +1 -1
- package/lib/server/devices/hmIPDevices/hmIpHeizgruppe.d.ts +14 -14
- package/lib/server/devices/hmIPDevices/hmIpHeizgruppe.js +31 -31
- package/lib/server/devices/zigbee/BaseDevices/zigbeeHeater.d.ts +7 -7
- package/lib/server/devices/zigbee/BaseDevices/zigbeeHeater.js +10 -10
- package/lib/server/devices/zigbee/zigbeeSonoffTemp.d.ts +6 -6
- package/lib/server/devices/zigbee/zigbeeSonoffTemp.js +12 -12
- package/lib/server/devices/zigbee/zigbeeTuyaValve.d.ts +1 -1
- package/lib/server/devices/zigbee/zigbeeTuyaValve.js +4 -4
- package/lib/server/services/Telegram/telegram-Commands.js +1 -1
- package/lib/server/services/ac/ac-device.d.ts +3 -1
- package/lib/server/services/ac/ac-device.js +3 -2
- package/lib/server/services/ac/acDeviceType.d.ts +4 -0
- package/lib/server/services/ac/acDeviceType.js +8 -0
- package/lib/server/services/ac/daikin-service.d.ts +2 -2
- package/lib/server/services/ac/daikin-service.js +9 -1
- package/lib/server/services/ac/index.d.ts +2 -1
- package/lib/server/services/ac/index.js +4 -2
- package/lib/server/services/ac/own-ac-devices.d.ts +7 -0
- package/lib/server/services/ac/{own-daikin-devices.js → own-ac-devices.js} +4 -4
- package/lib/server/services/ac/own-daikin-device.js +4 -3
- package/lib/server/services/api/api-service.d.ts +3 -3
- package/lib/server/services/api/api-service.js +2 -2
- package/lib/server/services/dbo/mongoPersistance.js +2 -2
- package/lib/server/services/dbo/postgreSqlPersist.js +4 -4
- package/lib/server/services/weather/weather-service.d.ts +1 -1
- package/lib/server/services/weather/weather-service.js +3 -3
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/lib/models/temperaturSettings.d.ts +0 -12
- package/lib/server/services/ac/own-daikin-devices.d.ts +0 -7
package/lib/index.js
CHANGED
|
@@ -72,7 +72,7 @@ class HoffmationBase {
|
|
|
72
72
|
server_1.SonosService.initialize();
|
|
73
73
|
}
|
|
74
74
|
if ((_b = server_1.SettingsService.settings.daikin) === null || _b === void 0 ? void 0 : _b.active) {
|
|
75
|
-
server_1.DaikinService.addOwnDevices(server_1.
|
|
75
|
+
server_1.DaikinService.addOwnDevices(server_1.OwnAcDevices.ownDevices);
|
|
76
76
|
server_1.DaikinService.initialize();
|
|
77
77
|
}
|
|
78
78
|
server_1.Utils.guardedNewThread(() => {
|
|
@@ -5,12 +5,12 @@ export declare class AcSettings extends DeviceSettings {
|
|
|
5
5
|
maximumHours: number;
|
|
6
6
|
maximumMinutes: number;
|
|
7
7
|
/**
|
|
8
|
-
* The
|
|
8
|
+
* The temperature below which cooling should be stopped
|
|
9
9
|
* @type {number}
|
|
10
10
|
*/
|
|
11
11
|
stopCoolingTemperatur: number;
|
|
12
12
|
/**
|
|
13
|
-
* The
|
|
13
|
+
* The temperature above which heating should be stopped
|
|
14
14
|
* @type {number}
|
|
15
15
|
*/
|
|
16
16
|
stopHeatingTemperatur: number;
|
|
@@ -10,12 +10,12 @@ class AcSettings extends deviceSettings_1.DeviceSettings {
|
|
|
10
10
|
this.maximumHours = 24;
|
|
11
11
|
this.maximumMinutes = 0;
|
|
12
12
|
/**
|
|
13
|
-
* The
|
|
13
|
+
* The temperature below which cooling should be stopped
|
|
14
14
|
* @type {number}
|
|
15
15
|
*/
|
|
16
16
|
this.stopCoolingTemperatur = 22;
|
|
17
17
|
/**
|
|
18
|
-
* The
|
|
18
|
+
* The temperature above which heating should be stopped
|
|
19
19
|
* @type {number}
|
|
20
20
|
*/
|
|
21
21
|
this.stopHeatingTemperatur = 21.0;
|
package/lib/models/index.d.ts
CHANGED
|
@@ -7,5 +7,5 @@ export * from './deviceConfig';
|
|
|
7
7
|
export * from './excessEnergyConsumerSettings';
|
|
8
8
|
export * from './iTemperaturDataPoint';
|
|
9
9
|
export * from './logLevel';
|
|
10
|
-
export * from './
|
|
10
|
+
export * from './temperatureSettings';
|
|
11
11
|
export * from './timeCallback';
|
package/lib/models/index.js
CHANGED
|
@@ -23,5 +23,5 @@ __exportStar(require("./deviceConfig"), exports);
|
|
|
23
23
|
__exportStar(require("./excessEnergyConsumerSettings"), exports);
|
|
24
24
|
__exportStar(require("./iTemperaturDataPoint"), exports);
|
|
25
25
|
__exportStar(require("./logLevel"), exports);
|
|
26
|
-
__exportStar(require("./
|
|
26
|
+
__exportStar(require("./temperatureSettings"), exports);
|
|
27
27
|
__exportStar(require("./timeCallback"), exports);
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Daytime } from './daytime';
|
|
2
|
+
export declare class TemperatureSettings {
|
|
3
|
+
start: Daytime;
|
|
4
|
+
end: Daytime;
|
|
5
|
+
temperature: number;
|
|
6
|
+
active: boolean;
|
|
7
|
+
constructor(start: Daytime, end: Daytime, temperature: number, active?: boolean);
|
|
8
|
+
static getActiveSetting(settings: {
|
|
9
|
+
[name: string]: TemperatureSettings;
|
|
10
|
+
}, date: Date): TemperatureSettings | undefined;
|
|
11
|
+
isNowInRange(date: Date): boolean;
|
|
12
|
+
}
|
|
@@ -1,22 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
class
|
|
5
|
-
constructor(start, end,
|
|
3
|
+
exports.TemperatureSettings = void 0;
|
|
4
|
+
class TemperatureSettings {
|
|
5
|
+
constructor(start, end, temperature, active = true) {
|
|
6
6
|
this.start = start;
|
|
7
7
|
this.end = end;
|
|
8
|
-
this.
|
|
8
|
+
this.temperature = temperature;
|
|
9
9
|
this.active = active;
|
|
10
10
|
}
|
|
11
|
-
isNowInRange(date) {
|
|
12
|
-
const now = date.getTime();
|
|
13
|
-
const todayStart = new Date(now).setHours(this.start.hour, this.start.minute);
|
|
14
|
-
if (now < todayStart) {
|
|
15
|
-
return false;
|
|
16
|
-
}
|
|
17
|
-
const todayEnd = new Date(now).setHours(this.end.hour, this.end.minute);
|
|
18
|
-
return now < todayEnd;
|
|
19
|
-
}
|
|
20
11
|
static getActiveSetting(settings, date) {
|
|
21
12
|
for (const name of Object.keys(settings)) {
|
|
22
13
|
if (settings[name] === undefined) {
|
|
@@ -28,5 +19,14 @@ class TemperaturSettings {
|
|
|
28
19
|
}
|
|
29
20
|
}
|
|
30
21
|
}
|
|
22
|
+
isNowInRange(date) {
|
|
23
|
+
const now = date.getTime();
|
|
24
|
+
const todayStart = new Date(now).setHours(this.start.hour, this.start.minute);
|
|
25
|
+
if (now < todayStart) {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
const todayEnd = new Date(now).setHours(this.end.hour, this.end.minute);
|
|
29
|
+
return now < todayEnd;
|
|
30
|
+
}
|
|
31
31
|
}
|
|
32
|
-
exports.
|
|
32
|
+
exports.TemperatureSettings = TemperatureSettings;
|
|
@@ -4,19 +4,8 @@ exports.Heizgruppen = void 0;
|
|
|
4
4
|
const deviceType_1 = require("./deviceType");
|
|
5
5
|
const devices_1 = require("./devices");
|
|
6
6
|
const services_1 = require("../services");
|
|
7
|
+
const groups_1 = require("./groups");
|
|
7
8
|
class Heizgruppen {
|
|
8
|
-
static getInfo() {
|
|
9
|
-
const gruppen = Heizgruppen.getAllGruppen();
|
|
10
|
-
gruppen.sort((a, b) => {
|
|
11
|
-
return a.info.customName.localeCompare(b.info.customName);
|
|
12
|
-
});
|
|
13
|
-
const response = [`Dies sind die aktuellen Informationen der Heizungen:`];
|
|
14
|
-
response.push(`Name\t\tLuft Feuchtigkeit\t\tAktuelle Temperatur\t\tSoll Temperatur\t\tVentilstellung`);
|
|
15
|
-
for (const g of gruppen) {
|
|
16
|
-
response.push(`${g.info.customName}:\t\t${g.humidity}%\t\t${g.sTemperatur}\t\t${g.desiredTemperatur}°C\t\t${g.sLevel}`);
|
|
17
|
-
}
|
|
18
|
-
return response.join('\n');
|
|
19
|
-
}
|
|
20
9
|
static async getSpecificInfo(pText) {
|
|
21
10
|
var _a, _b;
|
|
22
11
|
if (pText === undefined || !pText.includes('"')) {
|
|
@@ -25,7 +14,7 @@ class Heizgruppen {
|
|
|
25
14
|
const searchText = pText.split('"')[1];
|
|
26
15
|
const group = this.getSpecificGroup(searchText);
|
|
27
16
|
if (group === undefined) {
|
|
28
|
-
return `"${searchText}" ist keine gültige Heizgruppe, im Folgenden ist eine Liste aller gültigen Heizgruppen:\n${
|
|
17
|
+
return `"${searchText}" ist keine gültige Heizgruppe, im Folgenden ist eine Liste aller gültigen Heizgruppen:\n${groups_1.HeatGroup.getInfo()}`;
|
|
29
18
|
}
|
|
30
19
|
const results = (_b = (await ((_a = services_1.Utils.dbo) === null || _a === void 0 ? void 0 : _a.readTemperaturDataPoint(group, 20)))) !== null && _b !== void 0 ? _b : [];
|
|
31
20
|
const response = [`Dies sind die letzten 20 Messpunkte der Heizgruppe:`];
|
|
@@ -41,13 +30,13 @@ class Heizgruppen {
|
|
|
41
30
|
response.push(`Raumname\t\tIst-Temperatur\t\tGerät`);
|
|
42
31
|
for (const g of groups) {
|
|
43
32
|
const heizungen = g.getBelongingHeizungen();
|
|
44
|
-
const tempProblem = [`${g.info.room}\t\t${g.
|
|
33
|
+
const tempProblem = [`${g.info.room}\t\t${g.iTemperature}°C\t\t${g.info.customName}`];
|
|
45
34
|
let print = false;
|
|
46
35
|
for (const h of heizungen) {
|
|
47
|
-
if (h.
|
|
36
|
+
if (h.iTemperature !== g.iTemperature) {
|
|
48
37
|
print = true;
|
|
49
38
|
}
|
|
50
|
-
tempProblem.push(`${h.info.room}\t\t${h.
|
|
39
|
+
tempProblem.push(`${h.info.room}\t\t${h.iTemperature}°C\t\t${h.info.customName}`);
|
|
51
40
|
}
|
|
52
41
|
if (print) {
|
|
53
42
|
response.push(tempProblem.join('\n'));
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { HeaterSettings,
|
|
1
|
+
import { HeaterSettings, TemperatureSettings } from '../../../models';
|
|
2
2
|
import { IBaseDevice } from './iBaseDevice';
|
|
3
3
|
export interface iHeater extends IBaseDevice {
|
|
4
4
|
settings: HeaterSettings;
|
|
5
|
-
readonly
|
|
5
|
+
readonly desiredTemperature: number;
|
|
6
6
|
readonly humidity: number;
|
|
7
7
|
readonly iLevel: number;
|
|
8
|
-
readonly
|
|
8
|
+
readonly iTemperature: number;
|
|
9
9
|
set seasonTurnOff(value: boolean);
|
|
10
10
|
deleteAutomaticPoint(name: string): void;
|
|
11
|
-
setAutomaticPoint(name: string, setting:
|
|
11
|
+
setAutomaticPoint(name: string, setting: TemperatureSettings): void;
|
|
12
12
|
stopAutomaticCheck(): void;
|
|
13
13
|
checkAutomaticChange(): void;
|
|
14
14
|
onTemperaturChange(newTemperatur: number): void;
|
package/lib/server/devices/baseDeviceInterfaces/{iTemperaturSensor.d.ts → iTemperatureSensor.d.ts}
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { IBaseDevice } from './iBaseDevice';
|
|
2
2
|
export declare const UNDEFINED_TEMP_VALUE = -99;
|
|
3
|
-
export interface
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
export interface iTemperatureSensor extends IBaseDevice {
|
|
4
|
+
iTemperature: number;
|
|
5
|
+
sTemperature: string;
|
|
6
6
|
addTempChangeCallback(pCallback: (pValue: number) => void): void;
|
|
7
7
|
}
|
package/lib/server/devices/baseDeviceInterfaces/{iTemperaturSensor.js → iTemperatureSensor.js}
RENAMED
|
File without changes
|
|
@@ -24,5 +24,5 @@ __exportStar(require("./iIlluminationSensor"), exports);
|
|
|
24
24
|
__exportStar(require("./iLamp"), exports);
|
|
25
25
|
__exportStar(require("./iMotionSensor"), exports);
|
|
26
26
|
__exportStar(require("./iShutter"), exports);
|
|
27
|
-
__exportStar(require("./
|
|
27
|
+
__exportStar(require("./iTemperatureSensor"), exports);
|
|
28
28
|
__exportStar(require("./iVibrationSensor"), exports);
|
|
@@ -86,7 +86,7 @@ class DeviceCluster {
|
|
|
86
86
|
clusterTypes.push(device_cluster_type_1.DeviceClusterType.Outlets);
|
|
87
87
|
break;
|
|
88
88
|
case deviceType_1.DeviceType.ZigbeeIlluActuator: // Dependent on use case
|
|
89
|
-
case deviceType_1.DeviceType.HmIpTherm: // Humidity and
|
|
89
|
+
case deviceType_1.DeviceType.HmIpTherm: // Humidity and temperature not yet implemented
|
|
90
90
|
case deviceType_1.DeviceType.HmIpHeizung: // Setting/Controlling via HM-Ip Heizgruppe
|
|
91
91
|
case deviceType_1.DeviceType.unknown:
|
|
92
92
|
case deviceType_1.DeviceType.Wled: // TODO: Implement
|
|
@@ -3,8 +3,8 @@ import { IBaseDevice } from './baseDeviceInterfaces';
|
|
|
3
3
|
export declare class DeviceList {
|
|
4
4
|
private _ids;
|
|
5
5
|
private readonly _isSonos;
|
|
6
|
-
private readonly
|
|
7
|
-
constructor(_ids?: string[], _isSonos?: boolean,
|
|
6
|
+
private readonly _isAc;
|
|
7
|
+
constructor(_ids?: string[], _isSonos?: boolean, _isAc?: boolean);
|
|
8
8
|
get ids(): string[];
|
|
9
9
|
getDevices(): Array<IBaseDevice | OwnSonosDevice | AcDevice>;
|
|
10
10
|
}
|
|
@@ -3,10 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.DeviceList = void 0;
|
|
4
4
|
const services_1 = require("../services");
|
|
5
5
|
class DeviceList {
|
|
6
|
-
constructor(_ids = [], _isSonos = false,
|
|
6
|
+
constructor(_ids = [], _isSonos = false, _isAc = false) {
|
|
7
7
|
this._ids = _ids;
|
|
8
8
|
this._isSonos = _isSonos;
|
|
9
|
-
this.
|
|
9
|
+
this._isAc = _isAc;
|
|
10
10
|
// Empty
|
|
11
11
|
}
|
|
12
12
|
get ids() {
|
|
@@ -21,10 +21,10 @@ class DeviceList {
|
|
|
21
21
|
result.push(services_1.OwnSonosDevices.ownDevices[dID]);
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
|
-
else if (this.
|
|
25
|
-
const
|
|
26
|
-
if (
|
|
27
|
-
result.push(services_1.
|
|
24
|
+
else if (this._isAc) {
|
|
25
|
+
const acDevice = services_1.OwnAcDevices.ownDevices[dID];
|
|
26
|
+
if (acDevice !== undefined) {
|
|
27
|
+
result.push(services_1.OwnAcDevices.ownDevices[dID]);
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
else {
|
|
@@ -84,7 +84,7 @@ class FensterGroup extends base_group_1.BaseGroup {
|
|
|
84
84
|
}
|
|
85
85
|
let desiredPos = f.desiredPosition;
|
|
86
86
|
if (desiredPos > 0) {
|
|
87
|
-
services_1.WeatherService.weatherRolloPosition(desiredPos, (_b = (_a = room.HeatGroup) === null || _a === void 0 ? void 0 : _a.desiredTemp) !== null && _b !== void 0 ? _b : -99, (_d = (_c = room.HeatGroup) === null || _c === void 0 ? void 0 : _c.
|
|
87
|
+
services_1.WeatherService.weatherRolloPosition(desiredPos, (_b = (_a = room.HeatGroup) === null || _a === void 0 ? void 0 : _a.desiredTemp) !== null && _b !== void 0 ? _b : -99, (_d = (_c = room.HeatGroup) === null || _c === void 0 ? void 0 : _c.temperature) !== null && _d !== void 0 ? _d : -99);
|
|
88
88
|
}
|
|
89
89
|
if (f.griffeInPosition(models_2.FensterPosition.offen) > 0 && desiredPos < 100) {
|
|
90
90
|
return;
|
|
@@ -1,12 +1,22 @@
|
|
|
1
1
|
import { BaseGroup } from './base-group';
|
|
2
|
-
import { iHeater, iHumiditySensor,
|
|
2
|
+
import { iHeater, iHumiditySensor, iTemperatureSensor } from '../baseDeviceInterfaces';
|
|
3
3
|
import { AcDevice } from '../../services';
|
|
4
4
|
export declare class HeatGroup extends BaseGroup {
|
|
5
5
|
constructor(roomName: string, heaterIds: string[], tempSensorIds: string[], humiditySensorIds: string[], acIds: string[]);
|
|
6
|
-
|
|
6
|
+
/**
|
|
7
|
+
* The current measured temperature of the room in Celsius
|
|
8
|
+
* @returns {number}
|
|
9
|
+
*/
|
|
10
|
+
get humidity(): number;
|
|
11
|
+
/**
|
|
12
|
+
* The current measured temperature of the room in Celsius
|
|
13
|
+
* @returns {number}
|
|
14
|
+
*/
|
|
15
|
+
get temperature(): number;
|
|
7
16
|
get desiredTemp(): number;
|
|
17
|
+
static getInfo(): string;
|
|
8
18
|
getHeater(): iHeater[];
|
|
9
|
-
getTempSensors():
|
|
19
|
+
getTempSensors(): iTemperatureSensor[];
|
|
10
20
|
getHumiditySensors(): iHumiditySensor[];
|
|
11
21
|
getOwnAcDevices(): AcDevice[];
|
|
12
22
|
initialize(): void;
|
|
@@ -6,6 +6,7 @@ const group_type_1 = require("./group-type");
|
|
|
6
6
|
const device_cluster_type_1 = require("../device-cluster-type");
|
|
7
7
|
const device_list_1 = require("../device-list");
|
|
8
8
|
const baseDeviceInterfaces_1 = require("../baseDeviceInterfaces");
|
|
9
|
+
const services_1 = require("../../services");
|
|
9
10
|
const models_1 = require("../../../models");
|
|
10
11
|
class HeatGroup extends base_group_1.BaseGroup {
|
|
11
12
|
constructor(roomName, heaterIds, tempSensorIds, humiditySensorIds, acIds) {
|
|
@@ -13,18 +14,64 @@ class HeatGroup extends base_group_1.BaseGroup {
|
|
|
13
14
|
this.deviceCluster.deviceMap.set(device_cluster_type_1.DeviceClusterType.Heater, new device_list_1.DeviceList(heaterIds));
|
|
14
15
|
this.deviceCluster.deviceMap.set(device_cluster_type_1.DeviceClusterType.TemperaturSensor, new device_list_1.DeviceList(tempSensorIds));
|
|
15
16
|
this.deviceCluster.deviceMap.set(device_cluster_type_1.DeviceClusterType.HumiditySensor, new device_list_1.DeviceList(humiditySensorIds));
|
|
16
|
-
this.deviceCluster.deviceMap.set(device_cluster_type_1.DeviceClusterType.Ac, new device_list_1.DeviceList(acIds));
|
|
17
|
+
this.deviceCluster.deviceMap.set(device_cluster_type_1.DeviceClusterType.Ac, new device_list_1.DeviceList(acIds, false, true));
|
|
17
18
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
19
|
+
/**
|
|
20
|
+
* The current measured temperature of the room in Celsius
|
|
21
|
+
* @returns {number}
|
|
22
|
+
*/
|
|
23
|
+
get humidity() {
|
|
24
|
+
let humidity = baseDeviceInterfaces_1.UNDEFINED_HUMIDITY_VALUE;
|
|
25
|
+
let count = 0;
|
|
26
|
+
this.getHumiditySensors().forEach((sensor) => {
|
|
27
|
+
const sensorValue = sensor.humidity;
|
|
28
|
+
if (sensorValue === baseDeviceInterfaces_1.UNDEFINED_HUMIDITY_VALUE) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
if (count === 0) {
|
|
32
|
+
count = 1;
|
|
33
|
+
humidity = sensorValue;
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
humidity = (humidity * count + sensorValue) / ++count;
|
|
37
|
+
});
|
|
38
|
+
return humidity;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* The current measured temperature of the room in Celsius
|
|
42
|
+
* @returns {number}
|
|
43
|
+
*/
|
|
44
|
+
get temperature() {
|
|
45
|
+
let temp = baseDeviceInterfaces_1.UNDEFINED_TEMP_VALUE;
|
|
46
|
+
let count = 0;
|
|
47
|
+
this.getTempSensors().forEach((sensor) => {
|
|
48
|
+
const sensorValue = sensor.iTemperature;
|
|
49
|
+
if (sensorValue === baseDeviceInterfaces_1.UNDEFINED_TEMP_VALUE) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
if (count === 0) {
|
|
53
|
+
count = 1;
|
|
54
|
+
temp = sensorValue;
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
temp = (temp * count + sensorValue) / ++count;
|
|
58
|
+
});
|
|
59
|
+
this.getHeater().forEach((heaterAsSensor) => {
|
|
60
|
+
if (!heaterAsSensor.settings.useOwnTemperatur) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
const sensorValue = heaterAsSensor.iTemperature;
|
|
64
|
+
if (sensorValue === baseDeviceInterfaces_1.UNDEFINED_TEMP_VALUE) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
if (count === 0) {
|
|
68
|
+
count = 1;
|
|
69
|
+
temp = sensorValue;
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
temp = (temp * count + sensorValue) / ++count;
|
|
73
|
+
});
|
|
74
|
+
return temp;
|
|
28
75
|
}
|
|
29
76
|
get desiredTemp() {
|
|
30
77
|
if (this.getHeater().length === 0) {
|
|
@@ -32,10 +79,25 @@ class HeatGroup extends base_group_1.BaseGroup {
|
|
|
32
79
|
}
|
|
33
80
|
let value = 0;
|
|
34
81
|
for (const h of this.getHeater()) {
|
|
35
|
-
value += h.
|
|
82
|
+
value += h.desiredTemperature;
|
|
36
83
|
}
|
|
37
84
|
return Math.round((value / this.getHeater().length) * 10) / 10;
|
|
38
85
|
}
|
|
86
|
+
static getInfo() {
|
|
87
|
+
var _a, _b, _c;
|
|
88
|
+
const rooms = Array.from(services_1.API.getRooms().values()).filter((r) => {
|
|
89
|
+
return r.HeatGroup !== undefined;
|
|
90
|
+
});
|
|
91
|
+
rooms.sort((a, b) => {
|
|
92
|
+
return a.roomName.localeCompare(b.roomName);
|
|
93
|
+
});
|
|
94
|
+
const response = [`Dies sind die aktuellen Informationen der Heizungen:`];
|
|
95
|
+
response.push(`Name\t\tLuft Feuchtigkeit\t\tAktuelle Temperatur\t\tSoll Temperatur\t\tVentilstellung`);
|
|
96
|
+
for (const r of rooms) {
|
|
97
|
+
response.push(`${r.roomName}:\t\t${(_a = r.HeatGroup) === null || _a === void 0 ? void 0 : _a.humidity}%\t\t${(_b = r.HeatGroup) === null || _b === void 0 ? void 0 : _b.temperature}°C\t\t${(_c = r.HeatGroup) === null || _c === void 0 ? void 0 : _c.desiredTemp}°C`);
|
|
98
|
+
}
|
|
99
|
+
return response.join('\n');
|
|
100
|
+
}
|
|
39
101
|
getHeater() {
|
|
40
102
|
return this.deviceCluster.getDevicesByType(device_cluster_type_1.DeviceClusterType.Heater);
|
|
41
103
|
}
|
|
@@ -79,36 +141,8 @@ class HeatGroup extends base_group_1.BaseGroup {
|
|
|
79
141
|
}
|
|
80
142
|
}
|
|
81
143
|
recalcRoomTemperatur() {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
this.getTempSensors().forEach((sensor) => {
|
|
85
|
-
const sensorValue = sensor.iTemperatur;
|
|
86
|
-
if (sensorValue === baseDeviceInterfaces_1.UNDEFINED_TEMP_VALUE) {
|
|
87
|
-
return;
|
|
88
|
-
}
|
|
89
|
-
if (count === 0) {
|
|
90
|
-
count = 1;
|
|
91
|
-
temp = sensorValue;
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
temp = (temp * count + sensorValue) / ++count;
|
|
95
|
-
});
|
|
96
|
-
this.getHeater().forEach((heaterAsSensor) => {
|
|
97
|
-
if (!heaterAsSensor.settings.useOwnTemperatur) {
|
|
98
|
-
return;
|
|
99
|
-
}
|
|
100
|
-
const sensorValue = heaterAsSensor.iTemperatur;
|
|
101
|
-
if (sensorValue === baseDeviceInterfaces_1.UNDEFINED_TEMP_VALUE) {
|
|
102
|
-
return;
|
|
103
|
-
}
|
|
104
|
-
if (count === 0) {
|
|
105
|
-
count = 1;
|
|
106
|
-
temp = sensorValue;
|
|
107
|
-
return;
|
|
108
|
-
}
|
|
109
|
-
temp = (temp * count + sensorValue) / ++count;
|
|
110
|
-
});
|
|
111
|
-
if (temp === baseDeviceInterfaces_1.UNDEFINED_TEMP_VALUE) {
|
|
144
|
+
const temp = this.temperature;
|
|
145
|
+
if (temp == baseDeviceInterfaces_1.UNDEFINED_TEMP_VALUE) {
|
|
112
146
|
return;
|
|
113
147
|
}
|
|
114
148
|
this.getHeater().forEach((heater) => {
|
|
@@ -75,7 +75,7 @@ class HmIpGriff extends hmIpDevice_1.HmIPDevice {
|
|
|
75
75
|
const heatgroup = (_a = this._fenster) === null || _a === void 0 ? void 0 : _a.getRoom().HeatGroup;
|
|
76
76
|
if (heatgroup !== undefined) {
|
|
77
77
|
const desiredTemp = heatgroup.desiredTemp;
|
|
78
|
-
const currentTemp = heatgroup.
|
|
78
|
+
const currentTemp = heatgroup.temperature;
|
|
79
79
|
const outSideTemp = services_1.WeatherService.getCurrentTemp();
|
|
80
80
|
// Check if any of these values are unavailable
|
|
81
81
|
if (desiredTemp > -99 && currentTemp > -99 && outSideTemp > -99) {
|
|
@@ -1,40 +1,40 @@
|
|
|
1
1
|
/// <reference types="iobroker" />
|
|
2
2
|
import { HmIPDevice } from './hmIpDevice';
|
|
3
3
|
import { DeviceInfo } from '../DeviceInfo';
|
|
4
|
-
import { HeaterSettings,
|
|
5
|
-
import { iHeater, iHumiditySensor,
|
|
6
|
-
export declare class HmIpHeizgruppe extends HmIPDevice implements
|
|
4
|
+
import { HeaterSettings, TemperatureSettings } from '../../../models';
|
|
5
|
+
import { iHeater, iHumiditySensor, iTemperatureSensor } from '../baseDeviceInterfaces';
|
|
6
|
+
export declare class HmIpHeizgruppe extends HmIPDevice implements iTemperatureSensor, iHumiditySensor, iHeater {
|
|
7
7
|
settings: HeaterSettings;
|
|
8
8
|
private _iAutomaticInterval;
|
|
9
9
|
private _initialSeasonCheckDone;
|
|
10
10
|
private _level;
|
|
11
|
-
private
|
|
11
|
+
private _setPointTemperatureID;
|
|
12
12
|
private _automaticPoints;
|
|
13
13
|
private _humidityCallbacks;
|
|
14
|
-
private
|
|
14
|
+
private _temperatureCallbacks;
|
|
15
15
|
constructor(pInfo: DeviceInfo);
|
|
16
16
|
protected _seasonTurnOff: boolean;
|
|
17
17
|
get seasonTurnOff(): boolean;
|
|
18
18
|
set seasonTurnOff(value: boolean);
|
|
19
|
-
private
|
|
20
|
-
get
|
|
21
|
-
private set
|
|
19
|
+
private _temperature;
|
|
20
|
+
get temperature(): number;
|
|
21
|
+
private set temperature(value);
|
|
22
22
|
private _humidity;
|
|
23
23
|
get humidity(): number;
|
|
24
24
|
private set humidity(value);
|
|
25
|
-
private
|
|
26
|
-
get
|
|
27
|
-
set
|
|
25
|
+
private _desiredTemperature;
|
|
26
|
+
get desiredTemperature(): number;
|
|
27
|
+
set desiredTemperature(val: number);
|
|
28
28
|
get sLevel(): string;
|
|
29
29
|
get iLevel(): number;
|
|
30
|
-
get
|
|
31
|
-
get
|
|
30
|
+
get sTemperature(): string;
|
|
31
|
+
get iTemperature(): number;
|
|
32
32
|
private _roomTemperatur;
|
|
33
33
|
private set roomTemperatur(value);
|
|
34
34
|
addHumidityCallback(pCallback: (pValue: number) => void): void;
|
|
35
35
|
deleteAutomaticPoint(name: string): void;
|
|
36
36
|
getBelongingHeizungen(): iHeater[];
|
|
37
|
-
setAutomaticPoint(name: string, setting:
|
|
37
|
+
setAutomaticPoint(name: string, setting: TemperatureSettings): void;
|
|
38
38
|
update(idSplit: string[], state: ioBroker.State, initial?: boolean): void;
|
|
39
39
|
stopAutomaticCheck(): void;
|
|
40
40
|
checkAutomaticChange(): void;
|