Benachrichtigungen
Alles löschen

[Script] Tibber / aWATTar usw. : Victron & Shelly Plug S & AVM-Fritz-DECT200-210 Spotmarket-Switcher

94 Beiträge
7 Benutzer
13 Likes
2,647 Ansichten
(@matzedonien2)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 34
 

Hab nun den ganzen Part der API Keys rausgelassen. dann geht es.

 

# Spotmarket-Switcher Configuration File

# This configuration file is essential for setting up the Spotmarket-Switcher system.
# It controls various aspects like energy management, device control, and API integration.
# Each setting is explained in detail for easy understanding and configuration.

#######################
# General Settings
#######################

# Timezone setting: Essential for correct timing of operations based on your geographic location.
TZ="Europe/Amsterdam"

# Configuration file version: Used to ensure compatibility with the Spotmarket-Switcher software.
# You'll see a warning while running the Spotmarket-Switcher if you are using an outdated config version.
config_version=5

#######################
# Economic Logic Settings
#######################

# Economic Check (economic_check):
# This setting determines whether the system should consider the economic feasibility of charging the battery based on current and projected electricity prices.
# Options:
# 0 = Disable economic checks. The system will charge the battery regardless of the cost implications according to the config matrix.
# 1 = Enable economic checks against the highest price. Charging will only occur if the total cost (current price + energy loss + battery lifecycle costs) is lower than the highest price observed in the current price set.
# 2 = Enable economic checks against the average price. Charging will only occur if the total cost is lower than the average price of electricity.
# Example: If set to 1, and the highest price of the day is lower than the sum of the current price, energy loss, and battery lifecycle costs, charging will be aborted as it would not be economically feasible.
economic_check=0

# Feed-in Tariff (feedin_price):
# This is the price you receive for feeding electricity back into the grid, typically from a solar PV system.
# The value is in cents per kWh and is used in calculations to determine if it's more economical to store energy in the battery or to sell it back to the grid.
# Example: If your feed-in tariff is 9.87 cents per kWh, set this value to 9.87.
feedin_price=9.87

#######################
# Start/Stop Logic Settings
#######################

# Enable or disable specific logic controls:
# These settings control whether certain operations are based on start/stop logic or solar breakeven logic.
# Set to 1 to activate start/stop logic (depending start_price).
use_start_stop_logic=0
#Note: This functionality will be removed in the future in favour of economic_check and the price matrices.

# Price thresholds in cents/kWh:
# These values determine the price points at which different operations are triggered (net prices excl. tax).
# Note: Always use Cent/kWh, no matter if youre using Awattar (displaying Cent/kWh) or Entsoe API (displaying EUR/MWh).
start_price=11.0 # Start operations below this price.
abort_price=11.1 # Abort operations if price exceeds this value (energy fees not included).

# This setting allows you to control additional devices (like a water heater) using AVM Fritz DECT200/210 or Shelly switchable sockets.
# 0 = Do not control additional devices based on start/stop logic.
# 1 = Enable control of additional devices based on start/stop logic.
# When enabled, this will activate or deactivate the switchable sockets based on the start/stop charging logic.
switchablesockets_at_start_stop=0

# This setting determines whether to charge your battery system when the cost of energy (including fees) is lower than your solar feed-in tariff.
# 0 = Do not charge based on solar breakeven logic.
# 1 = Enable charging when energy cost is lower than solar feed-in tariff.
# Enabling this will initiate charging when it's more economical to charge the battery than to feed the solar energy back into the grid.
charge_at_solar_breakeven_logic=0

# Similar to 'charge_at_solar_breakeven_logic', but for controlling switchable sockets.
# 0 = Do not control switchable sockets based on solar breakeven logic.
# 1 = Enable control of switchable sockets when energy cost is lower than solar feed-in tariff.
# When enabled, this will activate or deactivate the switchable sockets based on the comparison of current energy cost and solar feed-in tariff.
switchablesockets_at_solar_breakeven_logic=0

