Skip to content

Site: add smart feed-in disable (aka zero feed-in) #21839

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

Draft
wants to merge 60 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
13eb0d5
Add smart feedin feature
andig Jun 12, 2025
89fa060
Add feedin limit
andig Jun 12, 2025
44b326d
Update apis
andig Jun 12, 2025
cf8fca8
Implement PV mode disable
andig Jun 12, 2025
9b4fb0e
wip
andig Jun 12, 2025
214c197
wip
andig Jun 12, 2025
2273cd6
Update core/loadpoint.go
andig Jun 12, 2025
f15c60f
Update core/loadpoint.go
andig Jun 12, 2025
33fccd8
wip
andig Jun 12, 2025
292595c
wip
andig Jun 12, 2025
267d248
Merge branch 'master' into feat/smartfeedin
andig Jun 12, 2025
8e943ad
Revert rename
andig Jun 13, 2025
2a579ea
wip
andig Jun 13, 2025
a9bcf01
Move isDynamicTariff to backend
andig Jun 13, 2025
27f0ae1
wip
andig Jun 13, 2025
6968d3e
wip
andig Jun 13, 2025
85d9d51
wip
andig Jun 13, 2025
3944218
Merge branch 'feat/smartfeedin' into feat/zero-feedin
andig Jun 14, 2025
8844e35
Implement smart feed-in limit
andig Jun 14, 2025
defa184
Add shutdown hook
andig Jun 14, 2025
eb7831a
wip
andig Jun 14, 2025
1228dce
wip
andig Jun 14, 2025
67de209
wip
andig Jun 14, 2025
0b1c1eb
wip
andig Jun 14, 2025
48e865f
Merge branch 'feat/smartfeedin' into feat/zero-feedin
andig Jun 14, 2025
580043b
Merge branch 'master' into feat/zero-feedin
naltatis Jun 14, 2025
8f894d2
Merge branch 'master' into feat/smartfeedin
naltatis Jun 21, 2025
73de54a
replace ui logic with smartCostAvailable
naltatis Jun 21, 2025
97c727e
rename smartFeedin* to smartFeedinPriority*, introduce smartFeedinAva…
naltatis Jun 21, 2025
0a29468
Rename SmartFeedinPriorityAvailable
andig Jun 21, 2025
cd73358
Merge branch 'master' into feat/smartfeedin
andig Jun 21, 2025
083622c
Merge branch 'feat/smartfeedin' into feat/zero-feedin
andig Jun 21, 2025
58612a3
Merge branch 'feat/zero-feedin' of https://github.com/evcc-io/evcc in…
andig Jun 21, 2025
529e40b
smart cost limit ui refactoring; add smart feedin priority basics
naltatis Jun 21, 2025
e8f497c
adjust to rename smartFeedinPriorityAvailable
naltatis Jun 21, 2025
160ba55
Merge branch 'master' into feat/smartfeedin
naltatis Jun 21, 2025
2b97ad6
wip
andig Jun 21, 2025
51e455b
status (wip)
naltatis Jun 23, 2025
1c741c2
e2e (wip); modal refactor
naltatis Jun 23, 2025
8d11e03
clean
naltatis Jun 23, 2025
d84393a
add loadpoint status ui
naltatis Jun 24, 2025
57e1111
refactor status icons
naltatis Jun 25, 2025
cbf95b1
add e2e
naltatis Jun 25, 2025
08e3776
fix battery grid charge e2e
naltatis Jun 25, 2025
370cd0b
Merge branch 'master' into feat/smartfeedin
naltatis Jun 25, 2025
59cb98c
use playwright worker count auto
naltatis Jun 25, 2025
d6618bc
playwright: add html report
naltatis Jun 25, 2025
9eb5853
Use FeedIn as name, remove duplicated functions
andig Jun 25, 2025
81733d3
Merge branch 'master' into feat/smartfeedin
andig Jun 25, 2025
3e4ad7c
Follow ref changes
andig Jun 25, 2025
a9d0f1e
Merge branch 'master' into feat/zero-feedin
naltatis Jun 27, 2025
197d529
git case rename foo
naltatis Jun 27, 2025
a77635b
git case rename foo
naltatis Jun 27, 2025
b069b3b
git case rename foo
naltatis Jun 27, 2025
a30a780
git case rename foo
naltatis Jun 27, 2025
283d8d1
Fix conflict
andig Jun 28, 2025
4d1d7d2
wip
andig Jun 28, 2025
84ec766
wip
andig Jun 28, 2025
4499885
Merge branch 'master' into feat/zero-feedin
andig Jul 2, 2025
172ad72
Merge branch 'master' into feat/zero-feedin
naltatis Jul 9, 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
Prev Previous commit
Next Next commit
fix battery grid charge e2e
  • Loading branch information
