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.
Files changed (53) hide show
  1. package/lib/index.js +1 -1
  2. package/lib/models/deviceSettings/acSettings.d.ts +2 -2
  3. package/lib/models/deviceSettings/acSettings.js +2 -2
  4. package/lib/models/index.d.ts +1 -1
  5. package/lib/models/index.js +1 -1
  6. package/lib/models/temperatureSettings.d.ts +12 -0
  7. package/lib/models/{temperaturSettings.js → temperatureSettings.js} +14 -14
  8. package/lib/server/devices/Heizgruppen.d.ts +0 -1
  9. package/lib/server/devices/Heizgruppen.js +5 -16
  10. package/lib/server/devices/baseDeviceInterfaces/iHeater.d.ts +4 -4
  11. package/lib/server/devices/baseDeviceInterfaces/iHumiditySensor.d.ts +1 -0
  12. package/lib/server/devices/baseDeviceInterfaces/iHumiditySensor.js +2 -0
  13. package/lib/server/devices/baseDeviceInterfaces/{iTemperaturSensor.d.ts → iTemperatureSensor.d.ts} +3 -3
  14. package/lib/server/devices/baseDeviceInterfaces/{iTemperaturSensor.js → iTemperatureSensor.js} +0 -0
  15. package/lib/server/devices/baseDeviceInterfaces/index.d.ts +1 -1
  16. package/lib/server/devices/baseDeviceInterfaces/index.js +1 -1
  17. package/lib/server/devices/device-cluster.js +1 -1
  18. package/lib/server/devices/device-list.d.ts +2 -2
  19. package/lib/server/devices/device-list.js +6 -6
  20. package/lib/server/devices/groups/fensterGroup.js +1 -1
  21. package/lib/server/devices/groups/heatGroup.d.ts +13 -3
  22. package/lib/server/devices/groups/heatGroup.js +76 -42
  23. package/lib/server/devices/hmIPDevices/hmIpGriff.js +1 -1
  24. package/lib/server/devices/hmIPDevices/hmIpHeizgruppe.d.ts +14 -14
  25. package/lib/server/devices/hmIPDevices/hmIpHeizgruppe.js +31 -31
  26. package/lib/server/devices/zigbee/BaseDevices/zigbeeHeater.d.ts +7 -7
  27. package/lib/server/devices/zigbee/BaseDevices/zigbeeHeater.js +10 -10
  28. package/lib/server/devices/zigbee/zigbeeSonoffTemp.d.ts +6 -6
  29. package/lib/server/devices/zigbee/zigbeeSonoffTemp.js +12 -12
  30. package/lib/server/devices/zigbee/zigbeeTuyaValve.d.ts +1 -1
  31. package/lib/server/devices/zigbee/zigbeeTuyaValve.js +4 -4
  32. package/lib/server/services/Telegram/telegram-Commands.js +1 -1
  33. package/lib/server/services/ac/ac-device.d.ts +3 -1
  34. package/lib/server/services/ac/ac-device.js +3 -2
  35. package/lib/server/services/ac/acDeviceType.d.ts +4 -0
  36. package/lib/server/services/ac/acDeviceType.js +8 -0
  37. package/lib/server/services/ac/daikin-service.d.ts +2 -2
  38. package/lib/server/services/ac/daikin-service.js +9 -1
  39. package/lib/server/services/ac/index.d.ts +2 -1
  40. package/lib/server/services/ac/index.js +4 -2
  41. package/lib/server/services/ac/own-ac-devices.d.ts +7 -0
  42. package/lib/server/services/ac/{own-daikin-devices.js → own-ac-devices.js} +4 -4
  43. package/lib/server/services/ac/own-daikin-device.js +4 -3
  44. package/lib/server/services/api/api-service.d.ts +3 -3
  45. package/lib/server/services/api/api-service.js +2 -2
  46. package/lib/server/services/dbo/mongoPersistance.js +2 -2
  47. package/lib/server/services/dbo/postgreSqlPersist.js +4 -4
  48. package/lib/server/services/weather/weather-service.d.ts +1 -1
  49. package/lib/server/services/weather/weather-service.js +3 -3
  50. package/lib/tsconfig.tsbuildinfo +1 -1
  51. package/package.json +2 -2
  52. package/lib/models/temperaturSettings.d.ts +0 -12
  53. 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.OwnDaikinDevices.ownDevices);
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 temperatur below which cooling should be stopped
8
+ * The temperature below which cooling should be stopped
9
9
  * @type {number}
10
10
  */
11
11
  stopCoolingTemperatur: number;
12
12
  /**
13
- * The temperatur above which heating should be stopped
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 temperatur below which cooling should be stopped
13
+ * The temperature below which cooling should be stopped
14
14
  * @type {number}
15
15
  */
16
16
  this.stopCoolingTemperatur = 22;
17
17
  /**
18
- * The temperatur above which heating should be stopped
18
+ * The temperature above which heating should be stopped
19
19
  * @type {number}
20
20
  */
21
21
  this.stopHeatingTemperatur = 21.0;
@@ -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 './temperaturSettings';
10
+ export * from './temperatureSettings';
11
11
  export * from './timeCallback';