#######################
# Victron Venus OS Solar Charger Setup
#######################

# Enable or disable Victron Venus OS Solar Charger control:
# 1 = Control the charger, 0 = Do not control the charger.
use_victron_charger=0

# Energy loss percentage in the charging/discharging process:
# This value accounts for energy lost during charging and discharging of the battery.
energy_loss_percent=23.3

# Battery lifecycle cost per kWh in cents:
# Represents the cost associated with the battery's lifespan and usage.
battery_lifecycle_costs_cent_per_kwh=4.444444
# Note: If you are using a chinese 5KWh LifePo4 battery (4.5 KWh useable) with 6000 cycles and
# the rebuying price is at 1200 EUR, the calculation will be 1200*100/6000/4,5.

# disable_inverting_while_only_switching
# This setting controls the inverter's operation when switching (controlling additional loads) is active, but charging is deemed too expensive.
# 0 = Keep inverting enabled even when only switching is active. This means the inverter will continue to convert DC (battery) power to AC (household) power.
# 1 = Disable inverting when only switching is active and charging is too expensive. This helps to preserve the battery's full charge by not using it for inverter operation.
# Essentially, when set to 1, the system prioritizes maintaining battery charge over supplying AC power from the battery when charging is not economically feasible.
disable_inverting_while_only_switching=1

# limit_inverter_power_after_enabling
# This setting specifies a power limit for the inverter when it is re-enabled after being disabled.
# -1 = No limit. The inverter will operate at its full capacity when re-enabled.
# Any positive value (e.g., 1000) = Set a specific limit (in watts). For example, setting this to 1000 will limit the inverter's output to 1000 watts.
# This is useful if you have a 'Limit inverter power' setting configured in the Energy Storage System (ESS) menu and want to ensure it's respected after the inverter is re-enabled.
# Note: If 'disable_inverting_while_only_switching' is used, this setting ensures that your preferred inverter power limit is reinstated after inverting is re-enabled.
limit_inverter_power_after_enabling=-1

#######################
# Switchable Sockets Setup (Fritz DECT and Shelly Wifi Plugs)
#######################

# Fritz DECT Sockets:
use_fritz_dect_sockets=0 # please activate with 1 or deactivate this socket-type with 0
fbox="192.168.178.1"
user="fritz1234"
passwd="YOURPASSWORD"
sockets=("YOURSOCKETID" "0" "0" "0" "0" "0") # add multiple switches if you like

# Shelly Wifi Plugs:

use_shelly_wlan_sockets=0 # please activate with 1 or deactivate this socket-type with 0
shelly_ips=("192.168.178.89" "0" "0") # add multiple Shellys if you like, dont forget to make the ips static in your router
shellyuser="admin"
shellypasswd="YOURPASSWORD" # only if used

#######################
# Config Matrices for Charging/Discharging/Switching
#######################

# Config Matrix for 24-hour Pricing:
# Each row represents an sorted price (from low to high) of the day and contains three values:
# 1st value: Enable (1) or disable (0) charging.
# 2nd value: Minimum SoC (%) for discharging.
# 3rd value: Enable (1) or disable (0) switchable sockets.
config_matrix24_price=(
"Charge Discharge_min_SOC Switch" # [0] Header
"1 95 1" # [1] Price 1
"1 95 1" # [2] Price 2
"1 95 1" # [3] Price 3
"0 95 0" # [4] Price 4
"0 95 0" # [5] Price 5
"0 95 0" # [6] Price 6
"0 95 0" # [7] Price 7
"0 95 0" # [8] Price 8
"0 95 0" # [9] Price 9
"0 90 0" # [10] Price 10
"0 85 0" # [11] Price 11
"0 80 0" # [12] Price 12
"0 75 0" # [13] Price 13
"0 70 0" # [14] Price 14
"0 65 0" # [15] Price 15
"0 60 0" # [16] Price 16
"0 55 0" # [17] Price 17
"0 50 0" # [18] Price 18
"0 45 0" # [19] Price 19
"0 40 0" # [20] Price 20
"0 35 0" # [21] Price 21
"0 30 0" # [22] Price 22
"0 25 0" # [23] Price 23
"0 10 0" # [24] Price 24
)

