Fix PVOutput 0 values

This commit is contained in:
bohdan-s
2022-01-18 09:19:52 +11:00
parent 0c70765d96
commit c375f078a1
3 changed files with 17 additions and 12 deletions
+2 -1
View File
@@ -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:
+14 -10
View File
@@ -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
+1 -1
View File
@@ -1 +1 @@
__version__ = '0.2.5'
__version__ = '0.2.6'