If you would like to contribute extensions to this, please submit the pull request in the dev branch. For bug fixes, the pull request can also be made on the main branch
This is a Python 3 Application that turns on your ESS unit (controller) at the right time when your hourly dynamic energy prices are low. Or used for discharging when prices are extremely high.
- Victron Venus OS energy storage systems such as the MultiPlus II series
- aWATTar
- Entso-E
- Tibber
The control of the ESS unit (controller) is done via mqtt. The advantage of this control is: that this application does not have to run directly on VenusOS. Direct control with D-BUS is in the works
This version was successful with
- Linux Ubuntu >= 22.04
- Venus OS Raspberry >= v3.12
tested
Download the install script from the GitHub repository execute the following command in your terminal:
wget -O seuss_install.sh https://raw.githubusercontent.com/ckvsoft/SEUSS/dev/scripts/seuss_install.sh`
Run the installer script with additional options to prepare everything in a subdirectory for your inspection. For example:
bash seuss_install.sh`
The default directory is /data/seuss (Venus OS) But you can optionally specify a different directory by using the environment variable TARGET_DIRECTORY e.g.
TARGET_DIRECTORY=/opt/seuss bash seuss_install.sh`
On a Cerbo GX the filesystem is mounted read only. See https://www.victronenergy.com/live/ccgx:root_access. In order to make the filesystem writeable you need to execute the following command before running the install script:
/opt/victronenergy/swupdate-scripts/resize2fs.sh
After SEUSS
has been successfully installed, a website is available at the IP address and port 5000 of the Computer/VenusOS
on which SEUSS
was installed.
- You can view or download the log file.
- Furthermore, the configuration can be carried out using the [Config Editor] menu item.
- Tool tips for most points are displayed here.
These can also be found in the Settings description. For those who prefer to work in a config file, there is config.json
Setting | Meaning |
---|---|
time_zone |
Essential for correct timing of operations based on your geographic location. Format like Europe/Vienna , Europe/Amsterdam , ... |
log_file_path |
Sets an alternative path to which the log files are saved. |
log_level |
Used Loglevel are: INFO , WARNING , ERROR and DEBUG . see Log Levels |
Please change prices (always use Cent/kWh, no matter if youre using Awattar (displaying Cent/kWh) or Entsoe API (displaying EUR/MWh) / net prices excl. tax).
Setting | Meaning |
---|---|
use_second_day |
enable/disable to compare today and tomorrow prices if they become availableNote: If you activate this and the prices decrease over several days,it is possible that there will be no charging or switching for several days until the lowest prices are reached. |
number_of_lowest_prices_for_charging |
Two modes can be used here. mode1: * the number of cheapest prices at which charging should/may take place. Here you enter whole numbers mode2: * Here the number of prices is determined based on the average price. For this mode you enter decimal numbers. E.g. 0.85 to receive all prices that are 85% below average.What is relevant here is the specification of a comma value. With 1.0 it is assumed that 100% of the average price is taken (doesn't make any sense) but if 1 is entered it is 1 cheapest price |
number_of_highest_prices_for_discharging |
Two modes can be used here. mode1: * the number of most expensive prices at which discharging should/may take place. Here you enter whole numbers mode2: * Here the number of prices is determined based on the average price. For this mode you enter decimal numbers. E.g. 1.25 to receive all prices that are 25% above average. What is relevant here is the specification of a comma value. With 1.0 it is assumed that 100% of the average price is taken (doesn't make any sense) but if 1 is entered it is 1 most expensive price |
charging_price_limit |
charging is always enabled below this price the number of the most expensive prices at which discharging should/may be carried out |
Setting | Meaning |
---|---|
use_vrm |
If this point is enabled (true), an attempt is made to connect to the Victron via the VRM portal. This requires a user/password in the VRM portal |
ip_address |
The local IP address of the Victron. This is required if use_vrm is disabled (false).Otherwise this field remains empty |
unit_id |
VRM Portal ID can be found in the Settings / VRM online portal / VRM Portal Id .Note: This ID is required to access the Victron even if you are not using a VRM portal |
user |
mail adress you use to connect to VRM portal |
password |
password you use to connect to VRM portal |
max_discharge_power |
Default: -1 If you use Limit inverter power in the ESS menu then this value must be entered here.If the inverter is set to Discharge false by this app then this value will be overwritten in the ESS.This limit here is set in discharge mode in the ESS. If no limit is set then leave the value at -1 .Example: Enter 1000 to limit the discharge to 1000W , Enter -1 for full Power |
only_observation |
If only observation is activated the essunit will only be used for statistical purposes. The essunit does not execute any conditions |
enabled |
To use this entry it must be enabled . Otherwise disabled |
Setting | Meaning |
---|---|
country |
Choose location AT or DE |
primary |
If this market is enabled this point sets it as the primary market |
enabled |
To use this entry it must be enabled . Otherwise disabled |
Setting | Meaning |
---|---|
api_token |
How to get the free api_security_token: 1. Go to https://transparency.entsoe.eu/ --> register and create an account 2. Send an email to transparency@entsoe.eu with “Restful API access” in the subject line 3. The ENTSO-E Helpdesk will respond to your request within 3 working days. 4. Generate a security token at https://transparency.entsoe.eu/usrm/user/myAccountSettings |
in_domain |
To find out your in and out domain key go to: https://www.entsoe.eu/data/energy-identification-codes-eic/eic-area-codes-map/ |
out_domain |
like in_domain |
primary |
If this market is enabled this point sets it as the primary market |
enabled |
To use this entry it must be enabled . Otherwise disabled |
Setting | Meaning |
---|---|
api_token |
To get the tibber_api_key: 1. log in with a free or customer Tibber account at https://developer.tibber.com/settings/access-token 2. Create a token by selecting the scopes you need (select "price") 3. Use this link to create a free account with your smartphone: https://tibber.com/de/invite/ojgfbx2e |
price_unit |
Set to: "energy" to use the spotmarket-prices (default), "total" to use the total prices including taxes and fees, "tax" to use only the taxes and fees |
primary |
If this market is enabled this point sets it as the primary market |
enabled |
To use this entry it must be enabled . Otherwise disabled |
Setting | Meaning |
---|---|
locLat |
Latitude |
locLong |
Longitude |
angle |
Angle of your panels 0 (horizontal) … 90 (vertical) |
direction |
Plane azimuth, -180 … 180 (-180 = north, -90 = east, 0 = south, 90 = west, 180 = north) |
totPower |
installed modules power in kilo watt |
total_area |
Total area of the panels in square meters |
damping_morning |
With this parameter you can adjust the result in the morning. Value float 0..1, default 0 |
damping_evening |
With this parameter you can adjust the result in the evening. Value float 0..1, default 0 |
enabled |
To use this entry it must be enabled . Otherwise disabled |
The ERROR
log level indicates error conditions within an application that hinder the execution of a specific operation. While the application can continue functioning at a reduced level of functionality or performance,ERROR
logs signify issues that should be investigated promptly.
Events logged at the WARN
level typically indicate that something unexpected has
occurred, but the application can continue to function normally for the time being.
It is also used to signify conditions that should be promptly addressed before they
escalate into problems for the application.
The INFO
level captures events in the system that are significant to the
application's business purpose. Such events are logged to show that the system is
operating normally. Production systems typically default to logging at this level
so that a summary of the application's normal behavior is visible to anyone
reviewing the logs.
The DEBUG
level is used for logging messages that aid developers in identifying
issues during a debugging session. The content of the messages logged at the DEBUG
level will vary depending on your application, but they typically contain
detailed information that assists its developers in troubleshooting problems
efficiently. This can include variables' state within the surrounding scope or
relevant error codes. |
The idea is inspired by the @christian1980nrw project linked below. This project is my first with the Victron Venus OS, so I adopted some ideas and approaches from the following projects. The approach is the same and for very narrow systems the implementation with a bash script is probably better