From c375f078a1910c9a8dd8cf3b0d709a7fa4925953 Mon Sep 17 00:00:00 2001 From: bohdan-s Date: Tue, 18 Jan 2022 09:19:52 +1100 Subject: [PATCH] Fix PVOutput 0 values --- SunGather/exports/mqtt.py | 3 ++- SunGather/exports/pvoutput.py | 24 ++++++++++++++---------- SunGather/version.py | 2 +- 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/SunGather/exports/mqtt.py b/SunGather/exports/mqtt.py index 1933832..3b01e65 100644 --- a/SunGather/exports/mqtt.py +++ b/SunGather/exports/mqtt.py @@ -41,7 +41,7 @@ class export_mqtt(object): for ha_sensor in config.get('ha_sensors'): self.ha_sensors.append(ha_sensor) - logging.info(f"MQTT: Configured {config.get('host')}:{config.get('port', 1883)}") + logging.info(f"MQTT: Configured {config.get('host')}:{config.get('port', 1883)}, HA Enabled = {config.get('homeassistant', False)}") return self._isConfigured @@ -97,6 +97,7 @@ class export_mqtt(object): config_msg['device'] = { "name":"Solar Inverter", "mf":"Sungrow", "mdl":self.model, "connections":[["address", self.inverter_ip ]]} try: + logging.debug(f'MQTT: Topic; {ha_topic}, Message: {config_msg}') result = self.mqtt_client.publish(ha_topic, json.dumps(config_msg), retain=True) result.wait_for_publish() if result.rc != mqtt.MQTT_ERR_SUCCESS: diff --git a/SunGather/exports/pvoutput.py b/SunGather/exports/pvoutput.py index 78eb009..9068ebe 100644 --- a/SunGather/exports/pvoutput.py +++ b/SunGather/exports/pvoutput.py @@ -76,17 +76,20 @@ class export_pvoutput(object): # Add new data to old data and increase count of data points for parameter in self.parameters: if parameter.get('name')[0] == 'v': - if not self.collected_data.get(parameter.get('name'),False): + if self.collected_data.get(parameter.get('name'),False): + if parameter.get('multiple'): + self.collected_data[parameter.get('name')] = round(self.collected_data[parameter.get('name')] + (inverter.get(parameter.get('register')) * parameter.get('multiple')),3) + else: + self.collected_data[parameter.get('name')] = round(self.collected_data[parameter.get('name')] + inverter.get(parameter.get('register')),3) + else: if inverter.get(parameter.get('register')): - self.collected_data[parameter.get('name')] = 0 + if parameter.get('multiple'): + self.collected_data[parameter.get('name')] = round(inverter.get(parameter.get('register')) * parameter.get('multiple'),3) + else: + self.collected_data[parameter.get('name')] = inverter.get(parameter.get('register')) else: logging.warning(f"PVOutput: {parameter.get('name')} configured to use {parameter.get('register')} but inverter is not returning this register") - - if parameter.get('multiple'): - self.collected_data[parameter.get('name')] = round(self.collected_data[parameter.get('name')] + (inverter.get(parameter.get('register')) * parameter.get('multiple')),3) - else: - self.collected_data[parameter.get('name')] = round(self.collected_data[parameter.get('name')] + inverter.get(parameter.get('register')),3) - if parameter.get('name') == 'c1': + elif parameter.get('name') == 'c1': cumulative_energy = parameter.get('value') if self.collected_data.get('count',False): @@ -104,7 +107,7 @@ class export_pvoutput(object): if v[1] == '6' or v[1] == '7': # Round to 1 decimal place self.collected_data[v] = round(self.collected_data[v] / self.collected_data['count'], 1) else: # Getting errors when uploading decimals for power/energy so return INT - self.collected_data[v] = int(self.collected_data[v] / self.collected_data['count']) + self.collected_data[v] = int((self.collected_data[v] / self.collected_data['count'])) data_point = str(now.strftime("%Y%m%d")) + "," + str(now.strftime("%H:%M")) @@ -114,13 +117,14 @@ class export_pvoutput(object): data_point = data_point + "," + str(self.collected_data[v]) else: data_point = data_point + "," - + self.collected_data = {} if self.payload_data: self.payload_data = self.payload_data + ";" else: self.payload_data = "" + self.payload_data = self.payload_data + data_point self.batch_count +=1 diff --git a/SunGather/version.py b/SunGather/version.py index d0ba488..2da372e 100644 --- a/SunGather/version.py +++ b/SunGather/version.py @@ -1 +1 @@ -__version__ = '0.2.5' \ No newline at end of file +__version__ = '0.2.6' \ No newline at end of file