Skip to content
Mähbarkeitsindex

MFI Example Page

Eine fertige Website-Vorlage, die den Mähbarkeitsindex für deinen Standort anzeigt. Sie holt automatisch Wetterdaten, lässt daraus über die MFI API den Indexwert berechnen und stellt das Ergebnis verständlich dar. Du lädst die Dateien auf deinen Webspace, durchläufst einen Einrichtungsassistenten im Browser – fertig.

Sehen, was dabei herauskommt: mep.maehbarkeitsindex.de – eine laufende Installation dieser Vorlage.

Worum es geht

Vom Zugangsschlüssel zur fertigen Seite

Der Mähbarkeitsindex bewertet anhand von Wetterdaten, ob gerade gemäht werden sollte. Wer ihn auf der eigenen Website zeigen möchte, kann die MFI API nutzen – steht dann aber vor derselben Arbeit: Wetterdaten beschaffen, in das richtige Format bringen, das Ergebnis speichern und ansprechend darstellen.

Genau diesen Teil nimmt die MFI Example Page ab. Sie ist kein Plugin und kein Baukasten, sondern eine vollständige, lauffähige Website: ein Satz Dateien, den du auf deinen eigenen Webspace legst und danach frei umbauen kannst.

Was im Hintergrund passiert

  1. 1. Wetterdaten für deinen Standort abrufen
  2. 2. Werte in das Format der MFI API bringen und um eigene Langzeitwerte ergänzen
  3. 3. Berechnung bei der MFI API anfragen
  4. 4. Ergebnis in der eigenen Datenbank speichern
  5. 5. Ergebnis auf der Website anzeigen

Das läuft automatisch im Hintergrund – Besucher sehen immer den zuletzt berechneten Stand.

Was du am Ende siehst

Eine Seite mit einer Empfehlung im Klartext, dem Indexwert von 0 bis 100 mit Farbskala und den einzelnen Prüfungen samt Begründung – etwa warum der Rasen gerade zu nass ist oder ob die Temperatur passt. Dazu auf Wunsch eine Tabelle der Messwerte, die in die Berechnung eingeflossen sind.

Am schnellsten überzeugt ein Blick auf das laufende Beispiel.

Live-Beispiel

Unter mep.maehbarkeitsindex.de läuft eine unveränderte Installation dieser Vorlage – genau das, was du nach dem Einrichtungsassistenten vor dir hast. Die Seite zeigt den aktuellen Indexwert, die ausgeführten Prüfungen und die gesendeten Messwerte, ohne dass dort etwas angepasst wurde.

Live-Beispiel ansehen

Bewusst nicht enthalten: weitere Wetterquellen, Verlaufsdiagramme, Mehrsprachigkeit, mehrere Standorte gleichzeitig, ein einbettbares Widget und ausformulierte Rechtstexte. Die Vorlage bleibt schlank, damit sie verständlich und erweiterbar bleibt.

Einordnung

Ist das etwas für mich?

Die Vorlage richtet sich an beide Seiten – an Menschen, die einfach eine funktionierende Seite möchten, und an solche, die tiefer eingreifen wollen.

Wenn du wenig Technikerfahrung hast

Du brauchst keine Programmierkenntnisse. Nötig ist, dass du Dateien auf deinen Webspace hochladen kannst und im Kundenmenü deines Hosters eine Datenbank anlegst. Alles Weitere erledigt der Einrichtungsassistent im Browser: Er prüft jede Eingabe sofort und sagt dir in verständlichen Worten, was noch fehlt.

  • Aufwand: etwa 15 bis 30 Minuten
  • Benötigt: Webspace, FTP-Zugang, zwei kostenlose Zugangsschlüssel
  • Nicht benötigt: Programmierkenntnisse, Kommandozeile, Git

Wenn du entwickelst

Vanilla PHP ohne Framework, ohne Composer, ohne Build-Schritt. Klar getrennte Schichten für Wetterquelle, API-Zugriff, Datenhaltung und Darstellung, eigener Autoloader, durchgehend typisiert. Der Code ist bewusst ausführlich kommentiert, weil er zum Weiterbauen gedacht ist.

  • Eigene Wetterquelle über eine schmale Schnittstelle ergänzbar
  • Ausgabe über einzelne Bausteine frei platzierbar
  • Eigene Anpassungen bleiben bei Updates erhalten
Funktionsumfang

Was die Vorlage mitbringt

Alles ist fertig eingerichtet und im laufenden Betrieb erprobt. Die folgenden Angaben beschreiben den Auslieferungszustand – was danach aus deinen eigenen Anpassungen folgt, steht weiter unten.

Vollständige MFI-Darstellung

Empfehlung im Klartext, Indexwert mit Farbskala, alle fünf Prüfungen mit den deutschen Begründungen der API sowie Angaben dazu, wann zuletzt gemessen wurde.

Frei platzierbare Bausteine

Die Ausgabe besteht aus drei Bausteinen, die sich einzeln auf jeder Seite einsetzen lassen – auf der Startseite, einer Unterseite oder beidem.

Einrichtung im Browser

Vier geführte Schritte. Jede Eingabe wird mit echten Verbindungen geprüft, nicht nur auf Vollständigkeit. Am Ende entfernt sich der Assistent selbst.

