#text

Update für unser Smart Home

Eigentlich wollte ich nur die Heizung anpassen. Stattdessen funkt jetzt die Waschmaschine, die Spülmaschine spricht wieder – und die LED-Kerzen wissen endlich, wann Sonnenuntergang ist.

Ich habe Zeit investiert und mich endlich mit unserem Home Assistant beschäftigt. Nicht ganz freiwillig, eher aus dem Zwang heraus, dass jetzt, nach fast einem Jahr in der neuen Wohnung, endlich alles so funktionieren sollte, wie ich es mir beim Einzug vorgestellt hatte. Auch die Heizungssteuerung.

Aber vorher habe ich mich natürlich mit ein paar Sidequests beschäftigt, um wieder in den Home-Assistant-Mode zu kommen:

  • Der erste Erfolg war im Keller: unsere Waschmaschine ist jetzt „smart“. Seit wir dort auch die Möglichkeit haben, Home Asssistant zu nutzen, läuft sie über einen innr-Smartplug, der auch den Stromverbrauch misst. Wenn der Verbrauch über eine gewisse Zeit auf null fällt, sendet Home Assistant eine Push-Nachricht auf unsere Handys: „Wäsche fertig!“, was mir ehrlicherweise mehr Lebensqualität bringt, als man denkt, oder mir lieb sein sollte.

  • Auch die Spülmaschine ist wieder eingebunden. Über den Server des Herstellers bekomme ich über Home-Assistant ebenfalls Benachrichtigungen, wenn sie fertig ist und ausgeräumt werden will. Es sind Kleinigkeiten, aber sie nehmen einem so viel Nachdenken ab.

  • Und unsere LED-Kerzen, die sonst über eine Infrarot-Fernbedienung laufen, gehen jetzt automatisch an, wenn das Licht nach Sonnenuntergang eingeschaltet wird. Das ist so ein Moment, wo man denkt: Ja, absolut sinnfrei, aber genau so sollte das sein.

Das eigentliche Mammutprojekt war aber die Heizung. Unser Wohnzimmer ist offen, Küche, Flur, Wohnbereich gehen ineinander über, und ich wusste lange nicht, wie man das effizient steuern kann. Jetzt habe ich einfach das Wohnzimmer als Referenztemperatur genommen, und Flur sowie Küche heizen mit einem kleinen Offset (aktuell ein Grad Unterschied) mit. Das Ganze läuft unabhängig von der Tado-Software: Jeder Raum hat jetzt eine Heiz- und Komforttemperatur, eine Absenktemperatur (nachts oder bei Abwesenheit) und eine Urlaubstemperatur. Getriggert wird das über Zeitpläne oder über die Präsenzkontrolle, also ob jemand überhaupt da ist.

Das war aber nicht meine Idee von Anfang an. Ich wollte am Anfang eigentlich ich nur einen kleinen Blueprint schreiben: Wenn ein Fenster geöffnet wird, soll die Heizung ausgehen – und beim Schließen wieder auf die vorherige Temperatur zurückspringen. Klingt simpel, war es aber nicht, weil Tado immer wieder auf seine eigenen Zeitpläne zurückspringen wollte. Jetzt speichere ich die aktuelle Temperatur in einer JSON-Datei, wenn ein Fenster geöffnet wird, und stelle sie beim Schließen wieder her.

Am Ende war das Wochenende zwar anstrengender als gedacht, aber ich habe jetzt das Gefühl, endlich die Kontrolle über meine eigene „Smartness“ zu haben. Letzten Winter hat mich Tado noch regelmäßig genervt, weil es nach dem Lüften einfach wieder seine und nicht unsere Temperatur eingestellt hat. Das fühlte sich an wie das Gegenteil von „smart“. Bin schon gespannt, welche Nebeneffekte das jetzt wieder hat.

Barrierefreiheit auf Knopfdruck (und KI)

Ich habe ein kleines Kirby-Plugin gebaut, das die Stellen übernimmt, die ich aus Zeitmangel wahrscheinlich seltenst ausgefüllt hätte, aber die schon auch wichtig sind: Via LLM von OpenAI kann ich jetzt Alt-Texte von Bildern per Button generieren lassen und wenn ich will, auch die Meta-Descriptions für Suchmaschinen. Und dabei habe ich wieder viel über Kirby gelernt und warum es eine gute Entscheidung war, zu wechseln.

Wenn ich etwas gar nicht schreiben würde, schreibe ich’s lieber mit LLMs, besonders da, wo Barrierefreiheit dranhängt. Nicht, weil ich es nicht könnte, sondern damit nichts liegen bleibt: Alt-Texte, Meta-Descriptions, diese stillen Pflichtfelder, die am Ende irgendwie auch wichtig sind, aber dafür auch noch einmal richtig viel Zeit kosten können, ohne das der eigentliche Beitrag davon auf den ersten Blick profitiert.