# Config Matrix for 48 prices (if include_second_day is enabled):
# Similar to the 24-price matrix but for 48-prices.
config_matrix48_price=(
"Charge Discharge_min_SOC Switch" # [0] Header
"1 95 1" # [1] Price 1
"0 95 0" # [2] Price 2
"0 95 0" # [3] Price 3
"0 95 0" # [4] Price 4
"0 95 0" # [5] Price 5
"0 95 0" # [6] Price 6
"0 95 0" # [7] Price 7
"0 95 0" # [8] Price 8
"0 95 0" # [9] Price 9
"0 95 0" # [10] Price 10
"0 95 0" # [11] Price 11

"0 95 0" # [12] Price 12
"0 95 0" # [13] Price 13
"0 95 0" # [14] Price 14
"0 95 0" # [15] Price 15
"0 95 0" # [16] Price 16
"0 93 0" # [17] Price 17
"0 91 0" # [18] Price 18
"0 89 0" # [19] Price 19
"0 87 0" # [20] Price 20
"0 85 0" # [21] Price 21
"0 83 0" # [22] Price 22
"0 81 0" # [23] Price 23
"0 79 0" # [24] Price 24
"0 77 0" # [25] Price 25
"0 75 0" # [26] Price 26
"0 73 0" # [27] Price 27
"0 71 0" # [28] Price 28
"0 69 0" # [29] Price 29
"0 67 0" # [30] Price 30
"0 65 0" # [31] Price 31
"0 63 0" # [32] Price 32
"0 61 0" # [33] Price 33
"0 59 0" # [34] Price 34
"0 57 0" # [35] Price 35
"0 55 0" # [36] Price 36
"0 53 0" # [37] Price 37
"0 51 0" # [38] Price 38
"0 49 0" # [39] Price 39
"0 47 0" # [40] Price 40
"0 45 0" # [41] Price 41
"0 43 0" # [42] Price 42
"0 41 0" # [43] Price 43
"0 38 0" # [44] Price 44
"0 35 0" # [45] Price 45
"0 30 0" # [46] Price 46
"0 25 0" # [47] Price 47
"0 10 0" # [48] Price 48
)

# Mini-Matrix for Dynamic SOC Based on Solar Energy:
# This matrix defines target SoC values based on expected solar energy (in MJ/m²).
config_matrix_target_soc_weather=(
"1.5 90" # At 1.5 MJ/m², target SoC is 90%
"3.5 15" # At 3.5 MJ/m², target SoC is 15%
)
# Note: # All the other values between this will be calculated automatically.
# If the sun will be more than 3.5 megajoule, the 15% will still be used as calculation result.
# If there will be enough sun, the battery capacity will be reserved for solar energy.

Diese r Beitrag wurde geändert Vor 4 Monaten von Matzedonien2

   
AntwortZitat
(@christian1980)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 55
Themenstarter  

Die Ursache ist, dass Dein BMS für den SOC keine Ganzzahlen ausgibt wie ich es bisher gewohnt war.
Auf der Shell kann man nicht (so einfach) mit Nachkommastellen arbeiten.

Kann sein das in der neuen Venus OS Version da was geändert wurde.
Ich hab Dir mal eben einen Fix gebaut der das beheben sollte:

https://github.com/christian1980nrw/Spotmarket-Switcher/releases/tag/v2.4.8

Gruß!

Christian


   
AntwortZitat
(@matzedonien2)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 34
 

@christian1980 Das ist Mega cool von dir. 

Ich schaue Mir das morgen an. Muss leider früh raus und daher gleich ins Bett. 

Ich melde mich! Schönen Abend noch.

 

Gruss