Wetterdaten inklusive

Die Daten kommen aus dem kostenfreien OpenWeather-Zugang und werden automatisch in das Format der MFI API übersetzt. Du musst nichts umrechnen.

Langzeitwerte aus eigener Historie

Regensummen, Zeit seit dem letzten Regen und Tiefsttemperaturen berechnet die Vorlage aus den gespeicherten Läufen – Werte, die die Wetterquelle selbst nicht liefert.

Zwei Betriebsarten

Zeitgesteuert im Hintergrund oder beim Seitenaufruf. Damit läuft die Vorlage auch bei Hostern ohne Cronjob-Funktion.

Schutz vor Überlastung

Sperre gegen gleichzeitige Läufe, Mindestabstand zwischen zwei Aktualisierungen und ein hartes Tageslimit. So läufst du nicht versehentlich in Grenzen der Dienste.

Eigene Seiten ohne Umwege

Eine Datei im richtigen Ordner ablegen genügt – Adresse, Navigation, Meta-Angaben und Sitemap ziehen automatisch nach.

Updates ohne Verluste

Deine Seiten, dein Kopf- und Fußbereich, deine Gestaltung und deine Konfiguration liegen getrennt vom mitgelieferten Bestand und überstehen jede neue Fassung.

Eigener Kopf- und Fußbereich

Beide lassen sich vollständig durch eigene Fassungen ersetzen – auch der richtige Ort für Links auf Impressum und Datenschutz, die nicht in der Hauptnavigation stehen sollen.

Barrierefrei ausgeliefert

WCAG 2.2 AA in hellem und dunklem Design, nachgemessene Kontraste, Status nie nur über Farbe erkennbar, vollständig ohne Maus und ohne JavaScript bedienbar. Gilt für den Auslieferungszustand – eigene Farben und Inhalte musst du selbst prüfen.

Datensparsam ausgeliefert

Keine Cookies im laufenden Betrieb, kein Tracking, keine externen Schriftarten oder Fremdinhalte. Alles liegt auf deinem eigenen Server. Sobald du eigene Dienste einbindest, gilt das für diese Teile nicht mehr.

Für Suchmaschinen vorbereitet

Meta-Angaben, Vorschaubilder für soziale Netzwerke und strukturierte Daten sind gesetzt; sitemap.xml und robots.txt entstehen automatisch.

Saubere Fehlerbehandlung

Besucher sehen nie Serverpfade oder technische Fehlermeldungen. Einzelheiten landen in einer Protokolldatei, die nur du einsiehst.

Diagnose auf einen Schlag

Ein mitgeliefertes Prüfwerkzeug kontrolliert Umgebung, Datenbank, Erreichbarkeit der API und Schreibrechte in einem Durchlauf und benennt Probleme konkret.

Voraussetzungen

Was du brauchst

Ein gewöhnliches Webhosting-Paket mit PHP und MySQL genügt – nichts Besonderes, nichts Teures. Composer, npm und Build-Werkzeuge werden nicht benötigt.

Anforderung Details
PHP ab Version 8.2, empfohlen 8.3 oder neuer, mit den Erweiterungen pdo_mysql, curl, json, mbstring
Datenbank MySQL ab 8.0 oder MariaDB ab 10.4
Webserver Apache mit mod_rewrite; die nötige Konfigurationsdatei liegt bei
MFI-Zugangsschlüssel kostenlos über die Registrierung
Wetter-Zugangsschlüssel kostenlos bei OpenWeather – Hintergründe unter OpenWeather-Anbindung

Kurz erklärt, falls die Begriffe neu sind

  • PHP ist die Programmiersprache, in der die Vorlage geschrieben ist. Nahezu jedes Hosting-Paket bietet sie an; entscheidend ist die Version.
  • Datenbank meint den Ort, an dem die berechneten Werte gespeichert werden. Bei den meisten Hostern legst du eine im Kundenmenü mit wenigen Klicks an und erhältst Name, Benutzer und Passwort.
  • Zugangsschlüssel (auch API-Key) ist eine lange Zeichenfolge, mit der sich deine Website bei einem Dienst ausweist – vergleichbar mit einem Passwort, das nur dein Server kennt.
  • FTP ist der übliche Weg, Dateien auf einen Webspace zu übertragen. Die Zugangsdaten stehen ebenfalls im Kundenmenü deines Hosters.

Beide Schlüssel früh beantragen: MFI-Zugangsschlüssel werden nach der Registrierung von Hand freigeschaltet. Frisch erstellte OpenWeather-Schlüssel brauchen erfahrungsgemäß einige Stunden, bis sie funktionieren. Beides erledigst du am besten, bevor du mit der Installation beginnst.

Installation

Hochladen und Assistent durchlaufen

Es gibt zwei Wege, an die Dateien zu kommen. Variante B ist der einfachere und kommt ohne Kommandozeile aus – wähle diese, wenn dir Git nichts sagt.

Variante A – mit Git

Für alle, die einen Shell-Zugang haben und später bequem aktualisieren möchten.

Shell – Projekt holen
git clone https://github.com/CSWebations/mfi-example-page.git
cd mfi-example-page