@@ -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("./temperaturSettings"), exports);
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.TemperaturSettings = void 0;
4
- class TemperaturSettings {
5
- constructor(start, end, temperatur, active = true) {
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.temperatur = temperatur;
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.TemperaturSettings = TemperaturSettings;
32
+ exports.TemperatureSettings = TemperatureSettings;
@@ -1,6 +1,5 @@
1
1
  import { HmIpHeizgruppe } from './hmIPDevices';
2
2
  export declare class Heizgruppen {
3
- static getInfo(): string;
4
3
  static getSpecificInfo(pText: string | undefined): Promise<string>;
5
4
  static getProblems(): string;
6
5
  static getAllGruppen(): HmIpHeizgruppe[];
@@ -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${this.getInfo()}`;
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.iTemperatur}°C\t\t${g.info.customName}`];
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.iTemperatur !== g.iTemperatur) {
36
+ if (h.iTemperature !== g.iTemperature) {
48
37
  print = true;
49
38
  }
50
- tempProblem.push(`${h.info.room}\t\t${h.iTemperatur}°C\t\t${h.info.customName}`);
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, TemperaturSettings } from '../../../models';
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 desiredTemperatur: number;
5
+ readonly desiredTemperature: number;
6
6
  readonly humidity: number;
7
7
  readonly iLevel: number;
8
- readonly iTemperatur: number;
8
+ readonly iTemperature: number;
9
9
  set seasonTurnOff(value: boolean);
10
10
  deleteAutomaticPoint(name: string): void;
11
- setAutomaticPoint(name: string, setting: TemperaturSettings): void;
11
+ setAutomaticPoint(name: string, setting: TemperatureSettings): void;
12
12
  stopAutomaticCheck(): void;
13
13
  checkAutomaticChange(): void;
14
14
  onTemperaturChange(newTemperatur: number): void;
@@ -1,4 +1,5 @@
1
1
  import { IBaseDevice } from './iBaseDevice';
2
+ export declare const UNDEFINED_HUMIDITY_VALUE = -1;
2
3
  export interface iHumiditySensor extends IBaseDevice {
3
4
  humidity: number;
4
5
  addHumidityCallback(pCallback: (pValue: number) => void): void;
@@ -1,2 +1,4 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UNDEFINED_HUMIDITY_VALUE = void 0;
4
+ exports.UNDEFINED_HUMIDITY_VALUE = -1;
@@ -1,7 +1,7 @@
1
1
  import { IBaseDevice } from './iBaseDevice';
2
2
  export declare const UNDEFINED_TEMP_VALUE = -99;
3
- export interface iTemperaturSensor extends IBaseDevice {
4
- iTemperatur: number;
5
- sTemperatur: string;
3
+ export interface iTemperatureSensor extends IBaseDevice {
4
+ iTemperature: number;
5
+ sTemperature: string;
6
6
  addTempChangeCallback(pCallback: (pValue: number) => void): void;
7
7
  }
@@ -8,5 +8,5 @@ export * from './iIlluminationSensor';
8
8
  export * from './iLamp';
9
9
  export * from './iMotionSensor';
10
10
  export * from './iShutter';
11
- export * from './iTemperaturSensor';
11
+ export * from './iTemperatureSensor';
12
12
  export * from './iVibrationSensor';
@@ -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("./iTemperaturSensor"), exports);
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 temperatur not yet implemented
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 _isDaikin;
7
- constructor(_ids?: string[], _isSonos?: boolean, _isDaikin?: 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, _isDaikin = false) {
6
+ constructor(_ids = [], _isSonos = false, _isAc = false) {
7
7
  this._ids = _ids;
8
8
  this._isSonos = _isSonos;
9
- this._isDaikin = _isDaikin;
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._isDaikin) {
25
- const daikinDevice = services_1.OwnDaikinDevices.ownDevices[dID];
26
- if (daikinDevice !== undefined) {
27
- result.push(services_1.OwnDaikinDevices.ownDevices[dID]);
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.currentTemp) !== null && _d !== void 0 ? _d : -99);
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, iTemperaturSensor } from '../baseDeviceInterfaces';
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
- get currentTemp(): number;
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(): iTemperaturSensor[];
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
- get currentTemp() {
19
- if (this.getHeater().length === 0) {
20
- return -99;
21
- }
22
- let value = 0;
23
- const sensors = this.getTempSensors();
24
- for (const h of sensors) {
25
- value += h.iTemperatur;
26
- }
27
- return Math.round((value / sensors.length) * 10) / 10;
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.desiredTemperatur;
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
- let temp = baseDeviceInterfaces_1.UNDEFINED_TEMP_VALUE;
83
- let count = 0;
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.currentTemp;
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, TemperaturSettings } from '../../../models';
5
- import { iHeater, iHumiditySensor, iTemperaturSensor } from '../baseDeviceInterfaces';
6
- export declare class HmIpHeizgruppe extends HmIPDevice implements iTemperaturSensor, iHumiditySensor, iHeater {
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 _setPointTemperaturID;
11
+ private _setPointTemperatureID;
12
12
  private _automaticPoints;
13
13
  private _humidityCallbacks;
14
- private _temperaturCallbacks;
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 _temperatur;
20
- get temperatur(): number;
21
- private set temperatur(value);
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 _desiredTemperatur;
26
- get desiredTemperatur(): number;
27
- set desiredTemperatur(val: number);
25
+ private _desiredTemperature;
26
+ get desiredTemperature(): number;
27
+ set desiredTemperature(val: number);
28
28
  get sLevel(): string;
29
29
  get iLevel(): number;
30
- get sTemperatur(): string;
31
- get iTemperatur(): number;
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: TemperaturSettings): void;
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;