Matthias 


   
AntwortZitat
(@christian1980)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 55
Themenstarter  

OK, an Deiner Stelle würde ich wie gesagt den start_stop Kram deaktiviert lassen,
die Fixkosten für Deine Postleitzahl ändern um mit total prices arbeiten zu können,
dann die Wetter API mit API-Key aktivieren,
dann next day prices aktiviert lassen,
sowie ein bisschen mit den beiden Matrixen rumspielen wenn Dir die Defaultwerte nicht gefallen.
Economic logic auf highest prices.

Du wirst sehen das er Deinen Solarertrag dann im Akku speichert und nur bei höchsten Netzpreisen entlädt,
außerdem wird der Akku (nur wenn es sich lohnt, also bei Preisschwankungen oberhalb Deines Ladeverlustes zuzüglich Akkukosten)
bis zu einem errechnetem SOC Ladeziel aufgeladen und ebenfalls nur zu höchsten Kursen entladen.

Das ist mein Resultat von heute.
Nachts wurde aufgeladen auf 90% (dynamisch errechnet gemäß Wetter-Mini-Matrix, nicht wundern das Wetter hat sich später geändert, im Screenshot werden für heute nur noch 68% errechnet) (morgen wird nicht geladen, Preise sind zu ähnlich) und zu Höchstpreisen entladen.

Jetzt habe ich noch 26% im Akku die wohl morgen Nachmittag oder Abend entladen werden.
Gemäß Matrix wird nun unterhalb 30% SOC nur noch bei den zwei höchsten verfügbaren Preisen entladen, bei allen anderen wird das ESS abgeschaltet.
Deshalb wurde im Beispiel um 19 Uhr nicht mehr weiter entladen.
"0 30 0" # [46] Price 46

Wenn es sich nicht lohnt kann es sein das der Akku dann erstmal nicht benutzt wird, je nach Folgepreisen von übermorgen, die Preise von übermorgen werden aber erst morgen Nachmittag veröffentlicht.

Viel Erfolg!

 

 

Gruß!

Christian


   
AntwortZitat
(@matzedonien2)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 34
 

@christian1980 Moin Christian,

 

zwei, drei kleine Fragen hätte ich noch, bevor ich mich da nun dran mache.

1. Kann ich den downloadlink einfach erneut ausführen?

wget  https://raw.githubusercontent.com/christian1980nrw/Spotmarket-Switcher/main/victron-venus-os-install.sh 

Und dann einfach die neu heruntergeladene "victron-venus-os-install.sh ausführen. Überschreibt er dann die alten Dateien? Ich gehe davon aus, dass ich dann aus der "neuen" sample.config.txt wieder anpassungen machen und dann als neue config.txt speichere?

 

2. Bei den Matrixen z.B. (1 95 1) stellen sich mir noch folgende Fragen:

a) den SOC Wert auf den maximal aufgeladen werden soll stelle ich im Venus OS als Zeitplan ein, korrekt?

b) Ich habe noch nicht verstanden, warum ich mehrere verschiedene Matrixen auswählen kann. Wie ist das gemeint, wenn z.B. bei den Preisen 1-6 immer der gleiche Wert steht z.B. (1 95 1). Heißt das, dass bei den ersten 6 günstigsten Werte geladen wird? D.h. ich sage nciht, dass er unter xx ct/kWh laden soll, sondern ich sage: "Lade bei den 6 günstigsten Preisen an diesem Tag" (natürlich nur, wenn nicht zu erwarten ist, dass die PV-Anlage alles voll lädt).

c) Wo stelle ich ein, dass z.B. nur bei Preis Nr. 47 und 48  tiefer als der eingestellte SOC entladen werden darf? Bei dir steht in dem Screenshot:

"Dynamic ESS discharge (depending SOC) at prices: 47 48".

Wo gibt man an, dass diese beiden Werte berücksichtigt werden? Bei mir stand dort kein Wert. 

 

Wenn du mir dies beantworten könntest, fange ich mal an zu testen.


   
AntwortZitat
(@christian1980)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 55
Themenstarter  

@matzedonien2 
> sample.config.txt wieder anpassungen machen und dann als neue config.txt speichere?

Nein das brauchst Du so nicht machen. Tausch einfach die controller.sh aus und mach sie mit dem chmod Befehl nach Anleitung ausführbar.
Die config muss nur getauscht werden wenn sich die config Version ändert, z.B. wenn neue Parameter oder Features hinzukommen.

> (1 95 1)
Die erste 1 steht für Laden zu dem Preis, die 95 steht dafür das der Akku erst zu 95 % voll sein muss bis er zu dem Preis entlädt, die zweite 1 steht dafür das zu dem Preis geschaltet wird falls Du Steckdosen nutzt.

Es gibt 2 Matrixen weil Du je nach Tageszeit entweder 24 oder 48 Preise vorliegen hast.

 

> den SOC Wert auf den maximal aufgeladen werden soll stelle ich im Venus OS als Zeitplan ein, korrekt?

Nein, die Ladehöhe wird anhand der Wettervorhersage errechnet und der Wert überschrieben. Wird genug Sonne erwartet, wird nicht so hoch aufgeladen.
Eingestellt wird das mit der Mini-Matrix ganz am Ende der config.txt. Die Wetter API muss dafür aktiviert werden.

 

> Wo stelle ich ein, dass z.B. nur bei Preis Nr. 47 und 48  tiefer als der eingestellte SOC entladen werden darf? Bei dir steht in dem Screenshot:

"Dynamic ESS discharge (depending SOC) at prices: 47 48".

Das wird automatisch errechnet anhand Deines Akkufüllstandes, abgeleitet aus der 24 / 48 Matrix. Je leerer er wird, desto mehr Preise werden deaktiviert. Am Ende wird nur noch zu ganz teuren Preisen entladen.

 

 

Gruß!

Christian


   
AntwortZitat
(@matzedonien2)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 34
 

@christian1980 Vielen Dank,

 

Ein paar Fragen habe ich dann aber noch zu den Matrixen, die mir immer noch unklar sind.

1. Was bringt es mir (egal in welcher Matrix) die ersten 6 Zeilen mit gleichen Werten z.B. 1 95 1 auszuwählen? Heißt das dann, dass das für die 6 günstigsten Preisstufen gilt?

 

2. Was macht der Automatismus, wenn ich dort folgendes eintragen würde?

1 95 1 # Preis 1

1 95 1 # Preis 2

1 80 1 # Preis 3

1 75 1 # Preis 4

1 70 1  # Preis 5

1 65 1 # Preis 6

 

Die Klärung letzterer Frage erklärt vermutlich auch die Frage 1.

 

Vielen Dank!

 

Gruß

Matthias

 


   
AntwortZitat
(@christian1980)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 55
Themenstarter  

Wenn Du das auf die vorgeschlagenen Werte änderst, verlagerst Du die Entladung mehr hin zu günstigen Preisen, außerden wird bei allen 6 Preisen versucht zu laden und zu schalten, es macht so also keinen Sinn.

Man muss ein wenig testen bis man optimale Werte für seine Anlage findet.
Für den Anfang würde ich es an Deiner Stelle auf Default lassen bis Du die Funktionsweise komplett verstanden hast.

Die jeweiligen Resultate werden in /tmp/spotmarket-switcher.log gespeichert.

Gruß!

Christian


   
AntwortZitat
(@matzedonien2)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 34
 

@christian1980 so werde ich es tun! Vielen Dank für deine Zeit!


   
AntwortZitat
(@matzedonien2)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 34
 

@christian1980 Hallo Christian,

leider funktioniert es noch nicht. Ich gehe davon aus, dass ich nun richtigerweise den neuen Code verwende. Denn nun kommt die gleiche Meldung wie zuvor für Zeile 1224 und 1259. Aber nun in Zeile 1229 und 1264. Ich glaube im Code als absolut unwissender Laie zumindest erkannt zu haben, dass du offenbar 5 Zeilen eingefügt hast, denn der Fehler ist in der selben Textzeile, diese ist aber nun 5 Zeilen verschoben.

 

