Skip to content

Commit 702ce87

Browse files
authored
Split plugins page in "user-definded devices" and "reference->plugins" (#1069)
1 parent 44f2ebb commit 702ce87

33 files changed

Lines changed: 1231 additions & 879 deletions

AGENTS.md

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ Everything else is hand-written:
8383
- **Always write "evcc" in lowercase** — even at the beginning of sentences
8484
- Never use "EVCC", "Evcc", or other variations
8585
- Prefer "your evcc instance" over a bare "evcc" when referring to a running instance
86+
- Don't mention "evcc" unless necessary for context — within evcc docs the reader already knows. Drop self-referential fluff like "another strength of evcc", "evcc ships with", "the evcc UI"
8687

8788
### Language & Tone
8889

@@ -201,9 +202,16 @@ Everything else is hand-written:
201202

202203
- Use locale-prefixed absolute paths (`/en/...`, `/de/...`) for clarity
203204
- Keep anchor names (`#section`) consistent between translations
204-
- **Create explicit anchors** with `{#anchor-name}` on headings instead of relying on auto-generated ones
205+
- **Create explicit anchors** on headings instead of relying on auto-generated ones
205206
- Auto-generated anchors change with heading text and differ between languages
206-
- Example: `### Vehicle Detection {#vehicle}` ensures stable, language-independent linking
207+
- In `.md` files use the compact form: `### Vehicle Detection {#vehicle}`
208+
- In `.mdx` files use a raw HTML anchor element on the line above (MDX parses `{...}` as a JSX expression, so the compact form breaks the build):
209+
210+
```mdx
211+
<a id="vehicle"></a>
212+
213+
### Vehicle Detection
214+
```
207215

208216
### Documentation Best Practices
209217

astro.config.mjs

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,16 @@ import starlightBlog from "starlight-blog";
66
import starlightLlmsTxt from "starlight-llms-txt";
77
import starlightOpenAPI, { openAPISidebarGroups } from "starlight-openapi";
88
import mermaid from "astro-mermaid";
9+
import remarkHeadingId from "remark-heading-id";
910
export default defineConfig({
1011
site: "https://docs.evcc.io",
1112
trailingSlash: "never",
1213
build: {
1314
format: "directory",
1415
},
16+
markdown: {
17+
remarkPlugins: [remarkHeadingId],
18+
},
1519
redirects: {
1620
"/": "/en",
1721
"/docs": "/de",
@@ -20,8 +24,6 @@ export default defineConfig({
2024
"/en/docs/Home": "/en",
2125
"/docs/reference/api": "/en/integrations/rest-api",
2226
"/en/docs/reference/api": "/en/integrations/rest-api",
23-
"/de/reference/plugins": "/de/plugins",
24-
"/en/reference/plugins": "/en/plugins",
2527
},
2628
integrations: [
2729
mermaid({
@@ -137,21 +139,22 @@ export default defineConfig({
137139
link: "/heating",
138140
},
139141
{
140-
label: "Plugins",
141-
link: "/plugins",
142+
label: "User-defined devices",
143+
translations: { de: "Benutzerdefinierte Geräte" },
144+
link: "/user-defined-devices",
142145
},
143146
],
144147
},
145-
{
146-
label: "Features",
147-
translations: { de: "Funktionen" },
148-
items: [{ autogenerate: { directory: "features", collapsed: true } }],
149-
},
150148
{
151149
label: "Tariffs & forecasts",
152150
translations: { de: "Tarife & Vorhersagen" },
153151
link: "/tariffs",
154152
},
153+
{
154+
label: "Features",
155+
translations: { de: "Funktionen" },
156+
items: [{ autogenerate: { directory: "features", collapsed: true } }],
157+
},
155158
{
156159
label: "Integrations",
157160
translations: { de: "Integrationen" },
@@ -182,6 +185,7 @@ export default defineConfig({
182185
},
183186
],
184187
},
188+
{ label: "Plugins", slug: "reference/plugins" },
185189
{ label: "Modbus", slug: "reference/modbus" },
186190
{
187191
label: "CLI",
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
---
2+
interface Props {
3+
lang: "de" | "en";
4+
kind?: "device" | "service";
5+
}
6+
7+
const { lang, kind = "device" } = Astro.props;
8+
9+
const issuesUrl = "https://github.com/evcc-io/evcc/issues/new/choose";
10+
const userDefinedUrl = `/${lang}/user-defined-devices`;
11+
12+
const t = lang === "de"
13+
? {
14+
title: "Dein Gerät nicht dabei?",
15+
titleService: "Dein Dienst nicht dabei?",
16+
body:
17+
kind === "service"
18+
? `Eröffne einen <a href="${issuesUrl}">Feature Request</a> auf GitHub oder definiere einen <a href="${userDefinedUrl}#tariff">eigenen Dienst</a> über das Plugin-System.`
19+
: `Eröffne einen <a href="${issuesUrl}">Feature Request</a> auf GitHub oder definiere ein <a href="${userDefinedUrl}">eigenes Gerät</a> über das Plugin-System.`,
20+
}
21+
: {
22+
title: "Device not in the list?",
23+
titleService: "Service not in the list?",
24+
body:
25+
kind === "service"
26+
? `Open a <a href="${issuesUrl}">feature request</a> on GitHub or build your own <a href="${userDefinedUrl}#tariff">user-defined service</a> via the plugin system.`
27+
: `Open a <a href="${issuesUrl}">feature request</a> on GitHub or build your own <a href="${userDefinedUrl}">user-defined device</a> via the plugin system.`,
28+
};
29+
30+
const title = kind === "service" ? t.titleService : t.title;
31+
---
32+
33+
<aside class="starlight-aside starlight-aside--note" aria-label={title}>
34+
<p class="starlight-aside__title" aria-hidden="true">{title}</p>
35+
<p set:html={t.body} />
36+
</aside>

src/content/docs/de/blog/2025/07/30/highlights-config-ui-feedin-ai.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ Zudem ist das Authentifizierungssystem gesperrt und damit auch alle geschützten
107107
Über die Konfigurationsoberfläche konnten bisher bereits Fahrzeuge, Zähler, PV-, Batteriesysteme, Wallboxen, Tarife, schaltbare Steckdosen und Wärmepumpen angelegt werden.
108108
Basis dafür ist unsere große Bibliothek an Geräte-Templates für inzwischen über 550 Produkte.
109109

110-
Eine weitere Stärke von evcc ist das [flexible Plugin System](/de/plugins).
110+
Eine weitere Stärke ist das [flexible Plugin System](/de/reference/plugins).
111111
Damit können auch exotische Geräte und Integrationen mithilfe von HTTP, Modbus, Script, MQTT, ... verbunden werden.
112112
Diese benutzerdefinierten Geräte (`type: custom`) mussten bislang über die `evcc.yaml` konfiguriert werden.
113113
Nun ist dies auch über die UI möglich – komfortabel mit Syntax-Highlighting, Validierung und Prüfen-Funktion.

src/content/docs/de/faq.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ Wie du das Log aufrufst, findest du in der [Installation](/de/installation) unte
215215

216216
### MQTT plugin gibt `outdated` Warnung
217217

218-
Bei der Nutzung des [MQTT plugins](devices/plugins#mqtt) kann über den `timeout` parameter gesteuert werden, wie lange ein Wert der per MQTT erhalten wurde, gültig ist.
218+
Bei der Nutzung des [MQTT plugins](/de/reference/plugins#mqtt) kann über den `timeout` parameter gesteuert werden, wie lange ein Wert der per MQTT erhalten wurde, gültig ist.
219219
Wenn kein neuer Wert innerhalb dieser Zeit kommt, ist der Wert für evcc `outdated`.
220220
Wichtig ist, dass hier eine Einheit mit angegeben werden muss, also z.B. `timeout: 30s`
221221

src/content/docs/de/features/external-control.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ limit:
8686
# Rückgabewert: false = nicht begrenzt, true = begrenzt
8787
```
8888

89-
Weitere Details zum GPIO-Plugin findest du in der [Plugin-Dokumentation](/de/plugins#gpio).
89+
Weitere Details zum GPIO-Plugin findest du in der [Plugin-Dokumentation](/de/reference/plugins#gpio).
9090

9191
</TabItem>
9292
<TabItem label="MQTT">
@@ -249,4 +249,4 @@ Diese Funktion wird weiter ausgebaut und entsprechende Zähler werden in der [Ge
249249
## Weiterführende Informationen
250250

251251
- [Lastmanagement](./loadmanagement) - Grundlagen der Lastverteilung
252-
- [Plugins](../plugins) - Erweiterte Plugin-Konfigurationen
252+
- [Plugins](/de/reference/plugins) - Erweiterte Plugin-Konfigurationen

src/content/docs/de/index.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ evcc läuft lokal auf einem Raspberry Pi oder NAS - keine Cloud erforderlich.
2525
- [Wallboxen und schaltbaren Steckdosen](/de/chargers)
2626
- [Erzeugungsanlagen, Batteriespeichern und Energiemessgeräten (Zähler)](/de/meters)
2727
- [Fahrzeugen](/de/vehicles)
28-
- [Plugins](/de/plugins) um nahezu beliebige Wallboxen / Zähler / Fahrzeuge hinzuzufügen: Modbus, HTTP, MQTT, Javascript, WebSockets und Shell Skripte
28+
- [Plugins](/de/reference/plugins) um nahezu beliebige Wallboxen / Zähler / Fahrzeuge hinzuzufügen: Modbus, HTTP, MQTT, Javascript, WebSockets und Shell Skripte
2929
- Status [Benachrichtigungen](/de/reference/configuration/messaging) über [Telegram](https://telegram.org), [PushOver](https://pushover.net) und [viele mehr](https://containrrr.dev/shoutrrr/)
3030
- Datenanalyse mit [InfluxDB](https://www.influxdata.com) und [Grafana](https://grafana.com/grafana/)
3131
- Stufenlose Regelung der Ladeströme mit unterstützten Wallboxen (z. B. bei smartWB als [OLC](https://board.evse-wifi.de/viewtopic.php?f=16&t=187) bezeichnet)

src/content/docs/de/installation/considerations.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ Letzteres ist meist dann der Fall, wenn die Solaranlage mit einem Speicher ausge
3030

3131
Der Zähler muss sich elektronisch auslesen lassen.
3232
Schau einfach, mal unter [Geräte > PV, Batterie, Netz, Zähler](/de/meters) nach, ob du deine Geräte findest.
33-
Wenn nicht, kannst du über [Plugins](/de/plugins) auch selbst eine Integration vornehmen.
33+
Wenn nicht, kannst du selbst eine Integration als [eigenes Gerät](/de/user-defined-devices) vornehmen.
3434

3535
Eine weitere Voraussetzung für das Automatisieren des Überschussladens ist eine steuerbare Wallbox.
3636
Die unterstützten Geräte sind unter [Geräte > Wallboxen](/de/chargers) gelistet.

src/content/docs/de/reference/configuration/chargers.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ name: wallbox1
3939

4040
Dies ist der evcc spezifische Wallbox Typ, mit Hilfe dessen mit der Wallbox kommuniziert werden kann. Bekannte Wallboxen könne über den Typ `template` eingebunden werden. Den passenden (Template)Typ findet man unter [Geräte - Wallboxen](/de/chargers).
4141

42-
Für unbekannte Wallboxen (oder aus anderen individuellen Gründen) kann die Standard Implementierung über [Plugins](/de/plugins) genutzt werden.
42+
Für unbekannte Wallboxen (oder aus anderen individuellen Gründen) kannst du eine [eigene Wallbox](/de/user-defined-devices#charger) definieren.
4343

4444
**Beispiel**:
4545

src/content/docs/de/reference/configuration/hems.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,12 @@ Gesamtleistungslimit in Watt, das bei aktivem Signal gesetzt wird.
5656

5757
#### `limit`
5858

59-
[Plugin](../../plugins)-Konfiguration zum Auslesen des Schaltkontakts.
59+
[Plugin](/de/reference/plugins)-Konfiguration zum Auslesen des Schaltkontakts.
6060
Erwarteter Rückgabewert: `true`/`1` = begrenzt, `false`/`0` = normal.
6161

6262
#### `passthrough`
6363

64-
Optionale [Plugin](../../plugins)-Konfiguration zum Durchreichen des Begrenzungssignals an ein externes System.
64+
Optionale [Plugin](/de/reference/plugins)-Konfiguration zum Durchreichen des Begrenzungssignals an ein externes System.
6565

6666
#### `interval`
6767

@@ -101,7 +101,7 @@ Folgende optionale Parameter können für die EEBus-Kommunikation gesetzt werden
101101

102102
#### `passthrough`
103103

104-
Optionale [Plugin](../../plugins)-Konfiguration zum Durchreichen des Begrenzungssignals an ein externes System.
104+
Optionale [Plugin](/de/reference/plugins)-Konfiguration zum Durchreichen des Begrenzungssignals an ein externes System.
105105

106106
#### `interval`
107107

0 commit comments

Comments
 (0)