Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Neuer Charger 'AC Thor 9S' #18020

Closed
Lepidopteron opened this issue Jan 2, 2025 · 100 comments · Fixed by #18034, #18175 or #18199
Closed

Neuer Charger 'AC Thor 9S' #18020

Lepidopteron opened this issue Jan 2, 2025 · 100 comments · Fixed by #18034, #18175 or #18199
Labels
devices Specific device support

Comments

@Lepidopteron
Copy link

Derzeit werden von my-PV die Meter

my-PV bietet aber via AC Thor auch externe Heizstäbe an, die neu via API gesteuert werden können. Früher hatte AC Thor die Anbindung eines Smartmeters voraus gesetzt, jetzt kann man den Heizstab via dem API selber steuern: https://www.my-pv.com/de/info/my-pv-cloud/
Vorteil: Die Priorisierung des Stromüberschusses kann richtig verteilt werden.

Dokumentation AC Thor: https://download.my-pv.com/acthor/acthor_doc_de_a0021702.pdf
Swagger Doku des API: https://api.my-pv.com/api-docs/

Unser AC Thor 9s läuft mit einem 6 kW Heizstab
Ich hatte unseren Charger als elwa2 Heizstab konfiguriert, da stimmt aber die Watt-Zahl immer noch und er 'heizt' nur mit 15W

meters:
 - name: ACThor
   type: template
   template: thor
   usage: aux
   host: 192.168.4.18 # IP-Adresse oder Hostname

chargers:
 - name: my_ELWA_Heizstab
   type: template
   template: ac-elwa-2
   # Modbus TCP
   modbus: tcpip
   id: 1
   host: 192.168.4.18 # Hostname
   port: 502 # Port

loadpoints:
 - title: Heizstab # display name for UI
   charger: my_ELWA_Heizstab # Wallbox Referenz
   meter: ACThor
   mode: pv # charge mode (off, now, minpv, pv)
   phases: 1
   mincurrent: 0.125
   maxcurrent: 26 # (6 kW bei 230V ?)
   priority: 0
   enable:
    threshold: -300 # einschalten, wenn 1 Minute lang mindestens 300 W Uberschuss vorhanden ist
    delay: 1m
   disable:
    threshold: 300  # maximum import power (W)
    delay: 1m

Das API erscheint mir relativ einfach, vielleicht gibt es sonst auch eine andere Lösung?

@andig andig added the devices Specific device support label Jan 2, 2025
@andig
Copy link
Member

andig commented Jan 3, 2025

Ich finde in der Doku leider nichts zu Modbus Registern- die bräuchte es.

@Lepidopteron
Copy link
Author

Ich finde in der Doku leider nichts zu Modbus Registern- die bräuchte es.

Dann macht es wahrscheinlich eher Sinn einen POST mit 'generiertem Body' abzusetzen mit dem HTTP Plugin?
https://docs.evcc.io/docs/reference/plugins#http-lesenschreiben

Geht das Plugin denn auch für chargers?

Ansonsten geht Ansteuerung via Modbus RTU/TCP schon, aber dann halt mit den jewieligen Protokollen?
Dann müsste der AC Thor die Bezugsleistung wahrscheinlich bereinigt vom EVCC bekommen? (Siehe S. 36 https://download.my-pv.com/acthor/acthor_doc_de_a0020410.pdf). Also in den Steuerungseinstellungen nicht auf den Smartmeter/Wechselrichter eingestellt sein, sondern auf EVCC?

@andig
Copy link
Member

andig commented Jan 3, 2025

Dann müsste der AC Thor die Bezugsleistung wahrscheinlich bereinigt vom EVCC bekommen?

Nein. evcc ist master muss den Thor steuern. Dafür brauchts Modbus Register. Bisher fehlen die...

@Lepidopteron
Copy link
Author

Hm, vielleicht übersehen ich etwas, aber in der Dokumentation steht, dass sowohl Adjustable Modbus TCP als auch Adjustable Modbus RTU als Steueroption hinterlegt sind. Auf Seite 36 findet sich diese Einstellung
Screenshot

@andig
Copy link
Member

andig commented Jan 3, 2025

Da ist Thor der master. Das ist nicht was wir brauchen. Ausserdem scheint ja das Elwa Template fast zu laufen- also muss Modbus Slave möglich sein.

@Lepidopteron
Copy link
Author

Aber wenn die AC-THOR Nummer >1 ist, wäre er doch als Slave einstellbar?

@andig
Copy link
Member

andig commented Jan 3, 2025

Es braucht eine Doku der Modbusregister. Ich mache zu bis die vorliegt.

@andig andig closed this as completed Jan 3, 2025
@Lepidopteron
Copy link
Author

@andig andig reopened this Jan 3, 2025
@andig
Copy link
Member

andig commented Jan 3, 2025

Das hilft. Der einzige Unterschied zur Elwa scheint das Leistungsregister zu sein- 1060 statt 1074?

@Lepidopteron
Copy link
Author

Lepidopteron commented Jan 8, 2025

Mit der Version v0.132.1 jetzt verfügbar, vielen Dank.
Mit folgenden Einstellungen kann die Ansteuerung erfolgen:

1. AC Thor: Steuerungs-Einstellungen

Ansteuerungs-Typ: Modbus TCP
Zeitablauf Ansteuerung: 1m

2. Einstellungen EVCC

meters:
 - name: ACThor
   type: template
   template: thor
   usage: aux
   host: 192.168.178.2 # IP-Adresse oder Hostname
chargers
 - name: heizstab
   type: template
   template: ac-thor
   modbus: tcpip
   id: 1
   host: 192.168.178.2 # IP-Adresse oder Hostname
   port: 502 # Port
loadpoints:
 - title: Heizstab # display name for UI
   charger: heizstab # Charger reference
   meter: ACThor # Used for temperature
   mode: pv # charge mode (off, now, minpv, pv)
   priority: 0
   enable:
    threshold: -200 # einschalten, wenn 1 Minute lang mindestens 200 W Uberschuss vorhanden ist
    delay: 1m
   disable:
    threshold: 200  # maximum import power (W)
    delay: 1m

Hier ein Beispiel mit einem 6kW Heizstab, der bisher nie mehr als 5kW geschafft hat ... ;-)
Screenshot 2025-01-08 at 07 59 26
Screenshot 2025-01-08 at 07 59 32

Ein Punkt, der nicht geht: Er liefert auch bei 'Off'/'Solar', wenn keine Sonnenenergie zur Verfügung steht die minimal mögliche Leistung. Das müsste egtl. '0' sein @andig ?
image

@andig
Copy link
Member

andig commented Jan 8, 2025

Ein Punkt, der nicht geht: Er liefert auch bei 'Off'/'Solar', wenn keine Sonnenenergie zur Verfügung steht die minimal mögliche Leistung. Das müsste egtl. '0' sein

Ich verstehe die Frage nicht. Falsche minCurrent am Ladepunkt?

@Lepidopteron
Copy link
Author

Ein Punkt, der nicht geht: Er liefert auch bei 'Off'/'Solar', wenn keine Sonnenenergie zur Verfügung steht die minimal mögliche Leistung. Das müsste egtl. '0' sein

Ich verstehe die Frage nicht. Falsche minCurrent am Ladepunkt?

Also, wenn der Toggle auf 'Off' steht bzw. auf 'Solar' und KEIN Überschuss besteht, müsste bei Power eigentlich '0.0 kW' stehen, er lädt aber mit 28-30Watt permanent.
minCurrent ist ja 0.125 oder größer. Geht es nicht, dass er gar nicht lädt, wenn er 'Off' ist?

@andig
Copy link
Member

andig commented Jan 8, 2025

Schau bitte ins Logfile. Für "aus" wird Register 1000 auf 0 gesetzt. Der Rest ist vmtl. Eigenverbrauch des Gerätes.

@Lepidopteron
Copy link
Author

Schau bitte ins Logfile. Für "aus" wird Register 1000 auf 0 gesetzt. Der Rest ist vmtl. Eigenverbrauch des Gerätes.

Habe folgendes in den Logs:

[lp-3 ] DEBUG 2025/01/08 23:00:41 pv charge current: 0A = 0A + -3.39A (779W @ 1p)
[lp-3 ] DEBUG 2025/01/08 23:00:41 projected site power 779W >= 200W disable threshold
[lp-3 ] DEBUG 2025/01/08 23:00:41 pv disable timer start: 1m0s
[lp-3 ] DEBUG 2025/01/08 23:00:41 pv disable in 1m0s
[lp-3 ] DEBUG 2025/01/08 23:00:41 max charge current: 0.125A
[lp-3 ] DEBUG 2025/01/08 23:00:50 charge power: 28W
[lp-3 ] DEBUG 2025/01/08 23:01:00 charge power: 29W
[lp-3 ] DEBUG 2025/01/08 23:01:10 charge power: 30W
[lp-3 ] DEBUG 2025/01/08 23:01:11 charger status: B
[lp-3 ] DEBUG 2025/01/08 23:01:11 pv charge current: 0A = 0A + -3.36A (772W @ 1p)
[lp-3 ] DEBUG 2025/01/08 23:01:11 projected site power 772W >= 200W disable threshold
[lp-3 ] DEBUG 2025/01/08 23:01:11 pv disable in 30s
[lp-3 ] DEBUG 2025/01/08 23:01:11 pv disable timer remaining: 30s
[lp-3 ] DEBUG 2025/01/08 23:01:20 charge power: 30W
[lp-3 ] DEBUG 2025/01/08 23:01:30 charge power: 29W
[lp-3 ] DEBUG 2025/01/08 23:01:40 charge power: 29W
[lp-3 ] DEBUG 2025/01/08 23:01:42 charger status: B
[lp-3 ] DEBUG 2025/01/08 23:01:42 pv charge current: 0A = 0A + -3.35A (770W @ 1p)
[lp-3 ] DEBUG 2025/01/08 23:01:42 projected site power 770W >= 200W disable threshold
[lp-3 ] DEBUG 2025/01/08 23:01:42 pv disable in 0s
[lp-3 ] DEBUG 2025/01/08 23:01:42 pv disable timer elapsed
[lp-3 ] DEBUG 2025/01/08 23:01:42 charger disable
[lp-3 ] DEBUG 2025/01/08 23:01:42 wake-up timer: stop
[lp-3 ] DEBUG 2025/01/08 23:01:50 charge power: 29W

@docolli
Copy link
Contributor

docolli commented Jan 10, 2025

Ich habe evcc auf 0.132.1 und jetzt meinen ACThor auch mal drüber eingerichtet.
Leider wird der ACThor nicht deaktiviert, wenn Mode=Off.
Ich habe ein Out of Sync und er geht immer wieder mal auf 1,2kW.
grafik
grafik
grafik

[ac-thor] TRACE 2025/01/10 11:27:23 modbus: send 01 21 00 00 00 06 01 03 03 eb 00 01
[ac-thor] TRACE 2025/01/10 11:27:23 modbus: recv 01 21 00 00 00 05 01 03 02 00 09
[lp-3 ] DEBUG 2025/01/10 11:27:23 charger status: B
[ac-thor] TRACE 2025/01/10 11:27:23 modbus: send 01 22 00 00 00 06 01 03 03 e9 00 01
[ac-thor] TRACE 2025/01/10 11:27:23 modbus: recv 01 22 00 00 00 05 01 03 02 01 f8
[ac-thor] TRACE 2025/01/10 11:27:23 modbus: send 01 23 00 00 00 06 01 03 03 e8 00 01
[ac-thor] TRACE 2025/01/10 11:27:23 modbus: recv 01 23 00 00 00 05 01 03 02 04 e2
[lp-3 ] WARN 2025/01/10 11:27:23 charger out of sync: expected disabled, got enabled
[lp-3 ] DEBUG 2025/01/10 11:27:23 charger enable
[ac-thor] TRACE 2025/01/10 11:27:23 modbus: send 01 24 00 00 00 09 01 10 03 e8 00 01 02 00 00
[ac-thor] TRACE 2025/01/10 11:27:23 modbus: recv 01 24 00 00 00 06 01 10 03 e8 00 01
[lp-3 ] DEBUG 2025/01/10 11:27:23 charger disable
[lp-3 ] DEBUG 2025/01/10 11:27:23 wake-up timer: stop
[lp-3 ] DEBUG 2025/01/10 11:27:33 charge power: 5W
[lp-3 ] DEBUG 2025/01/10 11:27:43 charge power: 5W
[ac-thor] TRACE 2025/01/10 11:27:43 modbus: send 01 25 00 00 00 06 01 03 03 e8 00 01
[ac-thor] TRACE 2025/01/10 11:27:43 modbus: recv 01 25 00 00 00 05 01 03 02 00 05
[ac-thor] TRACE 2025/01/10 11:27:43 modbus: send 01 26 00 00 00 09 01 10 03 e8 00 01 02 05 27
[ac-thor] TRACE 2025/01/10 11:27:43 modbus: recv 01 26 00 00 00 06 01 10 03 e8 00 01
[lp-3 ] DEBUG 2025/01/10 11:27:53 charge power: 1249W
[ac-thor] TRACE 2025/01/10 11:27:53 modbus: send 01 27 00 00 00 06 01 03 03 eb 00 01
[ac-thor] TRACE 2025/01/10 11:27:53 modbus: recv 01 27 00 00 00 05 01 03 02 00 09
[lp-3 ] DEBUG 2025/01/10 11:27:53 charger status: B
[ac-thor] TRACE 2025/01/10 11:27:53 modbus: send 01 28 00 00 00 06 01 03 03 e9 00 01
[ac-thor] TRACE 2025/01/10 11:27:53 modbus: recv 01 28 00 00 00 05 01 03 02 01 f7
[ac-thor] TRACE 2025/01/10 11:27:53 modbus: send 01 29 00 00 00 06 01 03 03 e8 00 01
[ac-thor] TRACE 2025/01/10 11:27:53 modbus: recv 01 29 00 00 00 05 01 03 02 04 e1
[lp-3 ] DEBUG 2025/01/10 11:28:03 charge power: 1246W
[lp-3 ] DEBUG 2025/01/10 11:28:13 charge power: 1255W
[ac-thor] TRACE 2025/01/10 11:28:13 modbus: send 01 2a 00 00 00 06 01 03 03 e8 00 01
[ac-thor] TRACE 2025/01/10 11:28:13 modbus: recv 01 2a 00 00 00 05 01 03 02 04 df
[ac-thor] TRACE 2025/01/10 11:28:13 modbus: send 01 2b 00 00 00 09 01 10 03 e8 00 01 02 05 27
[ac-thor] TRACE 2025/01/10 11:28:13 modbus: recv 01 2b 00 00 00 06 01 10 03 e8 00 01
[lp-3 ] DEBUG 2025/01/10 11:28:23 charge power: 1246W
[ac-thor] TRACE 2025/01/10 11:28:23 modbus: send 01 2c 00 00 00 06 01 03 03 eb 00 01
[ac-thor] TRACE 2025/01/10 11:28:23 modbus: recv 01 2c 00 00 00 05 01 03 02 00 09
[lp-3 ] DEBUG 2025/01/10 11:28:23 charger status: B
[ac-thor] TRACE 2025/01/10 11:28:23 modbus: send 01 2d 00 00 00 06 01 03 03 e9 00 01
[ac-thor] TRACE 2025/01/10 11:28:23 modbus: recv 01 2d 00 00 00 05 01 03 02 01 f7
[ac-thor] TRACE 2025/01/10 11:28:23 modbus: send 01 2e 00 00 00 06 01 03 03 e8 00 01
[ac-thor] TRACE 2025/01/10 11:28:23 modbus: recv 01 2e 00 00 00 05 01 03 02 04 de
[lp-3 ] WARN 2025/01/10 11:28:23 charger out of sync: expected disabled, got enabled
[lp-3 ] DEBUG 2025/01/10 11:28:23 charger enable 

