Skip to content

Commit

Permalink
Merge pull request #69 from Gentleman1983/68-issue-reading-data-from-api
Browse files Browse the repository at this point in the history
#68: Hotfixed issues regarding API update of March 4th, 2024.
  • Loading branch information
Gentleman1983 committed Mar 10, 2024
2 parents 0b99646 + 2d95814 commit d91a0c0
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 22 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ This document provides an overview to the changes on the different releases...
* Added publishing to Dockerhub repository [gentleman1983/ginlong-solis-api-connector](https://hub.docker.com/repository/docker/gentleman1983/ginlong-solis-api-connector) on release ([#55](https://github.com/Gentleman1983/ginlong_solis_api_connector/issues/55))
* Publishing task to Dockerhub should publish [SBOM](https://www.cisa.gov/sbom), too ([#57](https://github.com/Gentleman1983/ginlong_solis_api_connector/issues/57))
* Add Mend renovate bot to repository ([#56](https://github.com/Gentleman1983/ginlong_solis_api_connector/issues/56))
* Fixed parsing issues regarding api update from March 4th, 2024. ([#68](https://github.com/Gentleman1983/ginlong_solis_api_connector/issues/68))

## 2.4.0
* Added `CHANGELOG.md` document to have central document for changes. ([#38](https://github.com/Gentleman1983/ginlong_solis_api_connector/issues/38))
Expand Down
4 changes: 2 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@ ARG VCS_REF

LABEL maintainer="Gentleman1983, TobiO79" \
org.opencontainers.image.created=$BUILD_DATE \
org.opencontainers.image.url="https://github.com/Gentleman1983/ginlong_solis_api_connector" \
org.opencontainers.image.url="https://hub.docker.com/repository/docker/gentleman1983/ginlong-solis-api-connector" \
org.opencontainers.image.source="https://github.com/Gentleman1983/ginlong_solis_api_connector" \
org.opencontainers.image.version=$VERSION \
org.opencontainers.image.revision=$VCS_REF \
org.opencontainers.image.vendor="Gentleman1983" \
org.opencontainers.image.title="ginlong-solis-api-connector" \
org.opencontainers.image.description="Fetches API data from Solis Cloud API and outputs it to influxdb, pvoutput or mqtt" \
org.opencontainers.image.description="Fetches API data from Solis Cloud API and outputs it to influxdb, pvoutput or mqtt." \
org.opencontainers.image.licenses="GPL-3.0"

ENV LOG_LEVEL="INFO"
Expand Down
52 changes: 32 additions & 20 deletions ginlong_solis_api_connector.py
Original file line number Diff line number Diff line change
Expand Up @@ -242,17 +242,24 @@ def convert_dict_details_to_float(dict_to_change, parameters):
dict_to_change[param] = float(dict_to_change[param])
return dict_to_change

def convert_dict_details_to_boolean(dict_to_change, parameters):
for param in parameters:
if dict_to_change[param]:
dict_to_change[param] = 1
else:
dict_to_change[param] = 0
return dict_to_change

def get_last_month_generation(dict_year):
generation_last_month = 0.0
if len(dict_year) > 1:
generation_last_month = float(dict_year[-2]['energy'])

return generation_last_month


# == MAIN ====================================================================
# Write to Influxdb
def write_to_influx_db(inverter_data, inverter_month, inverter_year, inverter_all, update_date):
def write_to_influx_db(inverter_data, inverter_month, inverter_year, inverter_all, update_date): # pylint: disable=too-many-locals
if influx.lower() == "true":
logging.info('InfluxDB output is enabled, posting outputs now...')

Expand Down Expand Up @@ -295,26 +302,29 @@ def write_to_influx_db(inverter_data, inverter_month, inverter_year, inverter_al
'updateDate': int(dict_detail['dataTimestamp'])
}

# Read inverter_detail into dict
changelist=["iPv1","iPv2","iPv3","iPv4","iPv5",
"iPv6","iPv7","iPv8","iPv9","iPv10",
"iPv11","iPv12","iPv13","iPv14","iPv15",
"iPv16","iPv17","iPv18","iPv19","iPv20",
"iPv21","iPv22","iPv23","iPv24","iPv25",
"iPv26","iPv27","iPv28","iPv29","iPv30",
"iPv31","iPv32",
"uPv1","uPv2","uPv3","uPv4","uPv5",
"uPv6","uPv7","uPv8","uPv9","uPv10",
"uPv11", "uPv12", "uPv13","uPv14", "uPv15",
"uPv16", "uPv17", "uPv18", "uPv19", "uPv20",
"uPv21", "uPv22", "uPv23", "uPv24","uPv25",
"uPv26", "uPv27", "uPv28", "uPv29","uPv30",
"uPv31", "uPv32",
"iAc1","iAc2","iAc3","uAc1","uAc2","uAc3",
"pA","pB","pC"]
dict_float = convert_dict_details_to_float(dict_detail,changelist)
# Convert float values
changelist_float = []
for key, value in dict_detail.items():
if isinstance(value, int):
changelist_float.append(key)

ignore_change_to_float = []
for key in ignore_change_to_float:
changelist_float.remove(key)

dict_float = convert_dict_details_to_float(dict_detail, changelist_float)
dict_fields.update(dict_float)

# Convert boolean values
changelist_boolean = ["isShow"]
dict_boolean = convert_dict_details_to_boolean(dict_detail, changelist_boolean)
dict_fields.update(dict_boolean)

# remove empty battery list
if len(dict_fields["batteryList"]) == 0:
dict_fields.pop("batteryList")

# Read inverter_detail into dict
influx_to_submit = [
{
"measurement": influx_measurement,
Expand Down Expand Up @@ -415,6 +425,8 @@ def write_to_mqtt(inverter_data, update_date):
else:
auth_settings = None

inverter_data.pop("batteryList")

msgs.append((mqtt_topic + "updateDate", int(update_date), 0, False))
for key, value in inverter_data.items():
msgs.append((mqtt_topic + key, value, 0, False))
Expand Down

0 comments on commit d91a0c0

Please sign in to comment.