My-PV AC-Thor 9s mit EVCC steuern #13398
Replies: 8 comments 5 replies
-
Hallo @CommoCruise, vielen Dank für deine Anleitung und die damit verbundenen Mühen. Allerdings musste ich im EVCC-Container noch folgende Pakete installieren. Auch war die yaml-formatierung (Einrückungen) oben nicht immer passend :) Ich beobachte den Fall jetzt mal ein paar Tage und melde mich dann mal wie es klappt. VG Michael |
Beta Was this translation helpful? Give feedback.
-
Das hier finde ich auch interessant. Bei mir ist auch ein AC-Thor 9s installiert, der einen „dummen“ Heizstab regelt. Das funktioniert bis jetzt auch immer gut und er hat den Überschuss verarbeitet, bevor er in das Netz eingespeist wurde. Jetzt steuere ich ja dann mit evcc die Wallbox in der Garage und möchte natürlich hauptsächlich PV-Überschuss laden. In evcc habe ich den AC-Thor als aux integriert. Reicht das jetzt schon aus, und die Wallbox bekommt dann den ganzen verfügbaren Überschuss und der AC-Thor wird gedrosselt bzw. ganz deaktiviert? Ich muss / will nicht zwingend den AC-Thor immer versorgen - primär soll das Auto geladen werden. Was dann noch zuviel ist, kann noch zum Warmwasser gehen. Oder eben, wenn kein Auto geladen wird. Ebenfalls muss ich den AC-Thor ja nicht über evcc steueren - der macht das ja auch jetzt schon automatisch? |
Beta Was this translation helpful? Give feedback.
-
AC Thor mit mypv Zähler funktioniert auch.Meine Lösung dient dazu alles via evcc zu steuern und kein extra mypv Zähler zu installieren. Am 24.05.24, 10:28 schrieb AndaleR ***@***.***>:
Das hier finde ich auch interessant.
Bei mir ist auch ein AC-Thor 9s installiert, der einen „dummen“ Heizstab regelt. Das funktioniert bis jetzt auch immer gut und er hat den Überschuss verarbeitet, bevor er in das Netz eingespeist wurde.
Jetzt steuere ich ja dann mit evcc die Wallbox in der Garage und möchte natürlich hauptsächlich PV-Überschuss laden. In evcc habe ich den AC-Thor als aux integriert. Reicht das jetzt schon aus, und die Wallbox bekommt dann den ganzen verfügbaren Überschuss und der AC-Thor wird gedrosselt bzw. ganz deaktiviert?
Ich muss / will nicht zwingend den AC-Thor immer versorgen - primär soll das Auto geladen werden. Was dann noch zuviel ist, kann noch zum Warmwasser gehen. Oder eben, wenn kein Auto geladen wird.
Ebenfalls muss ich den AC-Thor ja nicht über evcc steueren - der macht das ja auch jetzt schon automatisch?
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you were mentioned.Message ID: ***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
@AndaleR - ich habe das gleiche Problem. Mein AC-Thor hängt am Modbus vom Varta-Speicher und bekommt dort die Überschuss-Info. Was mir dann allerdings fehlt, ist die Möglichkeit Wallbox und Heizstab zu priorisieren. Also wenn Überschuss vorhanden dann 1) zur Wallbox und erst 2) zum Heizstab und 3) ins Netz einspeisen. Das erhoffe ich mir jetzt mit der hier beschriebenen Lösung über EVCC. Dort kann ich ja die Prio der "Loadpoints" in der evcc.yaml vorgeben. |
Beta Was this translation helpful? Give feedback.
-
Jup das ist die dritte Möglichkeit, da hast du recht.Mein solax lässt mich leider nicht an den modbus, da dort schon der Zähler hängt.Am 24.05.24, 10:38 schrieb AndaleR ***@***.***>:
Ich habe auch keinen Zähler von my-pv.
Bei mir ist der AC-Thor am Modbus vom Wechselrichter angeschlossen bzw. greift jetzt auf die Modbus-Daten zu, die ich von einem Home Assistant Modbus-Proxy bereitstelle.
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you were mentioned.Message ID: ***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
Wenn der AC Thor via Zähler oder anderweitig die Infos hat, dann reicht aux. Als aux wird er nur angezeigt. Die Steuerung wird dann nur vom AC thor selbst übernommen, wenn er Überschuss sieht dann heizt er.Am 24.05.24, 10:44 schrieb AndaleR ***@***.***>:
Hm. Ich war jetzt fast der Meinung, dass der AC-Thor nur als aux eingebunden werden müsste - und dann evcc das so passend steuert. Ohne mit Ladepunkten und Priorisierung arbeiten zu müssen.
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you were mentioned.Message ID: ***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
Hallo Zusammen, ich hänge meine Frage nochmal unten dran: Ich würde auch gern den Thor vom modbus proxy (als HA Addon) mit Daten versorgen und durch evcc steuern lassen, bekomme es jedoch nicht hin. Kannst jemand kurz seinen Aufbau und die Einstellungen erklären? Ich danke vorab! |
Beta Was this translation helpful? Give feedback.
-
Ich habe mir nun einen extra evcc Container installiert, um die Scripte ausführen zu können. Leider bekomme ich immer wieder im Debug des EVCC folgende Meldung: [script] ERROR 2024/09/13 11:55:13 /home/michael/evcc/get_enabled.sh: Die Berechtigungen sind sowohl auf dem Verzeichnis, wie auch der Dateien mit 777 gesetzt. Wo liegt der Fehler? |
Beta Was this translation helpful? Give feedback.
-
Im folgenden zeige ich meine Umsetzung der Steuerung eines AC-Thor 9s von My-PV mittels EVCC.
Ziel war es den AC-Thor ohne zusätzlichen Zähler von My-PV, mittels der bereits vorhandenen Zählerwerte und in Abhängigkeit zur Ladung der Wallbox zu steuern.
Los geht es mit den My-PV Komponenten:
Konfiguration des AC-Thor:
- M7 Warmwasser mit PWM und Temperatur Sensoren T1(unten) & T2(oben)
- AC-Thor ist extern mittels Askoflow DLE760 am Schichtspeicher montiert.
- Einstellungen: Hysterese max 9°C
- Einstellungen: Steuerung HTTP & Zeitablauf Ansteuerung 600s
Mechanischer Umbau vom My-PV Heizstab
Bei Kauf hat der My-PV Heizstab nicht nur ein STB sondern auch ein Thermostat mit maximal einstellbaren 75°C. Da ich den Puffer bis mind. 80°C aufheize, musste der Thermostat entfernt werden. Dafür gibt es von My-PV einen Umbausatz welcher inkl. Versand und MwSt 88€ kostet. Der Umbau selbst dauert keine 15min.
EVCC Konfig
Hier seht ihr meine EVCC Konfiguration
# open evcc at http://evcc.local:7070 network: schema: http host: evcc.local # .local suffix announces the hostname on MDNS port: 7070
log: debug
levels:
cache: error
#unique installation id
plant: < ID >
interval: 30s # control cycle interval
meters:
type: template
template: solax
id: 1
host: < IP >
port: 502
usage: grid
modbus: tcpip
name: SolaxMeter
type: template
template: solax
id: 1
host: < IP >
port: 502
usage: pv
modbus: tcpip
name: SolaxHybrid
type: template
template: solax-inverter-cloud
usage: pv
tokenid: < token >
serial: < serial >
name: SolaxMic
type: template
template: solax
id: 1
host: < IP >
port: 502
usage: battery
modbus: tcpip
name: SolaxBattery
type: custom
name: thor-meter
power:
source: modbus
uri: < IP >:502
register:
address: 1000
type: holding
decode: int16
timeout: 2s
chargers:
type: template
template: daheimladen-mb
host: < IP >
port: 502
name: wallbox
type: custom
icon: waterheater
name: ac-thor-waterheater
enable: # set charger enabled state (true/false or 0/1)
source: script
cmd: /home/commocruiser/evcc/set_enable.sh ${enable} #0 or 1
timeout: 2s
enabled: # charger enabled state (true/false or 1/0)
source: script
cmd: /home/commocruiser/evcc/get_enabled.sh #0 or 1
timeout: 2s
status: # charger status A..F
source: script
cmd: /home/commocruiser/evcc/get_status.sh #B or C always connected
timeout: 2s
maxcurrent:
source: script
cmd: /home/commocruiser/evcc/set_maxcurrenthttp.sh ${maxcurrent}
timeout: 2s
features: [integrateddevice, heating]
vehicles:
type: template
template: dacia
title: Spring
user: < user >
password: < password >
capacity: 27.4
name: Spring
icon: car
phases: 1
type: custom
title: Warmwasser
name: Warmwasser
icon: waterheater
phases: 3
soc:
source: modbus
uri: < IP >:502
register:
address: 1001
type: holding
decode: int16
timeout: 2s
scale: 0.1
loadpoints:
title: Garage
charger: wallbox
vehicle: Spring
mode: pv
phases: 1
mincurrent: 6
maxcurrent: 16
priority: 2
title: Heizstab
charger: ac-thor-waterheater
mode: pv
phases: 3
mincurrent: 1
maxcurrent: 39
meter: thor-meter
priority: 1
vehicle: Warmwasser
enable:
threshold: 0
delay: 1m
disable:
threshold: 0
delay: 1m
site:
title: Mein Zuhause
meters:
grid: SolaxMeter
pv:
- SolaxHybrid
- SolaxMic
battery:
- SolaxBattery
residualPower: 200
Im folgenden kommen die Scripte:
set_enable.sh
#!/bin/sh #set_enable.sh #charger state 0 - 1 , 1081
state=$1
if [ "$state" = "true" ];
then
#set intial Power, so that Heater starts
curl -X GET http://< IP >/control.html?power=100
#Write C (connected and heating) into status text file, so that this state can be returned to EVCC
echo C >/home/commocruiser/evcc/status.txt
#Write true into enabled text file, so that this state can be returned to EVCC
echo true >/home/commocruiser/evcc/enabled.txt
fi
if [ "$state" = "false" ];
then
#set power to 0, so that heater stops
curl -X GET http://< IP >/control.html?power=0
#Write B (conntected but not heating) into status text file, so that this state can be returned to EVCC
echo B >/home/commocruiser/evcc/status.txt
#Write false into enabled text file, so that this state can be returned to EVCC
echo false >/home/commocruiser/evcc/enabled.txt
fi
set_maxcurrenthttp.sh
#!/bin/sh #set_maxcurrenthttp.sh #set charger max current (A), 1000
#get maxcurrent value from EVCC
maxcurrent=${1%.*}
#multiply EVCC maxcurrent with Volt and phases, because My-PV uses Watt
maxpower=
expr $maxcurrent \* 230 \* 3
echo "maxcurrent: $maxcurrent"
echo "maxpower: $maxpower"
#Set calculcated max power via HTTP request on My-PV
curl -X GET http://< IP >/control.html?power="$maxpower"
#write maxpower in textfile, to use it in other scripts
echo "$maxpower" >/home/commocruiser/evcc/maxcurrent_value.txt
get_status.sh
#!/bin/sh #get_status.sh #charger status A..F , 1003
#get status value from text file
status=$(cat /home/commocruiser/evcc/status.txt)
echo $status
get_enabled.sh
#!/bin/sh #get_enabled.sh #charger state 0 - 1 , 1081
#get enabled state from text file
enabled=$(cat /home/commocruiser/evcc/enabled.txt)
echo $enabled
Und zuletzt das Script welches via cron job, alle 5min ausgeführt werden muss. Da ein HTTP request nur maximal 10min gültig ist auf MyPV Seite und es oft vorkommt das EVCC maxcurrent nicht oft ändert.
check_maxcurrent.sh
#!/bin/sh #check_maxcurrent.sh #Script will run ever 5min(executed via cron job) and check if maxcurrent is still the same value(+-300Watt) #If yes, it will rewrite the maxcurrent value to AC-Thor, to prevent stopping AC-Thor, #because of no HTTP control signal since 10min
#get maxcurrent value last time set by EVCC
maxcurrent_old=$(cat /home/commocruiser/evcc/maxcurrent_value.txt)
echo maxcurrent_old: "$maxcurrent_old"
#get My-PV data jsn
data_file=$(curl -s -X GET http://< ip >/data.jsn)
#get current power from heater out of data.jsn
maxcurrent_heater=$(printf '%s\n' "$data_file" | jq -r '."power_ac9"')
echo maxcurrent_heater: "$maxcurrent_heater"
#substract 300W from current heater power, for later comparison
#because the current power value from heater is never the same we set before via HTTP request
maxcurrent_heater_low=
expr $maxcurrent_heater - 300
echo maxcurrent_heater_low: "$maxcurrent_heater_low"
#add 300W from current heater power, for later comparison
#because the current power value from heater is never the same we set before via HTTP request
maxcurrent_heater_high=
expr $maxcurrent_heater + 300
echo maxcurrent_heater_high: "$maxcurrent_heater_high"
#get current status & enabled
status=$(cat /home/commocruiser/evcc/status.txt)
enabled=$(cat /home/commocruiser/evcc/enabled.txt)
#status value if heater is activated
value_C=C
#enabled value if heater is activated
value_true=true
#Check if heater should heat, if not exit script
if [ "$status" != "$value_C" -o "$enabled" != "$value_true" ]
then
#End script
echo "Enabled not true or Status not C"
exit 0
fi
#if accidentely power is already 0(or less 100), set it again and exit script
if [ "$maxcurrent_heater" -le 100 ]
then
curl -X GET http://< ip >/control.html?power="$maxcurrent_old"
exit 0
fi
#if EVCC set maxcurrent > maxcurrent_heater_low(current heater power -300) and
#EVCC set maxcurrent < maxcurrent_heater_high(current heater power +300)
#Then set EVCC set maxcurrent power again to MyPV
#Because every HTTP request is only 10min valid, so we need to renew the value
if [ "$maxcurrent_old" -ge "$maxcurrent_heater_low" -a "$maxcurrent_old" -le "$maxcurrent_heater_high" ];
then
curl -X GET http://< ip >/control.html?power="$maxcurrent_old"
echo "Power auf maxcurrent old gesetzt"
fi
Hintergrundwissen zur My-PV Regelung:
In M7 wird T1 für die Leistung (Abschaltung, Boost) verwendet, und T2 für das PWM-Signal an die Pumpe.
Allerdings beeinflusst auch T2 mitunter die Acthor-Leistung: Wenn T2 > (ww1-target + hyst + pwmtx) ist.
Eine Leistungsreduktion vor Erreichen der Zieltemperatur kann eingestellt werden, sodass z.B. kurz vor der STB Auslösetemperatur der ACTHOR keine Leistung mehr abgibt. Eingestellt werden kann dies mit den zwei Parametern:
pwmtx (Werkseinstellung 5)
pwmty (Werkseinstellung 10)
pwmtx hat einen Wertebereich von 0-15, pwmty von 5-15.
Die Werte können mit folgendem URL-Befehl über den Webbrowser angepasst werden:
[IP ADRESSE DES ACTHOR]/setup.jsn?pwmtx=Wert
[IP ADRESSE DES ACTHOR]/setup.jsn?pwmty= Wert
Beispiel Leistungsreduktion mit pwmtx und pwmty richtig einstellen:
Der STB löst bei 90°C aus > Zieltemperatur(tmax) sind 55°C Hysterese 9°C > Ziel ist das 90°C nicht erreicht werden können, wenn jetzt pwtx = 15 und pwmty = 10 eingestellt sind würde das konkret bedeuten das die Leistungsreduktion bei tmax(55) + Hysterese(9) + pwmtx(15) = 79°C beginnt. Und wenn tmax + Hysterese + pwmtx + pwmty = 89°C ist die Leistung gleich 0 Watt.
Beta Was this translation helpful? Give feedback.
All reactions