Anschließend das Verzeichnis auf den Server bringen oder direkt dort klonen. Aktualisiert wird später mit git pull; eigene Inhalte bleiben dabei unangetastet.

Variante B – Download und FTP

  1. 1. Auf der Projektseite auf die grüne Schaltfläche Code klicken und Download ZIP wählen. Eine bestimmte Fassung findest du unter Releases.
  2. 2. Das Archiv auf dem eigenen Rechner entpacken.
  3. 3. Den Inhalt des entpackten Ordners per FTP auf den Server laden – nicht den Ordner selbst.
  4. 4. Dem Verzeichnis var/ Schreibrechte geben (in den meisten FTP-Programmen per Rechtsklick, Wert 0775). Dort legt die Vorlage ihre Protokoll- und Sperrdateien ab.

Wohin genau? Der Ordner public/ enthält alles, was Besucher sehen dürfen, und sollte deshalb dein öffentliches Webverzeichnis sein. Die übrigen Ordner liegen eine Ebene darüber und sind so aus dem Internet gar nicht erst erreichbar. Lässt sich das bei deinem Hoster nicht einstellen, gibt es einen dokumentierten Weg drumherum – siehe die Frage dazu im FAQ weiter unten.

Danach: der Einrichtungsassistent

Rufe deine Domain im Browser auf. Solange noch keine Konfiguration vorhanden ist, landest du automatisch beim Assistenten. Er prüft jede Eingabe sofort mit einer echten Verbindung – du erfährst also direkt, ob ein Passwort oder ein Schlüssel stimmt.

Schritt Inhalt
1 – System PHP-Version, Erweiterungen und Schreibrechte werden geprüft
2 – Datenbank Zugangsdaten werden sofort ausprobiert, nicht nur auf Vollständigkeit geprüft
3 – Zugänge MFI API und OpenWeather werden mit echten Abrufen getestet
4 – Website Name, Adresse, Standort, Betriebsart und Aktualisierungsintervall

Zum Abschluss schreibt der Assistent die Konfiguration, legt die Datenbanktabelle an, berechnet den ersten Indexwert, zeigt dir die passende Cron-Zeile mit deinem Serverpfad und löscht sich anschließend selbst – damit ihn später niemand erneut aufrufen kann.

Du bist allein am Zug: Der erste Aufruf reserviert die Einrichtung für deinen Browser – alle anderen sehen bis zum Abschluss nur einen Hinweis. Eine Frist gibt es nicht: Du kannst jederzeit unterbrechen, Zugangsdaten heraussuchen und später weitermachen. Kommst du selbst nicht mehr an die begonnene Einrichtung heran, lösche die Datei var/setup-claim.json.

Konfiguration

Alles in einer einzigen Datei

Sämtliche Einstellungen stehen in config.php – außerhalb des öffentlichen Verzeichnisses, sodass niemand sie über das Internet lesen kann. Der Assistent erzeugt die Datei; danach lässt sich jeder Wert von Hand ändern. Als Nachschlagewerk dient die ausführlich kommentierte Vorlage config.sample.php. Nach der Einrichtung musst du hier normalerweise nichts anfassen.

Block Wichtige Schlüssel Bedeutung
site name, url, description, locale, og_image, logo, logo_dark Name, Adresse, Logo und Angaben für Suchmaschinen
mfi_api api_key, endpoint, health_endpoint, timeout_seconds Zugang zur MFI API
weather provider Wetterquelle, ausgeliefert mit openweather
weather.location name, key, latitude, longitude Standort, für den gerechnet wird
weather.openweather api_key, endpoint, timeout_seconds, max_calls_per_day Wetterzugang und Tageslimit (Standard 200 Abrufe)
database host, port, name, user, password, charset Verbindung zur Datenbank
display.checks temperature, soiltemp, rain, wind, humidity Welche der fünf Prüfungen angezeigt werden
runtime mode, update_interval_seconds, stale_after_seconds, retention_days, cron_token, timezone, debug Betriebsart, Intervalle und Aufbewahrungsdauer

Wichtig: Die config.php enthält deine Zugangsdaten im Klartext. Sie darf niemals öffentlich zugänglich sein und gehört nicht in ein öffentliches Repository. Solange sie an ihrem vorgesehenen Platz liegt, ist sie aus dem Internet nicht erreichbar.

Prüfungen ein- und ausblenden

Jede der fünf MFI-Einzelprüfungen lässt sich einzeln steuern:

Wert Wirkung
auto nur zeigen, wenn die Prüfung ausgeführt wurde (Standard)
always immer zeigen, auch als „nicht bewertet"
never nie zeigen

Mit der Voreinstellung auto verschwindet der Bodentemperatur-Check von selbst, weil der kostenfreie OpenWeather-Zugang keine Bodenwerte liefert.

Betrieb

Wie die Werte aktuell bleiben

Damit die Anzeige nicht veraltet, müssen regelmäßig neue Wetterdaten geholt und neu gerechnet werden. Dafür gibt es zwei Wege – die Wahl triffst du im Assistenten und kannst sie jederzeit ändern.

Zeitgesteuert im Hintergrund – empfohlen

Ein Cronjob ist eine Aufgabe, die dein Server in festen Abständen von selbst ausführt. Er aktualisiert die Daten im Hintergrund, die Website liest nur noch aus der Datenbank. Seitenaufrufe bleiben dadurch schnell und lösen keine Abfragen aus. Die passende Zeile zeigt dir der Assistent fertig an; sie wird im Kundenmenü des Hosters eingetragen.

Cronjob – alle 15 Minuten
*/15 * * * * /usr/bin/php /pfad/zum/projekt/bin/update.php --quiet

Zum Pfad des PHP-Programms

/usr/bin/php oben ist nur der häufigste Fall. Je nach Hoster liegt das Programm woanders oder heißt versionsbezogen, etwa /usr/bin/php8.3. Der Assistent ermittelt den Pfad und zeigt die fertige Zeile an; nachträglich nennt sie auch php bin/check-setup.php.

Meldet der Cronjob „no such file or directory", stimmt der Pfad nicht. In der Kommandozeile findet ihn which php, andernfalls hilft die Dokumentation des Hosters. Manche Cron-Formulare erwarten ohnehin nur den Pfad zur Datei und wählen PHP selbst aus.

Ohne Shell-Zugang – oder wenn der Pfad Schwierigkeiten macht – übernimmt ein externer Cron-Dienst den regelmäßigen Aufruf einer geschützten Adresse deiner Website. Das funktioniert bei jedem Hoster, weil dabei keinerlei Pfadangabe nötig ist. Das Token erzeugt der Assistent; ohne Token verweigert die Adresse jeden Zugriff.

Externer Cron-Dienst – Adresse
https://ihre-domain.de/cron.php?token=IHR_TOKEN

Beim Seitenaufruf

Ganz ohne Cronjob: Sind die Daten älter als das eingestellte Intervall, werden sie beim nächsten Besuch erneuert. Der Nachteil – der erste Besucher danach wartet kurz auf die beiden Abfragen. Eine Sperre verhindert, dass gleichzeitige Zugriffe mehrere Aktualisierungen gleichzeitig auslösen.

Befehle für die Kommandozeile

Optional – nur nötig, wenn du einen Shell-Zugang hast und gezielt eingreifen möchtest.

Shell – Wartung und Diagnose
php bin/check-setup.php          # Einrichtung prüfen (mit --full inkl. Testabruf)
php bin/update.php --force       # sofort aktualisieren, Mindestabstand ignorieren
php bin/cleanup.php              # alte Datensätze entfernen

Nicht zu häufig abfragen: Die MFI API lässt pro Zugangsschlüssel standardmäßig nur alle 300 Sekunden eine Berechnung zu. Kürzere Abstände werden mit einer Fehlermeldung abgewiesen. Fünfzehn Minuten sind ein guter Ausgangswert – Einzelheiten stehen unter Regeln & Rate Limits.

Aktualisieren

Auf eine neue Fassung wechseln

Deine eigenen Inhalte liegen getrennt vom Projektcode. Ein Update ersetzt deshalb nur die mitgelieferten Dateien – deine Seiten, deine Gestaltung, deine Kopf- und Fußbereiche und deine Konfiguration bleiben unberührt. Welcher Weg passt, hängt davon ab, wie du installiert hast.

Mit Git – wenn du per git clone installiert hast

Ein Befehl im Projektverzeichnis genügt.

Shell – aktualisieren
cd /pfad/zum/projekt
git pull
php bin/check-setup.php

Der abschließende Prüflauf ist optional, aber empfehlenswert: Er bestätigt, dass Umgebung, Datenbank und API weiterhin erreichbar sind, und nennt die aktuelle Cron-Zeile.

Möchtest du eine bestimmte Fassung statt des jeweils neuesten Standes, wechselst du auf deren Version:

Shell – bestimmte Fassung
git fetch --tags
git checkout v1.1.0

Manuell – wenn du per FTP installiert hast

Ohne Shell-Zugang funktioniert das Update genauso zuverlässig, nur von Hand. Wichtig ist allein, dass du deine eigenen Verzeichnisse nicht überschreibst.

  1. 1. Sicherung anlegen: Lade config.php, pages/, partials/ und public/assets/css/user-style.css herunter. Ein Datenbank-Export schadet ebenfalls nicht.
  2. 2. Neue Fassung als ZIP von Releases herunterladen und entpacken.
  3. 3. Aus dem entpackten Ordner nur die Verzeichnisse src/, bin/, install/, pages-default/ sowie public/ hochladen und dabei überschreiben.
  4. 4. Nicht hochladen: config.php, pages/, partials/, var/ und public/assets/css/user-style.css. Diese Verzeichnisse gehören dir.
  5. 5. Website aufrufen und prüfen, ob der Indexwert weiterhin angezeigt wird. Mit Shell-Zugang bestätigt php bin/check-setup.php das Ergebnis genauer.

Vor jedem Update ein Blick in den Änderungsverlauf: Die CHANGELOG.md im Projekt nennt für jede Fassung, was neu ist, was sich geändert hat und was behoben wurde. Hast du Kopf- oder Fußbereich durch eigene Fassungen ersetzt, lohnt anschließend zusätzlich ein Blick in src/templates/partials/: Deine Fassungen bekommen dortige Verbesserungen nicht automatisch mit.

Anpassen

Eigene Inhalte, eigenes Aussehen

Die Vorlage ist zum Umbauen gedacht. Die folgenden Abschnitte setzen etwas PHP-Verständnis voraus – für den reinen Betrieb sind sie nicht nötig.

Den MFI frei platzieren

Die Ausgabe besteht aus drei Bausteinen, die auf jeder eigenen Seite zur Verfügung stehen. Die Reihenfolge ist frei wählbar, einzelne Bausteine dürfen entfallen, eigene Abschnitte dazwischenstehen.

PHP – Ausgabebausteine
<?= mfi_result() ?>        // Empfehlung, Indexwert, Prüfungen, Angaben zur Messung
<?= mfi_explain() ?>       // Erklärkasten „Was bedeutet das?"
<?= mfi_input_table() ?>   // Tabelle der an die API gesendeten Messwerte

Für eigene Logik stehen zusätzlich mfi_has_result() und mfi_data() bereit. Letzteres liefert unter anderem score(), mainStatus(), dataQuality(), season() und checks().

PHP – eigener Zugriff auf das Ergebnis
<?php if (mfi_has_result()): ?>
  <p>Aktueller Wert: <?= mfi_data()->score() ?> von 100</p>
<?php endif; ?>

Eigene Seiten anlegen

Eine neue Seite entsteht durch eine neue Datei im Ordner pages/. Der Dateiname wird zur Adresse: aus pages/rasenpflege.php wird /rasenpflege. Ein kurzer Kommentarkopf steuert alles Weitere – Navigation und Sitemap ziehen automatisch nach.

PHP – Kommentarkopf einer eigenen Seite
<?php

/**
 * Title: Rasenpflege im Sommer
 * Description: Worauf es beim Mähen an heißen Tagen ankommt.
 * Nav: Rasenpflege
 * NavOrder: 30
 * Sitemap: 0.6 monthly
 */
?>

Nav steuert die Beschriftung in der Navigation – fehlt die Angabe, taucht die Seite dort nicht auf. NavOrder sortiert (kleiner heißt weiter vorn), Sitemap setzt Priorität und Änderungshäufigkeit, und Noindex nimmt die Seite aus dem Suchmaschinenindex.

Was Updates übersteht

Alles Eigene liegt getrennt vom mitgelieferten Bestand. Eine Datei aus der rechten in die linke Spalte zu kopieren genügt, um sie zu übernehmen – ab dann gilt deine Fassung, und das Original darf sich bei Updates weiterentwickeln.

Dein Bereich Mitgeliefertes Gegenstück
pages/ pages-default/
partials/ src/templates/partials/
public/assets/css/user-style.css user-style.example.css
config.php config.sample.php

Kopf- und Fußbereich ersetzen

Beide lassen sich vollständig durch eigene Fassungen ersetzen. Dazu kopierst du die gewünschte Vorlage in das Verzeichnis partials/ – ab dann verwendet die Website ausschließlich deine Fassung, auch nach einer Aktualisierung. Möglich ist das für header.php, footer.php und badge.php.

Shell – Fußbereich übernehmen
cp src/templates/partials/footer.php partials/footer.php

Das ist zugleich der richtige Ort für Verweise auf Seiten, die nicht in der Hauptnavigation auftauchen sollen – typischerweise Impressum und Datenschutzerklärung. Solche Seiten lässt du im Kommentarkopf einfach ohne Nav-Angabe und verlinkst sie stattdessen von Hand im Fußbereich:

PHP – eigene Links im Fußbereich
<li><a class="site-footer__link" href="/impressum">Impressum</a></li>
<li><a class="site-footer__link" href="/datenschutz">Datenschutz</a></li>

Welche Hilfsmittel dir innerhalb dieser Dateien zur Verfügung stehen – etwa zum sicheren Ausgeben von Werten, zum Einbinden von Symbolen oder zum Auslesen der Navigation – steht in partials/LIESMICH.md.

Ein Nachteil bleibt: Deine Fassung erhält keine künftigen Verbesserungen am mitgelieferten Kopf- oder Fußbereich mehr. Nach jeder Aktualisierung lohnt deshalb ein Blick in src/templates/partials/, ob dort etwas hinzugekommen ist, das du übernehmen möchtest.

Farben, Logo und Texte

Farben und Abstände laufen über eine eigene Stylesheet-Datei, die nach dem mitgelieferten Design geladen wird und damit jeden Konflikt gewinnt; die beiliegende Vorlage listet alle Variablen auskommentiert auf. Ein Logo trägst du in der Konfiguration ein, bei Bedarf mit eigener Fassung für das dunkle Design. Sämtliche sichtbaren Texte des Grundgerüsts stehen gesammelt in src/lang/de.php.

Was deine Anpassungen betreffen

