Home Assistant TTS: Ticket-Ansagen mit DeepSeek aufräumen — ohne dass die Ansage je ausfällt

Ein Daily-Report-Skript liest neue Tickets per Sprachausgabe vor — inklusive nutzloser Bestellnummern und Satzzeichen-Müll. Die Lösung: ein LLM die Titel aufräumen lassen. Aber ein autonomes Cron-Skript darf nie an einem API-Call hängen. Wie man eine LLM-Veredelung einbaut, die bei jedem Fehler sauber auf eine deterministische Regel-Basis zurückfällt.

23.06.2026 · 6 Minuten · 1187 Wörter · root_cause

Browser Use 0.13 + Brave + Claude Code: AI-gesteuerte Browser-Automatisierung im Homelab

Browser Use ist ein Open-Source-Framework das AI Agents einen echten Browser steuern lässt. Die Konfiguration mit Brave statt Chromium und die MCP-Integration in Claude Code haben ein paar Fallen — hier die Lösung.

10.06.2026 · 4 Minuten · 716 Wörter · root_cause

Telegram Bot mit Langzeitgedächtnis: 50 Zeilen Python für Cross-Session-Kontext

Dein LLM-Telegram-Bot vergisst nach 30 Minuten alles. User sagt ‘Soll Mittwoch kommen’ und der Bot hat keine Ahnung wovon. Die Lösung: eine ConversationMemory-Klasse, ein JSON-File, null externe Dependencies.

05.04.2026 · 5 Minuten · 1027 Wörter · root_cause

Bosch eBike Connect + Home Assistant: Herzfrequenz aus dem Todesstern befreien

Bosch speichert deine Herzfrequenz-Daten in der Cloud und exportiert sie nicht ins GPX. Mit ebike-dl, einem Python-Script und HA REST-Sensoren kommen die Daten trotzdem nach Yavin IV.

25.02.2026 · 5 Minuten · 988 Wörter · root_cause

Python ldap3: invalidCredentials obwohl das Passwort stimmt

ldapwhoami bindet erfolgreich, Python ldap3 liefert invalidCredentials — mit identischen Credentials. Die Ursache: Sonderzeichen (@, !) im Passwort. libldap überträgt sie korrekt, ldap3 nicht.

22.02.2026 · 3 Minuten · 501 Wörter · root_cause

Zammad: Mails nach Import archivieren statt löschen — ohne Elasticsearch

Zammad löscht Mails nach dem IMAP-Import. Wer ein Backup im Postfach behalten will, stößt auf ein nicht-offensichtliches Problem: Die Zammad-API findet Message-IDs ohne Elasticsearch nicht. Die Lösung ist ein Python-Cron-Job mit einem direkten Rails-Query via docker exec.

19.02.2026 · 6 Minuten · 1153 Wörter · root_cause

Python: {{ }} außerhalb von f-Strings generiert keinen Escape — ein stiller Code-Bug

Ein Python-Script generiert Ruby-Code mit Blöcken. Manche Strings sind f-Strings, manche nicht. {{ }} sollte zu { } werden — tut es aber nur in f-Strings. In normalen Strings bleiben {{ }} literal. Das erzeugt ungültiges Ruby, Python wirft keinen Fehler, und das Programm schlägt still fehl.

19.02.2026 · 4 Minuten · 671 Wörter · root_cause

Home Assistant TTS Morning Briefing: Yamaha MusicCast + CalDAV + Wetter + Müllabfuhr

Tägliches Morning Briefing per Text-to-Speech auf Yamaha MusicCast Speaker — mit Kalender-Terminen (CalDAV/Grommunio), Wetter (Open-Meteo) und Müllabfuhr-Erinnerung. Plus: Wie man Pipers englische TTS-Stimme mit deutschen Terminen zum Arbeiten bringt.

13.02.2026 · 8 Minuten · 1500 Wörter · root_cause

CalDAV in Python: Warum deine Query 63 Events zurückgibt, obwohl nur eins heute stattfindet

CalDAV gibt bei wiederkehrenden Terminen ALLE Events zurück, nicht nur die heutigen. Warum DTSTART dich belügt und wie du RRULE mit dateutil richtig auswertest.

23.01.2025 · 6 Minuten · 1202 Wörter · root_cause