feat: add per-room temperature thresholds

Issue: #487
User-Visible: yes
This commit is contained in:
Matysh
2026-09-08 10:44:13 +03:00
parent d2d9b1ac5d
commit e2751062dc
73 changed files with 1465 additions and 864 deletions
+6
View File
@@ -1421,6 +1421,12 @@ Full View and hosted Static use the same resolver and bounded active render
snapshot, so a state tick cannot update a temperature fill through a different
membership rule.
Per-room comfort bounds are resolved by `roomTempRangeOf()`: each absent or
invalid room side independently inherits the space side, then the effective
pair is normalised. Both full and static renderers pass that one result into
`resolveEffectiveRoomFill()`, keeping room polygons and thick-opening tunnels
in the same temperature band without another climate aggregation pass.
**File uploads go over HTTP** (not WS, which has a message-size limit): `POST /api/houseplan/upload`
(multipart: marker_id + file), HomeAssistantView, requires_auth. Served from `/houseplan_files/files/`.
+4
View File
@@ -7,6 +7,10 @@
before the element is defined and sizes itself from the viewport instead of
its height-less container, so the page is no longer blank with a 0 px stage
([#488](https://github.com/Matysh/houseplan-card/issues/488)).
- Each room can now override the lower and upper comfort-temperature bounds.
Either blank field independently inherits its space value; the setting only
affects the room and opening-tunnel temperature fill
([#487](https://github.com/Matysh/houseplan-card/issues/487)).
## v1.73.0-beta.5 — 2026-09-08
+4
View File
@@ -13,6 +13,10 @@
определения элемента, и берёт высоту от viewport, а не от контейнера без
высоты — страница больше не пустая со стейджем 0 px
([#488](https://github.com/Matysh/houseplan-card/issues/488)).
- В настройках отдельной комнаты теперь можно задать собственные нижнюю и
верхнюю границы комфортной температуры. Каждая пустая граница независимо
наследуется от пространства; настройка меняет только температурную заливку
комнаты и проёмов ([#487](https://github.com/Matysh/houseplan-card/issues/487)).
## v1.73.0-beta.5 — 2026-09-08
+9
View File
@@ -525,6 +525,15 @@ the Glow base. `none` remains accepted by the model and exposed at room level,
where it is still required to suppress an inherited
LQI/light/temperature/custom fill for one room.
Rooms may also store optional `settings.temp_min` and `settings.temp_max`
finite numbers. Each absent or explicit `null` side independently inherits
`space.settings.temp_min` / `temp_max` (and then the product default). The
effective pair is sorted only at the read boundary, so a partial override is
not materialised merely because its inherited counterpart crosses it. Current
writers sort two explicitly entered values and omit cleared keys. The fields
affect only temperature room/tunnel fills. Older cards ignore them and may
erase them if they rebuild that room's settings after a downgrade.
## Per-marker light role and Glow appearance
`marker.is_light` is tri-state. Missing/null means automatic device-role
+6
View File
@@ -819,6 +819,12 @@ Plan, Background, preview and the read-only static card add no tab stop.
Space fill modes include user colour, temperature comfort range and LQI. Room
settings may override the space. Glow is independent from the base fill.
When a room effectively uses the temperature fill, its settings show optional
lower and upper comfort bounds. Each blank field independently inherits the
matching space bound, and **As the space** clears both overrides. The range
changes only the room floor and opening-tunnel fill; room-card and tooltip
temperature values are unchanged.
A light source may come from automatic classification, an explicit Always
role, or a controlled source group. Walls, partitions and columns occlude Glow;
open passages transmit it. When a configured light source disappears or loses
+8 -1
View File
@@ -1338,9 +1338,16 @@ Power=`off`/`unavailable` подавляет даже устаревший ак
|---|---|
| Общие настройки | Цвет и прозрачность состояний данных, настройки Glow вместе с его радиусом, цвет стен |
| Пространство | Режим заливки, свой цвет и прозрачность, независимый переключатель Glow, температурные границы, показ LQI, фон |
| Комната | Наследовать или явно выбрать Нет/LQI/Свет/Температуру/свой цвет; свой цвет наследуется от пространства и может быть сброшен; пока наследует Glow пространства |
| Комната | Наследовать или явно выбрать Нет/LQI/Свет/Температуру/свой цвет; задать собственные нижнюю и верхнюю границы температуры; свой цвет и каждая пустая температурная граница наследуются от пространства; пока наследует Glow пространства |
| Устройство | Выбрать Авто/Всегда/Никогда для собственной световой роли, цвет и яркость Glow, радиус свечения |
При температурной заливке в настройках комнаты появляется диапазон комфорта.
Можно переопределить обе границы или только одну: пустое поле всегда следует
соответствующей границе пространства. Кнопка «Как у пространства» очищает оба
переопределения. Эти значения меняют только цвет пола комнаты и продолжение
этой заливки внутри толстых проёмов — температура в карточке и подсказке
остаётся прежней.
### Что считается светом
| Источник | Заливка «Свет» | Световое пятно Glow | Жёлтая подложка устройства |