Skip to content

fix: presence_light v2.1.0 — „Licht geht einfach aus" behoben (Türkontakt-Hold, robuste Tür-Trigger, Timer-Refresh) - #5

Merged
magicx78 merged 1 commit into
mainfrom
claude/presence-light-v2-behavior-0h5s2v
Jul 18, 2026
Merged

magicx78 merged 1 commit into
mainfrom
claude/presence-light-v2-behavior-0h5s2v

Conversation

@magicx78

Copy link
Copy Markdown
Owner

Problem

Beim Blueprint Presence & Light v2 (blueprints/automation/presence_light.yaml) ging das Licht manchmal unerwartet aus, obwohl jemand anwesend war. Die Logik-Analyse (plus unabhängiges Zweit-Review) hat mehrere konkrete Ursachen im Code bestätigt.

Ursachen & Fixes

# Defekt Fix
B1 Modus „Deaktiviert": Bewegung schaltete das Licht ein, hielt es aber nicht → Aus nach Timer-Ablauf trotz Bewegung Neues v_activation_event ignoriert Motion-Events bei Modus off vollständig
B2 Türkontakte hielten das Licht nie (v_contact_active war toter Code) Opt-in Input door_contact_hold (default false = Alt-Verhalten): Modus „Offen" hält bei offener, „Zu" bei geschlossener Tür (Bad); „Beides"/„Aus" halten nie. Endet der Hold, re-armt FALL 2 den Ausschalt-Timer
B3 Tür-Trigger feuerte bei jedem Wechsel, auch → unavailable/unknown und Attribut-Updates Zwei Trigger door_open (off→on) / door_closed (on→off) filtern schon im Trigger
B4 Hauptursache für „manchmal": Dunkelheits-Gate blockierte auch den Timer-Refresh (Lux-Rückkopplung: Licht macht Raum hell). Timer lief unbemerkt ab und traf Präsenz-Aussetzer → Licht aus FALL-1-Gate ist jetzt v_any_light_on or v_is_dark: Refresh läuft bei brennendem Licht immer, Einschalten bleibt dunkel-gated
B5 Ausschalten ohne Prüfung, ob überhaupt ein Ziel-Licht an ist FALL 3 zusätzlich mit v_any_light_on (fremde/verwaiste Timer-Events = No-Op) + Doku (dedizierter Timer, restore, Sperr-Schalter)
B6 Kein source_url, keine Version source_url + Versionsheader + Changelog → Re-Import-Updates jetzt möglich

Kompatibilität

  • Keine Input-Keys geändert — Bestandsautomationen laufen nach Re-Import unverändert (neues Feld default aus)
  • min_version bleibt 2024.6.0, Legacy-Syntax beibehalten
  • Trigger-IDs intern umbenannt (motion_on/presence_on/door_open/…) — nur in Traces sichtbar
  • VERSION 1.5.0 → 1.6.0 (Release-Workflow feuert beim Merge)

Verifikation

  • yamllint -d relaxed + CI-Schema-Check lokal grün
  • Jinja2-Simulation der echten Template-Strings aus der YAML: 9.216 Fälle (Modus × Kontaktmodus × Hold × Event × Licht × Dunkel × Sensorzustände inkl. unavailable) gegen 10 Invarianten — u. a. „Modus off + Motion-Event ⇒ No-Op", „turn_on nur dunkel + Licht aus", „Hold aktiv ⇒ kein Ausschalten", „ohne Hold exakt Alt-Timing"
  • 4 End-to-End-Regressionsstories (B1, B2 offen, B2 „Zu"/Bad, B4) + statische Trigger-Checks

🤖 Generated with Claude Code

https://claude.ai/code/session_01PatLMopfrgXcUDYtp4j8gk


Generated by Claude Code

…mer-Refresh, Modus "Deaktiviert"

Behebt "Licht geht manchmal einfach aus":
- Modus "Deaktiviert" ignoriert Bewegungsmelder jetzt vollständig
  (vorher: einschalten ja, halten nein -> Aus trotz Bewegung)
- Timer-Refresh läuft bei brennendem Licht immer; Dunkelheitsprüfung
  gated nur noch das Einschalten (Lux-Rückkopplung blockierte den
  Refresh, Timer-Ablauf traf Präsenz-Aussetzer -> Licht aus)
- Tür-Trigger nur noch bei echten offen/zu-Übergängen (from/to);
  unavailable/unknown und Attribut-Updates lösen nichts mehr aus
- Neu (Opt-in, default aus): Türkontakt-Hold — offene Tür (Modus
  "Offen") bzw. geschlossene Tür (Modus "Zu") hält das Licht; endet
  der Hold, startet der Ausschalt-Timer neu
- Ausschalten nur noch, wenn mind. ein Ziel-Licht an ist
- source_url + Versionsheader (Re-Import-Updates), Doku-Hinweise
  (dedizierter Timer + restore, Sperr-Schalter als Override)
- Keine Input-Keys geändert; Bestandsautomationen laufen unverändert

Verifikation: yamllint relaxed, CI-Schema-Check, Jinja2-Simulation der
echten Templates (9216 Fälle, Invarianten I1-I10, 4 Regressionsstories)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PatLMopfrgXcUDYtp4j8gk
@magicx78
magicx78 marked this pull request as ready for review July 18, 2026 06:32
@magicx78
magicx78 merged commit 5605fa6 into main Jul 18, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants