feat: Anleitung-Popup und Version 1.5.0

- ANLEITUNG.html erstellt (Bedienungsanleitung als HTML-Seite)
- Anleitung-Button im Dashboard-Footer ergänzt
- Anleitung öffnet sich als Modal-Popup mit eigenem Header
- Version 1.4.1 → 1.5.0
This commit is contained in:
2026-05-02 21:36:12 +02:00
parent 6f7673358d
commit fc35e9b6e7
5 changed files with 1072 additions and 1 deletions
+490
View File
@@ -0,0 +1,490 @@
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Wetterstation Bedienungsanleitung</title>
<style>
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
font-size: 16px;
line-height: 1.7;
color: #1a1a2e;
background: #f5f7fa;
}
/* ── Header ── */
header {
background: linear-gradient(135deg, #1a3a5c 0%, #2d6a9f 100%);
color: #fff;
padding: 3rem 2rem 2.5rem;
text-align: center;
}
header h1 { font-size: 2.2rem; font-weight: 700; letter-spacing: -0.5px; }
header p { margin-top: .5rem; font-size: 1.05rem; opacity: .85; }
/* ── Layout ── */
.page { max-width: 860px; margin: 0 auto; padding: 2rem 1.5rem 4rem; }
/* ── Table of Contents ── */
.toc {
background: #fff;
border: 1px solid #dce3ec;
border-radius: 10px;
padding: 1.4rem 1.8rem;
margin-bottom: 2.5rem;
}
.toc h2 { font-size: 1rem; text-transform: uppercase; letter-spacing: .08em; color: #5a6a7a; margin-bottom: .7rem; }
.toc ol { padding-left: 1.4rem; }
.toc li { margin: .25rem 0; }
.toc a { color: #2d6a9f; text-decoration: none; }
.toc a:hover { text-decoration: underline; }
/* ── Sections ── */
section {
background: #fff;
border: 1px solid #dce3ec;
border-radius: 10px;
padding: 1.8rem 2rem;
margin-bottom: 1.8rem;
}
section h2 {
font-size: 1.35rem;
color: #1a3a5c;
border-bottom: 2px solid #e4eaf2;
padding-bottom: .5rem;
margin-bottom: 1.1rem;
}
section h3 {
font-size: 1.05rem;
color: #2d6a9f;
margin: 1.3rem 0 .5rem;
}
p { margin-bottom: .8rem; }
p:last-child { margin-bottom: 0; }
/* ── Buttons visual replicas ── */
.btn-row { display: flex; flex-wrap: wrap; gap: .5rem; margin: 1rem 0; }
.btn {
display: inline-block;
padding: .35rem .85rem;
border-radius: 6px;
font-size: .9rem;
font-weight: 600;
border: 2px solid #2d6a9f;
color: #2d6a9f;
background: #fff;
}
.btn.active { background: #2d6a9f; color: #fff; }
/* ── Charts grid preview ── */
.chart-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
gap: .8rem;
margin: 1rem 0;
}
.chart-card {
border: 1px solid #dce3ec;
border-radius: 8px;
padding: .8rem 1rem;
background: #f9fbfd;
}
.chart-card .icon { font-size: 1.4rem; }
.chart-card strong { display: block; margin-top: .3rem; font-size: .92rem; color: #1a3a5c; }
.chart-card span { font-size: .82rem; color: #5a6a7a; }
/* ── Info boxes ── */
.info-box {
background: #eef5ff;
border-left: 4px solid #2d6a9f;
border-radius: 0 6px 6px 0;
padding: .8rem 1.1rem;
margin: 1rem 0;
font-size: .94rem;
}
.tip-box {
background: #f0faf3;
border-left: 4px solid #27ae60;
border-radius: 0 6px 6px 0;
padding: .8rem 1.1rem;
margin: 1rem 0;
font-size: .94rem;
}
.warn-box {
background: #fffbea;
border-left: 4px solid #f0a500;
border-radius: 0 6px 6px 0;
padding: .8rem 1.1rem;
margin: 1rem 0;
font-size: .94rem;
}
/* ── Table ── */
table { width: 100%; border-collapse: collapse; font-size: .93rem; margin: 1rem 0; }
th, td { padding: .55rem .8rem; border: 1px solid #dce3ec; text-align: left; }
th { background: #eef2f8; font-weight: 600; color: #1a3a5c; }
tr:nth-child(even) td { background: #f9fbfd; }
/* ── Trend arrows ── */
.trend-table td:first-child { font-size: 1.1rem; text-align: center; }
/* ── Footer ── */
footer {
text-align: center;
color: #8a9ab0;
font-size: .85rem;
margin-top: 3rem;
}
@media (max-width: 600px) {
header h1 { font-size: 1.6rem; }
.page { padding: 1.2rem 1rem 3rem; }
section { padding: 1.2rem 1.1rem; }
}
@media print {
body { background: #fff; font-size: 12pt; }
header { background: #1a3a5c !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
.btn.active { background: #2d6a9f !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
}
</style>
</head>
<body>
<header>
<h1>🌤️ Wetterstation Bedienungsanleitung</h1>
<p>Dashboard auf Basis einer Davis VantagePro</p>
</header>
<div class="page">
<!-- Table of Contents -->
<nav class="toc">
<h2>Inhalt</h2>
<ol>
<li><a href="#ueberblick">Überblick</a></li>
<li><a href="#zeitraum">Zeitraum-Auswahl</a></li>
<li><a href="#aktuell">Aktuelle Werte</a></li>
<li><a href="#diagramme">Diagramme im Überblick</a></li>
<li><a href="#charts-detail">Diagramme im Detail</a></li>
<li><a href="#tabelle">Tabellenansicht</a></li>
<li><a href="#benutzerdefiniert">Benutzerdefinierter Zeitbereich</a></li>
<li><a href="#refresh">Automatische Aktualisierung</a></li>
<li><a href="#drucken">Drucken</a></li>
<li><a href="#hinweise">Hinweise &amp; Grenzen</a></li>
</ol>
</nav>
<!-- 1 Überblick -->
<section id="ueberblick">
<h2>1. Überblick</h2>
<p>
Das Wetterstation-Dashboard zeigt die Messwerte einer <strong>Davis VantagePro</strong>
in interaktiven Diagrammen an. Alle Daten werden aus einer PostgreSQL-Datenbank
bezogen und im Browser aufbereitet.
</p>
<p>
Die Oberfläche besteht aus drei Bereichen:
</p>
<ol style="padding-left:1.4rem;">
<li><strong>Zeitraum-Navigation</strong> (oben) wählt den dargestellten Zeitraum.</li>
<li><strong>Diagramme / Tabelle</strong> (Mitte) zeigt die Wetterdaten an.</li>
<li><strong>Fußzeile</strong> (unten) zeigt Version, Build-Datum und Kontakt.</li>
</ol>
</section>
<!-- 2 Zeitraum-Auswahl -->
<section id="zeitraum">
<h2>2. Zeitraum-Auswahl</h2>
<p>
In der Navigationsleiste am oberen Rand können Sie den Darstellungszeitraum wählen:
</p>
<div class="btn-row">
<span class="btn active">24 Stunden</span>
<span class="btn">7 Tage</span>
<span class="btn">30 Tage</span>
<span class="btn">365 Tage</span>
<span class="btn">Bereich</span>
<span class="btn">Tabelle</span>
</div>
<table>
<thead>
<tr><th>Schaltfläche</th><th>Dargestellter Zeitraum</th><th>Auflösung</th></tr>
</thead>
<tbody>
<tr><td><strong>24 Stunden</strong></td><td>Letzte 24 Stunden ab jetzt</td><td>Einzelmessungen (~5 min)</td></tr>
<tr><td><strong>7 Tage</strong></td><td>Letzte 7 Tage ab heute</td><td>Tagesmittel / Tages-Min+Max</td></tr>
<tr><td><strong>30 Tage</strong></td><td>Letzte 30 Tage ab heute</td><td>Tagesmittel / Tages-Min+Max</td></tr>
<tr><td><strong>365 Tage</strong></td><td>Letzte 365 Tage ab heute</td><td>Tagesmittel, Regen pro Woche</td></tr>
<tr><td><strong>Bereich</strong></td><td>Frei wählbar (max. 1 Jahr)</td><td>Stundenmittel (&lt; 7 Tage) oder Tagesmittel (≥ 7 Tage)</td></tr>
</tbody>
</table>
<div class="info-box">
Der aktuell aktive Zeitraum wird unterhalb der Navigationsleiste als Text angezeigt,
z.&nbsp;B. <em>„Die letzten 24 Stunden"</em> oder
<em>„01.01.2026 00:00 31.01.2026 23:59"</em>.
</div>
</section>
<!-- 3 Aktuelle Werte -->
<section id="aktuell">
<h2>3. Aktuelle Werte</h2>
<p>
Über jedem Diagramm wird der <strong>aktuellste Messwert</strong> angezeigt
(grauer Hinweistext, z.&nbsp;B. <em>„Aktuell: 18,4 °C"</em>).
Dieser Wert stammt immer aus den letzten 24 Stunden unabhängig vom gewählten
Zeitraum.
</p>
<p>
Unterhalb jedes Diagramms erscheinen die <strong>Minimum- und Maximumwerte</strong>
des gewählten Zeitraums mit dem zugehörigen Zeitpunkt.
</p>
</section>
<!-- 4 Diagramme im Überblick -->
<section id="diagramme">
<h2>4. Diagramme im Überblick</h2>
<div class="chart-grid">
<div class="chart-card">
<div class="icon">🌡️</div>
<strong>Temperatur</strong>
<span>°C</span>
</div>
<div class="chart-card">
<div class="icon">🌐</div>
<strong>Luftdruck</strong>
<span>hPa</span>
</div>
<div class="chart-card">
<div class="icon">💧</div>
<strong>Luftfeuchtigkeit</strong>
<span>%</span>
</div>
<div class="chart-card">
<div class="icon">🌧️</div>
<strong>Regen</strong>
<span>mm / mm/h</span>
</div>
<div class="chart-card">
<div class="icon">🧭</div>
<strong>Windrichtung</strong>
<span>°</span>
</div>
<div class="chart-card">
<div class="icon">💨</div>
<strong>Wind &amp; Böen</strong>
<span>km/h</span>
</div>
</div>
<p>
Alle Diagramme sind interaktiv: Fahren Sie mit der Maus über eine Kurve,
um den genauen Messwert und Zeitpunkt als Tooltip anzuzeigen.
</p>
</section>
<!-- 5 Diagramme im Detail -->
<section id="charts-detail">
<h2>5. Diagramme im Detail</h2>
<h3>🌡️ Temperatur</h3>
<p>
Im <strong>24h-Modus</strong> wird der Temperaturverlauf als Flächendiagramm dargestellt.
Bei längeren Zeiträumen (7 d, 30 d, 365 d, benutzerdefiniert ≥ 7 Tage) werden
<strong>Tages-Minimum und -Maximum</strong> als Band angezeigt, sodass die
tägliche Schwankungsbreite sofort erkennbar ist.
</p>
<h3>🌐 Luftdruck</h3>
<p>
Zeigt den barometrischen Druck in hPa. Im Diagrammtitel erscheint ein
<strong>Trendpfeil</strong>, der die Druckentwicklung der letzten Stunden anzeigt:
</p>
<table class="trend-table">
<thead><tr><th>Pfeil</th><th>Bedeutung</th></tr></thead>
<tbody>
<tr><td>⬇⬇</td><td>Fällt schnell (60)</td></tr>
<tr><td></td><td>Fällt langsam (20)</td></tr>
<tr><td></td><td>Stabil (0)</td></tr>
<tr><td></td><td>Steigt langsam (+20)</td></tr>
<tr><td>⬆⬆</td><td>Steigt schnell (+60)</td></tr>
</tbody>
</table>
<h3>💧 Luftfeuchtigkeit</h3>
<p>Relative Luftfeuchtigkeit in Prozent als Flächendiagramm.</p>
<h3>🌧️ Regen</h3>
<p>
Im <strong>24h-Modus</strong> werden zwei Kurven überlagert:
</p>
<ul style="padding-left:1.4rem; margin-bottom:.8rem;">
<li><strong>Regen (mm)</strong> kumulierter Regenfall als Fläche.</li>
<li><strong>Regenrate (mm/h)</strong> aktuelle Intensität als gestrichelte Linie.</li>
</ul>
<p>
Bei längeren Zeiträumen (7 d, 30 d) wird der <strong>Tagesregen</strong>
als Balkendiagramm dargestellt; bei 365 Tagen der <strong>Wochenregen</strong>.
</p>
<h3>🧭 Windrichtung</h3>
<p>
Die Windrichtung wird als <strong>Punktewolke</strong> (Streudiagramm) angezeigt.
Die Y-Achse zeigt die Himmelsrichtungen von 0° bis 360°:
N = 0°/360°, NO = 45°, O = 90°, SO = 135°, S = 180°, SW = 225°, W = 270°, NW = 315°.
</p>
<h3>💨 Wind &amp; Böen</h3>
<p>
Zeigt <strong>Windgeschwindigkeit</strong> (lila) und <strong>Böen</strong> (orange)
in km/h. Bei 365 Tagen und benutzerdefinierten Zeiträumen über einem Jahr
werden Böen ausgeblendet, da keine aussagekräftigen Tagesmaxima vorliegen.
Unterhalb des Diagramms erscheint die maximale Böe des gewählten Zeitraums
mit Zeitpunkt.
</p>
<div class="tip-box">
<strong>Tipp:</strong> Im Wind-Diagramm ist eine Legende eingeblendet,
die Windgeschwindigkeit und Böen unterscheidet.
Klicken Sie auf einen Legendeneintrag, um eine Serie ein- oder auszublenden.
</div>
</section>
<!-- 6 Tabellenansicht -->
<section id="tabelle">
<h2>6. Tabellenansicht</h2>
<p>
Klicken Sie auf die Schaltfläche <span class="btn">Tabelle</span>,
um statt der Diagramme eine <strong>tabellarische Tagesübersicht</strong>
anzuzeigen. Ein Klick auf <span class="btn active">Grafik</span>
kehrt zur Diagrammansicht zurück.
</p>
<p>Die Tabelle enthält je Tag:</p>
<ul style="padding-left:1.4rem; margin-bottom:.8rem;">
<li>Temperatur-Minimum und -Maximum (°C)</li>
<li>Luftfeuchtigkeit-Minimum und -Maximum (%)</li>
<li>Luftdruck-Minimum und -Maximum (hPa)</li>
<li>Regen gesamt (mm)</li>
<li>Maximale Windböe (km/h)</li>
</ul>
<div class="info-box">
Im 24h-Modus werden die vorliegenden Einzelmessungen automatisch
pro Tag aggregiert, sodass immer eine Tageszeile erscheint.
</div>
</section>
<!-- 7 Benutzerdefinierter Zeitbereich -->
<section id="benutzerdefiniert">
<h2>7. Benutzerdefinierter Zeitbereich</h2>
<p>
Mit der Schaltfläche <span class="btn">Bereich</span> öffnet sich ein Dialog,
in dem Sie ein <strong>Start- und Enddatum</strong> frei eingeben können.
</p>
<p><strong>Regeln:</strong></p>
<ul style="padding-left:1.4rem; margin-bottom:.8rem;">
<li>Das Enddatum muss nach dem Startdatum liegen.</li>
<li>Der maximale Zeitraum beträgt <strong>365 Tage</strong>.</li>
</ul>
<p><strong>Darstellungsauflösung:</strong></p>
<ul style="padding-left:1.4rem; margin-bottom:.8rem;">
<li><strong>&lt; 7 Tage:</strong> Stundenmittelwerte, X-Achse mit Datum und Uhrzeit.</li>
<li><strong>≥ 7 Tage:</strong> Tagesmittel- bzw. Min/Max-Werte, X-Achse mit Datum.</li>
</ul>
<p>
Der zuletzt gewählte benutzerdefinierte Zeitbereich wird im Browser
(<code>localStorage</code>) gespeichert und beim nächsten Öffnen des
Dialogs vorausgefüllt.
</p>
<div class="warn-box">
<strong>Hinweis:</strong> Schließen Sie den Dialog mit <em>Abbrechen</em>,
um ohne Änderung zurückzukehren. Ein Klick auf den dunklen Hintergrund
schließt den Dialog ebenfalls.
</div>
</section>
<!-- 8 Automatische Aktualisierung -->
<section id="refresh">
<h2>8. Automatische Aktualisierung</h2>
<p>
Im <strong>24h-Modus</strong> werden die Daten automatisch alle
<strong>5 Minuten</strong> neu geladen. Dabei bleibt die aktuelle
Ansicht sichtbar die Seite flackert nicht.
</p>
<p>
Bei allen anderen Zeiträumen (7 d, 30 d, 365 d, benutzerdefiniert)
findet <strong>kein automatisches Neuladen</strong> statt.
Laden Sie die Seite manuell neu (F5 / ⌘R), um aktuelle Daten
für diese Zeiträume zu erhalten.
</p>
</section>
<!-- 9 Drucken -->
<section id="drucken">
<h2>9. Drucken</h2>
<p>
In der <strong>Tabellenansicht</strong> erscheint oben links die Schaltfläche
<em>🖨️ Drucken</em>. Ein Klick darauf öffnet den Druckdialog des Browsers.
</p>
<p>
Die Schaltflächen-Leiste und der Drucken-Button werden beim Ausdruck
automatisch ausgeblendet, sodass nur die Tabelle erscheint.
</p>
<div class="tip-box">
<strong>Tipp für PDF-Export:</strong> Wählen Sie im Druckdialog
„Als PDF speichern", um die Tabelle als PDF-Datei zu exportieren.
</div>
</section>
<!-- 10 Hinweise & Grenzen -->
<section id="hinweise">
<h2>10. Hinweise &amp; Grenzen</h2>
<table>
<thead><tr><th>Thema</th><th>Details</th></tr></thead>
<tbody>
<tr>
<td><strong>Messsystem</strong></td>
<td>Davis VantagePro Wetterstation</td>
</tr>
<tr>
<td><strong>Datenbank</strong></td>
<td>PostgreSQL, Tabelle <code>weather_data</code></td>
</tr>
<tr>
<td><strong>Messintervall</strong></td>
<td>ca. 5 Minuten (Rohwerte); längere Zeiträume werden serverseitig aggregiert</td>
</tr>
<tr>
<td><strong>Max. Zeitraum</strong></td>
<td>365 Tage bei benutzerdefiniertem Bereich</td>
</tr>
<tr>
<td><strong>Datenlücken</strong></td>
<td>Ausfälle der Station oder des Collectors erscheinen als Unterbrechung in den Kurven</td>
</tr>
<tr>
<td><strong>Browserkompatibilität</strong></td>
<td>Alle modernen Browser (Chrome, Firefox, Safari, Edge) in aktueller Version</td>
</tr>
<tr>
<td><strong>Mobil</strong></td>
<td>Die Oberfläche ist für Mobilgeräte optimiert; Zeitraum-Buttons zeigen Kurzbezeichnungen</td>
</tr>
<tr>
<td><strong>Zeitzone</strong></td>
<td>Alle Zeitangaben in lokaler Browserzeit (keine UTC-Umrechnung)</td>
</tr>
</tbody>
</table>
</section>
</div>
<footer>
<p>Wetterstation Dashboard · Stand: Mai 2026</p>
</footer>
</body>
</html>