Achso und das mit dem CHMOD Befehl habe ich noch nicht verstanden. Du schreibst "gemäß Anleitung". Ich finde das da nicht und habe die gesamte Installationsprozedur neu gemacht und die alten Ordner unter Data/etc/ und unter /service zuvor gelöscht.

 

Gruß Matthias

Diese r Beitrag wurde geändert Vor 4 Monaten 2 mal von Matzedonien2

   
AntwortZitat
(@christian1980)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 55
Themenstarter  

@matzedonien2 ...ich installiere heute Abend mal die v3.13 bei mir und teste es nochmal.

Du kannst mir aber schonmal sagen ob dieser Befehl nun Deinen SOC als Ganzzahl ausgibt oder nicht:

(dbus-send --system --print-reply --dest=com.victronenergy.system /Dc/Battery/Soc com.victronenergy.BusItem.GetValue | grep variant | awk '{print int($3)}')

   
AntwortZitat
(@matzedonien2)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 34
 

@christian1980 

Ja es wird eine Ganzzahl ausgegeben.

root@raspberrypi4:~# (dbus-send --system --print-reply --dest=com.victronenergy.system /Dc/Battery/Soc com.victronenergy.BusItem.GetValue | grep variant | awk '{print int($3)}')
15


   
AntwortZitat
(@christian1980)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 55
Themenstarter  

...seltsam, dann müsste das Problem eigentlich behoben sein. Bist Du Dir sicher das das Programm nun Version 2.4.8 anzeigt wenn Du es laufen lässt?


   
AntwortZitat
(@matzedonien2)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 34
 

@christian1980 

Jup,

dies zeigt er an, wenn ich das starte:

 

root@raspberrypi4:~# sh /data/etc/Spotmarket-Switcher/controller.sh
I: Bash Version: GNU bash, version 5.0.18(1)-release (arm-ve-linux-gnueabi)
I: Spotmarket-Switcher - Version 2.4.8
[/] Loading...Config validation passed.

 

Habe auch gerade gesehen, dass er (nachdem ich die Wetter Api engefügt habe) nun noch folgendes am Ende anzeigt:

 

I: Charge at prices: 1 2 3 4 5 6
I: Dynamic ESS discharge (depending SOC) at prices:
I: Switchable sockets at prices: 1 2 3 4 5 6
I: Sunrise today will be 08:39 and sunset will be 16:25. Suntime will be 466 min utes.
I: Solarenergy today will be 0.4 megajoule per sqaremeter with 99.3 percent clou ds.
I: Solarenergy tomorrow will be 0.3 megajoule per squaremeter with 99.4 percent clouds.
I: At 0.4 megajoule there will be a dynamic SOC charge-target of 90 % calculated . The rest is reserved for solar.
/data/etc/Spotmarket-Switcher/controller.sh: line 1286: 90: command not found
root@raspberrypi4:~#

 

Vielleicht kannst du dir die neue Version mal anschauen. Oder mir sagem mit welcher es läuft. Ich kann ja auch eine alte version aufspielen.

Es eilt aber nicht!!

 

Ich muss gleich auf ne private Veranstaltung, daher könnte ich es heute auch nicht mehr testen, falls du noch etwas findest.

 

Gruß

Matthais


   
AntwortZitat
(@christian1980)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 55
Themenstarter  

...die Varible wird nun fälschlicherweise als Befehl interpretiert. Ich melde mich im Laufe des Abends, es wird an Deiner neueren Venus OS Version liegen, ist aber keine große Sache das zu beheben. Ich will sowieso auf ein neues Venus OS umsteigen, also alles gut.

Gruß!
Christian


   
AntwortZitat
Seite 3 / 7
Teilen: