hoffmation-base 3.2.21 → 3.2.24

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.
@@ -141,12 +141,15 @@ class Dachs extends RoomBaseDevice_1.RoomBaseDevice {
141
141
  }
142
142
  /** @inheritDoc */
143
143
  setActuator(c) {
144
+ var _a;
144
145
  sharedFunctions_1.LampUtils.setActuator(this, c);
145
146
  if (!c.on ||
146
147
  !this.warmWaterPump ||
147
148
  (this.queuedValue === false && !this._dachsOn) ||
149
+ this.settings.disableDachsOwnWW ||
150
+ ((_a = this.warmWaterDachsAlternativeActuator) === null || _a === void 0 ? void 0 : _a.actuatorOn) ||
148
151
  this.heatStorageTempSensor.temperatureSensor.temperature < this.warmWaterSensor.temperatureSensor.temperature ||
149
- this.warmWaterSensor.temperatureSensor.temperature > 70) {
152
+ this.warmWaterSensor.temperatureSensor.temperature > this.settings.warmWaterDesiredMaxTemp) {
150
153
  return;
151
154
  }
152
155
  const startPumpCommand = new command_1.ActuatorSetStateCommand(c, true, 'Dachs is starting/on');
@@ -348,6 +351,10 @@ class Dachs extends RoomBaseDevice_1.RoomBaseDevice {
348
351
  // It is winter and heat storage is kinda cold --> Start
349
352
  return true;
350
353
  }
354
+ else if (this.heatStorageTempSensor.temperatureSensor.temperature > this.settings.heatStorageMaxStartTemp) {
355
+ // Heat Storage is already quite full, don't start
356
+ return false;
357
+ }
351
358
  if ((dayType === enums_1.TimeOfDay.Daylight || dayType === enums_1.TimeOfDay.BeforeSunrise) &&
352
359
  batteryLevel > this.settings.batteryLevelTurnOnThreshold) {
353
360
  // It is daytime (maybe solar power) and it is no critical battery level
@@ -45,7 +45,21 @@ class TemperatureSensor {
45
45
  this.lastSeen = utils_1.Utils.nowMS();
46
46
  let correctedValue = val;
47
47
  if (this.outdoorTemperatureCorrectionCoefficient !== 0 && weather_1.WeatherService.currentTemp !== interfaces_1.UNDEFINED_TEMP_VALUE) {
48
- correctedValue = val + this.outdoorTemperatureCorrectionCoefficient * (21 - weather_1.WeatherService.currentTemp);
48
+ const tempDiff = 21 - weather_1.WeatherService.currentTemp;
49
+ // Use degressive correction: full coefficient up to 10K diff (=11°C outdoor), then reduce
50
+ // This prevents over-correction at very low outdoor temperatures
51
+ const maxLinearDiff = 10;
52
+ if (tempDiff <= maxLinearDiff) {
53
+ correctedValue = val + this.outdoorTemperatureCorrectionCoefficient * tempDiff;
54
+ }
55
+ else {
56
+ // Reduce coefficient for the portion beyond maxLinearDiff
57
+ // e.g. at 25K diff (=-4°C): first 10K at full coeff, remaining 15K at reduced coeff
58
+ const linearPart = maxLinearDiff * this.outdoorTemperatureCorrectionCoefficient;
59
+ const excessDiff = tempDiff - maxLinearDiff;
60
+ const reducedPart = excessDiff * this.outdoorTemperatureCorrectionCoefficient * 0.3;
61
+ correctedValue = val + linearPart + reducedPart;
62
+ }
49
63
  }
50
64
  this._temperature = correctedValue;
51
65
  for (const cb of this._temperaturCallbacks) {
@@ -65,6 +65,10 @@ export interface iDachsDeviceSettings extends iActuatorSettings {
65
65
  * Defines the desired minimum temperature for heat storage during winter.
66
66
  */
67
67
  winterMinimumHeatStorageTemp: number;
68
+ /**
69
+ * Defines the maximum temperature for heat storage at start requests.
70
+ */
71
+ heatStorageMaxStartTemp: number;
68
72
  /**
69
73
  * Defines the desired minimum temperature for heat storage during winter.
70
74
  */
@@ -26,6 +26,8 @@ export declare class DachsDeviceSettings extends ActuatorSettings implements iDa
26
26
  /** @inheritDoc */
27
27
  warmWaterDesiredMaxTemp: number;
28
28
  /** @inheritDoc */
29
+ heatStorageMaxStartTemp: number;
30
+ /** @inheritDoc */
29
31
  winterMinimumHeatStorageTemp: number;
30
32
  /** @inheritDoc */
31
33
  winterMinimumPreNightHeatStorageTemp: number;
@@ -31,12 +31,14 @@ class DachsDeviceSettings extends actuatorSettings_1.ActuatorSettings {
31
31
  /** @inheritDoc */
32
32
  this.warmWaterDesiredMaxTemp = 75;
33
33
  /** @inheritDoc */
34
+ this.heatStorageMaxStartTemp = 70;
35
+ /** @inheritDoc */
34
36
  this.winterMinimumHeatStorageTemp = 55;
35
37
  /** @inheritDoc */
36
38
  this.winterMinimumPreNightHeatStorageTemp = 65;
37
39
  }
38
40
  fromPartialObject(data) {
39
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
41
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
40
42
  this.disableHeatingRod = (_a = data.disableHeatingRod) !== null && _a !== void 0 ? _a : this.disableHeatingRod;
41
43
  this.disableDachsOwnWW = (_b = data.disableDachsOwnWW) !== null && _b !== void 0 ? _b : this.disableDachsOwnWW;
42
44
  this.disableDachsTemporarily = (_c = data.disableDachsTemporarily) !== null && _c !== void 0 ? _c : this.disableDachsTemporarily;
@@ -52,9 +54,10 @@ class DachsDeviceSettings extends actuatorSettings_1.ActuatorSettings {
52
54
  this.batteryLevelAllowStartThreshold = (_k = data.batteryLevelAllowStartThreshold) !== null && _k !== void 0 ? _k : this.batteryLevelAllowStartThreshold;
53
55
  this.warmWaterDesiredMinTemp = (_l = data.warmWaterDesiredMinTemp) !== null && _l !== void 0 ? _l : this.warmWaterDesiredMinTemp;
54
56
  this.warmWaterDesiredMaxTemp = (_m = data.warmWaterDesiredMaxTemp) !== null && _m !== void 0 ? _m : this.warmWaterDesiredMaxTemp;
55
- this.winterMinimumHeatStorageTemp = (_o = data.winterMinimumHeatStorageTemp) !== null && _o !== void 0 ? _o : this.winterMinimumHeatStorageTemp;
57
+ this.heatStorageMaxStartTemp = (_o = data.heatStorageMaxStartTemp) !== null && _o !== void 0 ? _o : this.heatStorageMaxStartTemp;
58
+ this.winterMinimumHeatStorageTemp = (_p = data.winterMinimumHeatStorageTemp) !== null && _p !== void 0 ? _p : this.winterMinimumHeatStorageTemp;
56
59
  this.winterMinimumPreNightHeatStorageTemp =
57
- (_p = data.winterMinimumPreNightHeatStorageTemp) !== null && _p !== void 0 ? _p : this.winterMinimumPreNightHeatStorageTemp;
60
+ (_q = data.winterMinimumPreNightHeatStorageTemp) !== null && _q !== void 0 ? _q : this.winterMinimumPreNightHeatStorageTemp;
58
61
  super.fromPartialObject(data);
59
62
  }
60
63
  toJSON() {