--- ## Cíl změny Nahradit nestabilní kontrolu „jednoho světla“ (`light_state_check_entity`) spolehlivou detekcí přes pomocný přepínač (`input_boolean`), který reprezentuje fakt: **automatizace v tomto běhu opravdu provedla rozsvícení**. Toggle slouží **výhradně** pro rozhodnutí: * zda se má zapsat `last_turnoff_helper` (čas posledního zhasnutí) Toggle se **nesmí** použít: * jako podmínka pro zhasnutí světel * jako podmínka pro blokace / režimy * jako náhrada stavu světel --- ## Co se odstraní / nahradí ### 1) Odstranit input `light_state_check_entity` * Smazat z blueprint input sekce: * `light_state_check_entity` (Hlavní světlo pro kontrolu rozsvícení) * Smazat proměnnou: * `light_check_entity: !input light_state_check_entity` * Smazat podmínku na konci: * `- condition: state entity_id: !input light_state_check_entity state: "on"` ### 2) Přidat (nebo zachovat) input `light_turned_on_flag` * Blueprint musí obsahovat input: * `light_turned_on_flag` (entity domain: `input_boolean`) * Pokud tam už je, pouze potvrdit význam v popisu: * „automatizace ho zapíná jen při rozsvícení; používá se jen pro rozhodnutí o zápisu času do last_turnoff_helper“ --- ## Jak se má flag nastavovat ### 3) Nastavit flag na ON pouze v místě, kde se skutečně rozsvěcí V každé větvi, kde je provedené `light.turn_on`, přidat bezprostředně po něm: * `service: input_boolean.turn_on` * `target.entity_id: !input light_turned_on_flag` Tj. vždy: * po rozsvícení v denním režimu (RGB i Kelvin) * po rozsvícení v nočním režimu (RGB i Kelvin) * po rozsvícení ve větvi „skip lux check“ * po rozsvícení ve větvi „recheck lux“ * po rozsvícení při první lux kontrole **Zásada:** Pokud se `light.turn_on` neprovede, flag se na ON nikdy nedá. ### 4) Flag se na začátku neresetuje * Žádné „reset na začátku akce“. * Důvod: nechceme „přepsat historii“ předčasně; flag je jen evidence, že se v tomto běhu rozsvítilo. --- ## Kdy se má flag vypnout ### 5) Flag vypnout jen v jednoznačných koncových stavech Flag se přepne na OFF pouze v těchto situacích: **A) Po doběhnutí sekvence zhasnutí (úplně na konci)** * v casti uložení času **B) Ve větvích, kde je jisté, že se světlo nerozsvítí a běh nemá pokračovat** Typicky: * „špatný režim“ (není aktivní den ani noc / toggly vypnuté / čas mimo režim) * „lux nevyhověl“ a zároveň po všech recheck pokusech nebylo rozsvícení V těchto větvích explicitně provést: * `input_boolean.turn_off` na flag **Poznámka:** Ve větvích, kde automatizace ještě může pokračovat (např. čekání na timeout), se do flagu nesahá. --- ## Jak se má řešit zápis last_turnoff_helper ### 6) Zápis času posledního zhasnutí se provede pouze pokud flag = ON Před službou: * `input_datetime.set_datetime` (last_turnoff_helper) vložit podmínku: * `condition: state` * `entity_id: !input light_turned_on_flag` * `state: "on"` Tím je zajištěno: * když automatizace nikdy nerozsvítila, **nezapíše** čas vypnutí --- ## Jak se má řešit zhasnutí světel ### 7) Zhasnutí světel zůstává nezávislé na flagu * `light.turn_off` zůstane řízené původní logikou (timeout + motion off + manual_override off…) * žádné nové podmínky typu „jen když flag ON“ pro `light.turn_off` * flag slouží jen pro `input_datetime.set_datetime`