@andig
Copy link
Member

andig commented Jan 10, 2025

Hättest Du nochmal mehr Log vorher? Ich frage mich schon, woher das

charger out of sync: expected disabled, got enabled

kommt?

@docolli
Copy link
Contributor

docolli commented Jan 10, 2025

Ich melde mich heute Abend nochmals.

Eventuell hilft aber das hier generell weiter:
https://www.offgridtec.com/media/product_attachements/my-PV_AC-ELWA-2_Documentation-of-controls.pdf

Ich habe übrigens den ACThor 9s. Und ein E3DC System, das den ACThor automatisch gefunden (und konfiguriert ?) hat und ich kann den dort nicht entfernen. Aber der ACThor sollte nur noch vom evcc System Modbus Befehle entgegen nehmen, das ist auf 192.168.1.50.

@andig
Copy link
Member

andig commented Jan 10, 2025

Es kann nur einer steuern!

@docolli
Copy link
Contributor

docolli commented Jan 10, 2025

Es kann nur einer steuern!

Schon klar! Im E3DC habe ich dazu wenigstens den Haken bei "aktiviert" rausgenommen, aber komplett entfernen kann ich dort den ACThor nicht. Daher denke ich schon, dass nur evcc den ACThor steuert.
Auch im ACThor habe ich die Ansteuerung zurückgesetzt. Er merkt sich ja die IP Adresse der Ansteuerung (erste IP mit einem Modbus Befehl nach zurücksetzen), ich gehe davon aus, dass er dann nur noch von dieser IP Befehle entgegennimmt.

@docolli
Copy link
Contributor

docolli commented Jan 10, 2025

So, jetzt hier mal mehr Log. Wenn du eine spezifische Nachricht suchst, sag Bescheid, dann schau ich nomals ins Log.

Schau ich den ACTHOR 9s per Webinterface an (Update alle 10s), so ändert sich der Status ständig, wenn evcc läuft.
Ist evcc beendet, bleibt der Status stabil auf 4 (keine Verbindung):
grafik

Frage ich die Register 1000 bis 1009 direkt per Modbus ab
grafik
sehe ich, dass 1003 (status) bei mir den Wert 7 zurück gibt, auch wenn im Webinterface im Status "0, standby" steht.

Setze ich eine Leistung (100W) in Register 1000, so ändert sich der Status auf den Wert 9
grafik
Im Webinterface steht dann "1, Heizen".

Das Heizen hört aber nach ~60s auf, der Wert von Register 1000 fällt erst auf 5 und dann nach einigen weiteren Sekunden auf 0 ab. Muss die Heizleistung immer wieder zyklisch in Register 1000 geschrieben werden?
Ist der Timeout dazu der Wert hier?
grafik
Dann muss die Zeit in der evcc den Wert neu beschreibt und die im ACTHOR eingetragene Zeit zueinander passen, also im ACTHOR sollte ein größerer Wert stehen, als evcc braucht einen neuen Wert zu schreiben.

Edit: Ist es möglich, dass der Code in charger/mypv.go den Status des ACTHOR 9s nicht korrekt erkennt? Dort wird auf 2 geprüft (soweit ich den go-code verstehe) hier kommt aber 7 bzw. 9 zurück.

Hinweis: Das folgende Log ist im Modus "Off" aufgezeichnet worden.

