reinhard-brandstaedter / solarflow-control

A tool to automatically control Zendure's Solarflow hub with more flexibility to match home power demand
67 stars 12 forks source link

Dev: Direct panels are not getting steered #211

Closed tuxianerDE closed 5 months ago

tuxianerDE commented 5 months ago

Pulled the latest dev build today. Observed that the limit does not get increased on the direct panels.

Following errors appear in the logs:

Apr 14 15:11:56 babylon solarFlowDev[26794]: 2024-04-14 15:11:56,563:INFO: #033[31;20mHUB: S:496.5W [ 509.0,509.0,506.1,501.0,500.2,496.5 ], B: 21% (22|21|23|21), V:50.1V (50.2|50.0|50.1|50.2), C: 466W, P:False, F:165.5h, E:29.2h, H: 0W, L: 0W#033[0m Apr 14 15:11:56 babylon solarFlowDev[26794]: 2024-04-14 15:11:56,563:INFO: #033[33;20mINV: AC:229.5W, AC_Prediction: 229.5W, DC:241.5W, DC_prediction: 241.5W (120.8|120.7|0.0|0.0), L:456.0W [1500.0W]#033[0m Apr 14 15:11:56 babylon solarFlowDev[26794]: 2024-04-14 15:11:56,568:INFO: #033[33;32mSMT: T:Smartmeter P:-48.0W [ -89.8,-89.8,-88.2,-83.9,-79.8,-69.8 ] Predict: -100.8W#033[0m Apr 14 15:11:56 babylon solarFlowDev[26794]: 2024-04-14 15:11:56,568:INFO: Direct connected panels (229.5W) can cover demand (159.7W) Apr 14 15:11:56 babylon solarFlowDev[26794]: 2024-04-14 15:11:56,569:INFO: Not setting inverter output limit as it is identical to current limit! Apr 14 15:11:56 babylon solarFlowDev[26794]: 2024-04-14 15:11:56,569:INFO: Not setting solarflow output limit to 0.0W as it is identical to current limit! Apr 14 15:11:56 babylon solarFlowDev[26794]: Exception in thread Thread-232: Apr 14 15:11:56 babylon solarFlowDev[26794]: Traceback (most recent call last): Apr 14 15:11:56 babylon solarFlowDev[26794]: File "/usr/local/lib/python3.11/threading.py", line 1045, in _bootstrap_inner Apr 14 15:11:56 babylon solarFlowDev[26794]: self.run() Apr 14 15:11:56 babylon solarFlowDev[26794]: File "/usr/local/lib/python3.11/threading.py", line 1401, in run Apr 14 15:11:56 babylon solarFlowDev[26794]: self.function(*self.args, **self.kwargs) Apr 14 15:11:56 babylon solarFlowDev[26794]: File "/solarflow/utils.py", line 29, in _run Apr 14 15:11:56 babylon solarFlowDev[26794]: self.function(*self.args, **self.kwargs) Apr 14 15:11:56 babylon solarFlowDev[26794]: File "/solarflow/solarflow-control.py", line 457, in deviceInfo Apr 14 15:11:56 babylon solarFlowDev[26794]: limitHomeInput(client) Apr 14 15:11:56 babylon solarFlowDev[26794]: File "/solarflow/solarflow-control.py", line 328, in limitHomeInput Apr 14 15:11:56 babylon solarFlowDev[26794]: limit = direct_limit Apr 14 15:11:56 babylon solarFlowDev[26794]: ^^^^^^^^^^^^ Apr 14 15:11:56 babylon solarFlowDev[26794]: UnboundLocalError: cannot access local variable 'direct_limit' where it is not associated with a value

Apr 14 15:33:53 babylon solarFlowDev[26794]: 2024-04-14 15:33:53,272:INFO: Based on time, solarpower (465.3W) minimum charge power (500W) and bypass state (False), hub could contribute 0.0W - Decision path: 2.2. Apr 14 15:33:53 babylon solarFlowDev[26794]: Traceback (most recent call last): Apr 14 15:33:53 babylon solarFlowDev[26794]: File "/solarflow/solarflow-control.py", line 552, in <module> Apr 14 15:33:53 babylon solarFlowDev[26794]: main(sys.argv[1:]) Apr 14 15:33:53 babylon solarFlowDev[26794]: File "/solarflow/solarflow-control.py", line 549, in main Apr 14 15:33:53 babylon solarFlowDev[26794]: run() Apr 14 15:33:53 babylon solarFlowDev[26794]: File "/solarflow/solarflow-control.py", line 487, in run Apr 14 15:33:53 babylon solarFlowDev[26794]: client.loop_forever() Apr 14 15:33:53 babylon solarFlowDev[26794]: File "/usr/lib/python3.11/site-packages/paho/mqtt/client.py", line 1756, in loop_forever Apr 14 15:33:53 babylon solarFlowDev[26794]: rc = self._loop(timeout) Apr 14 15:33:53 babylon solarFlowDev[26794]: ^^^^^^^^^^^^^^^^^^^ Apr 14 15:33:53 babylon solarFlowDev[26794]: File "/usr/lib/python3.11/site-packages/paho/mqtt/client.py", line 1164, in _loop Apr 14 15:33:53 babylon solarFlowDev[26794]: rc = self.loop_read() Apr 14 15:33:53 babylon solarFlowDev[26794]: ^^^^^^^^^^^^^^^^ Apr 14 15:33:53 babylon solarFlowDev[26794]: File "/usr/lib/python3.11/site-packages/paho/mqtt/client.py", line 1556, in loop_read Apr 14 15:33:53 babylon solarFlowDev[26794]: rc = self._packet_read() Apr 14 15:33:53 babylon solarFlowDev[26794]: ^^^^^^^^^^^^^^^^^^^ Apr 14 15:33:53 babylon solarFlowDev[26794]: File "/usr/lib/python3.11/site-packages/paho/mqtt/client.py", line 2439, in _packet_read Apr 14 15:33:53 babylon solarFlowDev[26794]: rc = self._packet_handle() Apr 14 15:33:53 babylon solarFlowDev[26794]: ^^^^^^^^^^^^^^^^^^^^^ Apr 14 15:33:53 babylon solarFlowDev[26794]: File "/usr/lib/python3.11/site-packages/paho/mqtt/client.py", line 3033, in _packet_handle Apr 14 15:33:53 babylon solarFlowDev[26794]: return self._handle_publish() Apr 14 15:33:53 babylon solarFlowDev[26794]: ^^^^^^^^^^^^^^^^^^^^^^ Apr 14 15:33:53 babylon solarFlowDev[26794]: File "/usr/lib/python3.11/site-packages/paho/mqtt/client.py", line 3327, in _handle_publish Apr 14 15:33:53 babylon solarFlowDev[26794]: self._handle_on_message(message) Apr 14 15:33:53 babylon solarFlowDev[26794]: File "/usr/lib/python3.11/site-packages/paho/mqtt/client.py", line 3570, in _handle_on_message Apr 14 15:33:53 babylon solarFlowDev[26794]: on_message(self, self._userdata, message) Apr 14 15:33:53 babylon solarFlowDev[26794]: File "/solarflow/solarflow-control.py", line 145, in on_message Apr 14 15:33:53 babylon solarFlowDev[26794]: smartmeter.handleMsg(msg) Apr 14 15:33:53 babylon solarFlowDev[26794]: File "/solarflow/smartmeters.py", line 104, in handleMsg Apr 14 15:33:53 babylon solarFlowDev[26794]: self.updPower() Apr 14 15:33:53 babylon solarFlowDev[26794]: File "/solarflow/smartmeters.py", line 79, in updPower Apr 14 15:33:53 babylon solarFlowDev[26794]: log.info(f'SMT triggers limit function: {previous} -> {self.getPower()}: {"executed" if self.trigger_callback(self.client,force=force_trigger) else "skipped"}') Apr 14 15:33:53 babylon solarFlowDev[26794]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Apr 14 15:33:53 babylon solarFlowDev[26794]: File "/solarflow/solarflow-control.py", line 447, in limit_callback Apr 14 15:33:53 babylon solarFlowDev[26794]: limitHomeInput(client) Apr 14 15:33:53 babylon solarFlowDev[26794]: File "/solarflow/solarflow-control.py", line 308, in limitHomeInput Apr 14 15:33:53 babylon solarFlowDev[26794]: if sf_contribution/inv.getNrHubChannels() >= max(inv.getDirectDCPowerValues() * (inv.getEfficiency()/100)): Apr 14 15:33:53 babylon solarFlowDev[26794]: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ Apr 14 15:33:53 babylon solarFlowDev[26794]: TypeError: can't multiply sequence by non-int of type 'float'

tuxianerDE commented 5 months ago

Issue #1 is resolved. However the second issue still occurs: Apr 15 07:11:49 babylon solarFlowDev[26794]: 2024-04-15 07:11:49,672:INFO: Based on time, solarpower ( 0.0W) minimum charge power (500W) and bypass state (False), hub could contribute 159.9W - Decision path: 2.1. Apr 15 07:11:49 babylon solarFlowDev[26794]: Exception in thread Thread-901: Apr 15 07:11:49 babylon solarFlowDev[26794]: Traceback (most recent call last): Apr 15 07:11:49 babylon solarFlowDev[26794]: File "/usr/local/lib/python3.11/threading.py", line 1045, in _bootstrap_inner Apr 15 07:11:49 babylon solarFlowDev[26794]: self.run() Apr 15 07:11:49 babylon solarFlowDev[26794]: File "/usr/local/lib/python3.11/threading.py", line 1401, in run Apr 15 07:11:49 babylon solarFlowDev[26794]: self.function(*self.args, *self.kwargs) Apr 15 07:11:49 babylon solarFlowDev[26794]: File "/solarflow/utils.py", line 29, in _run Apr 15 07:11:49 babylon solarFlowDev[26794]: self.function(self.args, *self.kwargs) Apr 15 07:11:49 babylon solarFlowDev[26794]: File "/solarflow/solarflow-control.py", line 457, in deviceInfo Apr 15 07:11:49 babylon solarFlowDev[26794]: limitHomeInput(client) Apr 15 07:11:49 babylon solarFlowDev[26794]: File "/solarflow/solarflow-control.py", line 308, in limitHomeInput Apr 15 07:11:49 babylon solarFlowDev[26794]: if sf_contribution/inv.getNrHubChannels() >= max(inv.getDirectDCPowerValues() (inv.getEfficiency()/100)): Apr 15 07:11:49 babylon solarFlowDev[26794]: ~~~~~~~^~~~~~~~~ Apr 15 07:11:49 babylon solarFlowDev[26794]: TypeError: can't multiply sequence by non-int of type 'float'