Alle Zusagen dieser Seite – Barrierefreiheit nach WCAG 2.2 AA, nachgemessene Kontraste, Bedienbarkeit ohne Maus und ohne JavaScript, keine Cookies, keine externen Ressourcen – beschreiben den Auslieferungszustand der Vorlage. Diese Zusagen gelten nicht automatisch weiter, sobald du selbst eingreifst:

  • Eigene Farben heben die geprüften Kontraste auf. Miss nach, wenn du Werte ersetzt: mindestens 4,5:1 für Text, 3:1 für grafische Elemente und Bedienelemente – und zwar in beiden Designs, hell und dunkel.
  • Eigene Seiten und Inhalte bringen ihre eigene Barrierefreiheit mit. Alternativtexte für Bilder, sinnvolle Überschriftenhierarchie, beschriftete Formularfelder und erkennbarer Tastaturfokus liegen dann bei dir.
  • Externe Einbindungen – Schriften von fremden Servern, Karten, Videos, Social-Media-Elemente, Analyse- oder Consent-Werkzeuge – heben die Datensparsamkeit auf. Sobald so etwas dazukommt, ändern sich auch die Anforderungen an deine Datenschutzerklärung und gegebenenfalls an eine Einwilligung.
  • Eigenes JavaScript kann die Bedienbarkeit ohne Maus und die Nutzung ohne JavaScript einschränken, wenn Inhalte erst durch Skripte entstehen.

Kurz: Die Vorlage gibt dir eine saubere Ausgangslage. Verantwortlich für Barrierefreiheit und Datenschutz deiner Website bist als Betreiber du – und je nach Art deines Angebots können dafür auch gesetzliche Anforderungen gelten.

Impressum und Datenschutzerklärung musst du selbst anlegen. Beide sind für den Betrieb einer Website in aller Regel verpflichtend, hängen aber von Rechtsform, Hosting und eingesetzten Diensten ab – deshalb kann die Vorlage sie nicht mitliefern. Du legst sie wie jede andere eigene Seite an; lass die Texte im Zweifel rechtlich prüfen.

Datenqualität

Was die Wetterquelle liefert – und was ergänzt wird

Der kostenfreie OpenWeather-Zugang liefert Temperatur, Luftfeuchtigkeit, Wind, Böen und den Niederschlag der letzten Stunde. Bodentemperatur und Bodenfeuchte fehlen. Ohne diese Werte überspringt die MFI API den Bodencheck und weist die Datenqualität als „teilweise" aus – vier der fünf Prüfungen laufen also, was für eine belastbare Einschätzung genügt.

Fehlende Langzeitwerte errechnet die Vorlage selbst aus ihren gespeicherten Läufen:

Wert Woher er kommt
Regenmenge der letzten 12 h, 24 h und 14 Tage Summe stündlicher Stichproben
Zeit seit dem letzten Regen Abstand zur letzten Messung mit Niederschlag
Tiefsttemperatur der letzten 3 h, 3 Tage und 14 Tage niedrigster Wert im jeweiligen Zeitfenster

Ein solcher Wert wird nur an die API gesendet, wenn das Zeitfenster zu mindestens 80 Prozent mit Messungen belegt ist. Direkt nach der Installation fehlen die längeren Zeiträume daher noch – sie kommen nach und nach dazu, sobald sich die Historie aufgebaut hat. In der Messwert-Tabelle ist jederzeit erkennbar, welcher Wert von der Quelle stammt und welcher errechnet wurde.

Welche Prüfungen mit welchen Daten laufen und wie sich die Datenlage auf den Indexwert auswirkt, beschreiben die Seiten OpenWeather-Anbindung und Gesamt-Indexwert.

Fehlerbehebung

Typische Meldungen und was dahintersteckt

Meldung Ursache und Abhilfe
„Website noch nicht eingerichtet" Konfiguration fehlt oder ist unvollständig – Assistent unter /setup.php aufrufen
„Die Einrichtung läuft bereits" Der Assistent gehört einem anderen Browser – var/setup-claim.json löschen
„Noch kein Mähbarkeitsindex verfügbar" Es gab noch keinen erfolgreichen Lauf – Aktualisierung anstoßen oder auf den nächsten Cronjob warten
HTTP 401 MFI-Zugangsschlüssel falsch oder nicht übernommen
HTTP 403 Schlüssel noch nicht freigeschaltet oder deaktiviert; die Freischaltung erfolgt manuell
HTTP 422 Pflichtangaben fehlen – die Wetterquelle liefert keine Temperatur oder keinen Niederschlag
HTTP 429 Zu häufig abgefragt – Intervall erhöhen
HTTP 503 Wartungsmodus der API – später erneut versuchen
OpenWeather 401 Neue Schlüssel werden erst nach einigen Stunden aktiv

Fehler erreichen den Browser nie im Klartext. Erste Anlaufstelle ist die Protokolldatei var/error.log; dort stehen Meldung, Datei, Zeile und Aufrufweg. Fehlgeschlagene Läufe werden zusätzlich mit ihrer Fehlermeldung in der Datenbank festgehalten. Für die Fehlersuche lässt sich runtime.debug vorübergehend einschalten – im Regelbetrieb gehört der Wert auf false, sonst werden Serverpfade für jeden Besucher sichtbar.

FAQ

Häufige Fragen

Von den Grundlagen bis zu den technischen Feinheiten.

