Verhindern Sie doppelte Home-Assistant-Aufträge, indem Sie einen logischen Vorgang eindeutig identifizierbar und sicher wiederholbar machen. Ermitteln Sie zunächst, wo der zweite Durchlauf beginnt; kontrollieren Sie anschließend Überlappungen, doppelte Zustellung, Wiederholungen und die Ausführung durch mehrere Instanzen auf der jeweils engsten geeigneten Ebene.
Eine wiederholte Benachrichtigung ist ärgerlich, aber doppelte Aktionen an Türen, bei Abrechnungen, Bewässerungen, Backups oder Importen können schädlich sein. Erfassen Sie Automatisierungs-Traces, Trigger-IDs, Zeitstempel, Vorgangseingaben und die Serveridentität, bevor Sie Verzögerungen hinzufügen. Das Vermeidungskonzept sollte denselben Vorgangsschlüssel ablehnen, tatsächlich neue Ereignisse zulassen und sich sauber erholen, wenn der erste Versuch nur teilweise erfolgreich war.
Den genauen Beginn des Duplikats ermitteln
Vergleichen Sie die Automatisierungs-Traces oder Auftragsprotokolle der beiden Ausführungen. Erfassen Sie die Trigger-Plattform, die Trigger-ID, den Kontext, den Zeitstempel, die Eingabedaten, den Ausführungsmodus, die Anzahl der Wiederholungen und die Serveridentität. Wenn die beiden Traces unterschiedliche Trigger haben, beheben Sie die Überschneidung der Trigger. Wenn ein Trace den Nebeneffekt zweimal ausführt, beheben Sie die Aktions- oder Importschleife.
Die Fehleranalyse in der Home-Assistant-Community zeigt, dass sich doppelte Ausführungen durch den Automatisierungsmodus und das Timing begrenzen lassen, warnt jedoch ebenfalls davor, den zugrunde liegenden Trigger ungeklärt zu lassen. Verwenden Sie das Trace-Muster für doppelte Ausführungen als diagnostische Orientierung, nicht als universelle Anleitung für Verzögerungen.
Bestätigen Sie, dass nur eine Home-Assistant-Instanz, ein Scheduler, ein Import-Container oder ein Webhook-Consumer den Auftrag besitzt. Wenn zwei Server gemeinsame Zugangsdaten oder eine gemeinsame Warteschlange verwenden, kann der Automatisierungsmodus innerhalb einer Instanz keine instanzübergreifenden Duplikate verhindern.
Die Vermeidungsgrenze passend zur Ursache wählen
Für überlappende Ausführungen innerhalb einer Automatisierung wählen Sie einen zum Vorgang passenden Ausführungsmodus: Lehnen Sie Überschneidungen bei exklusiven Aufgaben ab, stellen Sie tatsächlich sequenzielle Aufgaben in eine Warteschlange oder starten Sie nur dann neu, wenn das Ersetzen des alten Durchlaufs sicher ist. Verwenden Sie eine Modusänderung nicht, um unterschiedliche Ereignisse zusammenzuführen, die alle verarbeitet werden müssen.
Erstellen Sie bei doppelter Ereigniszustellung oder Wiederholungen einen Vorgangsschlüssel aus einer stabilen Ereignis-ID oder aus einer sorgfältig gewählten Kombination wie Quelle, Gerät, Aktion und Zeitfenster. Speichern Sie die zuletzt abgeschlossenen Schlüssel in einem Helfer, einer Datenbanktabelle oder einem Importmanifest mit einer für den Workflow geeigneten Ablaufzeit.
Erzwingen Sie bei Importen nach Möglichkeit die Eindeutigkeit am Ziel. Prüfen und speichern Sie die Quellobjekt-ID vor dem Schreiben, schreiben Sie atomar und markieren Sie den Abschluss erst, nachdem alle erforderlichen Nebeneffekte erfolgreich ausgeführt wurden. Ein Dateiname allein ist unzuverlässig, wenn dieselben Daten unter einem anderen Namen eintreffen können.
Wiederholungen sicher machen, statt sie zu deaktivieren
Ein Timeout beweist nicht, dass der erste Versuch fehlgeschlagen ist; das entfernte Gerät oder die API kann die Aktion abgeschlossen haben, bevor die Antwort verloren ging. Lesen Sie vor einer Wiederholung den resultierenden Zustand aus oder fragen Sie das Ziel nach dem Vorgangsschlüssel ab. Wiederholen Sie den Vorgang nur, wenn der gewünschte Zustand nicht vorhanden ist.
Trennen Sie den Übernahmeschritt vom Arbeitsschritt. Ein Worker übernimmt den Vorgangsschlüssel, führt die Aktion aus, zeichnet den Erfolg auf und gibt die Sperre gemäß einer dokumentierten Regel frei oder lässt sie nach einem Fehler ablaufen. Dadurch wird verhindert, dass zwei gleichzeitig laufende Container dasselbe Objekt verarbeiten, während nach einem Absturz weiterhin eine Wiederherstellung möglich ist.
Die Erklärung von ZimaSpace zu Hintergrundarbeiten von Home Assistant nach Änderungen hilft dabei, Neuladungen, erneute Verarbeitung und nachgelagerte Aufträge zu erkennen, die wie Duplikate wirken können, tatsächlich aber an unterschiedlichen Stellen beginnen.
Die Vermeidung von Duplikaten vor dem Einsatz testen
Spielen Sie dasselbe Ereignis zweimal ab, senden Sie zwei Ereignisse kurz nacheinander, starten Sie das System während des Auftrags neu, simulieren Sie ein Timeout nach dem Commit am Ziel und starten Sie kurzzeitig einen zweiten Worker in einer isolierten Testumgebung. Jeder Fall sollte entweder genau einen abgeschlossenen Nebeneffekt oder ein klar in die Warteschlange eingereihtes zweites Ereignis erzeugen, wenn beide Ereignisse legitim sind.
Prüfen Sie auch die entgegengesetzte Grenze: Zwei tatsächlich unterschiedliche Ereignisse dürfen nicht zu einem einzigen Vorgangsschlüssel zusammenfallen. Kontrollieren Sie Traces, Zieldatensätze, den Gerätezustand und den Idempotenzspeicher, damit die Vermeidungsregel nicht unbemerkt gültige Arbeit verwirft.
Wenn bereits ein Duplikat aufgetreten ist, pausieren Sie die Quelle, sichern Sie Traces und Zielkennungen, machen Sie nur sicher rückgängig zu machende Nebeneffekte rückgängig und beheben Sie die Ursache vor einer erneuten Verarbeitung. Eskalieren Sie Integrationen, die doppelte Ereignis-IDs ausgeben oder dokumentierte Ausführungssemantiken ignorieren, mit einer minimalen reproduzierbaren Fehlerbeschreibung.
Support & Tipps
Mehr zum Lesen

So optimieren Sie Datenbankverbindungen von Home Assistant für gleichzeitig ausgeführte Container
Eine externe Recorder-Datenbank anhand der gemessenen aktiven Verbindungen und Latenz abstimmen, nicht durch Erhöhen der maximalen Verbindungsanzahl oder Kopieren des Verbindungspools eines anderen Hosts.

So reparieren Sie Home Assistant, nachdem das Datenbank-Volume vollgelaufen ist
Eine vollständig belegte Recorder-Partition wiederherstellen, ohne zuvor Beweise zu löschen, anschließend das Wachstum reduzieren und nachweisen, dass Verlauf und Automatisierungen einen Neustart überstehen.

Warum erstellt Home Assistant fehlende Dateien mit dem falschen Besitzer neu?
Gleiche die Laufzeit-UID und -GID an den Host-Pfad an, repariere nur die betroffenen Dateien im gestoppten Zustand und überprüfe den Besitz nach der Neuerstellung.