Aus dieser … nenne ich es einmal … Faulheit ist ein kleines Kirby-Plugin entstanden, das zwei Dinge zuverlässig erledigt: barrierefreie Alt-Texte für Bilder und sachliche Meta-Descriptions für Seiten. Auf Knopfdruck direkt im Panel.

Ich gebe dem Modell den vollen Kontext, setze Length-Guards und formatiere die Antwort passgenau: ca. 110 Zeichen für Alt, ca. 160 für Meta. Optional kann das Plugin das Bild als Data-URL mitschicken („Vision“), damit die KI nicht im luftleeren Raum rät.

Warum klappt das so erstaunlich gut? Weil Kirby Inhalte und Mediendaten wunderbar strukturiert. Alle Bild-Metadaten liegen in Sidecar-Contentdateien neben der Bilddatei, z. B. mein-foto.jpg.txt. Menschenlesbar, versionierbar, und serverseitig perfekt als Prompt-Kontext nutzbar.

Damit das sauber bleibt, habe ich zwei kleine Helfer daneben gelegt. Mein Plugin sync-meta hält Felder synchron, die sowohl in der Seiten-Contentdatei (default.txt) als auch in den Bild-Sidecars (bild.jpg.txt) vorkommen. Zum Beispiel liegt die Bildunterschrift bei einem Beitrag mit nur einem Bild in der Contentdatei, nicht in der Sidecar. Hintergrund ist, dass mein System historisch gewachsen ist und sich die Anforderungen, je besser ich Kirby kennenlerne, auch immer wieder anpassen.

Das Plugin exif-import sorgt dafür, dass Sidecars nicht leer starten: Beim Upload lese ich optional EXIF/IPTC aus und fülle Datum, Ort, Kamera, ggf. Caption vor – was immer das Asset hergibt. Danach muss die KI nicht mehr raten, sie ergänzt.

Der Generierungs-Flow ist bewusst serverseitig: Das Panel schickt nur IDs. Das Backend sammelt Kontext (Seitentitel, Teaser, Text, Bild-Captions, optional Geodaten), ergänzt auf Wunsch das Bild selbst und nutzt zentral gepflegte, nüchterne Prompts. Ton und Stil kann ich global in der config.php oder je Blueprint feinjustieren.

Wenn der Kontext zu dünn ist, breche ich ab, statt Floskeln zu produzieren. Und wenn ich „zu faul“ bin, drücke ich guten Gewissens auf „Vorschlagen“ – besser ein kurzer KI-Text als gar keiner. Genau dafür ist das da.

Am Ende schreibe ich weiterhin gern selbst, aber ich finde es sehr angenehm, Sachen zu automatisieren, die sonst aus Zeitgründen wegfallen würden. Barrierefreiheit profitiert (Alt-Texte sind da!) und mein Kopf bleibt frei für die Teile, die wirklich menschliche Aufmerksamkeit brauchen.

Stonehenge, Nebra und dann Duhnen

Stonehenge, Nebra und dann Duhnen

Wir waren ein paar Tage in Cuxhaven. Viel schöne Heide, Waldschatten, offener Strand. Und richtig gute Fischbrötchen, wenn man weiß wo.

Ich liebe ja diese Vergleiche, die mit ganz großen Namen ankommen.

Die Steinkreise im englischen Stonehenge, der Sonnenwagen von Trondholm, die Himmelsscheibe von Nebra - berühmte und rätselhafte Zeugnisse der Zeit vor rund 4000 Jahren. Fast ebenso alt und von ebenso rätselhafter Funktion - der doppelte Ringwall von Duhnen.

Blick durch ein Rohr auf das Licht und die umgebende Natur.
Verwachsener Blick auf den berühmten Twellberg-Grabhügel von Duhnen.
Twellberg-Grabhügel in Sahlenburg, umgeben von Wiesen und Bäumen unter einem bewölkten Himmel.
Der Twellberg-Grabhügel: Über Flatterband an einen Zaun gequetscht, leicht auf die Zehenspitzen und schon hat man dieses Duhner-Glanzlicht vor der Linse

Großartig, wirklich! Man merkt richtig, wie die Agentur oder die Verwaltungsmenschen damals geglüht haben. “Rätsel der Ringe!” - wahrscheinlich mit drei Ausrufezeichen im Pitchdeck und noch mehr Hoffnung. Heute: rotes Flatterband, kurz über der Grasnarbe, eine Bank, die in die falsche Richtung zeigt und überall Gestrüpp, gesäumt von Pipi-Taschentüchern. Vielleicht ist das die wahre Rätsel-Funktion: ein Monument dafür, wie schnell Pathos zuwachsen kann. Ich hab dann das Fernrohr fotografiert.

