Hallo,
Ik heb een probleem.
Ik log al een jaar of 2.5 de opbrengsten voor van mijn zonnepanelen door de growatt inverter uit te lezen.
Dit doe ik door een raspberry pi aan de inverter te hangen met een RS232 to USB kabel.
Ik gebruik het volgende python script om de data uit te lezen en weg te schrijven naar een MySQL database.
Python:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
| #!/usr/bin/env python
# -*- coding: utf-8 -*-
import MySQLdb
import subprocess
import logging
from configobj import ConfigObj
from pymodbus.client.sync import ModbusSerialClient as ModbusClient
logging.basicConfig(format='%(asctime)s %(levelname)s:%(message)s',filename='debugger.log',level=logging.WARNING)
logging.info('Start Script')
pv_volts=0.0
pv_power=0.0
Wh_today=0.0
Wh_total=0.0
AC_volts=0.0
# Read data from inverter
try:
inverter = ModbusClient(method='rtu', port='/dev/ttyUSB'+'0', baudrate=9600, stopbits=1, parity='N', bytesize=8, timeout=1)
connected = inverter.connect()
except:
logging.warning('Connect Failed')
if connected:
logging.info('Connected')
rr = inverter.read_input_registers(1,30)
inverter.close()
succes = False
try:
value=rr.registers[2]
pv_volts=(float(value)/10) # dc volts
value=rr.registers[11]
pv_power=(float(value)/10) # power ac to net
value=rr.registers[26]
Wh_today=(float(value)/10) # total energy today
value=rr.registers[28]
Wh_total=(float(value)/10) # total energy all time
succes = True
except:
logging.info('register empty')
#value=rr.registers[13]
#AC_volts=(float(value)/10) # volts ac
#print 'pv_volts %s' %pv_volts
#print 'pv_power %s' %pv_power
#print 'kWh_today %s' %Wh_today
print 'kWh_total %s' %Wh_total
#print 'AC_volts %s' %AC_volts
if (succes and (Wh_total>1)):
logging.info('add entry to db')
#make connection with db
db = MySQLdb.connect(host="localhost", user="u", passwd="pw", db="dbnaam")
#create cursor
cur = db.cursor()
#insert values in db
with db:
cur.execute ("""INSERT INTO Pv_data (currentpower,dag,totaal,voltage)
values(%s,%s,%s,%s)""",(pv_power,Wh_today,Wh_total,pv_volts))
cur.close()
db.close()
else:
logging.info('No entry for db')
else:
logging.warning('Not connected')
logging.info('Einde Script') |
Ik log 4 waarde (ac_voltage, DC power, opgewekte energie dag, opgewekt totaal sinds installatie.
Vervolgens gebruik ik de data op een website om dag, maand, jaar totalen weer te geven. Dit reken ik uit door totaal opgewekt op 2 momenten van mekaar te trekken.
Dit heeft 2.5 jaar perfect gewerkt. Tot dat afgelopen zaterdag op zondag opeens het totaal opgewekte energie attribuut is gereset. Deze was eind van 13-05-2017 6553.5 KWh en aan het begin van 14-05-2017 0KWH.
Hierdoor gaan al mijn totaal berekeningen naar de knoppe, omdat ik nu een hoger getal van een lager getal zit af te trekken. Dit kan natuurlijk wel recht gescript worden, maar niet heel mooi.
Dus heeft iemand een idee waarom de totaal opgewekte energie opeens gereste is naar 0?
Er zijn geen gekke dingen met de Inverter of panelen gebeurd.
Overigens geeft het schermpje op de inverter nog wel de goede waarde aan.
Ik snap er zelf niks van, wie helpt mij?