Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
181 commits
Select commit Hold shift + click to select a range
5890361
phases to use in instant charging
LKuemmel Jan 16, 2025
88ff3f8
pv
LKuemmel Jan 16, 2025
04e8e94
draft scheudled charging
LKuemmel Jan 16, 2025
e7aa3d7
time charging
LKuemmel Jan 16, 2025
838c508
eco
LKuemmel Jan 16, 2025
25ad3ac
fixes
LKuemmel Jan 17, 2025
cf83d44
fix
LKuemmel Jan 17, 2025
91a7ebb
fix
LKuemmel Jan 17, 2025
dcae278
update tests
LKuemmel Jan 17, 2025
63db164
refactor scheduled charging
LKuemmel Jan 20, 2025
601f0de
tests
LKuemmel Jan 21, 2025
ab0e47b
test
LKuemmel Jan 21, 2025
444dc39
update config
LKuemmel Jan 23, 2025
8ad5ad2
update charge template, merge max phases
LKuemmel Jan 30, 2025
1b27584
fixes
LKuemmel Jan 30, 2025
f554667
fixes
LKuemmel Jan 30, 2025
10f4d13
fix
LKuemmel Jan 31, 2025
6da6c74
fix tests
LKuemmel Jan 31, 2025
1f0da9a
plan once use todays date
LKuemmel Jan 31, 2025
1d22c54
standard-legacy web-theme
benderl Feb 11, 2025
2872f77
cards display-theme
benderl Feb 12, 2025
c0f35ab
update setdata topics
LKuemmel Feb 13, 2025
37e8885
Feature dashboard temporary settings (#2218)
LKuemmel Feb 14, 2025
b75c9cc
temporary settings in standard_legacy web theme
benderl Feb 17, 2025
3a4f085
adopt standard_legacy web theme for complete charge template objects
benderl Feb 17, 2025
a60bcf7
temporary settings in cards display theme
benderl Feb 18, 2025
9156bcd
remove obsolet code
LKuemmel Feb 18, 2025
3d7979a
ammend
LKuemmel Feb 18, 2025
5e4feef
update temporary settings if persistent settings are updated
LKuemmel Feb 21, 2025
ffed60f
allow dis-/enabling of plans in standard-legacy web theme
benderl Feb 24, 2025
597014e
display wrapper: limit log messages
benderl Feb 24, 2025
9d76df4
enhance cards display theme
benderl Feb 24, 2025
973e25e
move vehicle select modal into own component
benderl Feb 26, 2025
2734e4b
restructure display of plan details
benderl Feb 26, 2025
bd7bc0b
enhance format of weekday and date ranges
benderl Feb 26, 2025
db8aafa
display absolute values in flow chart
benderl Feb 27, 2025
3230cfd
display cards: add price chart to eco settings
benderl Mar 5, 2025
0b45c7a
remove hammerjs package dependency
benderl Mar 7, 2025
3b33cc7
fix after rebase
benderl Mar 25, 2025
def8db3
update docs
benderl Mar 25, 2025
160205a
build settings
benderl Apr 1, 2025
229ca0b
adapt to new charge mode concept
cshagen Apr 3, 2025
81ed459
Merge pull request #2297 from cshagen/feature_simplify_chargemode
benderl Apr 4, 2025
f1d57d8
standard-legacy: fix history chart data truncation
benderl Apr 4, 2025
badd808
migration
benderl Apr 1, 2025
0ed2016
fix soc display without limit
benderl Apr 1, 2025
09c8a53
temporary disable smart home tab
benderl Apr 1, 2025
c2b240e
Add chargepoint table view
Brett-S-OWB Apr 7, 2025
390fb80
Charge modes migrated to composable
Brett-S-OWB Apr 7, 2025
80eb53b
Add formating for longer text in state message
Brett-S-OWB Apr 7, 2025
a8dfa0b
Formatting
Brett-S-OWB Apr 7, 2025
04af9a3
Add display mode to drawer component in mainlayout
Brett-S-OWB Apr 7, 2025
06400b1
Formatting
Brett-S-OWB Apr 7, 2025
19633ab
update wiki
LKuemmel Apr 8, 2025
82494c9
Quasar table moved into a reuseable component
Brett-S-OWB Apr 8, 2025
ef57503
Chargepoint message text format
Brett-S-OWB Apr 9, 2025
d6e6c4a
Update packages/modules/web_themes/koala/config.py
benderl Apr 9, 2025
30b2ce5
fix merge error
LKuemmel Apr 9, 2025
95b2a3b
Merge pull request #2310 from Brett-S-OWB/koala-web-theme
benderl Apr 9, 2025
4d2ca58
update README
benderl Apr 9, 2025
fc15fdd
temporary disable vehicle tab
benderl Apr 9, 2025
c3c653e
phases to use in instant charging
LKuemmel Jan 16, 2025
95a759c
pv
LKuemmel Jan 16, 2025
5e9f229
draft scheudled charging
LKuemmel Jan 16, 2025
309dffd
time charging
LKuemmel Jan 16, 2025
fdeb50c
eco
LKuemmel Jan 16, 2025
2683449
fixes
LKuemmel Jan 17, 2025
776cbb1
fix
LKuemmel Jan 17, 2025
064f5b0
fix
LKuemmel Jan 17, 2025
165c633
update tests
LKuemmel Jan 17, 2025
0b8fc7e
refactor scheduled charging
LKuemmel Jan 20, 2025
a88ea60
tests
LKuemmel Jan 21, 2025
f6d0155
test
LKuemmel Jan 21, 2025
e10d8f4
update config
LKuemmel Jan 23, 2025
db45694
update charge template, merge max phases
LKuemmel Jan 30, 2025
d4e5d04
fixes
LKuemmel Jan 30, 2025
9a54134
fixes
LKuemmel Jan 30, 2025
47e8af6
fix
LKuemmel Jan 31, 2025
1d6a4d1
fix tests
LKuemmel Jan 31, 2025
e73004e
plan once use todays date
LKuemmel Jan 31, 2025
4188096
standard-legacy web-theme
benderl Feb 11, 2025
8439b97
cards display-theme
benderl Feb 12, 2025
7bc3b52
update setdata topics
LKuemmel Feb 13, 2025
830e13c
Feature dashboard temporary settings (#2218)
LKuemmel Feb 14, 2025
75531af
temporary settings in standard_legacy web theme
benderl Feb 17, 2025
15875fc
adopt standard_legacy web theme for complete charge template objects
benderl Feb 17, 2025
0239641
temporary settings in cards display theme
benderl Feb 18, 2025
e4c155b
remove obsolet code
LKuemmel Feb 18, 2025
8b3f328
ammend
LKuemmel Feb 18, 2025
199519d
update temporary settings if persistent settings are updated
LKuemmel Feb 21, 2025
ca2cebf
allow dis-/enabling of plans in standard-legacy web theme
benderl Feb 24, 2025
676802d
display wrapper: limit log messages
benderl Feb 24, 2025
7cafdb7
enhance cards display theme
benderl Feb 24, 2025
b1646fb
move vehicle select modal into own component
benderl Feb 26, 2025
8ab2923
restructure display of plan details
benderl Feb 26, 2025
d989e84
enhance format of weekday and date ranges
benderl Feb 26, 2025
3af45a5
display absolute values in flow chart
benderl Feb 27, 2025
9897140
fix after rebase
benderl Mar 25, 2025
8c3ae69
update docs
benderl Mar 25, 2025
fecc22c
adapt to new charge mode concept
cshagen Apr 3, 2025
daa7573
standard-legacy: fix history chart data truncation
benderl Apr 4, 2025
48a14c8
update wiki
LKuemmel Apr 8, 2025
c7f88fa
fix merge error
LKuemmel Apr 9, 2025
477700d
display cards: add price chart to eco settings
benderl Mar 5, 2025
1ab81ae
remove hammerjs package dependency
benderl Mar 7, 2025
5383946
Merge branch 'feature_simplify_chargemode' into feature-koala-web-theme
benderl Apr 9, 2025
52fa088
Merge pull request #2289 from openWB/feature-koala-web-theme
benderl Apr 9, 2025
508f2de
Koala: linting
benderl Apr 9, 2025
e9bcd2f
Add manual SoC input to charge point card
Brett-S-OWB Apr 9, 2025
dd9a524
Formatting / consistency changes
Brett-S-OWB Apr 10, 2025
204aefd
Formatting
Brett-S-OWB Apr 10, 2025
8738dbe
Remove console.warn due to async error
Brett-S-OWB Apr 10, 2025
dd663d1
add koala github workflow
benderl Apr 9, 2025
1fadde3
fix merge
LKuemmel Apr 9, 2025
7f75201
fix subdata topic filter
LKuemmel Apr 9, 2025
74f933d
undo remove obsolet code for backwards compability
LKuemmel Feb 18, 2025
670e3d5
theme name
LKuemmel Apr 9, 2025
da38496
fix plan topics
LKuemmel Apr 10, 2025
3aee343
web theme fixes
benderl Apr 10, 2025
6190f39
Merge remote-tracking branch 'upstream/master' into feature_simplify_…
LKuemmel Apr 11, 2025
59578e4
build Koala and settings UI
LKuemmel Apr 11, 2025
8c4f33b
fix subdata
LKuemmel Apr 11, 2025
a6a7f32
Manual SoC update icon only displayed if vehicle SoC type = "manual"
Brett-S-OWB Apr 11, 2025
1cf8671
cleanup mqtt-store
benderl Apr 11, 2025
f52f516
target display for scheduled charging
benderl Apr 11, 2025
922a2a3
Merge branch 'feature_simplify_chargemode' of https://github.com/open…
benderl Apr 11, 2025
965478d
Merge branch 'feature_simplify_chargemode' into koala-web-theme
benderl Apr 11, 2025
8f23688
rewrite manual soc handling
benderl Apr 11, 2025
c6bf968
simplify manual soc de-/increment
benderl Apr 11, 2025
9cc1cc2
Merge pull request #2315 from Brett-S-OWB/koala-web-theme
benderl Apr 11, 2025
fa0ca24
koala build
benderl Apr 11, 2025
4ff72bd
increase openwb version of openwb_local.conf
LKuemmel Apr 11, 2025
5f453f6
don't load persistent charge template when plugging
LKuemmel Apr 11, 2025
f2bbbf5
formatting
benderl Apr 14, 2025
d92bfe3
Fix reactivity for charge point vehicle selection + formatting
Brett-S-OWB Apr 14, 2025
7627714
Update vehicle list call
Brett-S-OWB Apr 14, 2025
bf598cf
fix charge plans after unplugging
LKuemmel Apr 14, 2025
afcdb9c
Merge pull request #2324 from Brett-S-OWB/koala-new-chargemodes
benderl Apr 14, 2025
f93557d
add time charging options to settings
benderl Apr 14, 2025
e33f4bb
add slider to manual soc input modal
benderl Apr 14, 2025
6ac915d
add soc update button and message feedback
benderl Apr 14, 2025
61c1404
Add information to vehicle cards
Brett-S-OWB Apr 14, 2025
9d73b00
Apply suggestions from code review
benderl Apr 15, 2025
d6b0b28
Merge pull request #2329 from Brett-S-OWB/koala-new-chargemodes
benderl Apr 15, 2025
8e74688
soc module handling
benderl Apr 15, 2025
58839b7
add vehicle state to vehicle card
benderl Apr 15, 2025
bffcfda
koala build
benderl Apr 24, 2025
a8a49cd
settings build
benderl Apr 24, 2025
b8ed503
Merge remote-tracking branch 'upstream/master' into feature_simplify_…
LKuemmel Apr 28, 2025
d0e1576
build settings UI
LKuemmel Apr 28, 2025
ad421da
Merge remote-tracking branch 'upstream/master' into feature_simplify_…
LKuemmel Apr 29, 2025
c6be2c8
Merge remote-tracking branch 'upstream/master' into feature_simplify_…
LKuemmel Apr 30, 2025
044e8fb
fix eco electricity tariff
LKuemmel May 2, 2025
b15df6e
fix pytest
LKuemmel May 2, 2025
b2198b7
Merge remote-tracking branch 'upstream/master' into feature_simplify_…
LKuemmel May 6, 2025
be8f400
build settings UI
LKuemmel May 6, 2025
6807aa6
Merge remote-tracking branch 'upstream/master' into feature_simplify_…
LKuemmel May 8, 2025
c35306a
build settings UI
LKuemmel May 8, 2025
93d0b00
Merge remote-tracking branch 'upstream/master' into feature_simplify_…
LKuemmel May 8, 2025
e27767d
Merge remote-tracking branch 'upstream/master' into feature_simplify_…
LKuemmel May 8, 2025
96465b2
Koala theme Vehicle table view - base-table refactor (#2367)
Brett-S-OWB May 8, 2025
70266eb
fix
LKuemmel May 8, 2025
8ccbf97
build Koala UI
LKuemmel May 8, 2025
3220d8f
build settings UI
LKuemmel May 8, 2025
696b9f7
fix update plan at first click on saving
LKuemmel May 9, 2025
ce87457
fix scheduled data missed daily date for today
LKuemmel May 9, 2025
5ce4517
flake8
LKuemmel May 9, 2025
8ca5f53
fix scheduled charging
LKuemmel May 12, 2025
74ad268
undo comment
LKuemmel May 12, 2025
d96bd6d
fix scheduled charging state string
LKuemmel May 12, 2025
e6febbc
set default-chargemode to instant charging
LKuemmel May 12, 2025
4064d31
cleanup koala icons
benderl May 13, 2025
863ab14
fix missed standby charge mode references
benderl May 13, 2025
8c56fd0
fix publishing vehicle change
benderl May 13, 2025
4bf3b13
koala build
benderl May 13, 2025
c4b58dd
settings build
benderl May 13, 2025
a5bea61
Merge remote-tracking branch 'upstream/master' into feature_simplify_…
LKuemmel May 13, 2025
2fd9070
build UI settings
LKuemmel May 13, 2025
2568b49
fix pytest due to new instant charging current default from 10 to 16A
LKuemmel May 13, 2025
4931eb3
remove settings ui build files
LKuemmel May 13, 2025
f028e97
ammend
LKuemmel May 13, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions .github/workflows/build_web_theme_koala.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: Build Web Theme Koala

on:
push:
paths:
- packages/modules/web_themes/koala/source/**
branches:
- master

jobs:
build:
runs-on: ubuntu-latest

steps:
- name: Checkout Repository
uses: actions/checkout@v4

- name: Setup Node.js (v20)
uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
cache-dependency-path: packages/modules/web_themes/koala/source/package-lock.json

- name: Install Dependencies and Build
run: |
cd packages/modules/web_themes/koala/source
npm install
npm run build --if-present

- name: Commit and Push Changes
run: |
git config user.name "${{ github.actor }}"
git config user.email "${{ github.actor }}@users.noreply.github.com"
git add packages/modules/web_themes/koala/web
git commit -m "Build Web Theme: Koala"
git push
4 changes: 3 additions & 1 deletion data/config/mosquitto/openwb_local.conf
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# openwb-version:18
# openwb-version:19
listener 1886 localhost
allow_anonymous true

Expand All @@ -22,6 +22,8 @@ topic openWB/chargepoint/+/set/phases_to_use out 2
topic openWB/chargepoint/+/set/manual_lock out 2
topic openWB/chargepoint/+/set/autolock_state out 2
topic openWB/chargepoint/+/set/rfid out 2
topic openWB/chargepoint/+/set/charge_template out 2
topic openWB/chargepoint/+/set/charge_template/# out 2
topic openWB/chargepoint/+/get/# out 2
topic openWB/chargepoint/+/config/# out 2
topic openWB/chargepoint/template/# out 2
Expand Down
10 changes: 10 additions & 0 deletions docs/Ladeprofile.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,13 @@ _Einstellungen -> Konfiguration -> Fahrzeuge -> Lade-Profile_
Unter den Lade-Profilen werden die Einstellungen für das Ladeprofil verwaltet. Die Einstellungen auf der Hauptseite werden aus diesem Profil geladen und dorthin geschrieben. Ist nur ein Fahrzeug vorhanden, so wird in den meisten Fällen nur das Standard-Ladeprofil benötigt. Ausgenommen hiervon ist, wenn per RFID-Tag Ladevorgaben ausgewählt werden.

In den fahrzeugspezifischen Einstellungen wird ein Ladeprofil einem Fahrzeug zugeordnet. Werden zwei Fahrzeuge geladen, empfiehlt es sich dazu ein zweites Ladeprofil anzulegen.

### Temporäre Ladeprofile (ab Version 2.1.8)

Anpassungen am Ladeprofil, die über die Hauptseite (Web-Themes) oder ein Display (Display-Themes) vorgenommen werden, sind temporär. Die Lade-Profile müssen direkt in den Einstellungen bearbeitet werden.

Die temporären Einstellungen werden mit dem Ladeprofil aus den Einstellungen überschrieben, wenn ...

* abgesteckt wird.
* das Fahrzeug gewechselt wird. Das Lade-Profil des neuen Fahrzeugs wird geladen.
* das Ladeprofil in den Einstellungen geändert wird.
8 changes: 4 additions & 4 deletions docs/MQTT.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ openWB hat einen eigenen MQTT-Broker integriert, über den die Kommunikation lä

Als EVU-Zähler können auch Werte über MQTT empfangen werden. Die Integration ist im Abschnitt [Zähler](https://github.com/openWB/core/wiki/Zähler) beschrieben.

## Smarthome
## SmartHome

## Steuerbefehle

Expand All @@ -32,8 +32,8 @@ SoC-Limit auf z.B. 80% setzen
Zielladen
`openWB/set/vehicle/template/charge_template/#/chargemode/selected -> scheduled_charging`

Standby
`openWB/set/vehicle/template/charge_template/#/chargemode/selected -> standby`
Eco
`openWB/set/vehicle/template/charge_template/#/chargemode/selected -> eco_charging`

Stop
`openWB/set/vehicle/template/charge_template/#/chargemode/selected -> stop`
Expand All @@ -50,7 +50,7 @@ openWB/vehicle/template/charge_template/1
Setzen von min_Current für min+PV nachbauen:
`openWB/set/vehicle/template/charge_template/#/chargemode/pv_charging/min_current`

Setzen des Lademodus: (Werte die zu senden sind: instant_charging, pv_charging, scheduled_charging, standby, stop)
Setzen des Lademodus: (Werte die zu senden sind: instant_charging, pv_charging, scheduled_charging, eco_charging, stop)
`openWB/set/vehicle/template/charge_template/#/chargemode/selected`

Ladepunkt sperren für Priosteuerung der LP:
Expand Down
2 changes: 1 addition & 1 deletion packages/control/algorithm/additional_current_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
def test_set_loadmangement_message(set_current, limit, expected_msg, monkeypatch):
# setup
ev = Ev(0)
ev.charge_template = ChargeTemplate(0)
ev.charge_template = ChargeTemplate()
cp1 = Chargepoint(1, None)
cp1.data = ChargepointData(set=Set(current=set_current),
control_parameter=ControlParameter(required_currents=[8]*3))
Expand Down
1 change: 1 addition & 0 deletions packages/control/algorithm/algorithm.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ def _check_auto_phase_switch_delay(self) -> None:
# wurden, wieder zurückgegeben.
log.debug(f"Ladepunkt {cp.num}: Prüfen, ob Phasenumschaltung durchgeführt werden soll.")
phases, current, message = charging_ev.auto_phase_switch(
cp.data.set.charge_template,
cp.data.control_parameter,
cp.num,
cp.data.get.currents,
Expand Down
14 changes: 8 additions & 6 deletions packages/control/algorithm/chargemodes.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,21 @@
(None, Chargemode.TIME_CHARGING, False),
(Chargemode.INSTANT_CHARGING, Chargemode.INSTANT_CHARGING, True),
(Chargemode.INSTANT_CHARGING, Chargemode.INSTANT_CHARGING, False),
(Chargemode.ECO_CHARGING, Chargemode.INSTANT_CHARGING, True),
(Chargemode.ECO_CHARGING, Chargemode.INSTANT_CHARGING, False),
(Chargemode.PV_CHARGING, Chargemode.INSTANT_CHARGING, True),
(Chargemode.PV_CHARGING, Chargemode.INSTANT_CHARGING, False),
(Chargemode.SCHEDULED_CHARGING, Chargemode.PV_CHARGING, True),
(Chargemode.SCHEDULED_CHARGING, Chargemode.PV_CHARGING, False),
(Chargemode.ECO_CHARGING, Chargemode.PV_CHARGING, True),
(Chargemode.ECO_CHARGING, Chargemode.PV_CHARGING, False),
(Chargemode.PV_CHARGING, Chargemode.PV_CHARGING, True),
(Chargemode.PV_CHARGING, Chargemode.PV_CHARGING, False),
(None, Chargemode.STANDBY, True),
(None, Chargemode.STANDBY, False),
(None, Chargemode.STOP, True),
(None, Chargemode.STOP, False))

CONSIDERED_CHARGE_MODES_SURPLUS = CHARGEMODES[0:2] + CHARGEMODES[6:12]
CONSIDERED_CHARGE_MODES_PV_ONLY = CHARGEMODES[8:12]
CONSIDERED_CHARGE_MODES_ADDITIONAL_CURRENT = CHARGEMODES[0:8]
CONSIDERED_CHARGE_MODES_SURPLUS = CHARGEMODES[0:2] + CHARGEMODES[6:16]
CONSIDERED_CHARGE_MODES_PV_ONLY = CHARGEMODES[10:16]
CONSIDERED_CHARGE_MODES_ADDITIONAL_CURRENT = CHARGEMODES[0:10]
CONSIDERED_CHARGE_MODES_MIN_CURRENT = CHARGEMODES[0:-1]
CONSIDERED_CHARGE_MODES_NO_CURRENT = CHARGEMODES[12:16]
CONSIDERED_CHARGE_MODES_NO_CURRENT = CHARGEMODES[16:18]
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
from control.chargemode import Chargemode
from control import data, loadmanagement
from control.algorithm.algorithm import Algorithm
from control.algorithm.algorithm import data as algorithm_data
from control.chargepoint.chargepoint_template import CpTemplate
from control.chargepoint.chargepoint_state import ChargepointState
from dataclass_utils.factories import currents_list_factory
Expand Down Expand Up @@ -224,6 +223,9 @@ def test_surplus(params: ParamsSurplus, all_cp_pv_charging_3p, all_cp_charging_3
data.data.counter_data["counter6"].data.set.raw_currents_left = params.raw_currents_left_counter6
mockget_component_name_by_id = Mock(return_value="Garage")
monkeypatch.setattr(loadmanagement, "get_component_name_by_id", mockget_component_name_by_id)
data.data.cp_data["cp3"].data.set.charge_template.data.chargemode.pv_charging.phases_to_use = 1
data.data.cp_data["cp4"].data.set.charge_template.data.chargemode.pv_charging.phases_to_use = 1
data.data.cp_data["cp5"].data.set.charge_template.data.chargemode.pv_charging.phases_to_use = 1

# execution
Algorithm().calc_current()
Expand Down Expand Up @@ -270,8 +272,6 @@ def test_phase_switch(all_cp_pv_charging_3p, all_cp_charging_3p, monkeypatch):
data.data.counter_data["counter0"].data.set.raw_power_left = cases_phase_switch[0].raw_power_left
data.data.counter_data["counter0"].data.set.raw_currents_left = cases_phase_switch[0].raw_currents_left_counter0
data.data.counter_data["counter6"].data.set.raw_currents_left = cases_phase_switch[0].raw_currents_left_counter6
mockget_get_phases_chargemode = Mock(return_value=0)
monkeypatch.setattr(algorithm_data.data.general_data, "get_phases_chargemode", mockget_get_phases_chargemode)
data.data.cp_data[
"cp3"].data.control_parameter.state = ChargepointState.CHARGING_ALLOWED
data.data.cp_data[
Expand All @@ -293,8 +293,6 @@ def test_phase_switch_1p_3p(all_cp_pv_charging_1p, monkeypatch):
data.data.counter_data["counter0"].data.set.raw_power_left = cases_phase_switch[1].raw_power_left
data.data.counter_data["counter0"].data.set.raw_currents_left = cases_phase_switch[1].raw_currents_left_counter0
data.data.counter_data["counter6"].data.set.raw_currents_left = cases_phase_switch[1].raw_currents_left_counter6
mockget_get_phases_chargemode = Mock(return_value=0)
monkeypatch.setattr(algorithm_data.data.general_data, "get_phases_chargemode", mockget_get_phases_chargemode)
data.data.cp_data["cp3"].data.get.currents = [32, 0, 0]
data.data.cp_data["cp3"].data.get.power = 7360
data.data.cp_data["cp3"].data.control_parameter.timestamp_last_phase_switch = 1652682252
Expand Down
94 changes: 52 additions & 42 deletions packages/control/algorithm/surplus_controlled.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,9 +99,9 @@ def _set_loadmangement_message(self,

# tested
def filter_by_feed_in_limit(self, chargepoints: List[Chargepoint]) -> Tuple[List[Chargepoint], List[Chargepoint]]:
cp_with_feed_in = list(filter(lambda cp: cp.data.set.charging_ev_data.charge_template.data.chargemode.
cp_with_feed_in = list(filter(lambda cp: cp.data.set.charge_template.data.chargemode.
pv_charging.feed_in_limit is True, chargepoints))
cp_without_feed_in = list(filter(lambda cp: cp.data.set.charging_ev_data.charge_template.data.chargemode.
cp_without_feed_in = list(filter(lambda cp: cp.data.set.charge_template.data.chargemode.
pv_charging.feed_in_limit is False, chargepoints))
return cp_with_feed_in, cp_without_feed_in

Expand All @@ -113,7 +113,7 @@ def _limit_adjust_current(self, chargepoint: Chargepoint, new_current: float) ->
MAX_CURRENT = 30
msg = None
nominal_difference = chargepoint.data.set.charging_ev_data.ev_template.data.nominal_difference
if chargepoint.data.set.charging_ev_data.chargemode_changed or chargepoint.data.get.charge_state is False:
if chargepoint.chargemode_changed or chargepoint.data.get.charge_state is False:
return new_current
else:
# Um max. +/- 5A pro Zyklus regeln
Expand Down Expand Up @@ -153,55 +153,65 @@ def check_submode_pv_charging(self) -> None:
evu_counter = data.data.counter_all_data.get_evu_counter()

for cp in get_chargepoints_by_chargemodes(CONSIDERED_CHARGE_MODES_PV_ONLY):
def phase_switch_necessary() -> bool:
return cp.cp_ev_chargemode_support_phase_switch() and cp.data.get.phases_in_use != 1
control_parameter = cp.data.control_parameter
if cp.data.set.charging_ev_data.chargemode_changed or cp.data.set.charging_ev_data.submode_changed:
if control_parameter.state == ChargepointState.CHARGING_ALLOWED:
if cp.data.set.charging_ev_data.ev_template.data.prevent_charge_stop is False:
threshold = evu_counter.calc_switch_off_threshold(cp)[0]
if evu_counter.calc_raw_surplus() - cp.data.set.required_power < threshold:
control_parameter.required_currents = [0]*3
control_parameter.state = ChargepointState.NO_CHARGING_ALLOWED
try:
def phase_switch_necessary() -> bool:
return cp.cp_ev_chargemode_support_phase_switch() and cp.data.get.phases_in_use != 1
control_parameter = cp.data.control_parameter
if cp.chargemode_changed or cp.submode_changed:
if control_parameter.state == ChargepointState.CHARGING_ALLOWED:
if cp.data.set.charging_ev_data.ev_template.data.prevent_charge_stop is False:
threshold = evu_counter.calc_switch_off_threshold(cp)[0]
if evu_counter.calc_raw_surplus() - cp.data.set.required_power < threshold:
control_parameter.required_currents = [0]*3
control_parameter.state = ChargepointState.NO_CHARGING_ALLOWED
else:
control_parameter.required_currents = [0]*3
else:
control_parameter.required_currents = [0]*3
else:
if ((control_parameter.state == ChargepointState.CHARGING_ALLOWED or
control_parameter.state == ChargepointState.SWITCH_OFF_DELAY) and
phase_switch_necessary() is False):
evu_counter.switch_off_check_threshold(cp)
if control_parameter.state == ChargepointState.SWITCH_OFF_DELAY:
evu_counter.switch_off_check_timer(cp)
if control_parameter.state == ChargepointState.SWITCH_ON_DELAY:
# Wenn charge_state False und set_current > 0, will Auto nicht laden
evu_counter.switch_on_timer_expired(cp)
if control_parameter.state not in CHARGING_STATES:
control_parameter.required_currents = [0]*3
if ((control_parameter.state == ChargepointState.CHARGING_ALLOWED or
control_parameter.state == ChargepointState.SWITCH_OFF_DELAY) and
phase_switch_necessary() is False):
evu_counter.switch_off_check_threshold(cp)
if control_parameter.state == ChargepointState.SWITCH_OFF_DELAY:
evu_counter.switch_off_check_timer(cp)
if control_parameter.state == ChargepointState.SWITCH_ON_DELAY:
# Wenn charge_state False und set_current > 0, will Auto nicht laden
evu_counter.switch_on_timer_expired(cp)
if control_parameter.state not in CHARGING_STATES:
control_parameter.required_currents = [0]*3
except Exception:
log.exception(f"Fehler in der PV-gesteuerten Ladung bei {cp.num}")

def check_switch_on(self) -> None:
for cp in get_chargepoints_by_chargemodes(CONSIDERED_CHARGE_MODES_PV_ONLY):
if (cp.data.control_parameter.state == ChargepointState.NO_CHARGING_ALLOWED or
cp.data.control_parameter.state == ChargepointState.SWITCH_ON_DELAY):
data.data.counter_all_data.get_evu_counter().switch_on_threshold_reached(cp)
try:
if (cp.data.control_parameter.state == ChargepointState.NO_CHARGING_ALLOWED or
cp.data.control_parameter.state == ChargepointState.SWITCH_ON_DELAY):
data.data.counter_all_data.get_evu_counter().switch_on_threshold_reached(cp)
except Exception:
log.exception(f"Fehler in der PV-gesteuerten Ladung bei {cp.num}")

def set_required_current_to_max(self) -> None:
for cp in get_chargepoints_by_chargemodes(CONSIDERED_CHARGE_MODES_SURPLUS):
charging_ev_data = cp.data.set.charging_ev_data
required_currents = cp.data.control_parameter.required_currents
control_parameter = cp.data.control_parameter

if control_parameter.phases == 1:
max_current = charging_ev_data.ev_template.data.max_current_single_phase
else:
max_current = charging_ev_data.ev_template.data.max_current_multi_phases
try:
charging_ev_data = cp.data.set.charging_ev_data
required_currents = cp.data.control_parameter.required_currents
control_parameter = cp.data.control_parameter

if cp.template.data.charging_type == ChargingType.AC.value:
if control_parameter.phases == 1:
max_current = charging_ev_data.ev_template.data.max_current_single_phase
else:
max_current = charging_ev_data.ev_template.data.max_current_multi_phases
else:
max_current = charging_ev_data.ev_template.data.dc_max_current

control_parameter.required_currents = [max_current if required_currents[i] != 0 else 0 for i in range(3)]
control_parameter.required_current = max_current
if cp.template.data.charging_type == ChargingType.AC.value:
if control_parameter.phases == 1:
max_current = charging_ev_data.ev_template.data.max_current_single_phase
else:
max_current = charging_ev_data.ev_template.data.max_current_multi_phases
else:
max_current = charging_ev_data.ev_template.data.dc_max_current

control_parameter.required_currents = [
max_current if required_currents[i] != 0 else 0 for i in range(3)]
control_parameter.required_current = max_current
except Exception:
log.exception(f"Fehler in der PV-gesteuerten Ladung bei {cp.num}")
7 changes: 2 additions & 5 deletions packages/control/algorithm/surplus_controlled_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
from control.chargepoint.chargepoint_data import Get, Set
from control.chargepoint.chargepoint_template import CpTemplate
from control.chargepoint.control_parameter import ControlParameter
from control.ev.charge_template import ChargeTemplate
from control.ev.ev import Ev


Expand Down Expand Up @@ -40,10 +39,8 @@ def test_filter_by_feed_in_limit(feed_in_limit_1: bool,
expected_sorted: int):
# setup
def setup_cp(cp: Chargepoint, feed_in_limit: bool) -> Chargepoint:
ev = Ev(0)
ev.charge_template = ChargeTemplate(0)
ev.charge_template.data.chargemode.pv_charging.feed_in_limit = feed_in_limit
cp.data = ChargepointData(set=Set(charging_ev_data=ev))
cp.data = ChargepointData()
cp.data.set.charge_template.data.chargemode.pv_charging.feed_in_limit = feed_in_limit
return cp

cp1 = setup_cp(mock_cp1, feed_in_limit_1)
Expand Down
4 changes: 3 additions & 1 deletion packages/control/auto_phase_switch_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
from control.counter import Counter, CounterData, Set

from control.limiting_value import LoadmanagementLimit
from control.ev.charge_template import ChargeTemplate
from control.pv_all import PvAll
from control.bat_all import BatAll
from control.general import General
Expand Down Expand Up @@ -132,7 +133,8 @@ def test_auto_phase_switch(monkeypatch, vehicle: Ev, params: Params):
control_parameter.state = params.state

# execution
phases_to_use, current, message = vehicle.auto_phase_switch(control_parameter,
phases_to_use, current, message = vehicle.auto_phase_switch(ChargeTemplate(),
control_parameter,
0,
params.get_currents,
params.get_power,
Expand Down
2 changes: 1 addition & 1 deletion packages/control/chargemode.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@ class Chargemode(Enum):
TIME_CHARGING = "time_charging"
INSTANT_CHARGING = "instant_charging"
PV_CHARGING = "pv_charging"
STANDBY = "standby"
ECO_CHARGING = "eco_charging"
STOP = "stop"
Loading