diff --git a/examples/force_charge.py b/examples/force_charge.py new file mode 100755 index 0000000..cf840b1 --- /dev/null +++ b/examples/force_charge.py @@ -0,0 +1,37 @@ +#!/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) + diff --git a/examples/read_regs.py b/examples/read_regs.py new file mode 100755 index 0000000..98b9f3b --- /dev/null +++ b/examples/read_regs.py @@ -0,0 +1,32 @@ +#!/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) + +reserve = FroniusReg.scaledReserve.getValue(fronius1) +print("Pre Res: %d" % reserve) + +rate = FroniusReg.scaledMaxChaRte.getValue(fronius1) +print("Pre rate: %d" % rate) + +rate = FroniusReg.scaledMaxWChaGra.getValue(fronius1) +print("Pre WGra rate: %d" % rate) + +revert = FroniusReg.InOutWRte_RvrtTms.getValue(fronius1) +print("Timer: %d" % revert) diff --git a/examples/reset_charge.py b/examples/reset_charge.py new file mode 100755 index 0000000..df624f2 --- /dev/null +++ b/examples/reset_charge.py @@ -0,0 +1,44 @@ +#!/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) + +reserve = FroniusReg.scaledReserve.getValue(fronius1) +print("Pre Res: %d" % reserve) + + +# This should be 'no limits' mode +err = FroniusReg.StorCtl_Mode.setValue(fronius1, 0) +# discharge at 100% allowed charge rate +err = FroniusReg.scaledOutWRte.setValue(fronius1, 100) +err = FroniusReg.scaledInWRte.setValue(fronius1, 100) +# charge to 7% +err = FroniusReg.scaledReserve.setValue(fronius1, 7) + +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) + +reserve = FroniusReg.scaledReserve.getValue(fronius1) +print("Post Res: %d" % reserve) diff --git a/src/__init__.py b/src/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/FroniusReg.py b/src/froniusreg.py similarity index 100% rename from FroniusReg.py rename to src/froniusreg.py