Eine vollständige, lauffähige Website. Sie holt selbstständig Wetterdaten, lässt daraus den Mähbarkeitsindex berechnen und zeigt das Ergebnis an – mit Empfehlung im Klartext, Indexwert und den Begründungen der einzelnen Prüfungen. Es ist kein Baukasten und kein Plugin für ein bestehendes System, sondern ein fertiger Satz Dateien, den du auf deinen eigenen Webspace legst. Wie das Ergebnis aussieht, zeigt das laufende Beispiel unter mep.maehbarkeitsindex.de.

Für die Vorlage selbst fallen keine Kosten an. Der Zugang zur MFI API ist kostenfrei, ebenso der benötigte OpenWeather-Zugang in dem hier genutzten Umfang. Bezahlen musst du nur dein eigenes Webhosting, sofern du noch keines hast.

Du solltest Dateien auf einen Webspace hochladen können und wissen, wo du im Kundenmenü deines Hosters eine Datenbank anlegst. Programmierkenntnisse sind für die Einrichtung nicht nötig – der Assistent führt durch alle Schritte und prüft jede Eingabe. Für eigene Erweiterungen sind PHP-Grundkenntnisse hilfreich.

Wenn beide Zugangsschlüssel bereits vorliegen und die Datenbank angelegt ist, sind es meist 15 bis 30 Minuten. Rechne zusätzlich Wartezeit für die Schlüssel ein: MFI-Zugangsschlüssel werden von Hand freigeschaltet, neue OpenWeather-Schlüssel brauchen einige Stunden, bis sie funktionieren.

Nötig sind PHP ab Version 8.2, eine MySQL-Datenbank ab 8.0 oder MariaDB ab 10.4 und ein Apache-Webserver. Diese Angaben stehen in der Leistungsübersicht deines Hosters. Im Zweifel lade die Dateien einfach hoch: Der erste Schritt des Einrichtungsassistenten prüft die Umgebung und sagt dir genau, was fehlt.

Ein API-Key ist ein Zugangsschlüssel – eine lange Zeichenfolge, mit der sich deine Website bei der MFI API ausweist. Du beantragst ihn kostenlos über das Registrierungsformular. Nach der Bestätigung deiner E-Mail-Adresse wird der Schlüssel von Hand freigeschaltet. Bewahre ihn wie ein Passwort auf.

Ein Cronjob ist eine zeitgesteuerte Aufgabe, die der Server regelmäßig von selbst ausführt – hier alle 15 Minuten das Abrufen neuer Wetterdaten. Bietet dein Hosting keinen Cronjob, gibt es zwei Alternativen: die Betriebsart „beim Seitenaufruf", bei der die Daten erneuert werden, sobald jemand die Seite besucht, oder ein externer Cron-Dienst, der eine tokengeschützte Adresse deiner Website aufruft.

Der DocumentRoot ist das Verzeichnis, dessen Inhalt dein Webserver nach außen sichtbar macht. Idealerweise zeigt er auf den Ordner public/, damit Konfiguration und Programmcode gar nicht erst erreichbar sind. Lässt sich das bei deinem Hoster nicht einstellen, verschiebst du den Inhalt von public/ in dein Webverzeichnis und die übrigen Ordner eine Ebene darüber; in zwei Dateien ist dann ein Pfad anzupassen. Die mitgelieferte Serverkonfiguration sperrt vorsorglich auch dann den Zugriff auf Konfigurations-, Datenbank- und Protokolldateien.

Nein. Du kannst alle Dateien per FTP hochladen und die Einrichtung vollständig im Browser erledigen. Ein Shell-Zugang ist nur bequemer, wenn du das Projekt per Git aktuell halten oder die Wartungsbefehle direkt aufrufen möchtest.

Voreingestellt sind 15 Minuten. Kürzere Abstände sind nicht sinnvoll: Die MFI API lässt pro Zugangsschlüssel standardmäßig nur alle 300 Sekunden eine Berechnung zu und antwortet sonst mit einer Fehlermeldung. Zusätzlich begrenzt die Vorlage die Wetterabrufe auf 200 pro Tag, damit du nicht versehentlich in die Grenzen des kostenfreien Zugangs läufst.

Der kostenfreie OpenWeather-Zugang liefert keine Bodentemperatur und keine Bodenfeuchte. Ohne diese Werte überspringt die MFI API den Bodencheck und weist die Datenqualität als „teilweise" aus. Die Vorlage blendet den Check deshalb standardmäßig automatisch aus – das ist kein Fehler, sondern gewolltes Verhalten.

Langzeitwerte wie die Regenmenge der letzten 14 Tage berechnet die Vorlage aus ihren eigenen gespeicherten Läufen. Diese Historie muss sich erst aufbauen. Ein abgeleiteter Wert wird erst gesendet, wenn das jeweilige Zeitfenster zu mindestens 80 Prozent belegt ist – die längeren Fenster kommen also nach und nach dazu.

Ja, das ist vorgesehen, erfordert aber PHP-Kenntnisse. Die Wetterquelle steckt hinter einer klar abgegrenzten Schnittstelle: Du legst eine eigene Klasse im Ordner für Wetterquellen an und trägst sie in der Übersicht der verfügbaren Quellen ein. Mit einer eigenen Station stehen dann meist auch Bodenwerte zur Verfügung, sodass alle fünf Prüfungen laufen und die Datenqualität steigt.

