Skip to content

Releases: Cebbas/roomflow

RoomFlow v0.0.67

Choose a tag to compare

@github-actions github-actions released this 08 Oct 14:08

~4s (step 10 every 150ms) was a bit too fast to let go at the wanted
level. Step 8 every 200ms gives ~6.5s and ~5 writes/s to the mesh.


Installation

HACS: Integrations → ⋮ → Custom repositories → add this repo as an Integration → search RoomFlow → install → restart Home Assistant.
Manual: download roomflow.zip below and extract it to your custom_components/ folder.

Full Changelog: v0.0.66...v0.0.67

RoomFlow v0.0.66

Choose a tag to compare

@github-actions github-actions released this 08 Oct 14:06

Each _start_hold_dim tick read the light's current brightness from
hass.states and stepped from there. Plejd only reports a new brightness
seconds after a write, so every tick recomputed from the same stale
value and re-sent the same target: a 4s hold on vardagsrum_taklampa
moved it 255 -> 245 and stopped. The ramp now takes the brightness once
at the start of the hold and keeps a running level.

HOLD_DIM_INTERVAL_SECONDS goes from 0.05 to 0.15 so a full sweep takes
~4s (was ~1.3s once the ramp really moves) and the mesh gets ~7 writes/s
instead of ~20.


Installation

HACS: Integrations → ⋮ → Custom repositories → add this repo as an Integration → search RoomFlow → install → restart Home Assistant.
Manual: download roomflow.zip below and extract it to your custom_components/ folder.

Full Changelog: v0.0.65...v0.0.66

RoomFlow v0.0.65

Choose a tag to compare

@github-actions github-actions released this 08 Oct 12:03

The patched Plejd event entity reports single_press / long_press /
release, with long_press fired while the button is still held. The hold
handler read long_press as a bare press and waited another
DEFAULT_LONG_PRESS_MS before ramping, so dimming started about a second
after pressing; single_press/double_press also counted as a press.
long_press is now a confirmed hold that starts the ramp at once, and
completed taps are ignored. Bare press/release (stock Plejd, others)
behaves as before.

A ramp also stops itself at full/minimum brightness and after
HOLD_DIM_MAX_SECONDS (15s), so a missing release can no longer leave it
sending light.turn_on every 50ms forever.

Label edits on entities/devices re-apply the rooms right away while a
season is linked to a label (_handle_label_change).


Installation

HACS: Integrations → ⋮ → Custom repositories → add this repo as an Integration → search RoomFlow → install → restart Home Assistant.
Manual: download roomflow.zip below and extract it to your custom_components/ folder.

Full Changelog: v0.0.64...v0.0.65

RoomFlow v0.0.64

Choose a tag to compare

@github-actions github-actions released this 08 Oct 11:50

Ambient re-applies skip a device whose target signature hasn't changed
since RoomFlow last applied it, to keep manual changes. On the home ->
away transition that also skipped lights switched on by hand while
their target was already "off" (under an off-resolving Mys/Natt
condition, say), so they stayed on after everyone left - seen live on
2026-10-08 with nadines_rum_takbelysning and vardagsrum_taklampa.

_turn_off_scenes_on_leave now reports whether this call was the
transition, and _handle_relevant_change re-applies all rooms with
respect_manual_override=False in that case. Motion-controlled devices
are still skipped and time out on their own.


Installation

HACS: Integrations → ⋮ → Custom repositories → add this repo as an Integration → search RoomFlow → install → restart Home Assistant.
Manual: download roomflow.zip below and extract it to your custom_components/ folder.

Full Changelog: v0.0.63...v0.0.64

RoomFlow v0.0.63

Choose a tag to compare

@github-actions github-actions released this 07 Oct 19:43

The season row only said how many lamps the labels picked up, and
listed just the ones missing from a room, with no way to see which
lamps a label actually matched.

Both linked labels ("Jul" / "Ej Jul") now get their own line - label
name plus "N found, M in a room" - with an arrow that expands the full
alphabetical list of labelled lamps and the room each is in, or "not
added to any room" (_renderSeasonLabelInfo, open state in
_openSeasonLabels, collapsed by default).


Installation

HACS: Integrations → ⋮ → Custom repositories → add this repo as an Integration → search RoomFlow → install → restart Home Assistant.
Manual: download roomflow.zip below and extract it to your custom_components/ folder.

Full Changelog: v0.0.62...v0.0.63

RoomFlow v0.0.62

Choose a tag to compare

@github-actions github-actions released this 07 Oct 19:07

Seasonal lights (a Christmas star group, the lamp it replaces) couldn't
be migrated - RoomFlow had no notion of a season, only conditions that
replace a device's whole behavior and outrank weekend/away.

A new house-wide cfg.seasons list, edited at the top of the "House &
floors" tab. Each season gets its own RoomFlow-managed switch
(switch.roomflow_season_) toggled by hand - no dates. Per device,
"Only during" keeps it off unless the season is on, "Off during" keeps
it off while the season is on (_device_season_blocked). Enforced on
every path that could turn a device on: ambient re-applies, motion and
manual button toggles; a motion-controlled device is turned off right
away when its season changes.

