From 61109f7887cdfceef58b43008d6da1e85076c86d Mon Sep 17 00:00:00 2001 From: Tediore Date: Mon, 16 Aug 2021 15:07:48 -0500 Subject: [PATCH] Minor fixes and add AC adapter monitoring --- .gitignore | 2 ++ battery2mqtt.py | 36 +++++++++++++++++++++++------------- 2 files changed, 25 insertions(+), 13 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f4a5388 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +battery2mqttv2.py +battery2mqttAC.py diff --git a/battery2mqtt.py b/battery2mqtt.py index a774fff..3969915 100644 --- a/battery2mqtt.py +++ b/battery2mqtt.py @@ -1,5 +1,6 @@ import os import json +from sys import int_info from time import sleep import paho.mqtt.client as mqtt @@ -11,9 +12,10 @@ MQTT_QOS = int(os.getenv('MQTT_QOS', 1)) MQTT_TOPIC = os.getenv('MQTT_TOPIC', 'server') INTERVAL = int(os.getenv('INTERVAL', 60)) MONITORED_CONDITIONS = os.environ.get('MONITORED_CONDITIONS','status,capacity,energy_now,energy_full,energy_full_design,power_now,voltage_now') -SHOW_UNITS = os.getenv('SHOW_UNITS', 1) -BATTERY_HEALTH = os.getenv('BATTERY_HEALTH', 1) -TIME_REMAINING = os.getenv('TIME_REMAINING', 1) +SHOW_UNITS = int(os.getenv('SHOW_UNITS', 1)) +BATTERY_HEALTH = int(os.getenv('BATTERY_HEALTH', 1)) +TIME_REMAINING = int(os.getenv('TIME_REMAINING', 1)) +AC_ADAPTER = int(os.getenv('AC_ADAPTER', 1)) client = mqtt.Client("battery2mqtt") client.username_pw_set(MQTT_USER, MQTT_PASSWORD) @@ -30,6 +32,14 @@ time_remaining = {} while True: for dir in dirs: + if AC_ADAPTER == 1: + if dir.startswith('AC'): + try: + with open(path + dir + '/online', 'r') as file: + payload['ac_adapter'] = 'online' if int(file.read()) == 1 else 'offline' + except: + pass + for name in monitored_conditions: try: with open(path + dir + '/' + name, 'r') as file: @@ -37,13 +47,13 @@ while True: payload[name] = int(file.read().replace('\n','')) elif name.startswith('voltage') or name.startswith('energy') or name.startswith('power'): if name.startswith('voltage'): - unit = ' V' if SHOW_UNITS == '1' else '' + unit = ' V' if SHOW_UNITS == 1 else '' elif name.startswith('energy'): - unit = ' Wh' if SHOW_UNITS == '1' else '' + unit = ' Wh' if SHOW_UNITS == 1 else '' else: - unit = ' W' if SHOW_UNITS == '1' else '' + unit = ' W' if SHOW_UNITS == 1 else '' - if SHOW_UNITS == '1': + if SHOW_UNITS == 1: payload[name] = str(round(float(file.read().replace('\n','')) / 1000000,2)) + unit else: payload[name] = round(float(file.read().replace('\n','')) / 1000000,2) @@ -52,26 +62,26 @@ while True: except: payload[name] = "condition not found" - if BATTERY_HEALTH == '1': - unit = ' %' if SHOW_UNITS == '1' else '' + if BATTERY_HEALTH == 1: + unit = ' %' if SHOW_UNITS == 1 else '' try: for name in ['energy_full_design', 'energy_full']: with open(path + dir + '/' + name, 'r') as file: health_calc[name] = int(file.read().replace('\n','')) - if SHOW_UNITS == '1': + if SHOW_UNITS == 1: payload['battery_health'] = str(round((health_calc['energy_full'] / health_calc['energy_full_design']) * 100,2)) + unit else: payload['battery_health'] = round((health_calc['energy_full'] / health_calc['energy_full_design']) * 100,2) except: pass - if TIME_REMAINING == '1': - unit = ' h' if SHOW_UNITS == '1' else '' + if TIME_REMAINING == 1: + unit = ' h' if SHOW_UNITS == 1 else '' try: for name in ['energy_now', 'power_now']: with open(path + dir + '/' + name, 'r') as file: time_remaining[name] = int(file.read().replace('\n','')) - if SHOW_UNITS == '1': + if SHOW_UNITS == 1: payload['time_remaining'] = str(round((time_remaining['energy_now'] / time_remaining['power_now']),2) if round((time_remaining['energy_now'] / time_remaining['power_now']),2) < 24 else '> 24') + unit else: payload['time_remaining'] = round((time_remaining['energy_now'] / time_remaining['power_now']),2) if round((time_remaining['energy_now'] / time_remaining['power_now']),2) < 24 else '> 24'