[lp-3 ] DEBUG 2025/01/10 15:08:03 charger enable
[ac-thor] TRACE 2025/01/10 15:08:03 modbus: send 0a 8c 00 00 00 09 01 10 03 e8 00 01 02 00 00
[ac-thor] TRACE 2025/01/10 15:08:03 modbus: recv 0a 8c 00 00 00 06 01 10 03 e8 00 01
[lp-3 ] DEBUG 2025/01/10 15:08:03 charger disable
[lp-3 ] DEBUG 2025/01/10 15:08:03 wake-up timer: stop
[lp-3 ] DEBUG 2025/01/10 15:08:13 charge power: 5W
[ac-thor] TRACE 2025/01/10 15:08:13 modbus: send 0a 8d 00 00 00 06 01 03 03 e8 00 01
[ac-thor] TRACE 2025/01/10 15:08:13 modbus: recv 0a 8d 00 00 00 05 01 03 02 00 05
[ac-thor] TRACE 2025/01/10 15:08:13 modbus: send 0a 8e 00 00 00 09 01 10 03 e8 00 01 02 00 1c
[ac-thor] TRACE 2025/01/10 15:08:13 modbus: recv 0a 8e 00 00 00 06 01 10 03 e8 00 01
[lp-3 ] DEBUG 2025/01/10 15:08:23 charge power: 31W
[lp-3 ] DEBUG 2025/01/10 15:08:33 charge power: 5W
[ac-thor] TRACE 2025/01/10 15:08:33 modbus: send 0a 8f 00 00 00 06 01 03 03 eb 00 01
[ac-thor] TRACE 2025/01/10 15:08:33 modbus: recv 0a 8f 00 00 00 05 01 03 02 00 09
[lp-3 ] DEBUG 2025/01/10 15:08:33 charger status: B
[ac-thor] TRACE 2025/01/10 15:08:33 modbus: send 0a 90 00 00 00 06 01 03 03 e9 00 01
[ac-thor] TRACE 2025/01/10 15:08:33 modbus: recv 0a 90 00 00 00 05 01 03 02 02 0d
[ac-thor] TRACE 2025/01/10 15:08:33 modbus: send 0a 91 00 00 00 06 01 03 03 e8 00 01
[ac-thor] TRACE 2025/01/10 15:08:33 modbus: recv 0a 91 00 00 00 05 01 03 02 00 05
[lp-3 ] DEBUG 2025/01/10 15:08:43 charge power: 5W
[ac-thor] TRACE 2025/01/10 15:08:43 modbus: send 0a 92 00 00 00 06 01 03 03 e8 00 01
[ac-thor] TRACE 2025/01/10 15:08:43 modbus: recv 0a 92 00 00 00 05 01 03 02 00 05
[ac-thor] TRACE 2025/01/10 15:08:43 modbus: send 0a 93 00 00 00 09 01 10 03 e8 00 01 02 00 1c
[ac-thor] TRACE 2025/01/10 15:08:43 modbus: recv 0a 93 00 00 00 06 01 10 03 e8 00 01
[lp-3 ] DEBUG 2025/01/10 15:08:53 charge power: 36W
[lp-3 ] DEBUG 2025/01/10 15:09:03 charge power: 5W
[ac-thor] TRACE 2025/01/10 15:09:03 modbus: send 0a 94 00 00 00 06 01 03 03 eb 00 01
[ac-thor] TRACE 2025/01/10 15:09:03 modbus: recv 0a 94 00 00 00 05 01 03 02 00 09
[lp-3 ] DEBUG 2025/01/10 15:09:03 charger status: B
[ac-thor] TRACE 2025/01/10 15:09:03 modbus: send 0a 95 00 00 00 06 01 03 03 e9 00 01
[ac-thor] TRACE 2025/01/10 15:09:03 modbus: recv 0a 95 00 00 00 05 01 03 02 02 0d
[ac-thor] TRACE 2025/01/10 15:09:03 modbus: send 0a 96 00 00 00 06 01 03 03 e8 00 01
[ac-thor] TRACE 2025/01/10 15:09:03 modbus: recv 0a 96 00 00 00 05 01 03 02 00 05
[ac-thor] TRACE 2025/01/10 15:09:13 modbus: send 0a 97 00 00 00 06 01 03 03 e8 00 01
[ac-thor] TRACE 2025/01/10 15:09:13 modbus: recv 0a 97 00 00 00 05 01 03 02 00 05
[ac-thor] TRACE 2025/01/10 15:09:13 modbus: send 0a 98 00 00 00 09 01 10 03 e8 00 01 02 00 1c
[ac-thor] TRACE 2025/01/10 15:09:13 modbus: recv 0a 98 00 00 00 06 01 10 03 e8 00 01
[lp-3 ] DEBUG 2025/01/10 15:09:14 charge power: 5W
[lp-3 ] DEBUG 2025/01/10 15:09:23 charge power: 36W
[lp-3 ] DEBUG 2025/01/10 15:09:33 charge power: 5W
[ac-thor] TRACE 2025/01/10 15:09:33 modbus: send 0a 99 00 00 00 06 01 03 03 eb 00 01
[ac-thor] TRACE 2025/01/10 15:09:33 modbus: recv 0a 99 00 00 00 05 01 03 02 00 09
[lp-3 ] DEBUG 2025/01/10 15:09:33 charger status: B
[ac-thor] TRACE 2025/01/10 15:09:33 modbus: send 0a 9a 00 00 00 06 01 03 03 e9 00 01
[ac-thor] TRACE 2025/01/10 15:09:33 modbus: recv 0a 9a 00 00 00 05 01 03 02 02 0d
[ac-thor] TRACE 2025/01/10 15:09:33 modbus: send 0a 9b 00 00 00 06 01 03 03 e8 00 01
[ac-thor] TRACE 2025/01/10 15:09:33 modbus: recv 0a 9b 00 00 00 05 01 03 02 00 05
[lp-3 ] WARN 2025/01/10 15:09:33 charger out of sync: expected disabled, got enabled
[lp-3 ] DEBUG 2025/01/10 15:09:33 charger enable
[ac-thor] TRACE 2025/01/10 15:09:33 modbus: send 0a 9c 00 00 00 09 01 10 03 e8 00 01 02 00 00
[ac-thor] TRACE 2025/01/10 15:09:33 modbus: recv 0a 9c 00 00 00 06 01 10 03 e8 00 01
[lp-3 ] DEBUG 2025/01/10 15:09:33 charger disable
[lp-3 ] DEBUG 2025/01/10 15:09:33 wake-up timer: stop
[lp-3 ] DEBUG 2025/01/10 15:09:43 charge power: 5W
[ac-thor] TRACE 2025/01/10 15:09:43 modbus: send 0a 9d 00 00 00 06 01 03 03 e8 00 01
[ac-thor] TRACE 2025/01/10 15:09:43 modbus: recv 0a 9d 00 00 00 05 01 03 02 00 05
[ac-thor] TRACE 2025/01/10 15:09:43 modbus: send 0a 9e 00 00 00 09 01 10 03 e8 00 01 02 00 1c
[ac-thor] TRACE 2025/01/10 15:09:43 modbus: recv 0a 9e 00 00 00 06 01 10 03 e8 00 01
[lp-3 ] DEBUG 2025/01/10 15:09:53 charge power: 30W
[lp-3 ] DEBUG 2025/01/10 15:10:03 charge power: 5W
[ac-thor] TRACE 2025/01/10 15:10:03 modbus: send 0a 9f 00 00 00 06 01 03 03 eb 00 01
[ac-thor] TRACE 2025/01/10 15:10:03 modbus: recv 0a 9f 00 00 00 05 01 03 02 00 09
[lp-3 ] DEBUG 2025/01/10 15:10:03 charger status: B
[ac-thor] TRACE 2025/01/10 15:10:03 modbus: send 0a a0 00 00 00 06 01 03 03 e9 00 01
[ac-thor] TRACE 2025/01/10 15:10:03 modbus: recv 0a a0 00 00 00 05 01 03 02 02 0e
[ac-thor] TRACE 2025/01/10 15:10:03 modbus: send 0a a1 00 00 00 06 01 03 03 e8 00 01
[ac-thor] TRACE 2025/01/10 15:10:03 modbus: recv 0a a1 00 00 00 05 01 03 02 00 05
[lp-3 ] DEBUG 2025/01/10 15:10:13 charge power: 5W
[ac-thor] TRACE 2025/01/10 15:10:13 modbus: send 0a a2 00 00 00 06 01 03 03 e8 00 01
[ac-thor] TRACE 2025/01/10 15:10:13 modbus: recv 0a a2 00 00 00 05 01 03 02 00 05
[ac-thor] TRACE 2025/01/10 15:10:13 modbus: send 0a a3 00 00 00 09 01 10 03 e8 00 01 02 00 1c
[ac-thor] TRACE 2025/01/10 15:10:13 modbus: recv 0a a3 00 00 00 06 01 10 03 e8 00 01
[lp-3 ] DEBUG 2025/01/10 15:10:23 charge power: 34W
[lp-3 ] DEBUG 2025/01/10 15:10:33 charge power: 5W
[ac-thor] TRACE 2025/01/10 15:10:33 modbus: send 0a a4 00 00 00 06 01 03 03 eb 00 01
[ac-thor] TRACE 2025/01/10 15:10:33 modbus: recv 0a a4 00 00 00 05 01 03 02 00 09
[lp-3 ] DEBUG 2025/01/10 15:10:33 charger status: B
[ac-thor] TRACE 2025/01/10 15:10:33 modbus: send 0a a5 00 00 00 06 01 03 03 e9 00 01
[ac-thor] TRACE 2025/01/10 15:10:33 modbus: recv 0a a5 00 00 00 05 01 03 02 02 0d
[ac-thor] TRACE 2025/01/10 15:10:33 modbus: send 0a a6 00 00 00 06 01 03 03 e8 00 01
[ac-thor] TRACE 2025/01/10 15:10:33 modbus: recv 0a a6 00 00 00 05 01 03 02 00 05
[lp-3 ] DEBUG 2025/01/10 15:10:43 charge power: 5W
[ac-thor] TRACE 2025/01/10 15:10:43 modbus: send 0a a7 00 00 00 06 01 03 03 e8 00 01
[ac-thor] TRACE 2025/01/10 15:10:43 modbus: recv 0a a7 00 00 00 05 01 03 02 00 05
[ac-thor] TRACE 2025/01/10 15:10:43 modbus: send 0a a8 00 00 00 09 01 10 03 e8 00 01 02 00 1c
[ac-thor] TRACE 2025/01/10 15:10:43 modbus: recv 0a a8 00 00 00 06 01 10 03 e8 00 01
[lp-3 ] DEBUG 2025/01/10 15:10:53 charge power: 32W
[lp-3 ] DEBUG 2025/01/10 15:11:03 charge power: 5W
[ac-thor] TRACE 2025/01/10 15:11:03 modbus: send 0a a9 00 00 00 06 01 03 03 eb 00 01
[ac-thor] TRACE 2025/01/10 15:11:03 modbus: recv 0a a9 00 00 00 05 01 03 02 00 09
[lp-3 ] DEBUG 2025/01/10 15:11:03 charger status: B
[ac-thor] TRACE 2025/01/10 15:11:03 modbus: send 0a aa 00 00 00 06 01 03 03 e9 00 01
[ac-thor] TRACE 2025/01/10 15:11:03 modbus: recv 0a aa 00 00 00 05 01 03 02 02 0e
[ac-thor] TRACE 2025/01/10 15:11:03 modbus: send 0a ab 00 00 00 06 01 03 03 e8 00 01
[ac-thor] TRACE 2025/01/10 15:11:03 modbus: recv 0a ab 00 00 00 05 01 03 02 00 05
[lp-3 ] WARN 2025/01/10 15:11:03 charger out of sync: expected disabled, got enabled
[lp-3 ] DEBUG 2025/01/10 15:11:03 charger enable 