Aber generell habe ich Cuxhaven schon sehr gemocht. Ich mag die Mischung: Schatten im Wald, plötzlich offenes Heidefeld, dann wieder offener Strand mit Wind im Gesicht.

Der Cuxliner fährt zwischen Sahlenburg und Duhnen, ideal für Touristen. Fahrt kostet 7 Euro.
Zwischen Sahlenburg und Duhnen fährt der kleine Cuxliner hin und her. Ist aber eher Touri-Angebot als ÖPNV-Ersatz, denn eine einfache Fahrt kostet 7 Euro für Erwachsene.
Heidelandschaft mit Gehölz und Pfad im Naturschutzgebiet Duhner Heide bei Cuxhaven.
Ich mag die Heide-Landschaft, auch wenn ich gar nicht weiß, ob es dafür nicht schon zu viel Gehölz auf dem Bild gibt. Auf jeden Fall war der Entdeckungspfad bei Duhnen wirklich ein schöner Weg. Den anschließenden Fisch bei Blauths in Sahlenburg hätte man aber weglassen können.
Watt bei Cuxhaven im Sonnenuntergang
Watt bei Cuxhaven.

Duhnen selbst hat eine klassische Promenade, die einen als Touri von einem "der wichtigsten Fremdenverkehrsorte Niedersachsens am Wattenmeer" (Wikipedia) zumindest nicht überrascht. Und von Cux selbst haben wir die klassischen Touri-Spots mitgenommen.

Die Alte Liebe in Cuxhaven, ehemaliger Pier und heutige Aussichtsplattform am Hafen.
Die "Alte Liebe in Cuxhaven": Früher Pier, heute Aussichtsplattform.
Ein Schlepper fährt durch die bewegte Nordsee vor Cuxhaven, umgeben von Wellen und Himmel.
Ein kleines Lüftchen umwehte schon unsere Nasen.
Schloss Ritzelbüttel in Cuxhaven umgeben von roten Blumen im Vordergrund.
Schloss Ritzelbüttel in Cuxhaven.
Ehemaliger Wasserturm in Cuxhaven, heute genutzt für Ferienwohnungen und ein Café.
Ehemaliger Wasserturm. Jetzt Fewos und Café.

Wer gute Fischbrötchen will, der ist in der Kleinen Fischkiste gut aufgehoben, richtig lecker (und gerne auch ohne Remoulade, der Fisch gibts her). Nur leider gab's einmal am frühen Nachmittag keinen heißen Fisch mehr, dafür haben die dann am nächsten Tag besonders gut geschmeckt.

Bankpausen

Bei unserem kleinen Trip habe ich leider die Fotos der Bankpausen stark vernachlässigt. Es gab definitiv mehr.

Entspannende Bankpause an der Strandpromenade mit Blick auf die Nordsee und Strandkörbe.
Bankpause an der Strandpromenade in Duhnen.
Entspannte Bankpause im Kurpark mit Blick auf den Teich und die umliegende Natur.
30.09.2025Döse, Cuxhaven
Bankpause im Kurpark vor dem kleinen Zoo in Cuxhaven.

Von Beverungen nach Bad Karlshafen (zu Fuß)

Von Beverungen nach Bad Karlshafen (zu Fuß)

Diesmal starten wir früh und gehen über die Hessischen Klippen nach Bad Karlshafen und campen abends an der Weser.

Kleines Wochenend-Abenteuer: Wir haben uns am Samstag morgens in Göttingen getroffen, noch Kaffee in der Hand und zumindest ich hatte auch keine Ahnung, wo es hingehen soll. Wir haben uns schließlich in den Zug nach Beverungen gesetzt. Von dort ging’s über die Hessischen Klippen immer am Rand entlang – mit Blicken, die wach machen, auch ohne Koffein.

Bildschirmfoto 2025-09-23 um 19.51.14.png
23.09.2025
Die Burgentour von Beverungen nach Bad Karlshafen.
Morgens um 7.40 Uhr am Bahnhof in Göttingen.
Morgens um 7.40 Uhr am Bahnhof in Göttingen.

Burgenblick

Burg I: Die Burg Beverungen, eine teilweise erhaltene Wasserburg laut Ecosia.
Burg I: Die Burg Beverungen, eine teilweise erhaltene Wasserburg laut Ecosia.
Burg II: Burg Herstelle. Näher sind wir leider nicht rangekommen.
Burg II: Burg Herstelle. Näher sind wir leider nicht rangekommen.
Burg III: Die Krukenburg.
Burg III: Die Krukenburg.

Bankpausen

