Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 19 additions & 10 deletions plugins/sources/EVCharger/evcharger.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ def env_vars(config):
if os.environ.get('EVCHARGER_PASSWORD'):
config['server']['password'] = os.environ.get('EVCHARGER_PASSWORD')
if os.environ.get('EVCHARGER_UPDATEFREQ'):
config['behavior']['updateFreq'] = os.environ.get('EVCHARGER_UPDATEFREQ')
config['behavior']['updateFreq'] = os.environ.get(
'EVCHARGER_UPDATEFREQ')
if os.environ.get('EVCHARGER_PREFIX'):
config['behavior']['sensorPrefix'] = os.environ.get('EVCHARGER_PREFIX')

Expand Down Expand Up @@ -62,9 +63,11 @@ def execute(config, add_data, dostop):

# Login & Extract Access-Token
try:
response = session.post(loginurl, data=postdata, timeout=5, verify=verify_tls)
response = session.post(loginurl, data=postdata,
timeout=5, verify=verify_tls)
except requests.exceptions.ConnectTimeout:
logging.fatal(f"Charger not reachable via HTTP: {config.get('server', 'address')}")
logging.fatal(
f"Charger not reachable via HTTP: {config.get('server', 'address')}")
return
except requests.exceptions.ConnectionError as e:
logging.fatal(f"Charger connection error: {e.args[0]}")
Expand All @@ -74,7 +77,8 @@ def execute(config, add_data, dostop):
logging.fatal("Username or Password wrong")
return
if (404 == response.status_code):
logging.fatal(f"HTTP connection to {config.get('server', 'address')} refused (status 404)")
logging.fatal(
f"HTTP connection to {config.get('server', 'address')} refused (status 404)")
return

token = response.json()["access_token"]
Expand Down Expand Up @@ -103,12 +107,14 @@ def execute(config, add_data, dostop):

try:
url = f"{config.get('server', 'protocol')}://{config.get('server', 'address')}/api/v1/measurements/live"
response = session.post(url, headers=headers, data='[{"componentId":"IGULD:SELF"}]', verify=verify_tls)
response = session.post(
url, headers=headers, data='[{"componentId":"IGULD:SELF"}]', verify=verify_tls)

# Check if a new acccess token is neccesary (TODO use refresh token)
if (response.status_code == 401):
logging.info(f"Got {response.status_code} - trying reauth")
response = requests.post(loginurl, data=postdata, verify=verify_tls)
response = requests.post(
loginurl, data=postdata, verify=verify_tls)
token = response.json()['access_token']
headers = {"Authorization": "Bearer " + token}
continue
Expand All @@ -126,7 +132,8 @@ def execute(config, add_data, dostop):
try:
v = round(float(v), 2)
except Exception as e:
logging.error(f"Error rounding value for parameter '{name}': value='{v}', type={type(v).__name__}, error: {e}")
logging.error(
f"Error rounding value for parameter '{name}': value='{v}', type={type(v).__name__}, error: {e}")
raise
unit = get_parameter_unit('SENSORS_EVCHARGER', name)
if unit:
Expand All @@ -141,7 +148,8 @@ def execute(config, add_data, dostop):
try:
v = round(float(v), 2)
except Exception as e:
logging.error(f"Error rounding value for parameter '{name}[{idx}]': value='{v}', type={type(v).__name__}, error: {e}")
logging.error(
f"Error rounding value for parameter '{name}[{idx}]': value='{v}', type={type(v).__name__}, error: {e}")
raise
idxname = dname + "." + str(idx + 1)
unit = get_parameter_unit('SENSORS_EVCHARGER', name)
Expand All @@ -150,7 +158,8 @@ def execute(config, add_data, dostop):
else:
add_data(idxname, v)
else:
logging.debug(f"value of {name} is currently not availably (nighttime?)")
logging.debug(
f"value of {name} is currently not availably (nighttime?)")
pass

time.sleep(int(config.get('behavior', 'updateFreq')))
Expand Down Expand Up @@ -309,7 +318,7 @@ def execute(config, add_data, dostop):
'name': "Reactive power",
'device_class': "reactive_power",
'icon': "mdi:home-lightning-bolt-outline",
'unit_of_measurement': "VAR",
'unit_of_measurement': "var",
'state_class': "measurement",
'suggested_display_precision': 2,
},
Expand Down
8 changes: 4 additions & 4 deletions plugins/sources/TripowerX/tripowerx.py
Original file line number Diff line number Diff line change
Expand Up @@ -662,7 +662,7 @@ def execute(config, add_data, dostop):
'enabled': "false",
'name': "Reactive power",
'suggested_display_precision': 2,
'unit_of_measurement': "VAR",
'unit_of_measurement': "var",
'device_class': "reactive_power",
'state_class': "measurement",
'icon': "mdi:home-lightning-bolt-outline",
Expand Down Expand Up @@ -722,7 +722,7 @@ def execute(config, add_data, dostop):
'enabled': "false",
'name': "Phase 1 reactive power",
'suggested_display_precision': 2,
'unit_of_measurement': "VAR",
'unit_of_measurement': "var",
'device_class': "reactive_power",
'state_class': "measurement",
'icon': "mdi:home-lightning-bolt-outline",
Expand All @@ -732,7 +732,7 @@ def execute(config, add_data, dostop):
'enabled': "false",
'name': "Phase 2 reactive power",
'suggested_display_precision': 2,
'unit_of_measurement': "VAR",
'unit_of_measurement': "var",
'device_class': "reactive_power",
'state_class': "measurement",
'icon': "mdi:home-lightning-bolt-outline",
Expand All @@ -742,7 +742,7 @@ def execute(config, add_data, dostop):
'enabled': "false",
'name': "Phase 3 reactive power",
'suggested_display_precision': 2,
'unit_of_measurement': "VAR",
'unit_of_measurement': "var",
'device_class': "reactive_power",
'state_class': "measurement",
'icon': "mdi:home-lightning-bolt-outline",
Expand Down
4 changes: 2 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ requires = ["flit_core >=3.8.0,<4"]

[project]
name = "smahub"
version = "1.7.4"
version = "1.7.5"
authors = [{ name = "Daniel Krippner", email = "dk.mailbox@gmx.net" }]
description = "Little daemon that runs plugins for collecting data from SMA PV products, and publishes to eg MQTT via other plugins."
readme = "README.md"
Expand All @@ -14,7 +14,7 @@ classifiers = [
"License :: OSI Approved :: GNU General Public License v2 (GPLv2)",
"Natural Language :: English",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.10",
]
dependencies = [
"debugpy ~=1.8",
Expand Down
Loading