@andig
Copy link
Member

andig commented Jan 10, 2025

sehe ich, dass 1003 (status) bei mir den Wert 7 zurück gibt, auch wenn im Webinterface im Status "0, standby" steht.
Setze ich eine Leistung (100W) in Register 1000, so ändert sich der Status auf den Wert 9

evcc behandelt Status 2 als "laden". Sonst verbunden. Scheint als würde Thor ein anderes Mapping als die Elwa erfordern? Welches?

Edit: Ist es möglich, dass der Code in charger/mypv.go den Status des ACTHOR 9s nicht korrekt erkennt? Dort wird auf 2 geprüft (soweit ich den go-code verstehe) hier kommt aber 7 bzw. 9 zurück.

Gut möglich.

Das Heizen hört aber nach ~60s auf, der Wert von Register 1000 fällt erst auf 5 und dann nach einigen weiteren Sekunden auf 0 ab. Muss die Heizleistung immer wieder zyklisch in Register 1000 geschrieben werden?

Register 1000 wird alle 30s geschrieben solange der Ladepunkt enabled ist.

Fazit: wir brauchen wohl doch nochmal eine Doku der Register!

@docolli
Copy link
Contributor

docolli commented Jan 10, 2025

Bin dran...

Habe in Register 1000 eine Last von 8000W gesetzt und dann die Register 1000 bis 1079 ausgelesen. Der ACTHOR 9s hat 3 Ausgänge á 3000W. Das von Dir aktuell genutzte Register 1074 gibt nur den Wert für einen dieser Ausgänge zurück!

Edit: Und den Wert von Register 1060 kann ich auch nicht richtig mit der von mir gesetzten Leistung korrellieren...

grafik
grafik

Register 1000 gibt nach dem Schreiben lesend die Gesamtleistung zurück. Solange bis der Wert in "Zeitablauf Ansteuerung" abgelaufen ist, dann fällt die Leistung auf 0W ab. Standardmäßig sind das 10s, dieser Wert muss mindestens auf die 30s gesetzt werden, in der evcc die Werte neu schreibt. Am besten 60s nehmen, dann ist man auf der sicheren Seite.

Die Register 1074/1075/1076 geben die Leistungswerte der einzelnen Ausgänge (Phasen) zurück. Also entweder alle 3 auslesen, oder warum nicht zyklisch Register 1000 lesen und die aktuelle Gesamtleistung bekommen? Das sollte, wenn ich die Doku richtig verstehe, mit allen MyPV Komponenten funktionieren, egal ob 1p oder 3p Geräte.

Hast du schon Zeit gehabt dir dieses Dokument anzusehen? Dort ist eine gute Doku der Modbus Register der MyPV Serie.
https://www.offgridtec.com/media/product_attachements/my-PV_AC-ELWA-2_Documentation-of-controls.pdf

@andig
Copy link
Member

andig commented Jan 11, 2025

Die Elwa Doku nutzt nichts- der funktioniert ja. Und deckt z.B. 1074/75/76 auch nicht ab.

Und den Wert von Register 1060 kann ich auch nicht richtig mit der von mir gesetzten Leistung korrellieren

Das war das Register das mir genannt wurde. Ansonsten sieht du in mypv.go ja welche Register verwendet werden. Einfach anpassen bis es passt. Ich kann hier mangels Testobjekt nur nach Vorgabe arbeiten.

@walburgf
Copy link

walburgf commented Jan 11, 2025

Hier ist die Liste der Modbus Register, die der AC Thor und AC Thor 9s nutzt.
Documentation-Controls_AC-THOR_AC-THOR 9s_EN241205.pdf

Beim Status haben die Thors folgende Bedeutungen:
0….. Off
1-8… device start-up
9… operation
>=200 Error states power stage

Weiterhin kann man beim AC Thor 9s 1-3 Heizstäbe anschliessen mit 1-3 Temperaturfühlern. Die Anzahl der Temp-Fühler muss nicht gleich der Anzahl der Heizstäbe sein.
Die Temperaturfühler haben die Modbus Register 1001, 1030 und 1031
Da evcc momentan nur 1 Temperatur (= SOC) handeln kann nutze ich bisher eine manuelle Charger Config wo ich aus den 3 Temperaturen eine Median Temperatur ermittle, die ich aus dem Json vom Thor errechne. Das kann man natürlich auch per Modbus auslesen.
Dazu verwende ich folgende Formel:
jq: "[.temp1, .temp2, .temp3] | map(. | select (. != null)) | add / length" # parse response json, get the median temperature
Das wäre ein Vorschlag meinerseits... tbd.
Man kann natürlich über evcc auch alle 3 Temperaturen als 3 SOCs darstellen, die jeweils mit einem Limit versehen werden könnten, aber ich denke das ist erstens Aufwand und zweitens bringt das auch nicht wirklich viel.....

@andig
Copy link
Member

andig commented Jan 11, 2025

Danke! Danach is 1060 die aktuelle Leistung, 1000 scheint weiterhin die VORGABEleistung zu sein.

Die Temperaturfühler haben die Modbus Register 1001, 1030 und 1031

Kann man ermitteln, welche der 3 jeweils relevant sind? Andererseits: auch der Mittelwert ist ja eher falsch. Theoretisch könnten das sogar 3 einzelne Speicher sein???

Status: bei der Elwa ist 2==Heat. Was bedeutet die 9==Operation beim Thor? Operation = Heizbetrieb? Falls nein: woran erkennen wir Heizbetrieb (Status C)?

@docolli
Copy link
Contributor

docolli commented Jan 12, 2025

Das eigentlich Problem ist doch, dass evcc den AC THOR disabled (z.B. durch mode=off), aber noch nicht mit dem Verhalten des AC THOR zurecht kommt, da dieser selbst nicht aktiviert/deaktiviert werden kann. Und dann kommt komisches Verhalten, wie von @walburgf in seinem Video schön gezeigt.

Hier eine Analyse meines obigen Logs
grafik
Ich komme vom Heizen und setze den Status in evcc auf "AUS".
evcc setzt 0x03e8 (1000) auf "0", das ist korrekt.
Register 0x3eb (1003) bleibt auf "9".
1000 liefert noch 5W zurück.
Dann setzt evcc ABER das Register 0x03e8 (1000) auf den Wert 0x001c. WARUM DAS DENN?
Klar dann bleibt Register 1003 auf "9" stehen und 30s später wird NOCHMALS Register 1000 auf 0x001c gesetzt. WARUM?