Bankpause I: Unterhalb der Burg Herstelle, im Schallkanal von mindestens drei Kirchen.
Bankpause I: Unterhalb der Burg Herstelle, im Schallkanal von mindestens drei Kirchen.
Bankpause II: Die Peter Peter Hütte am Dreiländereck Niedersachsen-Nordrhein-Westfalen-Niedersachsen an den hessischen Klippen.
Bankpause II: Die Peter Peter Hütte am Dreiländereck Niedersachsen-Nordrhein-Westfalen-Niedersachsen an den hessischen Klippen.
Bankpause III an der Krukenburg. Nicht auf dem Bild: Das Hochzeitsshooting mit überambitionierten Vater, der sicherheitshalber auch mal seine Kamera mitgenommen hat.
Bankpause III an der Krukenburg. Nicht auf dem Bild: Das Hochzeitsshooting mit überambitionierten Vater, der sicherheitshalber auch mal seine Kamera mitgenommen hat.

Camping

Der Zeltplatz in Bad Karlshafen von oben.
Der Zeltplatz in Bad Karlshafen von oben.
Sicht über die Weser Richtung Innenstadt und Hafen.
Sicht über die Weser Richtung Innenstadt und Hafen.
Am Eingang vom Campingplatz.
Am Eingang vom Campingplatz.
Darf wahrscheinlich auf keinem Campingplatz fehlen. Bloß: Wie sorgt man für frische Luft in der Kabine?
Darf wahrscheinlich auf keinem Campingplatz fehlen. Bloß: Wie sorgt man für frische Luft in der Kabine?

Basteln am eigenen Bloghaus

Seit ich von Wordpress weg bin, fühlt sich Bloggen wieder wie Basteln an. Kirby ist mein Werkzeugkasten, und aus Ordnern, Textdateien und ein paar Skripten wächst gerade mein eigenes kleines Zuhause. Zwischen Rückschlägen, Heureka-Momenten und schiefen Polaroid-Slidern macht das erstaunlich viel Spaß.

Ich bin immer noch ein bisschen berauscht von dem Gefühl, hier mein eigenes, kleines Zuhause zu bauen. Nicht mehr dieses sperrige Wordpress-Mietshaus, bei dem man immer gefühlt zur Verwaltung musste, wenn man nur eine Kleinigkeit anders haben wollte, sondern ein selbstgezimmertes Häuschen, das knarzt, wenn man die Treppe hochgeht, und trotzdem genau das richtige Licht in der Küche hat.

Das Fundament heißt bei mir Kirby. Für alle, die das nicht kennen: Kirby ist ein CMS, aber ohne Datenbank, ohne den ganzen aufgeblähten Kram. Alles liegt als einfache Textdatei in Ordnern. Jeder Beitrag ist ein Ordner mit einer txt, den Bildern und kleinen Zusatzdateien. Man schreibt direkt darein. Kirby liest das aus und baut daraus die Seite.

Die letzten Tage habe ich vor allem im Keller geschraubt: ein Exif-Import! Klingt trocken, fühlt sich aber an wie Magie. Plötzlich spuckt mein System beim Speichern eines Beitrags die Metadaten von Bildern aus, die ohnehin schon in den Dateien stecken. Ordnerstruktur, Textdateien, Bilder – alles in einem Takt. Und wenn ich ein Bild hochlade, schiebt sich wie von selbst das Aufnahmedatum oder der Ort dazu, fein säuberlich abgelegt.

Klar, Rückschläge gab’s auch. Im ersten Wurf dachte ich: alles in die Hauptdatei, passt schon. Bis mir auffiel, dass das ganze Konzept zerbröselt, sobald mehr als ein Bild im Beitrag auftaucht. Also wieder zurück ans Script, Schraubenschlüssel gezückt, und die Infos in die Bild-Textdateien verschoben. Seitdem erscheinen sie automatisch unter den Fotos. Nur die Alt-Texte und die Bildunterschriften hängen gerade noch am selben Tropf. Da muss ich noch mal ran, denn Alt-Text ist nüchtern, Bildunterschrift eher Bühne. Und da will ich mal schauen, ob ich die API von OpenAi da nutzen kann, um beispielsweise halb automatisch die Alt-Beschreibungen oder aber auch die Metadescription generieren zu lasse .

Nebenbei bastle ich am Layout. Erst hatte ich für die Bilddarstellung ein Polaroid über die gesamte Bildschirmbreite, dann festgestellt: zu plump. Jetzt baut mein Script munter Slider, wenn mehrere Bilder hintereinander auftauchen. Das ist noch nicht ganz elegant, aber fühlt sich schon viel mehr nach meinem Blog an – ein bisschen wie die Entscheidung, ob man im Wohnzimmer Teppich oder Parkett verlegt.

Und dann dieser kleine Zaubermoment: Ich lasse mir von Kirby eine optimierte Bildversion rechnen, damit die Seite fix lädt. Klickt man aufs Bild, springt die große Datei nach, und dieser Mini-Moment des Nachladens macht mich jedes Mal froh. Es ist wie ein Augenzwinkern des Systems: „Siehst du, so einfach kann’s gehen.“ Hach.