@riddix/hamh 2.1.0-alpha.512 → 2.1.0-alpha.514

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);
@@ -168537,35 +168542,25 @@ var FanOnOffServer = OnOffServer2({
168537
168542
 
168538
168543
  // src/matter/endpoints/composed/composed-air-purifier-endpoint.ts
168539
168544
  var logger169 = Logger.get("ComposedAirPurifierEndpoint");
168540
- function createTemperatureConfig(temperatureEntityId) {
168541
- return {
168542
- getValue(_entity, agent) {
168543
- const stateProvider = agent.env.get(EntityStateProvider);
168544
- const tempState = stateProvider.getState(temperatureEntityId);
168545
- if (!tempState) return void 0;
168546
- const temperature3 = Number.parseFloat(tempState.state);
168547
- if (Number.isNaN(temperature3)) return void 0;
168548
- const fallbackUnit = agent.env.get(HomeAssistantConfig).unitSystem.temperature;
168549
- const attrs = tempState.attributes;
168550
- return Temperature.withUnit(
168551
- temperature3,
168552
- attrs.unit_of_measurement ?? fallbackUnit
168553
- );
168554
- }
168555
- };
168556
- }
168557
- function createHumidityConfig(humidityEntityId) {
168558
- return {
168559
- getValue(_entity, agent) {
168560
- const stateProvider = agent.env.get(EntityStateProvider);
168561
- const humState = stateProvider.getState(humidityEntityId);
168562
- if (!humState) return null;
168563
- const humidity = Number.parseFloat(humState.state);
168564
- if (Number.isNaN(humidity)) return null;
168565
- return humidity;
168566
- }
168567
- };
168568
- }
168545
+ var temperatureConfig = {
168546
+ getValue(entity, agent) {
168547
+ const fallbackUnit = agent.env.get(HomeAssistantConfig).unitSystem.temperature;
168548
+ const state = entity.state;
168549
+ const attributes7 = entity.attributes;
168550
+ const temperature3 = state == null || Number.isNaN(+state) ? null : +state;
168551
+ if (temperature3 == null) return void 0;
168552
+ return Temperature.withUnit(
168553
+ temperature3,
168554
+ attributes7.unit_of_measurement ?? fallbackUnit
168555
+ );
168556
+ }
168557
+ };
168558
+ var humidityConfig = {
168559
+ getValue({ state }) {
168560
+ if (state == null || Number.isNaN(+state)) return null;
168561
+ return +state;
168562
+ }
168563
+ };
168569
168564
  var batteryConfig = {
168570
168565
  getBatteryPercent: (_entity, agent) => {
168571
168566
  const homeAssistant = agent.get(HomeAssistantEntityBehavior);
@@ -168578,6 +168573,16 @@ var batteryConfig = {
168578
168573
  return null;
168579
168574
  }
168580
168575
  };
168576
+ var TemperatureSubType = TemperatureSensorDevice.with(
168577
+ IdentifyServer2,
168578
+ HomeAssistantEntityBehavior,
168579
+ TemperatureMeasurementServer2(temperatureConfig)
168580
+ );
168581
+ var HumiditySubType = HumiditySensorDevice.with(
168582
+ IdentifyServer2,
168583
+ HomeAssistantEntityBehavior,
168584
+ HumidityMeasurementServer(humidityConfig)
168585
+ );
168581
168586
  function createEndpointId2(entityId, customName) {
168582
168587
  const baseName = customName || entityId;
168583
168588
  return baseName.replace(/\./g, "_").replace(/\s+/g, "_");
@@ -168597,9 +168602,9 @@ function buildEntityPayload(registry2, entityId) {
168597
168602
  var ComposedAirPurifierEndpoint = class _ComposedAirPurifierEndpoint extends Endpoint {
168598
168603
  entityId;
168599
168604
  mappedEntityIds;
168600
- trackedEntityIds;
168605
+ subEndpoints = /* @__PURE__ */ new Map();
168601
168606
  lastStates = /* @__PURE__ */ new Map();
168602
- debouncedFlush;
168607
+ debouncedUpdates = /* @__PURE__ */ new Map();
168603
168608
  static async create(config10) {
168604
168609
  const { registry: registry2, primaryEntityId } = config10;
168605
168610
  const primaryPayload = buildEntityPayload(registry2, primaryEntityId);
@@ -168627,8 +168632,7 @@ var ComposedAirPurifierEndpoint = class _ComposedAirPurifierEndpoint extends End
168627
168632
  if (hasWindModes) {
168628
168633
  features2.add("Wind");
168629
168634
  }
168630
- let parentType = AirPurifierDevice.with(
168631
- BasicInformationServer2,
168635
+ let airPurifierSubType = AirPurifierDevice.with(
168632
168636
  IdentifyServer2,
168633
168637
  HomeAssistantEntityBehavior,
168634
168638
  FanOnOffServer,
@@ -168636,27 +168640,23 @@ var ComposedAirPurifierEndpoint = class _ComposedAirPurifierEndpoint extends End
168636
168640
  );
168637
168641
  const hasFilterLife = airPurifierAttributes.filter_life != null || airPurifierAttributes.filter_life_remaining != null || airPurifierAttributes.filter_life_level != null || !!config10.mapping?.filterLifeEntity;
168638
168642
  if (hasFilterLife) {
168639
- parentType = parentType.with(AirPurifierHepaFilterMonitoringServer);
168640
- }
168641
- if (config10.temperatureEntityId) {
168642
- parentType = parentType.with(
168643
- TemperatureMeasurementServer2(
168644
- createTemperatureConfig(config10.temperatureEntityId)
168645
- )
168643
+ airPurifierSubType = airPurifierSubType.with(
168644
+ AirPurifierHepaFilterMonitoringServer
168646
168645
  );
168647
168646
  }
168648
- if (config10.humidityEntityId) {
168649
- parentType = parentType.with(
168650
- HumidityMeasurementServer(
168651
- createHumidityConfig(config10.humidityEntityId)
168652
- )
168653
- );
168654
- }
168655
- const mapping = {
168647
+ const airPurifierMapping = {
168656
168648
  entityId: primaryEntityId,
168657
- ...config10.batteryEntityId ? { batteryEntity: config10.batteryEntityId } : {},
168658
168649
  ...config10.mapping?.filterLifeEntity ? { filterLifeEntity: config10.mapping.filterLifeEntity } : {}
168659
168650
  };
168651
+ let parentType = BridgedNodeEndpoint.with(
168652
+ BasicInformationServer2,
168653
+ IdentifyServer2,
168654
+ HomeAssistantEntityBehavior
168655
+ );
168656
+ const parentMapping = {
168657
+ entityId: primaryEntityId,
168658
+ ...config10.batteryEntityId ? { batteryEntity: config10.batteryEntityId } : {}
168659
+ };
168660
168660
  if (config10.batteryEntityId) {
168661
168661
  parentType = parentType.with(PowerSourceServer2(batteryConfig));
168662
168662
  }
@@ -168669,75 +168669,125 @@ var ComposedAirPurifierEndpoint = class _ComposedAirPurifierEndpoint extends End
168669
168669
  );
168670
168670
  }
168671
168671
  const endpointId = createEndpointId2(primaryEntityId, config10.customName);
168672
+ const parts = [];
168673
+ const airPurifierSub = new Endpoint(
168674
+ airPurifierSubType.set({
168675
+ homeAssistantEntity: {
168676
+ entity: primaryPayload,
168677
+ mapping: airPurifierMapping
168678
+ }
168679
+ }),
168680
+ { id: `${endpointId}_air_purifier` }
168681
+ );
168682
+ parts.push(airPurifierSub);
168683
+ let tempSub;
168684
+ if (config10.temperatureEntityId) {
168685
+ const tempPayload = buildEntityPayload(
168686
+ registry2,
168687
+ config10.temperatureEntityId
168688
+ );
168689
+ if (tempPayload) {
168690
+ tempSub = new Endpoint(
168691
+ TemperatureSubType.set({
168692
+ homeAssistantEntity: { entity: tempPayload }
168693
+ }),
168694
+ { id: `${endpointId}_temp` }
168695
+ );
168696
+ parts.push(tempSub);
168697
+ }
168698
+ }
168699
+ let humSub;
168700
+ if (config10.humidityEntityId) {
168701
+ const humPayload = buildEntityPayload(registry2, config10.humidityEntityId);
168702
+ if (humPayload) {
168703
+ humSub = new Endpoint(
168704
+ HumiditySubType.set({
168705
+ homeAssistantEntity: { entity: humPayload }
168706
+ }),
168707
+ { id: `${endpointId}_humidity` }
168708
+ );
168709
+ parts.push(humSub);
168710
+ }
168711
+ }
168672
168712
  const parentTypeWithState = parentType.set({
168673
168713
  homeAssistantEntity: {
168674
168714
  entity: primaryPayload,
168675
168715
  customName: config10.customName,
168676
- mapping
168716
+ mapping: parentMapping
168677
168717
  }
168678
168718
  });
168679
- const trackedEntityIds = [primaryEntityId];
168680
- if (config10.temperatureEntityId)
168681
- trackedEntityIds.push(config10.temperatureEntityId);
168682
- if (config10.humidityEntityId) trackedEntityIds.push(config10.humidityEntityId);
168683
- const mappedIds = trackedEntityIds.filter((id) => id !== primaryEntityId);
168719
+ const mappedIds = [];
168720
+ if (config10.temperatureEntityId) mappedIds.push(config10.temperatureEntityId);
168721
+ if (config10.humidityEntityId) mappedIds.push(config10.humidityEntityId);
168722
+ if (config10.mapping?.filterLifeEntity)
168723
+ mappedIds.push(config10.mapping.filterLifeEntity);
168684
168724
  const endpoint = new _ComposedAirPurifierEndpoint(
168685
168725
  parentTypeWithState,
168686
168726
  primaryEntityId,
168687
168727
  endpointId,
168688
- trackedEntityIds,
168728
+ parts,
168689
168729
  mappedIds
168690
168730
  );
168731
+ endpoint.subEndpoints.set(primaryEntityId, airPurifierSub);
168732
+ if (config10.temperatureEntityId && tempSub) {
168733
+ endpoint.subEndpoints.set(config10.temperatureEntityId, tempSub);
168734
+ }
168735
+ if (config10.humidityEntityId && humSub) {
168736
+ endpoint.subEndpoints.set(config10.humidityEntityId, humSub);
168737
+ }
168691
168738
  const clusterLabels = [
168692
168739
  "AirPurifier",
168693
168740
  config10.temperatureEntityId ? "+Temp" : "",
168694
168741
  config10.humidityEntityId ? "+Hum" : "",
168695
- config10.batteryEntityId ? "+Bat" : ""
168742
+ config10.batteryEntityId ? "+Bat" : "",
168743
+ hasFilterLife ? "+HEPA" : ""
168696
168744
  ].filter(Boolean).join("");
168697
- logger169.info(`Created air purifier ${primaryEntityId}: ${clusterLabels}`);
168745
+ logger169.info(
168746
+ `Created composed air purifier ${primaryEntityId}: ${clusterLabels}`
168747
+ );
168698
168748
  return endpoint;
168699
168749
  }
168700
- constructor(type, entityId, id, trackedEntityIds, mappedEntityIds) {
168701
- super(type, { id });
168750
+ constructor(type, entityId, id, parts, mappedEntityIds) {
168751
+ super(type, { id, parts });
168702
168752
  this.entityId = entityId;
168703
- this.trackedEntityIds = trackedEntityIds;
168704
168753
  this.mappedEntityIds = mappedEntityIds;
168705
168754
  }
168706
168755
  async updateStates(states) {
168707
- let anyChanged = false;
168708
- for (const entityId of this.trackedEntityIds) {
168709
- const state = states[entityId];
168710
- if (!state) continue;
168711
- const stateJson = JSON.stringify({
168712
- s: state.state,
168713
- a: state.attributes
168714
- });
168715
- if (this.lastStates.get(entityId) !== stateJson) {
168716
- this.lastStates.set(entityId, stateJson);
168717
- anyChanged = true;
168718
- }
168756
+ this.scheduleUpdate(this, this.entityId, states);
168757
+ for (const [entityId, sub] of this.subEndpoints) {
168758
+ this.scheduleUpdate(sub, entityId, states);
168719
168759
  }
168720
- if (!anyChanged) return;
168721
- const primaryState = states[this.entityId];
168722
- if (!primaryState) return;
168723
- if (!this.debouncedFlush) {
168724
- this.debouncedFlush = debounce2(
168725
- (s) => this.flushUpdate(s),
168760
+ }
168761
+ scheduleUpdate(endpoint, entityId, states) {
168762
+ const state = states[entityId];
168763
+ if (!state) return;
168764
+ const key = endpoint === this ? `_parent_:${entityId}` : entityId;
168765
+ const stateJson = JSON.stringify({
168766
+ s: state.state,
168767
+ a: state.attributes
168768
+ });
168769
+ if (this.lastStates.get(key) === stateJson) return;
168770
+ this.lastStates.set(key, stateJson);
168771
+ let debouncedFn = this.debouncedUpdates.get(key);
168772
+ if (!debouncedFn) {
168773
+ debouncedFn = debounce2(
168774
+ (ep, s) => this.flushUpdate(ep, s),
168726
168775
  50
168727
168776
  );
168777
+ this.debouncedUpdates.set(key, debouncedFn);
168728
168778
  }
168729
- this.debouncedFlush(primaryState);
168779
+ debouncedFn(endpoint, state);
168730
168780
  }
168731
- async flushUpdate(state) {
168781
+ async flushUpdate(endpoint, state) {
168732
168782
  try {
168733
- await this.construction.ready;
168783
+ await endpoint.construction.ready;
168734
168784
  } catch {
168735
168785
  return;
168736
168786
  }
168737
168787
  try {
168738
- const current = this.stateOf(HomeAssistantEntityBehavior).entity;
168739
- await this.setStateOf(HomeAssistantEntityBehavior, {
168740
- entity: { ...current, state: { ...state } }
168788
+ const current = endpoint.stateOf(HomeAssistantEntityBehavior).entity;
168789
+ await endpoint.setStateOf(HomeAssistantEntityBehavior, {
168790
+ entity: { ...current, state }
168741
168791
  });
168742
168792
  } catch (error) {
168743
168793
  if (error instanceof TransactionDestroyedError || error instanceof DestroyedDependencyError) {
@@ -168753,7 +168803,9 @@ var ComposedAirPurifierEndpoint = class _ComposedAirPurifierEndpoint extends End
168753
168803
  }
168754
168804
  }
168755
168805
  async delete() {
168756
- this.debouncedFlush?.clear();
168806
+ for (const fn of this.debouncedUpdates.values()) {
168807
+ fn.clear();
168808
+ }
168757
168809
  await super.delete();
168758
168810
  }
168759
168811
  };
@@ -168838,7 +168890,7 @@ function PressureMeasurementServer2(config10) {
168838
168890
 
168839
168891
  // src/matter/endpoints/composed/composed-sensor-endpoint.ts
168840
168892
  var logger171 = Logger.get("ComposedSensorEndpoint");
168841
- var temperatureConfig = {
168893
+ var temperatureConfig2 = {
168842
168894
  getValue(entity, agent) {
168843
168895
  const fallbackUnit = agent.env.get(HomeAssistantConfig).unitSystem.temperature;
168844
168896
  const state = entity.state;
@@ -168851,7 +168903,7 @@ var temperatureConfig = {
168851
168903
  );
168852
168904
  }
168853
168905
  };
168854
- var humidityConfig = {
168906
+ var humidityConfig2 = {
168855
168907
  getValue({ state }) {
168856
168908
  if (state == null || Number.isNaN(+state)) return null;
168857
168909
  return +state;
@@ -168878,15 +168930,15 @@ var batteryConfig2 = {
168878
168930
  return null;
168879
168931
  }
168880
168932
  };
168881
- var TemperatureSubType = TemperatureSensorDevice.with(
168933
+ var TemperatureSubType2 = TemperatureSensorDevice.with(
168882
168934
  IdentifyServer2,
168883
168935
  HomeAssistantEntityBehavior,
168884
- TemperatureMeasurementServer2(temperatureConfig)
168936
+ TemperatureMeasurementServer2(temperatureConfig2)
168885
168937
  );
168886
- var HumiditySubType = HumiditySensorDevice.with(
168938
+ var HumiditySubType2 = HumiditySensorDevice.with(
168887
168939
  IdentifyServer2,
168888
168940
  HomeAssistantEntityBehavior,
168889
- HumidityMeasurementServer(humidityConfig)
168941
+ HumidityMeasurementServer(humidityConfig2)
168890
168942
  );
168891
168943
  var PressureSubType = PressureSensorDevice.with(
168892
168944
  IdentifyServer2,
@@ -168942,7 +168994,7 @@ var ComposedSensorEndpoint = class _ComposedSensorEndpoint extends Endpoint {
168942
168994
  const endpointId = createEndpointId3(primaryEntityId, config10.customName);
168943
168995
  const parts = [];
168944
168996
  const tempSub = new Endpoint(
168945
- TemperatureSubType.set({
168997
+ TemperatureSubType2.set({
168946
168998
  homeAssistantEntity: { entity: primaryPayload }
168947
168999
  }),
168948
169000
  { id: `${endpointId}_temp` }
@@ -168953,7 +169005,7 @@ var ComposedSensorEndpoint = class _ComposedSensorEndpoint extends Endpoint {
168953
169005
  const humPayload = buildEntityPayload2(registry2, config10.humidityEntityId);
168954
169006
  if (humPayload) {
168955
169007
  humSub = new Endpoint(
168956
- HumiditySubType.set({
169008
+ HumiditySubType2.set({
168957
169009
  homeAssistantEntity: { entity: humPayload }
168958
169010
  }),
168959
169011
  { id: `${endpointId}_humidity` }
@@ -169862,7 +169914,7 @@ var ClimateFanControlServer = FanControlServer2(config3).with(
169862
169914
  );
169863
169915
 
169864
169916
  // src/matter/endpoints/legacy/climate/behaviors/climate-humidity-measurement-server.ts
169865
- var humidityConfig2 = {
169917
+ var humidityConfig3 = {
169866
169918
  getValue(entity) {
169867
169919
  const attributes7 = entity.attributes;
169868
169920
  const humidity = attributes7.current_humidity;
@@ -169872,7 +169924,7 @@ var humidityConfig2 = {
169872
169924
  return +humidity;
169873
169925
  }
169874
169926
  };
169875
- var ClimateHumidityMeasurementServer = HumidityMeasurementServer(humidityConfig2);
169927
+ var ClimateHumidityMeasurementServer = HumidityMeasurementServer(humidityConfig3);
169876
169928
 
169877
169929
  // src/matter/endpoints/legacy/climate/behaviors/climate-on-off-server.ts
169878
169930
  var ClimateOnOffServer = OnOffServer2({
@@ -174960,7 +175012,7 @@ var Pm25SensorType = AirQualitySensorDevice.with(
174960
175012
 
174961
175013
  // src/matter/endpoints/legacy/sensor/devices/temperature-humidity-sensor.ts
174962
175014
  init_home_assistant_entity_behavior();
174963
- var temperatureConfig2 = {
175015
+ var temperatureConfig3 = {
174964
175016
  getValue(entity, agent) {
174965
175017
  const fallbackUnit = agent.env.get(HomeAssistantConfig).unitSystem.temperature;
174966
175018
  const state = entity.state;
@@ -174975,7 +175027,7 @@ var temperatureConfig2 = {
174975
175027
  );
174976
175028
  }
174977
175029
  };
174978
- var humidityConfig3 = {
175030
+ var humidityConfig4 = {
174979
175031
  getValue(_entity, agent) {
174980
175032
  const homeAssistant = agent.get(HomeAssistantEntityBehavior);
174981
175033
  const humidityEntity = homeAssistant.state.mapping?.humidityEntity;
@@ -175025,38 +175077,38 @@ var TemperatureHumiditySensorType = TemperatureSensorDevice.with(
175025
175077
  BasicInformationServer2,
175026
175078
  IdentifyServer2,
175027
175079
  HomeAssistantEntityBehavior,
175028
- TemperatureMeasurementServer2(temperatureConfig2),
175029
- HumidityMeasurementServer(humidityConfig3)
175080
+ TemperatureMeasurementServer2(temperatureConfig3),
175081
+ HumidityMeasurementServer(humidityConfig4)
175030
175082
  );
175031
175083
  var TemperatureHumiditySensorWithBatteryType = TemperatureSensorDevice.with(
175032
175084
  BasicInformationServer2,
175033
175085
  IdentifyServer2,
175034
175086
  HomeAssistantEntityBehavior,
175035
- TemperatureMeasurementServer2(temperatureConfig2),
175036
- HumidityMeasurementServer(humidityConfig3),
175087
+ TemperatureMeasurementServer2(temperatureConfig3),
175088
+ HumidityMeasurementServer(humidityConfig4),
175037
175089
  PowerSourceServer2(batteryConfig4)
175038
175090
  );
175039
175091
  var TemperatureHumidityPressureSensorType = TemperatureSensorDevice.with(
175040
175092
  BasicInformationServer2,
175041
175093
  IdentifyServer2,
175042
175094
  HomeAssistantEntityBehavior,
175043
- TemperatureMeasurementServer2(temperatureConfig2),
175044
- HumidityMeasurementServer(humidityConfig3),
175095
+ TemperatureMeasurementServer2(temperatureConfig3),
175096
+ HumidityMeasurementServer(humidityConfig4),
175045
175097
  PressureMeasurementServer2(pressureConfig2)
175046
175098
  );
175047
175099
  var TemperatureHumidityPressureSensorWithBatteryType = TemperatureSensorDevice.with(
175048
175100
  BasicInformationServer2,
175049
175101
  IdentifyServer2,
175050
175102
  HomeAssistantEntityBehavior,
175051
- TemperatureMeasurementServer2(temperatureConfig2),
175052
- HumidityMeasurementServer(humidityConfig3),
175103
+ TemperatureMeasurementServer2(temperatureConfig3),
175104
+ HumidityMeasurementServer(humidityConfig4),
175053
175105
  PressureMeasurementServer2(pressureConfig2),
175054
175106
  PowerSourceServer2(batteryConfig4)
175055
175107
  );
175056
175108
 
175057
175109
  // src/matter/endpoints/legacy/sensor/devices/temperature-pressure-sensor.ts
175058
175110
  init_home_assistant_entity_behavior();
175059
- var temperatureConfig3 = {
175111
+ var temperatureConfig4 = {
175060
175112
  getValue(entity, agent) {
175061
175113
  const fallbackUnit = agent.env.get(HomeAssistantConfig).unitSystem.temperature;
175062
175114
  const state = entity.state;
@@ -175107,14 +175159,14 @@ var TemperaturePressureSensorType = TemperatureSensorDevice.with(
175107
175159
  BasicInformationServer2,
175108
175160
  IdentifyServer2,
175109
175161
  HomeAssistantEntityBehavior,
175110
- TemperatureMeasurementServer2(temperatureConfig3),
175162
+ TemperatureMeasurementServer2(temperatureConfig4),
175111
175163
  PressureMeasurementServer2(pressureConfig3)
175112
175164
  );
175113
175165
  var TemperaturePressureSensorWithBatteryType = TemperatureSensorDevice.with(
175114
175166
  BasicInformationServer2,
175115
175167
  IdentifyServer2,
175116
175168
  HomeAssistantEntityBehavior,
175117
- TemperatureMeasurementServer2(temperatureConfig3),
175169
+ TemperatureMeasurementServer2(temperatureConfig4),
175118
175170
  PressureMeasurementServer2(pressureConfig3),
175119
175171
  PowerSourceServer2(batteryConfig5)
175120
175172
  );
@@ -177995,13 +178047,9 @@ var LegacyEndpoint = class _LegacyEndpoint extends EntityEndpoint {
177995
178047
  return composed;
177996
178048
  }
177997
178049
  const resolvedMatterType = mapping?.matterDeviceType ?? (entityId.startsWith("fan.") ? "fan" : void 0);
177998
- if (resolvedMatterType === "air_purifier" && entity.device_id) {
177999
- const temperatureEntityId = registry2.findTemperatureEntityForDevice(
178000
- entity.device_id
178001
- );
178002
- const humidityEntityId = registry2.findHumidityEntityForDevice(
178003
- entity.device_id
178004
- );
178050
+ if (resolvedMatterType === "air_purifier") {
178051
+ const temperatureEntityId = effectiveMapping?.temperatureEntity || (entity.device_id ? registry2.findTemperatureEntityForDevice(entity.device_id) : void 0);
178052
+ const humidityEntityId = effectiveMapping?.humidityEntity || (entity.device_id ? registry2.findHumidityEntityForDevice(entity.device_id) : void 0);
178005
178053
  if (temperatureEntityId || humidityEntityId) {
178006
178054
  const composedAreaName = registry2.getAreaName(entityId);
178007
178055
  const composed = await ComposedAirPurifierEndpoint.create({
@@ -178611,11 +178659,8 @@ var BridgeEndpointManager = class extends Service {
178611
178659
  const matterType = m?.matterDeviceType ?? "fan";
178612
178660
  if (matterType !== "air_purifier") continue;
178613
178661
  const ent = this.registry.entity(eid);
178614
- if (!ent?.device_id) continue;
178615
- const tempId = this.registry.findTemperatureEntityForDevice(
178616
- ent.device_id
178617
- );
178618
- const humId = this.registry.findHumidityEntityForDevice(ent.device_id);
178662
+ const tempId = m?.temperatureEntity || (ent?.device_id ? this.registry.findTemperatureEntityForDevice(ent.device_id) : void 0);
178663
+ const humId = m?.humidityEntity || (ent?.device_id ? this.registry.findHumidityEntityForDevice(ent.device_id) : void 0);
178619
178664
  if (tempId) this.registry.markComposedSubEntityUsed(tempId);
178620
178665
  if (humId) this.registry.markComposedSubEntityUsed(humId);
178621
178666
  }