Dann läuft er logischerweise in den "Out of sync", weil der AC THOR durch das Setzen auf 0x01c natürlich weiter heizt und das auch so im Status ausgibt.

@andig
Copy link
Member

andig commented Jan 13, 2025

immer noch nein. Status und enable/disable sind unterschiedliche Dinge.

Sorry, dann must du mir mal kurz erklären was bei der Wallbox (oder in evcc) mit enable/disable gemeint ist. 🤔

Edit: Sind das die enable/disable Bereiche in der Loadpoint Konfiguration? Und damit ob Laden (Heizen) freigegeben ist?

#18194 (comment)

@pvssch
Copy link

pvssch commented Jan 13, 2025

Ich kapiere es nicht:

Wenn ich 1082 auf 0 stelle ist laden gesperrt, auf 1 ist laden möglich/erlaubt bzw. der Heizstab aktiviert.
Ich lasse im Moment den Heizstab nur ein und ausschalten, die Regelung an sich überlasse ich dem Heizstab.
Wenn dann das Register 1000 den Wert vorgibt, dann sollte es doch kein Problem sein oder habe ich einen Denkfehler?

@andig
Copy link
Member

andig commented Jan 13, 2025

oder habe ich einen Denkfehler?

Ja.

Wenn ich 1082 auf 0 stelle

Du meinst 1081? Das schaltet nicht die Ladung frei, sondern das Gerät in toto, ob Ladefreigabe oder nicht.

@docolli
Copy link
Contributor

docolli commented Jan 13, 2025

@andig Danke für den Link. evcc möchte also mit enabled/disabled vom "loadpoint" wissen, ob er laden bzw. heizen darf. Das wäre dann wirklich Register 1081 wie hier erklärt: #18020 (comment)

evcc sollte aber auf Register 1081 nur lesend zugreifen, sonst machen wir uns den nicht-flüchtigen Speicher vom AC THOR kaputt mit zu häufigen Schreibvorgängen.

Edit: Hmm, aber wenn ich mir mein Log ansehe, dann werden wir z.B. im charge modus "off" immer in ein "Out-of Sync - expected disabled, got enabled" laufen, da der AC THOR über 1081 stets "1" zurückgibt. Außer wir schreiben ins Register 1081 und dass soll man lt. Doku nicht häufiger als 1x am Tag machen.

Mein Vorschlag ist daher sich enabled merken, z.B. wenn die gelesene Heizleistung im Register 1000 > 10W ist und wenn die gelesene Heizleistung <10W auf disabled gehen.

@walburgf
Copy link

D.h. für mich stellt sich das dann wie folgt dar:

  • wenn 1081 auf 1 ist, geht enable auf true und Status auf StatusB
  • wenn 1081 auf 0 ist, geht enable auf false und Status auf StatusA
  • wenn istSoc (Mittelwert aus den Registern 1001, 1030, 1031, wenn Sie >0 sind) < maxSoc (=1002) wird geladen in Abhängigkeit der Settings pv, minpv und schnell, sowie der Priorität des loadpoints
  • in allen Situationen, in denen keine Ladung erfolgen soll, wird 0 in das Register 1000 geschrieben, und zwar so lange, bis beim Auslesen des Registers 1000 auch 0 zurückgegeben wird.
  • Solange Register 1003 auf 9 steht, geht der Status auf StatusC

Ist mein Verständnis korrekt? Oder habe ich etwas vergessen?

@andig
Copy link
Member

andig commented Jan 13, 2025

Hier werden immer wieder Steuerung durch den Ladepunkt und Eigenschaften des Gerätes durcheinander gewürfelt...

@docolli
Copy link
Contributor

docolli commented Jan 13, 2025

@Lepidopteron

Offtopic: Aber wie kann ich denn auf den Modbus einen Registerwert setzen und explizit auslesen? :)

Modbus kennt unterschiedliche Funktionstypen, darunter auch seperat Lesen (0x03) und Schreiben (0x06) von Registern.
https://datenberg.eu/ressourcen/wissen/modbus-aufbau-und-funktion/

Ein Register muss man sich auch NICHT NUR wie eine Speicherzelle im Gerät vorstellen, sondern im Code für Lesen und Schreiben des Modbus Registers kann auch was anderes programmiert sein. Aber es kann eben auch nur den Inhalt einer Speicherzelle gelesen und geschrieben werden.
Der AC THOR hat eine (PID-)Regelung um die gesetzte Heizleistung zu erreichen und zu halten. Beim Schreiben ins Register 1000 wird vermutlich der Sollwert dieser Regelung gesetzt, während beim Lesen der Wert der tatsächlichen Heizleistung zurück gegeben wird.

@docolli
Copy link
Contributor

docolli commented Jan 13, 2025

Danke für den Fix! Habe ihn eben kurz getestet. Soweit funktioniert es, wie es soll.

Hinweis für Anwender: Der Loadpoint sollte (auch wenn der AC THOR 9s den Heizstab 3phasig ansteuert) als 1p in evcc konfiguriert sein.

Da du als Limit 0W gesetzt hast, läuft er aber noch einmalig in einen charger logic error.

[lp-3 ] DEBUG 2025/01/13 18:57:48 set charge mode: off
[lp-3 ] DEBUG 2025/01/13 18:57:48 charge power: 228W
[ac-thor] TRACE 2025/01/13 18:57:48 modbus: send 00 fb 00 00 00 06 01 03 03 eb 00 01
[ac-thor] TRACE 2025/01/13 18:57:48 modbus: recv 00 fb 00 00 00 05 01 03 02 00 09
[lp-3 ] DEBUG 2025/01/13 18:57:48 charger status: C
[ac-thor] TRACE 2025/01/13 18:57:48 modbus: send 00 fc 00 00 00 06 01 03 03 e9 00 01
[ac-thor] TRACE 2025/01/13 18:57:48 modbus: recv 00 fc 00 00 00 05 01 03 02 01 ff
[ac-thor] TRACE 2025/01/13 18:57:48 modbus: send 00 fd 00 00 00 06 01 03 03 e8 00 01
[ac-thor] TRACE 2025/01/13 18:57:48 modbus: recv 00 fd 00 00 00 05 01 03 02 00 e4
[ac-thor] TRACE 2025/01/13 18:57:48 modbus: send 00 fe 00 00 00 09 01 10 03 e8 00 01 02 00 00
[ac-thor] TRACE 2025/01/13 18:57:48 modbus: recv 00 fe 00 00 00 06 01 10 03 e8 00 01
[lp-3 ] DEBUG 2025/01/13 18:57:48 charger disable
[lp-3 ] DEBUG 2025/01/13 18:57:48 wake-up timer: stop
[lp-3 ] DEBUG 2025/01/13 18:57:52 charge power: 5W
[lp-3 ] DEBUG 2025/01/13 18:58:02 charge power: 5W
[ac-thor] TRACE 2025/01/13 18:58:10 modbus: send 00 ff 00 00 00 06 01 03 03 e8 00 01
[ac-thor] TRACE 2025/01/13 18:58:10 modbus: recv 00 ff 00 00 00 05 01 03 02 00 05
[lp-3 ] DEBUG 2025/01/13 18:58:12 charge power: 5W
[ac-thor] TRACE 2025/01/13 18:58:12 modbus: send 01 00 00 00 00 06 01 03 03 eb 00 01
[ac-thor] TRACE 2025/01/13 18:58:12 modbus: recv 01 00 00 00 00 05 01 03 02 00 09
[lp-3 ] DEBUG 2025/01/13 18:58:12 charger status: C
[ac-thor] TRACE 2025/01/13 18:58:12 modbus: send 01 01 00 00 00 06 01 03 03 e9 00 01
[ac-thor] TRACE 2025/01/13 18:58:12 modbus: recv 01 01 00 00 00 05 01 03 02 01 ff
[ac-thor] TRACE 2025/01/13 18:58:12 modbus: send 01 02 00 00 00 06 01 03 03 e8 00 01
[ac-thor] TRACE 2025/01/13 18:58:12 modbus: recv 01 02 00 00 00 05 01 03 02 00 05
[lp-3 ] WARN 2025/01/13 18:58:12 charger logic error: disabled but charging
[lp-3 ] DEBUG 2025/01/13 18:58:22 charge power: 1W
[lp-3 ] DEBUG 2025/01/13 18:58:32 charge power: 0W
[ac-thor] TRACE 2025/01/13 18:58:40 modbus: send 01 03 00 00 00 06 01 03 03 e8 00 01
[ac-thor] TRACE 2025/01/13 18:58:40 modbus: recv 01 03 00 00 00 05 01 03 02 00 00
[lp-3 ] DEBUG 2025/01/13 18:58:42 charge power: 0W
[ac-thor] TRACE 2025/01/13 18:58:42 modbus: send 01 04 00 00 00 06 01 03 03 eb 00 01
[ac-thor] TRACE 2025/01/13 18:58:42 modbus: recv 01 04 00 00 00 05 01 03 02 00 07
[lp-3 ] DEBUG 2025/01/13 18:58:42 charger status: B
[lp-3 ] INFO 2025/01/13 18:58:42 stop charging <- 

