hoffmation-base 1.0.16 → 1.0.17
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/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.js +3 -3
- package/lib/server/devices/baseDeviceInterfaces/iHeater.d.ts +4 -4
- 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/groups/heatGroup.d.ts +2 -2
- package/lib/server/devices/groups/heatGroup.js +4 -4
- package/lib/server/devices/hmIPDevices/hmIpHeizgruppe.d.ts +14 -14
- package/lib/server/devices/hmIPDevices/hmIpHeizgruppe.js +30 -30
- 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 +11 -11
- package/lib/server/devices/zigbee/zigbeeTuyaValve.d.ts +1 -1
- package/lib/server/devices/zigbee/zigbeeTuyaValve.js +4 -4
- 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 +1 -1
- package/lib/models/temperaturSettings.d.ts +0 -12
|
@@ -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;
|
|
@@ -30,13 +30,13 @@ class Heizgruppen {
|
|
|
30
30
|
response.push(`Raumname\t\tIst-Temperatur\t\tGerät`);
|
|
31
31
|
for (const g of groups) {
|
|
32
32
|
const heizungen = g.getBelongingHeizungen();
|
|
33
|
-
const tempProblem = [`${g.info.room}\t\t${g.
|
|
33
|
+
const tempProblem = [`${g.info.room}\t\t${g.iTemperature}°C\t\t${g.info.customName}`];
|
|
34
34
|
let print = false;
|
|
35
35
|
for (const h of heizungen) {
|
|
36
|
-
if (h.
|
|
36
|
+
if (h.iTemperature !== g.iTemperature) {
|
|
37
37
|
print = true;
|
|
38
38
|
}
|
|
39
|
-
tempProblem.push(`${h.info.room}\t\t${h.
|
|
39
|
+
tempProblem.push(`${h.info.room}\t\t${h.iTemperature}°C\t\t${h.info.customName}`);
|
|
40
40
|
}
|
|
41
41
|
if (print) {
|
|
42
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
|
|
@@ -1,5 +1,5 @@
|
|
|
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[]);
|
|
@@ -16,7 +16,7 @@ export declare class HeatGroup extends BaseGroup {
|
|
|
16
16
|
get desiredTemp(): number;
|
|
17
17
|
static getInfo(): string;
|
|
18
18
|
getHeater(): iHeater[];
|
|
19
|
-
getTempSensors():
|
|
19
|
+
getTempSensors(): iTemperatureSensor[];
|
|
20
20
|
getHumiditySensors(): iHumiditySensor[];
|
|
21
21
|
getOwnAcDevices(): AcDevice[];
|
|
22
22
|
initialize(): void;
|
|
@@ -45,7 +45,7 @@ class HeatGroup extends base_group_1.BaseGroup {
|
|
|
45
45
|
let temp = baseDeviceInterfaces_1.UNDEFINED_TEMP_VALUE;
|
|
46
46
|
let count = 0;
|
|
47
47
|
this.getTempSensors().forEach((sensor) => {
|
|
48
|
-
const sensorValue = sensor.
|
|
48
|
+
const sensorValue = sensor.iTemperature;
|
|
49
49
|
if (sensorValue === baseDeviceInterfaces_1.UNDEFINED_TEMP_VALUE) {
|
|
50
50
|
return;
|
|
51
51
|
}
|
|
@@ -60,7 +60,7 @@ class HeatGroup extends base_group_1.BaseGroup {
|
|
|
60
60
|
if (!heaterAsSensor.settings.useOwnTemperatur) {
|
|
61
61
|
return;
|
|
62
62
|
}
|
|
63
|
-
const sensorValue = heaterAsSensor.
|
|
63
|
+
const sensorValue = heaterAsSensor.iTemperature;
|
|
64
64
|
if (sensorValue === baseDeviceInterfaces_1.UNDEFINED_TEMP_VALUE) {
|
|
65
65
|
return;
|
|
66
66
|
}
|
|
@@ -79,7 +79,7 @@ class HeatGroup extends base_group_1.BaseGroup {
|
|
|
79
79
|
}
|
|
80
80
|
let value = 0;
|
|
81
81
|
for (const h of this.getHeater()) {
|
|
82
|
-
value += h.
|
|
82
|
+
value += h.desiredTemperature;
|
|
83
83
|
}
|
|
84
84
|
return Math.round((value / this.getHeater().length) * 10) / 10;
|
|
85
85
|
}
|
|
@@ -94,7 +94,7 @@ class HeatGroup extends base_group_1.BaseGroup {
|
|
|
94
94
|
const response = [`Dies sind die aktuellen Informationen der Heizungen:`];
|
|
95
95
|
response.push(`Name\t\tLuft Feuchtigkeit\t\tAktuelle Temperatur\t\tSoll Temperatur\t\tVentilstellung`);
|
|
96
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}\t\t${(_c = r.HeatGroup) === null || _c === void 0 ? void 0 : _c.desiredTemp}°C`);
|
|
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
98
|
}
|
|
99
99
|
return response.join('\n');
|
|
100
100
|
}
|
|
@@ -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;
|
|
@@ -13,16 +13,16 @@ class HmIpHeizgruppe extends hmIpDevice_1.HmIPDevice {
|
|
|
13
13
|
this.settings = new models_1.HeaterSettings();
|
|
14
14
|
this._initialSeasonCheckDone = false;
|
|
15
15
|
this._level = 0;
|
|
16
|
-
this.
|
|
16
|
+
this._setPointTemperatureID = '';
|
|
17
17
|
this._automaticPoints = {};
|
|
18
18
|
this._humidityCallbacks = [];
|
|
19
|
-
this.
|
|
19
|
+
this._temperatureCallbacks = [];
|
|
20
20
|
this._seasonTurnOff = false;
|
|
21
|
-
this.
|
|
21
|
+
this._temperature = baseDeviceInterfaces_1.UNDEFINED_TEMP_VALUE;
|
|
22
22
|
this._humidity = baseDeviceInterfaces_1.UNDEFINED_HUMIDITY_VALUE;
|
|
23
|
-
this.
|
|
23
|
+
this._desiredTemperature = 0;
|
|
24
24
|
this._roomTemperatur = baseDeviceInterfaces_1.UNDEFINED_TEMP_VALUE;
|
|
25
|
-
this.
|
|
25
|
+
this._setPointTemperatureID = `${this.info.fullID}.1.SET_POINT_TEMPERATURE`;
|
|
26
26
|
this._iAutomaticInterval = services_1.Utils.guardedInterval(this.checkAutomaticChange, 300000, this); // Alle 5 Minuten prüfen
|
|
27
27
|
services_1.TimeCallbackService.addCallback(new models_1.TimeCallback(`${this.info.fullID} Season Check`, models_1.TimeCallbackType.TimeOfDay, () => {
|
|
28
28
|
this.checkSeasonTurnOff();
|
|
@@ -34,21 +34,21 @@ class HmIpHeizgruppe extends hmIpDevice_1.HmIPDevice {
|
|
|
34
34
|
set seasonTurnOff(value) {
|
|
35
35
|
this._seasonTurnOff = value;
|
|
36
36
|
if (value) {
|
|
37
|
-
this.setState(this.
|
|
37
|
+
this.setState(this._setPointTemperatureID, 5);
|
|
38
38
|
}
|
|
39
39
|
else {
|
|
40
|
-
this.setState(this.
|
|
40
|
+
this.setState(this._setPointTemperatureID, this.desiredTemperature);
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
|
-
get
|
|
43
|
+
get temperature() {
|
|
44
44
|
if (this.settings.useOwnTemperatur) {
|
|
45
|
-
return this.
|
|
45
|
+
return this._temperature;
|
|
46
46
|
}
|
|
47
47
|
return this._roomTemperatur;
|
|
48
48
|
}
|
|
49
|
-
set
|
|
50
|
-
this.
|
|
51
|
-
for (const cb of this.
|
|
49
|
+
set temperature(val) {
|
|
50
|
+
this._temperature = val;
|
|
51
|
+
for (const cb of this._temperatureCallbacks) {
|
|
52
52
|
cb(val);
|
|
53
53
|
}
|
|
54
54
|
}
|
|
@@ -61,11 +61,11 @@ class HmIpHeizgruppe extends hmIpDevice_1.HmIPDevice {
|
|
|
61
61
|
cb(val);
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
|
-
get
|
|
65
|
-
return this.
|
|
64
|
+
get desiredTemperature() {
|
|
65
|
+
return this._desiredTemperature;
|
|
66
66
|
}
|
|
67
|
-
set
|
|
68
|
-
this.setState(this.
|
|
67
|
+
set desiredTemperature(val) {
|
|
68
|
+
this.setState(this._setPointTemperatureID, this.seasonTurnOff ? 5 : val, () => {
|
|
69
69
|
this.log(models_1.LogLevel.Info, `Changed temperature of to "${val}.`);
|
|
70
70
|
}, (err) => {
|
|
71
71
|
this.log(models_1.LogLevel.Error, `Temperaturänderung ergab Fehler ${err}.`);
|
|
@@ -77,11 +77,11 @@ class HmIpHeizgruppe extends hmIpDevice_1.HmIPDevice {
|
|
|
77
77
|
get iLevel() {
|
|
78
78
|
return this._level;
|
|
79
79
|
}
|
|
80
|
-
get
|
|
81
|
-
return `${this.
|
|
80
|
+
get sTemperature() {
|
|
81
|
+
return `${this.temperature}°C`;
|
|
82
82
|
}
|
|
83
|
-
get
|
|
84
|
-
return this.
|
|
83
|
+
get iTemperature() {
|
|
84
|
+
return this.temperature;
|
|
85
85
|
}
|
|
86
86
|
set roomTemperatur(value) {
|
|
87
87
|
this._roomTemperatur = value;
|
|
@@ -129,22 +129,22 @@ class HmIpHeizgruppe extends hmIpDevice_1.HmIPDevice {
|
|
|
129
129
|
(_a = services_1.Utils.dbo) === null || _a === void 0 ? void 0 : _a.addTemperaturDataPoint(this);
|
|
130
130
|
return;
|
|
131
131
|
}
|
|
132
|
-
const setting = models_1.
|
|
132
|
+
const setting = models_1.TemperatureSettings.getActiveSetting(this._automaticPoints, new Date());
|
|
133
133
|
if (setting === undefined) {
|
|
134
134
|
this.log(models_1.LogLevel.Warn, `Undefined Heating Timestamp.`);
|
|
135
|
-
this.
|
|
135
|
+
this.desiredTemperature = this.settings.automaticFallBackTemperatur;
|
|
136
136
|
return;
|
|
137
137
|
}
|
|
138
|
-
if (this.
|
|
139
|
-
this.log(models_1.LogLevel.Debug, `Automatische Temperaturanpassung für ${this.info.customName} auf ${setting.
|
|
140
|
-
this.
|
|
138
|
+
if (this._desiredTemperature !== setting.temperature) {
|
|
139
|
+
this.log(models_1.LogLevel.Debug, `Automatische Temperaturanpassung für ${this.info.customName} auf ${setting.temperature}°C`);
|
|
140
|
+
this.desiredTemperature = (_b = setting.temperature) !== null && _b !== void 0 ? _b : this.settings.automaticFallBackTemperatur;
|
|
141
141
|
}
|
|
142
142
|
(_c = services_1.Utils.dbo) === null || _c === void 0 ? void 0 : _c.addTemperaturDataPoint(this);
|
|
143
143
|
}
|
|
144
144
|
addTempChangeCallback(pCallback) {
|
|
145
|
-
this.
|
|
146
|
-
if (this.
|
|
147
|
-
pCallback(this.
|
|
145
|
+
this._temperatureCallbacks.push(pCallback);
|
|
146
|
+
if (this._temperature > baseDeviceInterfaces_1.UNDEFINED_TEMP_VALUE) {
|
|
147
|
+
pCallback(this._temperature);
|
|
148
148
|
}
|
|
149
149
|
}
|
|
150
150
|
onTemperaturChange(newTemperatur) {
|
|
@@ -153,7 +153,7 @@ class HmIpHeizgruppe extends hmIpDevice_1.HmIPDevice {
|
|
|
153
153
|
updateBaseInformation(name, state) {
|
|
154
154
|
switch (name) {
|
|
155
155
|
case 'ACTUAL_TEMPERATURE':
|
|
156
|
-
this.
|
|
156
|
+
this.temperature = state.val;
|
|
157
157
|
break;
|
|
158
158
|
case 'LEVEL':
|
|
159
159
|
this._level = state.val;
|
|
@@ -163,7 +163,7 @@ class HmIpHeizgruppe extends hmIpDevice_1.HmIPDevice {
|
|
|
163
163
|
break;
|
|
164
164
|
case 'SET_POINT_TEMPERATURE':
|
|
165
165
|
this.log(models_1.LogLevel.DeepTrace, `Heizgruppe Update Soll-Temperatur JSON: ${JSON.stringify(state)}`);
|
|
166
|
-
this.
|
|
166
|
+
this._desiredTemperature = state.val;
|
|
167
167
|
break;
|
|
168
168
|
}
|
|
169
169
|
}
|
|
@@ -1,37 +1,37 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { ZigbeeDevice } from './zigbeeDevice';
|
|
3
3
|
import { iHeater } from '../../baseDeviceInterfaces';
|
|
4
|
-
import { HeaterSettings,
|
|
4
|
+
import { HeaterSettings, TemperatureSettings } from '../../../../models';
|
|
5
5
|
import { DeviceInfo } from '../../DeviceInfo';
|
|
6
6
|
import { DeviceType } from '../../deviceType';
|
|
7
7
|
export declare class ZigbeeHeater extends ZigbeeDevice implements iHeater {
|
|
8
8
|
settings: HeaterSettings;
|
|
9
9
|
protected _automaticPoints: {
|
|
10
|
-
[name: string]:
|
|
10
|
+
[name: string]: TemperatureSettings;
|
|
11
11
|
};
|
|
12
12
|
protected _iAutomaticInterval: NodeJS.Timeout | undefined;
|
|
13
13
|
protected _initialSeasonCheckDone: boolean;
|
|
14
14
|
protected _level: number;
|
|
15
15
|
protected _setPointTemperaturID: string;
|
|
16
16
|
protected _temperatur: number;
|
|
17
|
+
protected _desiredTemperatur: number;
|
|
17
18
|
constructor(pInfo: DeviceInfo, pType: DeviceType);
|
|
18
19
|
protected _seasonTurnOff: boolean;
|
|
19
20
|
get seasonTurnOff(): boolean;
|
|
20
21
|
set seasonTurnOff(value: boolean);
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
set desiredTemperatur(val: number);
|
|
22
|
+
get desiredTemperature(): number;
|
|
23
|
+
set desiredTemperature(val: number);
|
|
24
24
|
protected _humidity: number;
|
|
25
25
|
get humidity(): number;
|
|
26
26
|
get sLevel(): string;
|
|
27
27
|
get iLevel(): number;
|
|
28
28
|
get sTemperatur(): string;
|
|
29
|
-
get
|
|
29
|
+
get iTemperature(): number;
|
|
30
30
|
protected _roomTemperatur: number;
|
|
31
31
|
protected set roomTemperatur(val: number);
|
|
32
32
|
checkAutomaticChange(): void;
|
|
33
33
|
deleteAutomaticPoint(name: string): void;
|
|
34
|
-
setAutomaticPoint(name: string, setting:
|
|
34
|
+
setAutomaticPoint(name: string, setting: TemperatureSettings): void;
|
|
35
35
|
stopAutomaticCheck(): void;
|
|
36
36
|
onTemperaturChange(newTemperatur: number): void;
|
|
37
37
|
private checkSeasonTurnOff;
|
|
@@ -14,8 +14,8 @@ class ZigbeeHeater extends zigbeeDevice_1.ZigbeeDevice {
|
|
|
14
14
|
this._level = 0;
|
|
15
15
|
this._setPointTemperaturID = '';
|
|
16
16
|
this._temperatur = 0;
|
|
17
|
-
this._seasonTurnOff = false;
|
|
18
17
|
this._desiredTemperatur = baseDeviceInterfaces_1.UNDEFINED_TEMP_VALUE;
|
|
18
|
+
this._seasonTurnOff = false;
|
|
19
19
|
this._humidity = 0;
|
|
20
20
|
this._roomTemperatur = 0;
|
|
21
21
|
this._iAutomaticInterval = services_1.Utils.guardedInterval(this.checkAutomaticChange, 300000, this); // Alle 5 Minuten prüfen
|
|
@@ -29,10 +29,10 @@ class ZigbeeHeater extends zigbeeDevice_1.ZigbeeDevice {
|
|
|
29
29
|
set seasonTurnOff(value) {
|
|
30
30
|
this._seasonTurnOff = value;
|
|
31
31
|
}
|
|
32
|
-
get
|
|
32
|
+
get desiredTemperature() {
|
|
33
33
|
return this._desiredTemperatur;
|
|
34
34
|
}
|
|
35
|
-
set
|
|
35
|
+
set desiredTemperature(val) {
|
|
36
36
|
this._desiredTemperatur = val;
|
|
37
37
|
this.setState(this._setPointTemperaturID, val, () => {
|
|
38
38
|
this.log(models_1.LogLevel.Info, `Changed temperature of to "${val}.`);
|
|
@@ -50,9 +50,9 @@ class ZigbeeHeater extends zigbeeDevice_1.ZigbeeDevice {
|
|
|
50
50
|
return this._level;
|
|
51
51
|
}
|
|
52
52
|
get sTemperatur() {
|
|
53
|
-
return `${this.
|
|
53
|
+
return `${this.iTemperature}°C`;
|
|
54
54
|
}
|
|
55
|
-
get
|
|
55
|
+
get iTemperature() {
|
|
56
56
|
if (this.settings.useOwnTemperatur) {
|
|
57
57
|
return this._temperatur;
|
|
58
58
|
}
|
|
@@ -72,15 +72,15 @@ class ZigbeeHeater extends zigbeeDevice_1.ZigbeeDevice {
|
|
|
72
72
|
(_a = services_1.Utils.dbo) === null || _a === void 0 ? void 0 : _a.addTemperaturDataPoint(this);
|
|
73
73
|
return;
|
|
74
74
|
}
|
|
75
|
-
const setting = models_1.
|
|
75
|
+
const setting = models_1.TemperatureSettings.getActiveSetting(this._automaticPoints, new Date());
|
|
76
76
|
if (setting === undefined) {
|
|
77
77
|
this.log(models_1.LogLevel.Warn, `Undefined Heating Timestamp.`);
|
|
78
|
-
this.
|
|
78
|
+
this.desiredTemperature = this.settings.automaticFallBackTemperatur;
|
|
79
79
|
return;
|
|
80
80
|
}
|
|
81
|
-
if (this._desiredTemperatur !== setting.
|
|
82
|
-
this.log(models_1.LogLevel.Debug, `Automatische Temperaturanpassung für ${this.info.customName} auf ${setting.
|
|
83
|
-
this.
|
|
81
|
+
if (this._desiredTemperatur !== setting.temperature) {
|
|
82
|
+
this.log(models_1.LogLevel.Debug, `Automatische Temperaturanpassung für ${this.info.customName} auf ${setting.temperature}°C`);
|
|
83
|
+
this.desiredTemperature = (_b = setting.temperature) !== null && _b !== void 0 ? _b : this.settings.automaticFallBackTemperatur;
|
|
84
84
|
}
|
|
85
85
|
(_c = services_1.Utils.dbo) === null || _c === void 0 ? void 0 : _c.addTemperaturDataPoint(this);
|
|
86
86
|
}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
/// <reference types="iobroker" />
|
|
2
2
|
import { ZigbeeDevice } from './BaseDevices';
|
|
3
|
-
import { iHumiditySensor,
|
|
3
|
+
import { iHumiditySensor, iTemperatureSensor } from '../baseDeviceInterfaces';
|
|
4
4
|
import { DeviceInfo } from '../DeviceInfo';
|
|
5
|
-
export declare class ZigbeeSonoffTemp extends ZigbeeDevice implements
|
|
5
|
+
export declare class ZigbeeSonoffTemp extends ZigbeeDevice implements iTemperatureSensor, iHumiditySensor {
|
|
6
6
|
private _humidityCallbacks;
|
|
7
7
|
private _temperaturCallbacks;
|
|
8
8
|
constructor(pInfo: DeviceInfo);
|
|
9
9
|
private _humidity;
|
|
10
10
|
get humidity(): number;
|
|
11
11
|
private set humidity(value);
|
|
12
|
-
get
|
|
13
|
-
get
|
|
14
|
-
private
|
|
15
|
-
private set
|
|
12
|
+
get iTemperature(): number;
|
|
13
|
+
get sTemperature(): string;
|
|
14
|
+
private _temperature;
|
|
15
|
+
private set temperature(value);
|
|
16
16
|
update(idSplit: string[], state: ioBroker.State, initial?: boolean): void;
|
|
17
17
|
addHumidityCallback(pCallback: (pValue: number) => void): void;
|
|
18
18
|
addTempChangeCallback(pCallback: (pValue: number) => void): void;
|
|
@@ -10,7 +10,7 @@ class ZigbeeSonoffTemp extends BaseDevices_1.ZigbeeDevice {
|
|
|
10
10
|
this._humidityCallbacks = [];
|
|
11
11
|
this._temperaturCallbacks = [];
|
|
12
12
|
this._humidity = baseDeviceInterfaces_1.UNDEFINED_TEMP_VALUE;
|
|
13
|
-
this.
|
|
13
|
+
this._temperature = baseDeviceInterfaces_1.UNDEFINED_TEMP_VALUE;
|
|
14
14
|
}
|
|
15
15
|
get humidity() {
|
|
16
16
|
return this._humidity;
|
|
@@ -21,14 +21,14 @@ class ZigbeeSonoffTemp extends BaseDevices_1.ZigbeeDevice {
|
|
|
21
21
|
cb(val);
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
|
-
get
|
|
25
|
-
return this.
|
|
24
|
+
get iTemperature() {
|
|
25
|
+
return this._temperature;
|
|
26
26
|
}
|
|
27
|
-
get
|
|
28
|
-
return `${this.
|
|
27
|
+
get sTemperature() {
|
|
28
|
+
return `${this._temperature}°C`;
|
|
29
29
|
}
|
|
30
|
-
set
|
|
31
|
-
this.
|
|
30
|
+
set temperature(val) {
|
|
31
|
+
this._temperature = val;
|
|
32
32
|
for (const cb of this._temperaturCallbacks) {
|
|
33
33
|
cb(val);
|
|
34
34
|
}
|
|
@@ -39,8 +39,8 @@ class ZigbeeSonoffTemp extends BaseDevices_1.ZigbeeDevice {
|
|
|
39
39
|
case 'humidity':
|
|
40
40
|
this.humidity = state.val;
|
|
41
41
|
break;
|
|
42
|
-
case '
|
|
43
|
-
this.
|
|
42
|
+
case 'temperature':
|
|
43
|
+
this.temperature = state.val;
|
|
44
44
|
break;
|
|
45
45
|
}
|
|
46
46
|
}
|
|
@@ -52,8 +52,8 @@ class ZigbeeSonoffTemp extends BaseDevices_1.ZigbeeDevice {
|
|
|
52
52
|
}
|
|
53
53
|
addTempChangeCallback(pCallback) {
|
|
54
54
|
this._temperaturCallbacks.push(pCallback);
|
|
55
|
-
if (this.
|
|
56
|
-
pCallback(this.
|
|
55
|
+
if (this._temperature > baseDeviceInterfaces_1.UNDEFINED_TEMP_VALUE) {
|
|
56
|
+
pCallback(this._temperature);
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
}
|
|
@@ -11,7 +11,7 @@ export declare class ZigbeeTuyaValve extends ZigbeeHeater {
|
|
|
11
11
|
constructor(pInfo: DeviceInfo);
|
|
12
12
|
set seasonTurnOff(value: boolean);
|
|
13
13
|
set roomTemperatur(value: number);
|
|
14
|
-
set
|
|
14
|
+
set desiredTemperature(val: number);
|
|
15
15
|
private get tempDiff();
|
|
16
16
|
update(idSplit: string[], state: ioBroker.State, initial?: boolean): void;
|
|
17
17
|
private checkTempDiff;
|
|
@@ -28,7 +28,7 @@ class ZigbeeTuyaValve extends BaseDevices_1.ZigbeeHeater {
|
|
|
28
28
|
}
|
|
29
29
|
this.checkTempDiff();
|
|
30
30
|
}
|
|
31
|
-
set
|
|
31
|
+
set desiredTemperature(val) {
|
|
32
32
|
this._desiredTemperatur = val;
|
|
33
33
|
this.checkTempDiff();
|
|
34
34
|
}
|
|
@@ -73,7 +73,7 @@ class ZigbeeTuyaValve extends BaseDevices_1.ZigbeeHeater {
|
|
|
73
73
|
if (this.settings.useOwnTemperatur) {
|
|
74
74
|
return;
|
|
75
75
|
}
|
|
76
|
-
const desiredDiff = services_1.Utils.round(this.
|
|
76
|
+
const desiredDiff = services_1.Utils.round(this.desiredTemperature - this._roomTemperatur, 1);
|
|
77
77
|
const currentDiff = this.tempDiff;
|
|
78
78
|
const missingDiff = services_1.Utils.round(desiredDiff - currentDiff, 1);
|
|
79
79
|
if (Math.abs(missingDiff) < 0.15) {
|
|
@@ -83,13 +83,13 @@ class ZigbeeTuyaValve extends BaseDevices_1.ZigbeeHeater {
|
|
|
83
83
|
this.log(models_1.LogLevel.Debug, `Calculating Tuya Valve Diff, desiredDiff "${desiredDiff}", currentDiff "${currentDiff}", missingDiff "${missingDiff}"`);
|
|
84
84
|
if (Math.abs(desiredDiff) <= 9.0) {
|
|
85
85
|
// Check possible with local Diff only
|
|
86
|
-
this.setTargetTemperatur(this.
|
|
86
|
+
this.setTargetTemperatur(this.desiredTemperature);
|
|
87
87
|
this.setLocalDiff(-1 * desiredDiff);
|
|
88
88
|
return;
|
|
89
89
|
}
|
|
90
90
|
const newLocalDiff = Math.sign(desiredDiff) * -9;
|
|
91
91
|
this.setLocalDiff(newLocalDiff);
|
|
92
|
-
this.setTargetTemperatur(this._localTempVal + this._roomTemperatur + newLocalDiff + this.
|
|
92
|
+
this.setTargetTemperatur(this._localTempVal + this._roomTemperatur + newLocalDiff + this.desiredTemperature);
|
|
93
93
|
}
|
|
94
94
|
setLocalDiff(newLocalDiff) {
|
|
95
95
|
this.log(models_1.LogLevel.Debug, `Setting new Local Calibration Diff (${newLocalDiff}) for Tuya Valve`);
|