Nicht ohne Anpassung. Die Vorlage ist bewusst auf einen Standort ausgelegt, damit sie übersichtlich bleibt. Die Datenbank führt allerdings bereits eine Standortkennung mit, sodass eine Erweiterung möglich ist.

Ja. Farben und Abstände änderst du über eine eigene Stylesheet-Datei, die nach dem mitgelieferten Design geladen wird; eine kommentierte Vorlage mit allen Variablen liegt bei. Ein eigenes Logo trägst du in der Konfiguration ein, alle sichtbaren Texte stehen gesammelt in einer Sprachdatei. Beachte dabei: Sobald du Farben ersetzt, gelten die nachgemessenen Kontraste nicht mehr automatisch – du musst sie dann selbst prüfen.

Nein, nicht automatisch. Alle Angaben zu WCAG 2.2 AA, Kontrasten, Bedienbarkeit ohne Maus und Verzicht auf Cookies und externe Ressourcen beschreiben den Auslieferungszustand der Vorlage. Sobald du Farben änderst, eigene Seiten und Bausteine ergänzt, Schriften von einem fremden Server einbindest oder Analyse- und Kartendienste, Videos oder Social-Media-Elemente hinzufügst, gelten sie für diese Teile nicht mehr. Die Verantwortung für Barrierefreiheit und Datenschutz deiner Website liegt bei dir als Betreiber.

Ja. Deine eigenen Seiten, dein Kopf- und Fußbereich, deine Gestaltung und deine Konfiguration liegen in Bereichen, die von der Versionsverwaltung ausgenommen sind. Die mitgelieferten Gegenstücke dürfen sich bei Updates weiterentwickeln, ohne deine Fassung zu überschreiben. Eine Ausnahme gibt es: Ersetzte Kopf- und Fußbereiche erhalten künftige Verbesserungen der Vorlagen nicht automatisch mit.

Hast du per git clone installiert, genügen im Projektverzeichnis git pull und anschließend der Prüflauf php bin/check-setup.php. Ohne Shell-Zugang lädst du die neue Fassung als ZIP von der Releases-Seite herunter und überträgst per FTP nur die Verzeichnisse src, bin, install, pages-default und public. Nicht überschreiben darfst du config.php, pages, partials, var und public/assets/css/user-style.css – diese Bereiche gehören dir. Ein Blick in die CHANGELOG.md vor dem Update zeigt, was sich geändert hat. Ausführlich steht das alles im Abschnitt Aktualisieren weiter oben.

Ja, vollständig. Du kopierst die gewünschte Vorlage aus src/templates/partials in das Verzeichnis partials und bearbeitest sie dort; ab dann verwendet die Website ausschließlich deine Fassung und behält sie auch nach einer Aktualisierung. Möglich ist das für header.php, footer.php und badge.php. Das ist zugleich der Ort für Links auf Seiten, die nicht in der Hauptnavigation erscheinen sollen, etwa Impressum und Datenschutzerklärung. Welche Hilfsmittel darin bereitstehen, beschreibt partials/LIESMICH.md.

In aller Regel ja – beides ist für den Betrieb einer Website meist verpflichtend. Die Vorlage liefert die Texte bewusst nicht mit, weil sie von Rechtsform, Hosting und eingesetzten Diensten abhängen. Du legst die Seiten wie jede andere eigene Seite an und lässt die Texte im Zweifel rechtlich prüfen.

Im Auslieferungszustand nicht. Es gibt kein Tracking, keine externen Schriftarten und keine eingebundenen Fremdinhalte – alle Dateien liegen auf deinem Server. Ein einziges technisches Cookie wird während der Einrichtung gesetzt, um den Assistenten vor fremdem Zugriff zu schützen. Deine Website selbst ruft im Hintergrund OpenWeather und die MFI API auf; für deine eigene Datenschutzerklärung ist das relevant. Ergänzt du später eigene Dienste, ändert sich diese Einschätzung entsprechend.

Ja. Es gelten die Nutzungsbedingungen der MFI API; unter anderem ist die Quelle anzugeben. Das mitgelieferte Badge im Fußbereich der Vorlage erfüllt diese Anforderung bereits, weitere Varianten stehen im Styleguide bereit.

Erste Anlaufstelle ist das mitgelieferte Diagnosewerkzeug, das Umgebung, Datenbank, Erreichbarkeit der API und Schreibrechte in einem Durchlauf prüft und Probleme konkret benennt. Bleibt eine Frage offen, helfen die Diskussionen und der Issue-Tracker des Projekts weiter. Fragen zur API selbst beantwortet die API-FAQ.

Die Vorlage im Einsatz – oder daran gescheitert?

Ob Einrichtungsassistent, Konfiguration und Aktualisierung wirklich so glatt laufen wie beschrieben, sehe ich nur an Rückmeldungen aus echten Installationen. Ein paar kurze Fragen, anonym, ohne Anmeldung und in etwa einer Minute erledigt.

Feedback geben

Loslegen

Zugangsschlüssel beantragen, Vorlage herunterladen, Assistent durchlaufen – mehr braucht es nicht für eine eigene Seite mit dem Mähbarkeitsindex. Ein laufendes Beispiel steht unter mep.maehbarkeitsindex.de.