@walburgf
Copy link

bei mir funktioniert die Steuerung noch nicht korrekt:
Der AC Thor heizt auf Stellung "pv" mit 5 W. Bei einer Grid-Leistung von ca -1kW wird dann der Thor mit der max. Leistung 5.8 kW geheizt, darauf ist die Gridleistung 5kW. Kurze Zeit später fällt die Steuerung wieder auf 5W

Aufzeichnung.2025-01-14.132832.mp4

site ] DEBUG 2025/01/14 13:28:42 ----
[lp-2 ] DEBUG 2025/01/14 13:28:42 charge power: 5W
[site ] DEBUG 2025/01/14 13:28:42 grid power: -980W
[site ] DEBUG 2025/01/14 13:28:42 grid powers: [-364 -253 -363]W
[site ] DEBUG 2025/01/14 13:28:42 grid currents: [-1.77 -1.18 -1.88]A
[site ] DEBUG 2025/01/14 13:28:42 pv 1 power: 1794W
[site ] DEBUG 2025/01/14 13:28:42 battery 1 power: 0W
[site ] DEBUG 2025/01/14 13:28:42 aux 1 power: 5W
[site ] DEBUG 2025/01/14 13:28:42 battery 1 soc: 100%
[site ] DEBUG 2025/01/14 13:28:42 site power: -890W (including 5W prioritized power)
[site ] DEBUG 2025/01/14 13:29:02 ----
[lp-2 ] DEBUG 2025/01/14 13:29:02 charge power: 5766W
[site ] DEBUG 2025/01/14 13:29:02 grid power: 5056W
[site ] DEBUG 2025/01/14 13:29:02 grid powers: [2732 -256 2580]W
[site ] DEBUG 2025/01/14 13:29:02 grid currents: [11.6 -1.18 11]A
[site ] DEBUG 2025/01/14 13:29:02 pv 1 power: 1792W
[site ] DEBUG 2025/01/14 13:29:02 battery 1 power: 0W
[site ] DEBUG 2025/01/14 13:29:02 aux 1 power: 5766W
[site ] DEBUG 2025/01/14 13:29:02 battery 1 soc: 100%
[site ] DEBUG 2025/01/14 13:29:02 site power: -610W
[lp-2 ] DEBUG 2025/01/14 13:29:02 charger status: C
[lp-2 ] DEBUG 2025/01/14 13:29:02 vehicle soc: 48%
[lp-2 ] DEBUG 2025/01/14 13:29:02 pv charge current: 28.7A = 26A + 2.65A (-610W @ 1p)
[site ] DEBUG 2025/01/14 13:29:22 ----
[lp-2 ] DEBUG 2025/01/14 13:29:22 charge power: 5W
[site ] DEBUG 2025/01/14 13:29:22 grid power: -941W
[site ] DEBUG 2025/01/14 13:29:22 grid powers: [-349 -251 -341]W
[site ] DEBUG 2025/01/14 13:29:22 grid currents: [-1.73 -1.17 -1.82]A
[site ] DEBUG 2025/01/14 13:29:22 pv 1 power: 1816W
[site ] DEBUG 2025/01/14 13:29:22 battery 1 power: 0W
[site ] DEBUG 2025/01/14 13:29:22 battery 1 soc: 100%
[site ] DEBUG 2025/01/14 13:29:22 aux 1 power: 5W
[site ] DEBUG 2025/01/14 13:29:22 site power: -851W (including 5W prioritized power)
[site ] DEBUG 2025/01/14 13:29:42 ----

@andig
Copy link
Member

andig commented Jan 14, 2025

Da die Modbuskommunikation fehlt ist das Logfile unbrauchbar. Ebenso fehlt Deine Config...

@docolli
Copy link
Contributor

docolli commented Jan 14, 2025

Wir hatten heute genug Sonne und die Heizstab Ansteuerung durch evcc hat ganz prima funktioniert.
grafik

Hier der relevante Teil meiner Config:

meters:
- name: ACThor_meter
  type: template
  template: thor
  usage: aux
  host: 192.168.1.145

loadpoints:
- title: MyPV Heizstab
  charger: myPV_Heizstab
  meter: ACThor_meter
  mode: pv
  priority: 0
  enable:
    threshold: -200 # einschalten, wenn 1 min. lang mind. 200W Überschuss vorhanden ist
    delay: 1m
  disable:
    threshold: 200
    delay: 1m

chargers:
- name: myPV_Heizstab
  type: template
  template: ac-thor
  #Modbus TCP
  modbus: tcpip
  id: 1
  host: 192.168.1.145
  port: 502

Wobei ich mich grad frage, ob der meter überhaupt nötig ist. Der charger frägt doch die aktuelle Leistung per Modbus Register 1000 zyklisch ab.

Edit: Habe eben den meter aus der loadpoint Definition gelöscht. Habe dennoch die Leistung.
@walburgf : Wenn du ein Log machst, bitte auf "TRACE" umstellen und den charger "ac-thor" und bei Dir den lp-2 anklicken (bei mir ist es lp-3).
grafik


Leicht OT, von mir aus mach ich dazu gerne ein neues Topic auf:
Der meter mit template thor holt sich ja per http die kompletten Infos per JSON, nur um dann aufwendig (ist der Wert in power_act oder in power_ac9?....) die aktuelle Leistung zu ermitteln. Ich finde da werden eine Menge Daten übertragen, nur um die aktuelle Leistung zu ermitteln.
Falls man den meter noch braucht: Könnte man ein Template machen, dass den Wert aus dem Modbus Register 1000 holt?

@docolli
Copy link
Contributor

docolli commented Jan 14, 2025

Hier noch die aktuelle Config für die Copy&Paste Fraktion

chargers:
- name: myPV_ac-thor
  type: template
  template: ac-thor
  #Modbus TCP
  modbus: tcpip
  id: 1
  host: <ip>
  port: 502

