battery: add battery charger attached sensor
parent
2412add32d
commit
051f080f9f
|
@ -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
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue