@riddix/hamh 2.1.0-alpha.483 → 2.1.0-alpha.484

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.
@@ -166823,6 +166823,25 @@ var EntityStateProvider = class extends Service {
166823
166823
  }
166824
166824
  return value;
166825
166825
  }
166826
+ /**
166827
+ * Get battery percentage from a battery entity.
166828
+ * Handles both numeric sensors (e.g. sensor.battery → "25.0" → 25)
166829
+ * and binary sensors (e.g. binary_sensor.battery → off=100%, on=0%).
166830
+ * In HA, binary_sensor with device_class=battery uses on=low battery.
166831
+ */
166832
+ getBatteryPercent(entityId) {
166833
+ const state = this.getState(entityId);
166834
+ if (!state) {
166835
+ return null;
166836
+ }
166837
+ const numericValue = Number.parseFloat(state.state);
166838
+ if (!Number.isNaN(numericValue)) {
166839
+ return numericValue;
166840
+ }
166841
+ if (state.state === "off") return 100;
166842
+ if (state.state === "on") return 0;
166843
+ return null;
166844
+ }
166826
166845
  };
166827
166846
 
166828
166847
  // src/utils/converters/temperature.ts
@@ -168010,7 +168029,7 @@ var batteryConfig = {
168010
168029
  const batteryEntity = homeAssistant.state.mapping?.batteryEntity;
168011
168030
  if (batteryEntity) {
168012
168031
  const stateProvider = agent.env.get(EntityStateProvider);
168013
- const battery = stateProvider.getNumericState(batteryEntity);
168032
+ const battery = stateProvider.getBatteryPercent(batteryEntity);
168014
168033
  if (battery != null) return Math.max(0, Math.min(100, battery));
168015
168034
  }
168016
168035
  return null;
@@ -168310,7 +168329,7 @@ var batteryConfig2 = {
168310
168329
  const batteryEntity = homeAssistant.state.mapping?.batteryEntity;
168311
168330
  if (batteryEntity) {
168312
168331
  const stateProvider = agent.env.get(EntityStateProvider);
168313
- const battery = stateProvider.getNumericState(batteryEntity);
168332
+ const battery = stateProvider.getBatteryPercent(batteryEntity);
168314
168333
  if (battery != null) return Math.max(0, Math.min(100, battery));
168315
168334
  }
168316
168335
  return null;
@@ -168876,7 +168895,7 @@ var ContactSensorWithBatteryType = ContactSensorDevice.with(
168876
168895
  const batteryEntity = homeAssistant.state.mapping?.batteryEntity;
168877
168896
  if (batteryEntity) {
168878
168897
  const stateProvider = agent.env.get(EntityStateProvider);
168879
- const battery = stateProvider.getNumericState(batteryEntity);
168898
+ const battery = stateProvider.getBatteryPercent(batteryEntity);
168880
168899
  if (battery != null) {
168881
168900
  return Math.max(0, Math.min(100, battery));
168882
168901
  }
@@ -168944,7 +168963,7 @@ var MotionSensorWithBatteryType = OccupancySensorDevice.with(
168944
168963
  const batteryEntity = homeAssistant.state.mapping?.batteryEntity;
168945
168964
  if (batteryEntity) {
168946
168965
  const stateProvider = agent.env.get(EntityStateProvider);
168947
- const battery = stateProvider.getNumericState(batteryEntity);
168966
+ const battery = stateProvider.getBatteryPercent(batteryEntity);
168948
168967
  if (battery != null) {
168949
168968
  return Math.max(0, Math.min(100, battery));
168950
168969
  }
@@ -169012,7 +169031,7 @@ var OccupancySensorWithBatteryType = OccupancySensorDevice.with(
169012
169031
  const batteryEntity = homeAssistant.state.mapping?.batteryEntity;
169013
169032
  if (batteryEntity) {
169014
169033
  const stateProvider = agent.env.get(EntityStateProvider);
169015
- const battery = stateProvider.getNumericState(batteryEntity);
169034
+ const battery = stateProvider.getBatteryPercent(batteryEntity);
169016
169035
  if (battery != null) {
169017
169036
  return Math.max(0, Math.min(100, battery));
169018
169037
  }
@@ -169050,7 +169069,7 @@ var OnOffSensorWithBatteryType = OnOffSensorDevice.with(
169050
169069
  const batteryEntity = homeAssistant.state.mapping?.batteryEntity;
169051
169070
  if (batteryEntity) {
169052
169071
  const stateProvider = agent.env.get(EntityStateProvider);
169053
- const battery = stateProvider.getNumericState(batteryEntity);
169072
+ const battery = stateProvider.getBatteryPercent(batteryEntity);
169054
169073
  if (battery != null) {
169055
169074
  return Math.max(0, Math.min(100, battery));
169056
169075
  }
@@ -169106,7 +169125,7 @@ var AlarmPowerSourceServer = PowerSourceServer2({
169106
169125
  const batteryEntity = homeAssistant.state.mapping?.batteryEntity;
169107
169126
  if (batteryEntity) {
169108
169127
  const stateProvider = agent.env.get(EntityStateProvider);
169109
- const battery = stateProvider.getNumericState(batteryEntity);
169128
+ const battery = stateProvider.getBatteryPercent(batteryEntity);
169110
169129
  if (battery != null) {
169111
169130
  return Math.max(0, Math.min(100, battery));
169112
169131
  }
@@ -170111,7 +170130,7 @@ var ClimatePowerSourceServer = PowerSourceServer2({
170111
170130
  const batteryEntity = homeAssistant.state.mapping?.batteryEntity;
170112
170131
  if (batteryEntity) {
170113
170132
  const stateProvider = agent.env.get(EntityStateProvider);
170114
- const battery = stateProvider.getNumericState(batteryEntity);
170133
+ const battery = stateProvider.getBatteryPercent(batteryEntity);
170115
170134
  if (battery != null) {
170116
170135
  return Math.max(0, Math.min(100, battery));
170117
170136
  }
@@ -170710,7 +170729,7 @@ var CoverPowerSourceServer = PowerSourceServer2({
170710
170729
  const batteryEntity = homeAssistant.state.mapping?.batteryEntity;
170711
170730
  if (batteryEntity) {
170712
170731
  const stateProvider = agent.env.get(EntityStateProvider);
170713
- const battery = stateProvider.getNumericState(batteryEntity);
170732
+ const battery = stateProvider.getBatteryPercent(batteryEntity);
170714
170733
  if (battery != null) {
170715
170734
  return Math.max(0, Math.min(100, battery));
170716
170735
  }
@@ -170884,7 +170903,7 @@ var FanPowerSourceServer = PowerSourceServer2({
170884
170903
  const batteryEntity = homeAssistant.state.mapping?.batteryEntity;
170885
170904
  if (batteryEntity) {
170886
170905
  const stateProvider = agent.env.get(EntityStateProvider);
170887
- const battery = stateProvider.getNumericState(batteryEntity);
170906
+ const battery = stateProvider.getBatteryPercent(batteryEntity);
170888
170907
  if (battery != null) {
170889
170908
  return Math.max(0, Math.min(100, battery));
170890
170909
  }
@@ -171482,7 +171501,7 @@ var LightPowerSourceServer = PowerSourceServer2({
171482
171501
  const batteryEntity = homeAssistant.state.mapping?.batteryEntity;
171483
171502
  if (batteryEntity) {
171484
171503
  const stateProvider = agent.env.get(EntityStateProvider);
171485
- const battery = stateProvider.getNumericState(batteryEntity);
171504
+ const battery = stateProvider.getBatteryPercent(batteryEntity);
171486
171505
  if (battery != null) {
171487
171506
  return Math.max(0, Math.min(100, battery));
171488
171507
  }
@@ -171519,7 +171538,7 @@ var LightPowerSourceServer2 = PowerSourceServer2({
171519
171538
  const batteryEntity = homeAssistant.state.mapping?.batteryEntity;
171520
171539
  if (batteryEntity) {
171521
171540
  const stateProvider = agent.env.get(EntityStateProvider);
171522
- const battery = stateProvider.getNumericState(batteryEntity);
171541
+ const battery = stateProvider.getBatteryPercent(batteryEntity);
171523
171542
  if (battery != null) {
171524
171543
  return Math.max(0, Math.min(100, battery));
171525
171544
  }
@@ -171569,7 +171588,7 @@ var LightPowerSourceServer3 = PowerSourceServer2({
171569
171588
  const batteryEntity = homeAssistant.state.mapping?.batteryEntity;
171570
171589
  if (batteryEntity) {
171571
171590
  const stateProvider = agent.env.get(EntityStateProvider);
171572
- const battery = stateProvider.getNumericState(batteryEntity);
171591
+ const battery = stateProvider.getBatteryPercent(batteryEntity);
171573
171592
  if (battery != null) {
171574
171593
  return Math.max(0, Math.min(100, battery));
171575
171594
  }
@@ -172290,7 +172309,7 @@ var LockPowerSourceServer = PowerSourceServer2({
172290
172309
  const batteryEntity = homeAssistant.state.mapping?.batteryEntity;
172291
172310
  if (batteryEntity) {
172292
172311
  const stateProvider = agent.env.get(EntityStateProvider);
172293
- const battery = stateProvider.getNumericState(batteryEntity);
172312
+ const battery = stateProvider.getBatteryPercent(batteryEntity);
172294
172313
  if (battery != null) {
172295
172314
  return Math.max(0, Math.min(100, battery));
172296
172315
  }
@@ -173981,7 +174000,7 @@ var batteryConfig3 = {
173981
174000
  const batteryEntity = homeAssistant.state.mapping?.batteryEntity;
173982
174001
  if (batteryEntity) {
173983
174002
  const stateProvider = agent.env.get(EntityStateProvider);
173984
- const battery = stateProvider.getNumericState(batteryEntity);
174003
+ const battery = stateProvider.getBatteryPercent(batteryEntity);
173985
174004
  if (battery != null) {
173986
174005
  return Math.max(0, Math.min(100, battery));
173987
174006
  }
@@ -174479,7 +174498,7 @@ var batteryConfig4 = {
174479
174498
  const batteryEntity = homeAssistant.state.mapping?.batteryEntity;
174480
174499
  if (batteryEntity) {
174481
174500
  const stateProvider = agent.env.get(EntityStateProvider);
174482
- const battery = stateProvider.getNumericState(batteryEntity);
174501
+ const battery = stateProvider.getBatteryPercent(batteryEntity);
174483
174502
  if (battery != null) {
174484
174503
  return Math.max(0, Math.min(100, battery));
174485
174504
  }
@@ -174561,7 +174580,7 @@ var batteryConfig5 = {
174561
174580
  const batteryEntity = homeAssistant.state.mapping?.batteryEntity;
174562
174581
  if (batteryEntity) {
174563
174582
  const stateProvider = agent.env.get(EntityStateProvider);
174564
- const battery = stateProvider.getNumericState(batteryEntity);
174583
+ const battery = stateProvider.getBatteryPercent(batteryEntity);
174565
174584
  if (battery != null) {
174566
174585
  return Math.max(0, Math.min(100, battery));
174567
174586
  }
@@ -174706,7 +174725,7 @@ var SwitchWithBatteryEndpointType = OnOffPlugInUnitDevice.with(
174706
174725
  const batteryEntity = homeAssistant.state.mapping?.batteryEntity;
174707
174726
  if (batteryEntity) {
174708
174727
  const stateProvider = agent.env.get(EntityStateProvider);
174709
- const battery = stateProvider.getNumericState(batteryEntity);
174728
+ const battery = stateProvider.getBatteryPercent(batteryEntity);
174710
174729
  if (battery != null) {
174711
174730
  return Math.max(0, Math.min(100, battery));
174712
174731
  }
@@ -175708,7 +175727,7 @@ var VacuumPowerSourceServer = PowerSourceServer2({
175708
175727
  const batteryEntity = homeAssistant.state.mapping?.batteryEntity;
175709
175728
  if (batteryEntity) {
175710
175729
  const stateProvider = agent.env.get(EntityStateProvider);
175711
- const battery = stateProvider.getNumericState(batteryEntity);
175730
+ const battery = stateProvider.getBatteryPercent(batteryEntity);
175712
175731
  if (battery != null) {
175713
175732
  return Math.max(0, Math.min(100, battery));
175714
175733
  }
@@ -178173,6 +178192,16 @@ var BridgeRegistry = class _BridgeRegistry {
178173
178192
  return entity.entity_id;
178174
178193
  }
178175
178194
  }
178195
+ for (const entity of sameDevice) {
178196
+ if (!entity.entity_id.startsWith("binary_sensor.")) continue;
178197
+ const state = this.registry.states[entity.entity_id];
178198
+ if (!state) continue;
178199
+ const attrs = state.attributes;
178200
+ if (attrs.device_class === "battery") {
178201
+ this._batteryEntityCache.set(deviceId, entity.entity_id);
178202
+ return entity.entity_id;
178203
+ }
178204
+ }
178176
178205
  this._batteryEntityCache.set(deviceId, null);
178177
178206
  return void 0;
178178
178207
  }
@@ -178636,6 +178665,13 @@ var BridgeRegistry = class _BridgeRegistry {
178636
178665
  if (attrs.device_class === SensorDeviceClass.battery) continue;
178637
178666
  }
178638
178667
  }
178668
+ if (entity.entity_id.startsWith("binary_sensor.")) {
178669
+ const state = this._states[entity.entity_id];
178670
+ if (state) {
178671
+ const attrs = state.attributes;
178672
+ if (attrs.device_class === "battery") continue;
178673
+ }
178674
+ }
178639
178675
  const batteryEntityId = this.findBatteryEntityForDevice(
178640
178676
  entity.device_id
178641
178677
  );