Mermaid-Quellen für Architektur- und Message-Flow-Diagramme.
Text-Source ins Git, rendert nativ auf GitHub und in den meisten
Markdown-Viewern; Export zu PNG/SVG für Slides via mmdc.
| Datei | Was es zeigt | Doc-Anker |
|---|---|---|
architecture.mmd |
Top-Level: Stick → Bridge → 4 Sinks → Linux-Clients | decisions.md „Drei Bauformen" |
hm_frame_rx.mmd |
RX-Pfad-Sequence: Funk → Stick → Bridge-Fanout an alle Sinks | firmware_architecture.md (memory) |
hm_frame_tx.mmd |
TX-Pfad mit TX-Master-Soft-Lock; AUTO/PINNED-Entscheidung | tx_master_lock.md (memory) |
hbrfeth_protocol.mmd |
UDP/3008 wire-protocol: V2-CONNECT, KeepAlive, FRAME, Resume | hb_rf_eth_kernel_quirks.md (memory) |
hmuartlgw_legacy.mmd |
TCP/2330 FHEM/Homegear-Bridge, Phasen A–D | hmuartlgw_legacy_emu.md (memory) |
tx_master_states.mmd |
TX-Master-Lock State-Machine (AUTO/PINNED) | tx_master_lock.md (memory) |
improv_idle_window.mmd |
Improv-Serial-Window mit Idle-Bookkeeping | improv_idle_window.md (memory) |
rendered/*.svg enthält die mit mmdc 11.14 erzeugten Renders aller
sieben Diagramme (theme=neutral, 2026-05-07). Direkt in
GitHub-Web-Vorschau anschaubar, in Slides per <img src=…> einbettbar.
Bei Source-Änderung neu generieren (siehe mmdc-Block unten).
Die .mmd-Sources rendern nicht von alleine in der GitHub-Vorschau —
sie sind reine Mermaid-Quellen. Wenn man sie inline in eine README
einbettet (in einem ```mermaid-Block), rendert GitHub sie nativ.
- Datei-Inhalt kopieren.
- https://mermaid.live öffnen, einfügen.
- PNG / SVG exportieren.
npm install -g @mermaid-js/mermaid-cliARM64 (Pi 5 etc.): der von npm mitgebrachte chrome-headless-shell ist x86_64-only. System-Chromium nutzen via puppeteer-config:
cat > /tmp/puppeteer-config.json <<'EOF'
{ "executablePath": "/usr/bin/chromium",
"args": ["--no-sandbox", "--disable-setuid-sandbox"] }
EOFBatch-Render aller .mmd zu SVG:
cd docs/diagrams
mkdir -p rendered
for f in *.mmd; do
mmdc -i "$f" -o "rendered/${f%.mmd}.svg" -t neutral \
-p /tmp/puppeteer-config.json
donePNG für Slides (4K-Auflösung, weißer Hintergrund):
for f in *.mmd; do
mmdc -i "$f" -o "rendered/${f%.mmd}.png" -t neutral \
-p /tmp/puppeteer-config.json -w 2400 -s 2 -b white
doneDie Kombination -w 2400 -s 2 ist wichtig: -w allein kappt die
natürliche SVG-Größe, -s 2 allein nimmt nur den Default-Viewport
(~800 px) als Basis. Erst beide zusammen → 4K-druckbare PNGs
(~3000–4000 px Längskante je nach Diagramm).
rendered/*.png sind unter Git versioniert für direkte Slide-
Einbettung; bei Source-Änderung mit obigem Block neu generieren.
\`\`\`mermaid
%%{init: {'theme':'neutral'}}%%
flowchart LR
A --> B
\`\`\`- Theme:
neutralals Default (gut druckbar, hoher Kontrast für Beamer). Andere Themes (forest,dark) per%%{init}%%-Header pro Datei überschreibbar. - Subgraph-Farben: über
classDefstatt inline-Styles, damit Themen-Wechsel sauber bleibt. - Sequenz-Diagramme:
rect rgb(...)-Blöcke fassen Phasen zusammen (siehehbrfeth_protocol.mmd,hmuartlgw_legacy.mmd) — bessere Lesbarkeit als plain notes. - Quelltext-Anker in Header-Kommentaren der
.mmd-Files: zeigt welche.c/.h-Datei die Logik implementiert.