A season can also be linked to two HA labels, pre-linked by name on
creation: label_id ("Jul") implies "Only during", hide_label_id
("Ej Jul") implies "Off during", for any device whose entity or device
carries it (_device_season_rules). An explicit per-device choice,
including a "Not affected" opt-out, still wins. list_entities now
returns each entity's labels so the card can show which lamps a label
picks up and which aren't in any room yet.


Installation

HACS: Integrations → ⋮ → Custom repositories → add this repo as an Integration → search RoomFlow → install → restart Home Assistant.
Manual: download roomflow.zip below and extract it to your custom_components/ folder.

Full Changelog: v0.0.61...v0.0.62

RoomFlow v0.0.61

Choose a tag to compare

@github-actions github-actions released this 07 Oct 18:29

A Mys/Städning/Natt scene left on when everyone leaves kept winning over
the away tier (conditions outrank away in _pick_behavior), so its lights
stayed as the scene wanted for the whole time the house was empty.

Any house/floor/room condition can now carry off_when_away. On a
home -> away transition (_turn_off_scenes_on_leave, run at the start of
_handle_relevant_change) every active condition flagged this way gets
homeassistant.turn_off before the rooms are re-applied. Only the
transition itself triggers it, and last_home_state is seeded at setup so
a restart while already away doesn't count as a departure. The card gets
an "Off when away" toggle on every condition row.


Installation

HACS: Integrations → ⋮ → Custom repositories → add this repo as an Integration → search RoomFlow → install → restart Home Assistant.
Manual: download roomflow.zip below and extract it to your custom_components/ folder.

Full Changelog: v0.0.60...v0.0.61

RoomFlow v0.0.60

Choose a tag to compare

@Cebbas Cebbas released this 23 Sep 09:58

The v0.0.56 fix skips re-applying motion-on when a device already reads
"on" with nothing pending. But _turn_off_device's light.turn_off call to
a Plejd entity is a fire-and-forget mesh write - the entity's reported
state only updates once (if ever) the mesh confirms it - so
hass.states.get(...).state could keep reading "on" well after
RoomFlow's own motion-off timer had already fired and sent the real off
command. Reported live: Toa's ceiling light stopped responding to fresh
motion after its own timeout ran.

Tracks RoomFlow's own turn-off intent directly now
(hass.data[DOMAIN]["motion_expected_off"], set in _turn_off_device,
cleared in _apply_motion_device_on) instead of trusting that
potentially-stale read for the skip decision, in both motion-on code
paths in _handle_motion_change. A device RoomFlow hasn't itself just
turned off still gets the original optimization (no flicker); one it
has is never mistaken for "already fine, nothing to do".


Installation

HACS: Integrations → ⋮ → Custom repositories → add this repo as an Integration → search RoomFlow → install → restart Home Assistant.
Manual: download roomflow.zip below and extract it to your custom_components/ folder.

Full Changelog: v0.0.59...v0.0.60

RoomFlow v0.0.59

Choose a tag to compare

@github-actions github-actions released this 23 Sep 07:37

Adds auto_off_time_weekend as an optional second daily-off time
alongside auto_off_time. Needed because this house's own schedule has
"morning" starting at a different clock time on weekdays (06:00) than
weekends (07:00) - a single flat auto-off time can't "hold as night
until morning actually starts" on both without either cutting a
weekday short or leaving a weekend gap. When both are set, each only
fires on its own day type (via the same get_day_type_fn periods
already resolve with); leaving auto_off_time_weekend blank keeps the
existing every-day behavior exactly as before.

Moved all 9 Natt switches from a flat 05:00 to 06:00 weekdays / 07:00
weekends, matching the morning/weekend_morning periods exactly.


Installation

HACS: Integrations → ⋮ → Custom repositories → add this repo as an Integration → search RoomFlow → install → restart Home Assistant.
Manual: download roomflow.zip below and extract it to your custom_components/ folder.

Full Changelog: v0.0.58...v0.0.59

RoomFlow v0.0.58

Choose a tag to compare

@github-actions github-actions released this 23 Sep 07:22

Adds auto_off_time to a managed condition (a time picker in the card,
next to any managed condition's row): the switch turns itself off at
that time every day, re-registered live on every config save so editing
the time takes effect immediately with no entity recreation needed
(_setup_auto_off/_handle_auto_off in switch.py, reusing init.py's
_parse_hms and the async_track_time_change pattern already used for
period time boundaries).

Replaces this household's standalone natt_till_morgon YAML automation,
which needed hand-updating every time a Natt switch was added or
renamed - and had in fact silently broken during this session's earlier
rename (still targeting a dead pre-rename entity_id). Set all 9 Natt
switches to 05:00:00 and removed the now-redundant automation entirely.


Installation

HACS: Integrations → ⋮ → Custom repositories → add this repo as an Integration → search RoomFlow → install → restart Home Assistant.
Manual: download roomflow.zip below and extract it to your custom_components/ folder.

Full Changelog: v0.0.57...v0.0.58