1 """Details about the built-in battery."""
3 from __future__
import annotations
8 from batinfo
import Batteries
9 import voluptuous
as vol
12 PLATFORM_SCHEMA
as SENSOR_PLATFORM_SCHEMA,
22 _LOGGER = logging.getLogger(__name__)
26 ATTR_CAPACITY =
"capacity"
27 ATTR_CAPACITY_LEVEL =
"capacity_level"
28 ATTR_CYCLE_COUNT =
"cycle_count"
29 ATTR_ENERGY_FULL =
"energy_full"
30 ATTR_ENERGY_FULL_DESIGN =
"energy_full_design"
31 ATTR_ENERGY_NOW =
"energy_now"
32 ATTR_MANUFACTURER =
"manufacturer"
33 ATTR_MODEL_NAME =
"model_name"
34 ATTR_POWER_NOW =
"power_now"
35 ATTR_STATUS =
"status"
36 ATTR_VOLTAGE_MIN_DESIGN =
"voltage_min_design"
37 ATTR_VOLTAGE_NOW =
"voltage_now"
39 ATTR_HEALTH =
"health"
40 ATTR_STATUS =
"status"
42 CONF_BATTERY =
"battery"
43 CONF_SYSTEM =
"system"
46 DEFAULT_NAME =
"Battery"
47 DEFAULT_PATH =
"/sys/class/power_supply"
48 DEFAULT_SYSTEM =
"linux"
50 SYSTEMS = [
"android",
"linux"]
52 PLATFORM_SCHEMA = SENSOR_PLATFORM_SCHEMA.extend(
54 vol.Optional(CONF_BATTERY, default=DEFAULT_BATTERY): cv.positive_int,
55 vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
56 vol.Optional(CONF_SYSTEM, default=DEFAULT_SYSTEM): vol.In(SYSTEMS),
64 add_entities: AddEntitiesCallback,
65 discovery_info: DiscoveryInfoType |
None =
None,
67 """Set up the Linux Battery sensor."""
68 name = config.get(CONF_NAME)
69 battery_id = config.get(CONF_BATTERY)
70 system = config.get(CONF_SYSTEM)
73 if system ==
"android":
74 os.listdir(os.path.join(DEFAULT_PATH,
"battery"))
76 os.listdir(os.path.join(DEFAULT_PATH, f
"BAT{battery_id}"))
77 except FileNotFoundError:
78 _LOGGER.error(
"No battery found")
85 """Representation of a Linux Battery sensor."""
87 _attr_device_class = SensorDeviceClass.BATTERY
88 _attr_native_unit_of_measurement = PERCENTAGE
91 """Initialize the battery sensor."""
101 """Return the state attributes of the sensor."""
102 if self.
_system_system ==
"android":
113 ATTR_CAPACITY_LEVEL: self.
_battery_stat_battery_stat.capacity_level,
114 ATTR_CYCLE_COUNT: self.
_battery_stat_battery_stat.cycle_count,
115 ATTR_ENERGY_FULL: self.
_battery_stat_battery_stat.energy_full,
116 ATTR_ENERGY_FULL_DESIGN: self.
_battery_stat_battery_stat.energy_full_design,
118 ATTR_MANUFACTURER: self.
_battery_stat_battery_stat.manufacturer,
121 ATTR_SERIAL_NUMBER: self.
_battery_stat_battery_stat.serial_number,
123 ATTR_VOLTAGE_MIN_DESIGN: self.
_battery_stat_battery_stat.voltage_min_design,
124 ATTR_VOLTAGE_NOW: self.
_battery_stat_battery_stat.voltage_now,
128 """Get the latest data and updates the states."""
def extra_state_attributes(self)
def __init__(self, name, battery_id, system)
def add_entities(account, async_add_entities, tracked)
None setup_platform(HomeAssistant hass, ConfigType config, AddEntitiesCallback add_entities, DiscoveryInfoType|None discovery_info=None)