battery: add battery charger attached sensor

main
Hendrik Sokolowski 2024-04-12 12:18:51 +02:00
parent 2412add32d
commit 051f080f9f
Signed by: hensoko
GPG Key ID: 5C36A01B80BCCC59
1 changed files with 34 additions and 6 deletions

View File

@ -15,13 +15,24 @@ from paho.mqtt.client import Client, MQTTMessage
class BatterySensor():
charging_status = False
level = -1
charger_connected = None
charging_status = None
level = None
charging_entity = None
connected_entity = None
level_entity = None
def __init__(self, device: Device):
# Battery charger connected
charger_connected_info = ha_mqtt_discoverable.sensors.BinarySensorInfo(
name="Battery charger connected",
device=device.get_mqtt_device(),
unique_id=f'{device.get_device_id()}_battery_charger_connected')
charger_connected_settings = ha_mqtt_discoverable.Settings(mqtt=device.get_mqtt_settings(), entity=charger_connected_info, manual_availability=True)
self.connected_entity = ha_mqtt_discoverable.sensors.BinarySensor(charger_connected_settings)
self.connected_entity.set_availability(True)
# Battery charging
battery_charging_info = ha_mqtt_discoverable.sensors.BinarySensorInfo(
name="Battery charging",
@ -49,17 +60,34 @@ class BatterySensor():
logger.warn(f'failed to get battery state')
return
if self.charging_status != blevel.power_plugged:
if blevel.power_plugged:
chc = False
chs = False
if blevel.power_plugged == True:
chc = True
if blevel.secsleft != psutil.POWER_TIME_UNLIMITED and blevel.secsleft != psutil.POWER_TIME_UNKNOWN:
chs = True
elif blevel.power_plugged is None and blevel.secsleft == psutil.POWER_TIME_UNKNOWN:
chc = True
chs = False
if self.charger_connected is None or self.charger_connected != chc:
if chc:
self.connected_entity.on()
else:
self.connected_entity.off()
if self.charging_status is None or self.charging_status != chs:
if chs:
self.charging_entity.on()
else:
self.charging_entity.off()
newLevel = "{:.0f}".format(blevel.percent)
if self.level != newLevel:
if self.level is None or self.level != newLevel:
self.level_entity.set_state(newLevel)
self.charging_status = blevel.power_plugged
self.charging_status = chs
self.charger_connected = chc
self.level = newLevel