@riddix/hamh 2.1.0-alpha.511 → 2.1.0-alpha.513

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.
@@ -147766,6 +147766,7 @@ WARNING: ${includeIdentity ? "This backup contains sensitive Matter identity dat
147766
147766
  disabled: config10.disabled,
147767
147767
  filterLifeEntity: config10.filterLifeEntity,
147768
147768
  cleaningModeEntity: config10.cleaningModeEntity,
147769
+ temperatureEntity: config10.temperatureEntity,
147769
147770
  humidityEntity: config10.humidityEntity,
147770
147771
  pressureEntity: config10.pressureEntity,
147771
147772
  batteryEntity: config10.batteryEntity,
@@ -148661,6 +148662,7 @@ function entityMappingApi(mappingStorage) {
148661
148662
  disabled: body.disabled,
148662
148663
  filterLifeEntity: body.filterLifeEntity,
148663
148664
  cleaningModeEntity: body.cleaningModeEntity,
148665
+ temperatureEntity: body.temperatureEntity,
148664
148666
  humidityEntity: body.humidityEntity,
148665
148667
  pressureEntity: body.pressureEntity,
148666
148668
  batteryEntity: body.batteryEntity,
@@ -149123,6 +149125,7 @@ function configToProfileEntry(config10) {
149123
149125
  disabled: config10.disabled,
149124
149126
  filterLifeEntity: config10.filterLifeEntity,
149125
149127
  cleaningModeEntity: config10.cleaningModeEntity,
149128
+ temperatureEntity: config10.temperatureEntity,
149126
149129
  humidityEntity: config10.humidityEntity,
149127
149130
  pressureEntity: config10.pressureEntity,
149128
149131
  batteryEntity: config10.batteryEntity,
@@ -149243,6 +149246,7 @@ function mappingProfileApi(mappingStorage) {
149243
149246
  disabled: entry.disabled,
149244
149247
  filterLifeEntity: entry.filterLifeEntity,
149245
149248
  cleaningModeEntity: entry.cleaningModeEntity,
149249
+ temperatureEntity: entry.temperatureEntity,
149246
149250
  humidityEntity: entry.humidityEntity,
149247
149251
  pressureEntity: entry.pressureEntity,
149248
149252
  batteryEntity: entry.batteryEntity,
@@ -152677,6 +152681,7 @@ var EntityMappingStorage = class extends Service {
152677
152681
  disabled: request.disabled,
152678
152682
  filterLifeEntity: request.filterLifeEntity?.trim() || void 0,
152679
152683
  cleaningModeEntity: request.cleaningModeEntity?.trim() || void 0,
152684
+ temperatureEntity: request.temperatureEntity?.trim() || void 0,
152680
152685
  humidityEntity: request.humidityEntity?.trim() || void 0,
152681
152686
  batteryEntity: request.batteryEntity?.trim() || void 0,
152682
152687
  roomEntities: roomEntities.length > 0 ? roomEntities : void 0,
@@ -152693,7 +152698,7 @@ var EntityMappingStorage = class extends Service {
152693
152698
  valetudoIdentifier: request.valetudoIdentifier?.trim() || void 0,
152694
152699
  coverSwapOpenClose: request.coverSwapOpenClose || void 0
152695
152700
  };
152696
- if (!config10.matterDeviceType && !config10.customName && config10.disabled !== true && !config10.filterLifeEntity && !config10.cleaningModeEntity && !config10.humidityEntity && !config10.batteryEntity && !config10.roomEntities && !config10.disableLockPin && !config10.powerEntity && !config10.energyEntity && !config10.pressureEntity && !config10.suctionLevelEntity && !config10.mopIntensityEntity && (!config10.customServiceAreas || config10.customServiceAreas.length === 0) && (!config10.customFanSpeedTags || Object.keys(config10.customFanSpeedTags).length === 0) && !config10.valetudoIdentifier && !config10.coverSwapOpenClose) {
152701
+ if (!config10.matterDeviceType && !config10.customName && config10.disabled !== true && !config10.filterLifeEntity && !config10.cleaningModeEntity && !config10.temperatureEntity && !config10.humidityEntity && !config10.batteryEntity && !config10.roomEntities && !config10.disableLockPin && !config10.powerEntity && !config10.energyEntity && !config10.pressureEntity && !config10.suctionLevelEntity && !config10.mopIntensityEntity && (!config10.customServiceAreas || config10.customServiceAreas.length === 0) && (!config10.customFanSpeedTags || Object.keys(config10.customFanSpeedTags).length === 0) && !config10.valetudoIdentifier && !config10.coverSwapOpenClose) {
152697
152702
  bridgeMap.delete(request.entityId);
152698
152703
  } else {
152699
152704
  bridgeMap.set(request.entityId, config10);
@@ -170053,7 +170058,8 @@ var ThermostatServerBase = class extends FullFeaturedBase {
170053
170058
  logger174.debug(
170054
170059
  `update: limits heat=[${minHeatLimit}, ${maxHeatLimit}], cool=[${minCoolLimit}, ${maxCoolLimit}], systemMode=${systemMode}, runningMode=${runningMode}`
170055
170060
  );
170056
- const controlSequence = config10.getControlSequence(entity.state, this.agent);
170061
+ let controlSequence = config10.getControlSequence(entity.state, this.agent);
170062
+ controlSequence = this.clampControlSequence(controlSequence);
170057
170063
  this.internal.controlSequenceOfOperation = controlSequence;
170058
170064
  applyPatchState(this.state, {
170059
170065
  ...this.features.heating ? {
@@ -170308,6 +170314,26 @@ var ThermostatServerBase = class extends FullFeaturedBase {
170308
170314
  }
170309
170315
  }
170310
170316
  }
170317
+ clampControlSequence(value) {
170318
+ const hasHeat = this.features.heating;
170319
+ const hasCool = this.features.cooling;
170320
+ const needsHeat = value === Thermostat3.ControlSequenceOfOperation.HeatingOnly || value === Thermostat3.ControlSequenceOfOperation.HeatingWithReheat;
170321
+ const needsCool = value === Thermostat3.ControlSequenceOfOperation.CoolingOnly || value === Thermostat3.ControlSequenceOfOperation.CoolingWithReheat;
170322
+ const needsBoth = value === Thermostat3.ControlSequenceOfOperation.CoolingAndHeating || value === Thermostat3.ControlSequenceOfOperation.CoolingAndHeatingWithReheat;
170323
+ if (needsHeat && !hasHeat) {
170324
+ return Thermostat3.ControlSequenceOfOperation.CoolingOnly;
170325
+ }
170326
+ if (needsCool && !hasCool) {
170327
+ return Thermostat3.ControlSequenceOfOperation.HeatingOnly;
170328
+ }
170329
+ if (needsBoth && !hasHeat) {
170330
+ return Thermostat3.ControlSequenceOfOperation.CoolingOnly;
170331
+ }
170332
+ if (needsBoth && !hasCool) {
170333
+ return Thermostat3.ControlSequenceOfOperation.HeatingOnly;
170334
+ }
170335
+ return value;
170336
+ }
170311
170337
  clampSetpoint(value, min, max, type) {
170312
170338
  const effectiveMin = min ?? 0;
170313
170339
  const effectiveMax = max ?? 5e3;
@@ -170556,7 +170582,7 @@ var config4 = {
170556
170582
  (m) => m === ClimateHvacMode.cool || m === ClimateHvacMode.heat_cool
170557
170583
  );
170558
170584
  const hasHeating = modes.some(
170559
- (m) => m === ClimateHvacMode.heat || m === ClimateHvacMode.heat_cool || m === ClimateHvacMode.auto
170585
+ (m) => m === ClimateHvacMode.heat || m === ClimateHvacMode.heat_cool
170560
170586
  );
170561
170587
  if (hasCooling && hasHeating) {
170562
170588
  const hasAutoMode = modes.includes(ClimateHvacMode.heat_cool) && (modes.includes(ClimateHvacMode.heat) || modes.includes(ClimateHvacMode.cool));
@@ -177974,13 +178000,9 @@ var LegacyEndpoint = class _LegacyEndpoint extends EntityEndpoint {
177974
178000
  return composed;
177975
178001
  }
177976
178002
  const resolvedMatterType = mapping?.matterDeviceType ?? (entityId.startsWith("fan.") ? "fan" : void 0);
177977
- if (resolvedMatterType === "air_purifier" && entity.device_id) {
177978
- const temperatureEntityId = registry2.findTemperatureEntityForDevice(
177979
- entity.device_id
177980
- );
177981
- const humidityEntityId = registry2.findHumidityEntityForDevice(
177982
- entity.device_id
177983
- );
178003
+ if (resolvedMatterType === "air_purifier") {
178004
+ const temperatureEntityId = effectiveMapping?.temperatureEntity || (entity.device_id ? registry2.findTemperatureEntityForDevice(entity.device_id) : void 0);
178005
+ const humidityEntityId = effectiveMapping?.humidityEntity || (entity.device_id ? registry2.findHumidityEntityForDevice(entity.device_id) : void 0);
177984
178006
  if (temperatureEntityId || humidityEntityId) {
177985
178007
  const composedAreaName = registry2.getAreaName(entityId);
177986
178008
  const composed = await ComposedAirPurifierEndpoint.create({
@@ -178590,11 +178612,8 @@ var BridgeEndpointManager = class extends Service {
178590
178612
  const matterType = m?.matterDeviceType ?? "fan";
178591
178613
  if (matterType !== "air_purifier") continue;
178592
178614
  const ent = this.registry.entity(eid);
178593
- if (!ent?.device_id) continue;
178594
- const tempId = this.registry.findTemperatureEntityForDevice(
178595
- ent.device_id
178596
- );
178597
- const humId = this.registry.findHumidityEntityForDevice(ent.device_id);
178615
+ const tempId = m?.temperatureEntity || (ent?.device_id ? this.registry.findTemperatureEntityForDevice(ent.device_id) : void 0);
178616
+ const humId = m?.humidityEntity || (ent?.device_id ? this.registry.findHumidityEntityForDevice(ent.device_id) : void 0);
178598
178617
  if (tempId) this.registry.markComposedSubEntityUsed(tempId);
178599
178618
  if (humId) this.registry.markComposedSubEntityUsed(humId);
178600
178619
  }