loadpoints:
- title: AC•THOR Heizstab
  charger: myPV_ac-thor
  mode: pv
  priority: 0
  enable:
    threshold: -200 # einschalten, wenn 1 min. lang mind. 200W Überschuss vorhanden ist
    delay: 1m
  disable:
    threshold: 200
    delay: 10s

Ich habe den loadpoints der Wallboxen die priority: 1 gegeben, damit diese bevorzugt PV-Überschuß bekommen.

grafik

Zusätzlich setze ich von der Hausautomation FHEM aus den Modus des Ladepunkts auf PV wenn der Hausakku mehr als 90% hat, darunter auf Aus. So lädt der Heizstab erst, wenn der Hausakku voll ist und noch PV Überschuss vorhanden ist.

@andig
Copy link
Member

andig commented Jan 14, 2025

Wobei ich mich grad frage, ob der meter überhaupt nötig ist. Der charger frägt doch die aktuelle Leistung per Modbus Register 1000 zyklisch ab.

Genau. Unnötig. Das hättest Du aber auch einfach ausprobieren können ;)

@docolli
Copy link
Contributor

docolli commented Jan 14, 2025

Genau. Unnötig. Das hättest Du aber auch einfach ausprobieren können ;)

Hab ich doch !.... 😉🤣

@walburgf
Copy link

ich habe jetzt mal noch weitere Tests gemacht und einen Fehler in meinem Setup gefunden. Nachdem ich diesen korrigiert hatte, funktioniert jetzt alles wie es soll.
Ich habe in meiner evcc.yaml nun die gleiche Konfiguration wie @docolli

@andig : Eine Bitte hätte ich noch:

Da der AC Thor 9s 3 Heizstäbe mit bis zu 3 Temperaturfühler im Speicher haben kann (oben, mitte, unten), würde der AC Thor 9s aufhören zu heizen, wenn die obere Temperatur das Limit erreicht hat, jedoch die unteren Heizstäbe noch heizen könnten. Deshalb sollten alle Temperaturen im SOC von evcc berücksichtigt werden. Dafür sollte der Mittelwert verwendet werden.

Ich habe mal versucht in Go einen Vorschlag zu programmieren (Ich bin jedoch kein Go Experte :-) )
Kannst Du Dir das bitte mal ansehen und so oder so ähnlich umsetzen?
Vielen Dank.....

type MyPv struct {
	log     *util.Logger
	conn    *modbus.Connection
	power   uint32
	statusC uint16
	enabled bool
}

const (
	elwaRegSetPower  = 1000
	elwaRegTemp1     = 1001
	thorRegTemp2     = 1030
	thorRegTemp3     = 1031
	elwaRegTempLimit = 1002
	elwaRegStatus    = 1003
	elwaRegPower     = 1000 // https://github.com/evcc-io/evcc/issues/18020#issuecomment-2585300804
)


// CurrentPower implements the api.Meter interface
func (wb *MyPv) Soc() (float64, error) {

    temps := []uint16{}
    registers := []uint16{elwaRegTemp1, thorRegTemp2, thorRegTemp3}

    for _, reg := range registers {
        b, err := wb.conn.ReadHoldingRegisters(reg, 1)
        if err != nil {
            return 0, err
        }
        temp := binary.BigEndian.Uint16(b)
        if temp != 0 {
            temps = append(temps, temp)
        }
    }

    if len(temps) == 0 {
        return 0, fmt.Errorf("no valid temperature readings")
    }

    sum := 0
    for _, temp := range temps {
        sum += int(temp)
    }
    average := float64(sum) / float64(len(temps))

    return average / 10, nil
}


@pvssch

This comment was marked as off-topic.

@andig
Copy link
Member

andig commented Jan 15, 2025

Bitte beim Thema bleiben. Danke.

Weiterhin ist mir aufgefallen, dass der AC-Thor9s im Schnellmodus nur mit ca. 6,6 kw lädt, anstatt mit 9 kw. Die Einstellung ist 3-phasig, max. 32 A, min 0,125 A.

Ps: Thor als 1p konfigurieren, siehe #18235!

@walburgf
Copy link

Bitte beim Thema bleiben. Danke.

Hi @andig ,
soll ich dafür einen separaten Request aufmachen?
Ich dachte es geht um die generelle Funktionalität des AC Thor 9s?

@pvssch

This comment was marked as off-topic.

@andig
Copy link
Member

andig commented Jan 15, 2025

Das wundert mich nicht wenn die WP 1,1 kW konsumiert. Hier OT! Bitte beim Thema bleiben.

@docolli
Copy link
Contributor

docolli commented Jan 15, 2025

@andig Das er nur 6,6kW bezieht würde im Modus PV Sinn machen, aber der AC THOR ist im Modus Schnell und da sollte er die im Loadpoint maximal eingestellten Ampere zum Heizen nutzen.

Hast du zufällig im AC THOR die Leistung auf <100% begrenzt? Erweiterte Einstellungen - > Grundeinstellungen und dort die Max. Leistung.

@andig
Copy link
Member

andig commented Jan 15, 2025

Good point- danke (und nicht OT). Aus evcc Sicht ist die Wahrheit im Config+Logfile, nicht in Screenshots. Schnell ist Maximalstrom- auch da muss die Config stimmen...

@docolli
Copy link
Contributor

docolli commented Jan 15, 2025

Der AC THOR charger beachtet aber auch die Loadpoint Einstellung 1p/3p nicht. Ich bekomme meinen AC THOR mit 32A maximal Einstellung nicht über 7,3kW.
Wenn ich 3p einstelle müsste er doch bis zu 22kW per Modbus an den AC THOR senden.

Ich hatte geschrieben 1p zu nehmen, da damit die Anzeige der möglichen kW Werte in den Loadpoint Einstellungen mit den tatsächlich geregelten Werten übereinstimmt.

@andig
Copy link
Member

andig commented Jan 15, 2025

Einfach den richtigen Strom für 1p nehmen?

@docolli
Copy link
Contributor

docolli commented Jan 15, 2025

Der Heizstab hat 3phasig je 3kW, das sind insgesamt 9kW. Wenn ich das auf 1p umrechne, komme ich auf ca. 40A. Zumindest über die Loadpoint GUI kann ich das nicht einstellen, da ist bei 32A Ende.

maxcurrent im Loadpoint ist ja veraltet.

@andig
Copy link
Member

andig commented Jan 15, 2025

Grmpf. I see. /cc @naltatis
Am Besten wäre es wohl, wir würden die Phasen aus dem Loadpoint auslesen. Ich ändere das. In Zukunft brauchen wir bessere Optionen für leistungsgesteuerte Geräte…

@andig
Copy link
Member

andig commented Jan 17, 2025

Sollte morgen im Nightly gelöst sein. Wir verwenden jetzt (wenns funktioniert) immer die Phasenkonfiguration des Loadpoints.

@docolli
Copy link
Contributor

docolli commented Jan 17, 2025

Test mit aktuellem master:

Image

Image

Sieht gut aus:
Image

Der AC THOR 9s begrenzt auch von sich aus die übergebene Leistung. Also wenn (wie jetzt bei mir oben eingestellt) evcc 11kW Leistung anfordert, mehr als die 8,8kW gehen vom AC THOR 9s aus nicht.

Begrenzt man in den Grundeinstellungen des AC THOR die Leistung (bei mir 63% = 5,5kW), so kann evcc zwar mehr als 5,5kW anfordern, der AC THOR 9s regelt aber dann auf nicht mehr als 5,5kW.

Image
(Hier mit Loadpoint Einstellung max. 16A)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
devices Specific device support
Projects
None yet
5 participants