#!/usr/bin/env python3 import FroniusReg from pymodbus.client.tcp import ModbusTcpClient fronius1 = ModbusTcpClient("172.19.107.211", port=502, timeout=10) fronius1.connect() soc = FroniusReg.scaledStateOfCharge.getValue(fronius1) print(" SOC: %s%%" % soc) discharge = FroniusReg.scaledOutWRte.getValue(fronius1) print("Pre DRate: %d%%" % discharge) charge = FroniusReg.scaledInWRte.getValue(fronius1) print("Pre CRate: %d%%" % charge) mode = FroniusReg.StorCtl_Mode.getValue(fronius1) print("Pre Mode: %d" % mode) # This should be 'limit discharge' mode err = FroniusReg.StorCtl_Mode.setValue(fronius1, 2) # Charge battery at a rate from -2% discharge to 100% charge # as a percentage of the MaxChaRte, which in our case is 25600W err = FroniusReg.scaledOutWRte.setValue(fronius1, -10) err = FroniusReg.scaledInWRte.setValue(fronius1, 100) discharge = FroniusReg.scaledOutWRte.getValue(fronius1) print("Post DRate: %d%%" % discharge) charge = FroniusReg.scaledInWRte.getValue(fronius1) print("Post CRate: %d%%" % charge) mode = FroniusReg.StorCtl_Mode.getValue(fronius1) print("Post Mode: %d" % mode)