34 lines
889 B
Python
34 lines
889 B
Python
|
#!/usr/bin/env python3
|
||
|
|
||
|
import statistics
|
||
|
|
||
|
from pyfroniusreg import gen24_registers
|
||
|
from pyfroniusreg.froniusreg import RegisterReadError
|
||
|
|
||
|
from datetime import datetime
|
||
|
|
||
|
from pymodbus.client.tcp import ModbusTcpClient
|
||
|
|
||
|
fronius1 = ModbusTcpClient("172.19.107.211", port=502, timeout=10)
|
||
|
fronius1.connect()
|
||
|
|
||
|
current_time = datetime.now()
|
||
|
|
||
|
soc = gen24_registers.scaledStateOfCharge.get(fronius1)
|
||
|
|
||
|
charge_data = []
|
||
|
discharge_data = []
|
||
|
|
||
|
print("Gathering 20 second average of battery Charge")
|
||
|
while( (datetime.now() - current_time).seconds < 20):
|
||
|
charge_data.append(gen24_registers.scaledToBattery.get(fronius1))
|
||
|
discharge_data.append(gen24_registers.scaledFromBattery.get(fronius1))
|
||
|
|
||
|
avg_charge = statistics.mean(charge_data)
|
||
|
avg_discharge = statistics.mean(discharge_data)
|
||
|
print(" Charge: %.2f" % avg_charge)
|
||
|
print("DisCharge: %.2f" % avg_discharge)
|
||
|
print(" SOC: %.2f" % soc)
|
||
|
|
||
|
|