naltatis committed Jun 25, 2025
commit 08e3776ac8a7f11e5cfc0e56de6eebebb7fb49ea
2 changes: 1 addition & 1 deletion assets/js/components/Loadpoints/SettingsModal.vue
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
:current-limit="smartCostLimit"
:smart-cost-type="smartCostType"
:currency="currency"
:is-loadpoint="true"
is-loadpoint
:loadpoint-id="Number(loadpointId)"
:multiple-loadpoints="multipleLoadpoints"
:possible="smartCostAvailable"
Expand Down
21 changes: 12 additions & 9 deletions tests/battery-settings.spec.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { test, expect } from "@playwright/test";
import { start, stop, baseUrl } from "./evcc";
import { enableExperimental } from "./utils";
import { enableExperimental, expectModalVisible, expectModalHidden } from "./utils";
test.use({ baseURL: baseUrl() });

test.beforeAll(async () => {
Expand Down Expand Up @@ -41,18 +41,21 @@ test.describe("battery settings", async () => {
await enableExperimental(page);
await page.getByTestId("topnavigation-button").click();
await page.getByTestId("topnavigation-battery").click();
const modal = page.getByTestId("battery-settings-modal");
await expectModalVisible(modal);

await page.getByRole("link", { name: "Grid charging 🧪" }).click();
await page.getByLabel("Price limit").selectOption({ label: "≤ 50.0 ct/kWh" });
await expect(page.getByTestId("battery-settings-modal")).toContainText("5.0 ct – 50.0 ct");
await modal.getByRole("link", { name: "Grid charging 🧪" }).click();
await modal.getByLabel("Price limit").selectOption({ label: "≤ 50.0 ct/kWh" });
await expect(modal).toContainText("5.0 ct – 50.0 ct");
await page.getByRole("button", { name: "Close" }).click();
await expect(page.getByTestId("battery-settings-modal")).not.toBeVisible();
await expectModalHidden(modal);
await page.getByTestId("energyflow").click();
await page.getByRole("button", { name: "grid charging active (≤ 50.0 ct)" }).click();
await expect(page.getByTestId("battery-settings-modal")).toBeVisible();
await page.getByLabel("Price limit").selectOption({ label: "≤ -10.0 ct/kWh" });
await page.getByRole("button", { name: "Close" }).click();
await expect(page.getByTestId("battery-settings-modal")).not.toBeVisible();
await expectModalVisible(modal);
await modal.getByLabel("Price limit").selectOption({ label: "≤ -10.0 ct/kWh" });
await modal.getByRole("button", { name: "Close" }).click();
await expectModalHidden(modal);
await expect(modal).not.toBeVisible();
await expect(page.getByRole("button", { name: "grid charging when ≤ -10.0 ct" })).toBeVisible();
});
});
1 change: 0 additions & 1 deletion tests/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

export async function enableExperimental(page: Page): Promise<void> {
await page.getByTestId("topnavigation-button").click();
await page.getByTestId("topnavigation-settings").click();

Check failure on line 5 in tests/utils.ts

View workflow job for this annotation

GitHub Actions / Integration

[chromium] › tests/config.spec.ts:31:3 › general › change site title

2) [chromium] › tests/config.spec.ts:31:3 › general › change site title ────────────────────────── Error: locator.click: Test timeout of 30000ms exceeded. Call log: - waiting for getByTestId('topnavigation-settings') - locator resolved to <button type="button" data-v-480ddadf="" class="dropdown-item" data-testid="topnavigation-settings">User Interface</button> - attempting click action 2 × waiting for element to be visible, enabled and stable - element is not visible - retrying click action - waiting 20ms 2 × waiting for element to be visible, enabled and stable - element is not visible - retrying click action - waiting 100ms 57 × waiting for element to be visible, enabled and stable - element is not visible - retrying click action - waiting 500ms at utils.ts:5 3 | export async function enableExperimental(page: Page): Promise<void> { 4 | await page.getByTestId("topnavigation-button").click(); > 5 | await page.getByTestId("topnavigation-settings").click(); | ^ 6 | await page.getByLabel("Experimental 🧪").click(); 7 | await page.getByRole("button", { name: "Close" }).click(); 8 | await expect(page.locator(".modal-backdrop")).not.toBeVisible(); at enableExperimental (/home/runner/work/evcc/evcc/tests/utils.ts:5:52) at /home/runner/work/evcc/evcc/tests/config.spec.ts:38:5
await page.getByLabel("Experimental 🧪").click();
await page.getByRole("button", { name: "Close" }).click();
await expect(page.locator(".modal-backdrop")).not.toBeVisible();
Expand All @@ -16,7 +16,6 @@
export async function expectModalHidden(modal: Locator): Promise<void> {
await expect(modal).not.toBeVisible();
await expect(modal).toHaveAttribute("aria-hidden", "true");
await expect(modal.page().locator(".modal-backdrop")).not.toBeVisible();
}

export async function editorClear(editor: Locator, iterations = 6): Promise<void> {
Expand Down
Loading
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy