Plugin Lifecycle Hooks (Lebenszyklus-Funktionen)¶
Aura SL5 unterstützt sogenannte Lifecycle-Hooks. Diese ermöglichen es Plugins (Maps), automatisch speziellen Code auszuführen, wenn sich ihr Status ändert.
Der on_reload() Hook¶
Die Funktion on_reload() ist eine optionale Funktion, die du in jeder Plugin-Datei (.py) definieren kannst.
Verhalten¶
Auslöser: Diese Funktion wird unmittelbar ausgeführt, nachdem das Modul erfolgreich per Hot-Reload neu geladen wurde (also nach einer Dateiänderung und dem darauffolgenden Sprach-Trigger).
Kontext: Sie läuft im normalen Programmfluss der Anwendung.
Geltungsbereich: Sie wird NICHT beim initialen Start (Kaltstart) des Systems ausgeführt. Sie dient ausschließlich Szenarien, in denen eine Karte während der Laufzeit bearbeitet und neu geladen wurde.
Anwendungsfälle¶
Sicherheit: Automatisches Wieder-Verschlüsseln oder Packen (Zippen) von sensiblen Dateien, nachdem man sie bearbeitet hat.
Status-Management: Zurücksetzen von globalen Zählern, Variablen oder das Leeren spezifischer Caches.
Validierung: Prüfen, ob eine Konfigurationsdatei nach der Änderung noch gültig ist.
Technische Details & Sicherheit¶
Fehler-Toleranz: Der Aufruf ist in einen
try/except-Block gekapselt. Wenn deineon_reload-Funktion abstürzt (z. B. durch eine Division durch Null), wird ein Fehler geloggt (❌ Error executing on_reload...), aber Aura stürzt nicht ab.Performance: Die Funktion läuft synchron im Hauptprozess. Vermeide langwierige Aufgaben (wie große Downloads oder Sleep-Timer) direkt in dieser Funktion, da sie die Sprachverarbeitung kurzzeitig blockieren würden. Für schwere Aufgaben sollte ein eigener Thread gestartet werden.
Code-Beispiel¶
# config/maps/plugins/mein_plugin/de-DE/meine_karte.py
def execute(data):
# Normale Logik für den Sprachbefehl
pass
# --- LIFECYCLE HOOK ---
def on_reload():
"""
Wird automatisch aufgerufen, wenn diese Datei geändert
und von Aura neu geladen wurde.
"""
import logging
logger = logging.getLogger(__name__)
logger.info("🔄 Plugin wurde aktualisiert! Führe Aufräumarbeiten durch...")
# Beispiel: Prüfen, ob Hilfsdateien existieren
# check_dependencies()