Een script waarmee een Fronius inverter gemoduleerd kan worden. Dit is bijvoorbeeld te gebruiken wanneer bij een dynamisch energiecontract de prijzen negatief zijn en het geld kost om electriciteit aan het net te leveren.
Dit script is opgezet om samen te werken met een E_manager script https://github.com/Pyroil/E_manager
-
Leest setpoint van E_manager via een JSON-bestand.
-
Schrijft het nieuwe setpoint via TCP/modpoll naar het register van de omvormer.
-
Leest de waarden van de omvormer via een API request
-
Schrijft key-variabelen voor E_manager naar JSON-bestand
-
Schrijft productie variabelen naar JSON-bestand de JSON-bestanden worden gelezen en geschreven via script shared_store.py
-
Een log bestand op basis van logger_setup.py (in folder /logs)
-
De belangrijkse gebruikte parameters staan in config.py
Het script is geschreven om te draaien als een systemd-service
Fronius Symio handleidingen: https://manuals.fronius.com/html/4204260191/nl.html#0_t_0000000140 https://www.fronius.com/~/downloads/Solar%20Energy/Operating%20Instructions/42,0426,0222,EN.pdf
Om setpoint aanpassingen mogelijk te maken dienen de instelling van de inverter juist te zijn ingesteld Modbus instelling (IP-adres aanpassen naar eigen IP-adres)
Modbus de hoogste prioriteit geven in EVU-editor
Verder dienen in het script de juiste registers te worden geselecteerd. Dit varieert per inverter en vereist enig onderzoek waar het register van Model 123 begint. Bij mijn Symio 10.0-3-M is dit als volgt:
self.base = 40238 self.reg_conn = 40242 (geeft aan dat er verbinding is) self.reg_limit = 40243 (Dit is het daadwerkelijke limiet) self.reg_enable = 40247 (enable het schrijven van de limiet)
Gebruik modpoll om module 123 te vinden. De naam is zichtbaar, gevolgd door de lengte van de module pi@Rpi4: $ modpoll -m "tcp" -t 4 -r "40238" -c "26" -1 "" modpoll 3.16 - FieldTalk(tm) Modbus(R) Master Simulator Copyright (c) 2002-2025 proconX Pty Ltd Visit https://www.modbusdriver.com for Modbus libraries and tools.
Protocol configuration: MODBUS/TCP, FC3 Slave configuration...: address = 1, start reference = 40238, count = 26 Communication.........: 192.168.2.5, port 502, t/o 1.00 s, poll rate 1000 ms Data type.............: 16-bit register, holding register table
-- Polling slave... [40238]: 123 # module naam [40239]: 24 # lengte module register [40240]: 0 [40241]: 0 [40242]: 1 # connected [40243]: 100 # limiet van de omvormer [40244]: 0 [40245]: 0 [40246]: -1 [40247]: 1 # Enable setpoint setting [40248]: 1000 [40249]: 0 [40250]: 0 [40251]: -1 [40252]: 0 [40253]: -32768 [40254]: 0 [40255]: -32768 [40256]: 0 [40257]: 0 [40258]: -1 [40259]: 2 [40260]: 0 [40261]: 0 [40262]: -3 [40263]: 0
- modpoll 3.16
- Python 3.11
- Package:
requests(via pip) subprocessenthreadingzijn onderdeel van de Python-standaardbibliotheek (niet apart installeren)python3-systemd(viaapt install python3-systemd, niet via pip - vereist libsystemd-dev)
git clone https://github.com/Pyroil/Fronius_manager.git
pip install requests --break-system-packages
sudo apt install python3-systemdmodpoll (FieldTalk-versie van modbusdriver.com) wordt niet via apt of pip
beheerd, maar als losse binary gedistribueerd. Download de gewenste versie
van https://www.modbusdriver.com/downloads.html en installeer als volgt
(pas <versie> en de architectuur aan naar jouw situatie, bijv.
linux-x86_64 of linux_arm-eabihf voor een Raspberry Pi):
cd /tmp
wget https://www.modbusdriver.com/downloads/modpoll/<versie>/modpoll-<versie>-linux-x86_64.tar.gz
tar xzf modpoll-<versie>-linux-x86_64.tar.gz
sudo cp modpoll-<versie>-linux-x86_64/bin/modpoll /usr/local/bin/
sudo chmod +x /usr/local/bin/modpoll
modpollLet op: er bestaat ook een gelijknamig maar volledig ander project modpoll
op PyPI (Modbus-naar-MQTT tool). Dat is niet compatibel met de
-m/-r/-1-syntax die dit script gebruikt — gebruik uitsluitend de
FieldTalk-versie van modbusdriver.com.
Dit project is gelicenseerd onder CC BY-NC-SA 4.0 - vrij te gebruiken en te delen, aanpassingen toegestaan, maar niet voor commerciële doeleinden en met behoud van dezelfde licentie voor afgeleide werken. Zie LICENSE voor de volledige tekst.

