@riddix/hamh 2.1.0-alpha.826 → 2.1.0-alpha.828
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/dist/backend/cli.js
CHANGED
|
@@ -132607,6 +132607,7 @@ WARNING: ${includeIdentity ? "This backup contains sensitive Matter identity dat
|
|
|
132607
132607
|
humidityEntity: config11.humidityEntity,
|
|
132608
132608
|
pressureEntity: config11.pressureEntity,
|
|
132609
132609
|
batteryEntity: config11.batteryEntity,
|
|
132610
|
+
disableBatteryMapping: config11.disableBatteryMapping,
|
|
132610
132611
|
roomEntities: config11.roomEntities,
|
|
132611
132612
|
disableLockPin: config11.disableLockPin,
|
|
132612
132613
|
lockUsercodeService: config11.lockUsercodeService,
|
|
@@ -132627,7 +132628,8 @@ WARNING: ${includeIdentity ? "This backup contains sensitive Matter identity dat
|
|
|
132627
132628
|
customFanSpeedTags: config11.customFanSpeedTags,
|
|
132628
132629
|
fanWindPresets: config11.fanWindPresets,
|
|
132629
132630
|
fanRestoreSpeedOnPowerOn: config11.fanRestoreSpeedOnPowerOn,
|
|
132630
|
-
composedEntities: config11.composedEntities
|
|
132631
|
+
composedEntities: config11.composedEntities,
|
|
132632
|
+
disableMomentaryFlip: config11.disableMomentaryFlip
|
|
132631
132633
|
});
|
|
132632
132634
|
mappingsRestored++;
|
|
132633
132635
|
}
|
|
@@ -132762,6 +132764,7 @@ WARNING: ${includeIdentity ? "This backup contains sensitive Matter identity dat
|
|
|
132762
132764
|
humidityEntity: config11.humidityEntity,
|
|
132763
132765
|
pressureEntity: config11.pressureEntity,
|
|
132764
132766
|
batteryEntity: config11.batteryEntity,
|
|
132767
|
+
disableBatteryMapping: config11.disableBatteryMapping,
|
|
132765
132768
|
roomEntities: config11.roomEntities,
|
|
132766
132769
|
disableLockPin: config11.disableLockPin,
|
|
132767
132770
|
lockUsercodeService: config11.lockUsercodeService,
|
|
@@ -132782,7 +132785,8 @@ WARNING: ${includeIdentity ? "This backup contains sensitive Matter identity dat
|
|
|
132782
132785
|
customServiceAreas: config11.customServiceAreas,
|
|
132783
132786
|
customFanSpeedTags: config11.customFanSpeedTags,
|
|
132784
132787
|
fanWindPresets: config11.fanWindPresets,
|
|
132785
|
-
composedEntities: config11.composedEntities
|
|
132788
|
+
composedEntities: config11.composedEntities,
|
|
132789
|
+
disableMomentaryFlip: config11.disableMomentaryFlip
|
|
132786
132790
|
});
|
|
132787
132791
|
mappingsRestored++;
|
|
132788
132792
|
}
|
|
@@ -133607,6 +133611,7 @@ function entityMappingApi(mappingStorage) {
|
|
|
133607
133611
|
humidityEntity: body.humidityEntity,
|
|
133608
133612
|
pressureEntity: body.pressureEntity,
|
|
133609
133613
|
batteryEntity: body.batteryEntity,
|
|
133614
|
+
disableBatteryMapping: body.disableBatteryMapping,
|
|
133610
133615
|
chargingStateEntity: body.chargingStateEntity,
|
|
133611
133616
|
roomEntities: body.roomEntities,
|
|
133612
133617
|
disableLockPin: body.disableLockPin,
|
|
@@ -133638,7 +133643,8 @@ function entityMappingApi(mappingStorage) {
|
|
|
133638
133643
|
climateKeepModeOnIdle: body.climateKeepModeOnIdle,
|
|
133639
133644
|
climateExposeFan: body.climateExposeFan,
|
|
133640
133645
|
climateAutoMode: body.climateAutoMode,
|
|
133641
|
-
composedEntities: body.composedEntities
|
|
133646
|
+
composedEntities: body.composedEntities,
|
|
133647
|
+
disableMomentaryFlip: body.disableMomentaryFlip
|
|
133642
133648
|
};
|
|
133643
133649
|
const config11 = await mappingStorage.setMapping(request);
|
|
133644
133650
|
res.status(200).json(config11);
|
|
@@ -134102,6 +134108,7 @@ function configToProfileEntry(config11) {
|
|
|
134102
134108
|
humidityEntity: config11.humidityEntity,
|
|
134103
134109
|
pressureEntity: config11.pressureEntity,
|
|
134104
134110
|
batteryEntity: config11.batteryEntity,
|
|
134111
|
+
disableBatteryMapping: config11.disableBatteryMapping,
|
|
134105
134112
|
roomEntities: config11.roomEntities,
|
|
134106
134113
|
disableLockPin: config11.disableLockPin,
|
|
134107
134114
|
lockUsercodeService: config11.lockUsercodeService,
|
|
@@ -134123,7 +134130,8 @@ function configToProfileEntry(config11) {
|
|
|
134123
134130
|
disableClimateFanControl: config11.disableClimateFanControl,
|
|
134124
134131
|
climateKeepModeOnIdle: config11.climateKeepModeOnIdle,
|
|
134125
134132
|
climateExposeFan: config11.climateExposeFan,
|
|
134126
|
-
climateAutoMode: config11.climateAutoMode
|
|
134133
|
+
climateAutoMode: config11.climateAutoMode,
|
|
134134
|
+
disableMomentaryFlip: config11.disableMomentaryFlip
|
|
134127
134135
|
};
|
|
134128
134136
|
}
|
|
134129
134137
|
function mappingProfileApi(mappingStorage) {
|
|
@@ -134235,6 +134243,7 @@ function mappingProfileApi(mappingStorage) {
|
|
|
134235
134243
|
humidityEntity: entry.humidityEntity,
|
|
134236
134244
|
pressureEntity: entry.pressureEntity,
|
|
134237
134245
|
batteryEntity: entry.batteryEntity,
|
|
134246
|
+
disableBatteryMapping: entry.disableBatteryMapping,
|
|
134238
134247
|
roomEntities: entry.roomEntities,
|
|
134239
134248
|
disableLockPin: entry.disableLockPin,
|
|
134240
134249
|
lockUsercodeService: entry.lockUsercodeService,
|
|
@@ -134256,7 +134265,8 @@ function mappingProfileApi(mappingStorage) {
|
|
|
134256
134265
|
disableClimateFanControl: entry.disableClimateFanControl,
|
|
134257
134266
|
climateKeepModeOnIdle: entry.climateKeepModeOnIdle,
|
|
134258
134267
|
climateExposeFan: entry.climateExposeFan,
|
|
134259
|
-
climateAutoMode: entry.climateAutoMode
|
|
134268
|
+
climateAutoMode: entry.climateAutoMode,
|
|
134269
|
+
disableMomentaryFlip: entry.disableMomentaryFlip
|
|
134260
134270
|
});
|
|
134261
134271
|
applied++;
|
|
134262
134272
|
} catch (e) {
|
|
@@ -138435,6 +138445,7 @@ var EntityMappingStorage = class extends Service {
|
|
|
138435
138445
|
temperatureEntity: request.temperatureEntity?.trim() || void 0,
|
|
138436
138446
|
humidityEntity: request.humidityEntity?.trim() || void 0,
|
|
138437
138447
|
batteryEntity: request.batteryEntity?.trim() || void 0,
|
|
138448
|
+
disableBatteryMapping: request.disableBatteryMapping || void 0,
|
|
138438
138449
|
chargingStateEntity: request.chargingStateEntity?.trim() || void 0,
|
|
138439
138450
|
roomEntities: roomEntities.length > 0 ? roomEntities : void 0,
|
|
138440
138451
|
disableLockPin: request.disableLockPin || void 0,
|
|
@@ -138469,9 +138480,10 @@ var EntityMappingStorage = class extends Service {
|
|
|
138469
138480
|
climateKeepModeOnIdle: request.climateKeepModeOnIdle || void 0,
|
|
138470
138481
|
climateExposeFan: request.climateExposeFan || void 0,
|
|
138471
138482
|
climateAutoMode: request.climateAutoMode || void 0,
|
|
138472
|
-
composedEntities: request.composedEntities?.filter((e) => e.entityId?.trim()) ?? void 0
|
|
138483
|
+
composedEntities: request.composedEntities?.filter((e) => e.entityId?.trim()) ?? void 0,
|
|
138484
|
+
disableMomentaryFlip: request.disableMomentaryFlip || void 0
|
|
138473
138485
|
};
|
|
138474
|
-
if (!config11.matterDeviceType && !config11.customName && !config11.customProductName && !config11.customVendorName && !config11.customSerialNumber && config11.customVendorId === void 0 && config11.disabled !== true && !config11.filterLifeEntity && !config11.cleaningModeEntity && !config11.temperatureEntity && !config11.humidityEntity && !config11.batteryEntity && !config11.chargingStateEntity && !config11.roomEntities && !config11.disableLockPin && !config11.lockUsercodeService && config11.lockUsercodeSlot === void 0 && config11.lockPinMinLength === void 0 && config11.lockPinMaxLength === void 0 && !config11.powerEntity && !config11.energyEntity && !config11.pressureEntity && !config11.suctionLevelEntity && !config11.mopIntensityEntity && (!config11.customServiceAreas || config11.customServiceAreas.length === 0) && (!config11.customFanSpeedTags || Object.keys(config11.customFanSpeedTags).length === 0) && (!config11.fanWindPresets || (config11.fanWindPresets.natural?.length ?? 0) === 0 && (config11.fanWindPresets.sleep?.length ?? 0) === 0) && !config11.fanRestoreSpeedOnPowerOn && !config11.currentRoomEntity && !config11.cleanedAreaEntity && !config11.disableCustomAreaRoomModes && !config11.valetudoIdentifier && !config11.coverSwapOpenClose && !config11.coverExposeAsDimmableLight && !config11.selectExposeAsSwitch && !config11.selectSwitchOnOption && !config11.selectSwitchOffOption && !config11.coverSliderDebounceMs && !config11.updateThrottleMs && !config11.disableClimateOnOff && !config11.disableClimateFanControl && !config11.climateKeepModeOnIdle && !config11.climateExposeFan && !config11.climateAutoMode && (!config11.composedEntities || config11.composedEntities.length === 0)) {
|
|
138486
|
+
if (!config11.matterDeviceType && !config11.customName && !config11.customProductName && !config11.customVendorName && !config11.customSerialNumber && config11.customVendorId === void 0 && config11.disabled !== true && !config11.filterLifeEntity && !config11.cleaningModeEntity && !config11.temperatureEntity && !config11.humidityEntity && !config11.batteryEntity && !config11.disableBatteryMapping && !config11.chargingStateEntity && !config11.roomEntities && !config11.disableLockPin && !config11.lockUsercodeService && config11.lockUsercodeSlot === void 0 && config11.lockPinMinLength === void 0 && config11.lockPinMaxLength === void 0 && !config11.powerEntity && !config11.energyEntity && !config11.pressureEntity && !config11.suctionLevelEntity && !config11.mopIntensityEntity && (!config11.customServiceAreas || config11.customServiceAreas.length === 0) && (!config11.customFanSpeedTags || Object.keys(config11.customFanSpeedTags).length === 0) && (!config11.fanWindPresets || (config11.fanWindPresets.natural?.length ?? 0) === 0 && (config11.fanWindPresets.sleep?.length ?? 0) === 0) && !config11.fanRestoreSpeedOnPowerOn && !config11.currentRoomEntity && !config11.cleanedAreaEntity && !config11.disableCustomAreaRoomModes && !config11.valetudoIdentifier && !config11.coverSwapOpenClose && !config11.coverExposeAsDimmableLight && !config11.selectExposeAsSwitch && !config11.selectSwitchOnOption && !config11.selectSwitchOffOption && !config11.coverSliderDebounceMs && !config11.updateThrottleMs && !config11.disableClimateOnOff && !config11.disableClimateFanControl && !config11.climateKeepModeOnIdle && !config11.climateExposeFan && !config11.climateAutoMode && (!config11.composedEntities || config11.composedEntities.length === 0) && !config11.disableMomentaryFlip) {
|
|
138475
138487
|
bridgeMap.delete(request.entityId);
|
|
138476
138488
|
} else {
|
|
138477
138489
|
bridgeMap.set(request.entityId, config11);
|
|
@@ -156992,7 +157004,9 @@ function createEndpointId(entityId, customName) {
|
|
|
156992
157004
|
function getMappedEntityIds(mapping) {
|
|
156993
157005
|
if (!mapping) return [];
|
|
156994
157006
|
const ids = [];
|
|
156995
|
-
if (mapping.batteryEntity
|
|
157007
|
+
if (mapping.batteryEntity && !mapping.disableBatteryMapping) {
|
|
157008
|
+
ids.push(mapping.batteryEntity);
|
|
157009
|
+
}
|
|
156996
157010
|
if (mapping.faultEntity) ids.push(mapping.faultEntity);
|
|
156997
157011
|
if (mapping.chargingStateEntity) ids.push(mapping.chargingStateEntity);
|
|
156998
157012
|
if (mapping.temperatureEntity) ids.push(mapping.temperatureEntity);
|
|
@@ -157683,6 +157697,9 @@ function PowerSourceServer2(config11) {
|
|
|
157683
157697
|
var defaultBatteryConfig = {
|
|
157684
157698
|
getBatteryPercent: (entity, agent) => {
|
|
157685
157699
|
const homeAssistant = agent.get(HomeAssistantEntityBehavior);
|
|
157700
|
+
if (homeAssistant.state.mapping?.disableBatteryMapping) {
|
|
157701
|
+
return null;
|
|
157702
|
+
}
|
|
157686
157703
|
const batteryEntity = homeAssistant.state.mapping?.batteryEntity;
|
|
157687
157704
|
if (batteryEntity) {
|
|
157688
157705
|
const stateProvider = agent.env.get(EntityStateProvider);
|
|
@@ -158270,20 +158287,25 @@ var OnOffServerBase = class extends OnOffServer {
|
|
|
158270
158287
|
}
|
|
158271
158288
|
const homeAssistant = this.agent.get(HomeAssistantEntityBehavior);
|
|
158272
158289
|
const action = turnOn ? turnOn(void 0, this.agent) : defaultOnOffAction(homeAssistant.entityId, true);
|
|
158273
|
-
|
|
158290
|
+
const skipMomentaryFlip = turnOff === null && homeAssistant.state.mapping?.disableMomentaryFlip;
|
|
158291
|
+
if (!skipMomentaryFlip) {
|
|
158292
|
+
applyPatchState(this.state, { onOff: true });
|
|
158293
|
+
}
|
|
158274
158294
|
if (!action) {
|
|
158275
158295
|
return;
|
|
158276
158296
|
}
|
|
158277
158297
|
logger207.info(`[${homeAssistant.entityId}] Turning ON -> ${action.action}`);
|
|
158278
158298
|
notifyLightTurnedOn(homeAssistant.entityId);
|
|
158279
|
-
|
|
158280
|
-
|
|
158281
|
-
|
|
158282
|
-
|
|
158283
|
-
|
|
158284
|
-
|
|
158299
|
+
if (!skipMomentaryFlip) {
|
|
158300
|
+
const now = Date.now();
|
|
158301
|
+
sweepOptimisticOnOff(now);
|
|
158302
|
+
optimisticOnOffState.set(homeAssistant.entityId, {
|
|
158303
|
+
expectedOnOff: true,
|
|
158304
|
+
timestamp: now
|
|
158305
|
+
});
|
|
158306
|
+
}
|
|
158285
158307
|
homeAssistant.callAction(action);
|
|
158286
|
-
if (turnOff === null) {
|
|
158308
|
+
if (turnOff === null && !skipMomentaryFlip) {
|
|
158287
158309
|
setTimeout(this.callback(this.autoReset), 1e3);
|
|
158288
158310
|
}
|
|
158289
158311
|
}
|
|
@@ -161532,6 +161554,9 @@ init_nodejs();
|
|
|
161532
161554
|
init_home_assistant_entity_behavior();
|
|
161533
161555
|
function getBatteryPercent(entity, agent) {
|
|
161534
161556
|
const homeAssistant = agent.get(HomeAssistantEntityBehavior);
|
|
161557
|
+
if (homeAssistant.state.mapping?.disableBatteryMapping) {
|
|
161558
|
+
return null;
|
|
161559
|
+
}
|
|
161535
161560
|
const batteryEntity = homeAssistant.state.mapping?.batteryEntity;
|
|
161536
161561
|
if (batteryEntity) {
|
|
161537
161562
|
const stateProvider = agent.env.get(EntityStateProvider);
|
|
@@ -161754,6 +161779,9 @@ var ButtonOnOffServerBase = class extends OnOffServer {
|
|
|
161754
161779
|
on() {
|
|
161755
161780
|
const homeAssistant = this.agent.get(HomeAssistantEntityBehavior);
|
|
161756
161781
|
homeAssistant.callAction({ action: "button.press" });
|
|
161782
|
+
if (homeAssistant.state.mapping?.disableMomentaryFlip) {
|
|
161783
|
+
return;
|
|
161784
|
+
}
|
|
161757
161785
|
setTimeout(this.callback(this.resetToOff), 1e3);
|
|
161758
161786
|
}
|
|
161759
161787
|
off() {
|
|
@@ -168740,7 +168768,9 @@ init_dist();
|
|
|
168740
168768
|
// src/matter/endpoints/legacy/vacuum/behaviors/vacuum-battery.ts
|
|
168741
168769
|
init_home_assistant_entity_behavior();
|
|
168742
168770
|
function getVacuumBatteryPercent(entity, agent) {
|
|
168743
|
-
const
|
|
168771
|
+
const mapping = agent.get(HomeAssistantEntityBehavior).state.mapping;
|
|
168772
|
+
if (mapping?.disableBatteryMapping) return null;
|
|
168773
|
+
const mapped = mapping?.batteryEntity;
|
|
168744
168774
|
if (mapped) {
|
|
168745
168775
|
const battery = agent.env.get(EntityStateProvider).getBatteryPercent(mapped);
|
|
168746
168776
|
if (battery != null) return Math.max(0, Math.min(100, battery));
|
|
@@ -169931,6 +169961,16 @@ function WeatherDevice(homeAssistant) {
|
|
|
169931
169961
|
// src/matter/endpoints/legacy/create-legacy-endpoint-type.ts
|
|
169932
169962
|
var legacyLogger = Logger.get("LegacyEndpointType");
|
|
169933
169963
|
function createLegacyEndpointType(entity, mapping, areaName, options) {
|
|
169964
|
+
if (mapping?.disableBatteryMapping) {
|
|
169965
|
+
entity = {
|
|
169966
|
+
...entity,
|
|
169967
|
+
state: {
|
|
169968
|
+
...entity.state,
|
|
169969
|
+
attributes: stripBatteryAttributes(entity.state.attributes)
|
|
169970
|
+
}
|
|
169971
|
+
};
|
|
169972
|
+
mapping = { ...mapping, batteryEntity: void 0 };
|
|
169973
|
+
}
|
|
169934
169974
|
const domain = entity.entity_id.split(".")[0];
|
|
169935
169975
|
const customName = mapping?.customName;
|
|
169936
169976
|
let type;
|
|
@@ -169994,6 +170034,12 @@ function addFixedLabel(type, areaName) {
|
|
|
169994
170034
|
function hasPowerSource(type) {
|
|
169995
170035
|
return "powerSource" in type.behaviors;
|
|
169996
170036
|
}
|
|
170037
|
+
function stripBatteryAttributes(attributes9) {
|
|
170038
|
+
const stripped = { ...attributes9 };
|
|
170039
|
+
delete stripped.battery;
|
|
170040
|
+
delete stripped.battery_level;
|
|
170041
|
+
return stripped;
|
|
170042
|
+
}
|
|
169997
170043
|
function addPowerSource(type) {
|
|
169998
170044
|
const mutable = type;
|
|
169999
170045
|
if (typeof mutable.with === "function") {
|
|
@@ -170136,14 +170182,15 @@ var UserComposedEndpoint = class _UserComposedEndpoint extends Endpoint {
|
|
|
170136
170182
|
})
|
|
170137
170183
|
);
|
|
170138
170184
|
}
|
|
170139
|
-
|
|
170185
|
+
const hasParentBattery = !!config11.mapping?.batteryEntity && !config11.mapping?.disableBatteryMapping;
|
|
170186
|
+
if (hasParentBattery) {
|
|
170140
170187
|
parentType = parentType.with(DefaultPowerSourceServer);
|
|
170141
170188
|
}
|
|
170142
170189
|
const endpointId = createEndpointId5(primaryEntityId, config11.customName);
|
|
170143
170190
|
const parts = [];
|
|
170144
170191
|
const subEndpointMap = /* @__PURE__ */ new Map();
|
|
170145
170192
|
const mappedIds = [];
|
|
170146
|
-
if (config11.mapping?.batteryEntity) {
|
|
170193
|
+
if (hasParentBattery && config11.mapping?.batteryEntity) {
|
|
170147
170194
|
mappedIds.push(config11.mapping.batteryEntity);
|
|
170148
170195
|
}
|
|
170149
170196
|
let primaryMapping = config11.mapping;
|
|
@@ -170411,7 +170458,7 @@ var LegacyEndpoint = class _LegacyEndpoint extends EntityEndpoint {
|
|
|
170411
170458
|
}
|
|
170412
170459
|
}
|
|
170413
170460
|
const isVacuum = entityId.startsWith("vacuum.");
|
|
170414
|
-
if ((registry2.isAutoBatteryMappingEnabled() || isVacuum) && !mapping?.batteryEntity) {
|
|
170461
|
+
if ((registry2.isAutoBatteryMappingEnabled() || isVacuum) && !mapping?.batteryEntity && !mapping?.disableBatteryMapping) {
|
|
170415
170462
|
const batteryEntityId = registry2.findBatteryEntityForDevice(
|
|
170416
170463
|
entity.device_id
|
|
170417
170464
|
);
|
|
@@ -170610,7 +170657,7 @@ var LegacyEndpoint = class _LegacyEndpoint extends EntityEndpoint {
|
|
|
170610
170657
|
primaryEntityId: entityId,
|
|
170611
170658
|
humidityEntityId: effectiveMapping?.humidityEntity,
|
|
170612
170659
|
pressureEntityId: effectiveMapping?.pressureEntity,
|
|
170613
|
-
batteryEntityId: effectiveMapping?.batteryEntity,
|
|
170660
|
+
batteryEntityId: effectiveMapping?.disableBatteryMapping ? void 0 : effectiveMapping?.batteryEntity,
|
|
170614
170661
|
powerEntityId: effectiveMapping?.powerEntity,
|
|
170615
170662
|
energyEntityId: effectiveMapping?.energyEntity,
|
|
170616
170663
|
customName: effectiveMapping?.customName,
|
|
@@ -170629,7 +170676,7 @@ var LegacyEndpoint = class _LegacyEndpoint extends EntityEndpoint {
|
|
|
170629
170676
|
primaryEntityId: entityId,
|
|
170630
170677
|
temperatureEntityId,
|
|
170631
170678
|
humidityEntityId,
|
|
170632
|
-
batteryEntityId: effectiveMapping?.batteryEntity,
|
|
170679
|
+
batteryEntityId: effectiveMapping?.disableBatteryMapping ? void 0 : effectiveMapping?.batteryEntity,
|
|
170633
170680
|
powerEntityId: effectiveMapping?.powerEntity,
|
|
170634
170681
|
energyEntityId: effectiveMapping?.energyEntity,
|
|
170635
170682
|
mapping: effectiveMapping,
|
|
@@ -173866,11 +173913,14 @@ var ServerModeVacuumEndpoint = class _ServerModeVacuumEndpoint extends EntityEnd
|
|
|
173866
173913
|
return void 0;
|
|
173867
173914
|
}
|
|
173868
173915
|
let effectiveMapping = mapping;
|
|
173916
|
+
if (mapping?.disableBatteryMapping && mapping.batteryEntity) {
|
|
173917
|
+
effectiveMapping = { ...mapping, batteryEntity: void 0 };
|
|
173918
|
+
}
|
|
173869
173919
|
logger243.info(
|
|
173870
173920
|
`${entityId}: device_id=${entity.device_id}, manualBattery=${mapping?.batteryEntity ?? "none"}`
|
|
173871
173921
|
);
|
|
173872
173922
|
if (entity.device_id) {
|
|
173873
|
-
if (!mapping?.batteryEntity) {
|
|
173923
|
+
if (!mapping?.batteryEntity && !mapping?.disableBatteryMapping) {
|
|
173874
173924
|
const batteryEntityId = registry2.findBatteryEntityForDevice(
|
|
173875
173925
|
entity.device_id
|
|
173876
173926
|
);
|