Repository navigation
Releases: sandreialexandru/Smart-Heating-Control
Release list
Smart Heating Control v2.6.2b8
Integration
- 🔥 Start and stop the source by its temperature (#6):
a thermostat as the heat source of the house (Hive, Nest, Tado, Netatmo, a
Generic Thermostat) starts the boiler only by its own target and sensor, so
switched to heat with a low target it never fired it. Now, like a TRV
heated by the room sensors, it stays in its heat mode and gets the Maximum temperature of the
house to start (not above its own maximum) and the Frost protection of the
house to stop (not below its minimum): the boiler fires when the rooms ask,
and the thermostat still protects against frost if Home Assistant stops. A
target set on it by hand is taken back. New option Start and stop the source by its temperature
(Heat source and heat demand → Heat source), on by default; off keeps the
old behaviour (only its mode, heat / off). A thermostat without a target
temperature is still switched by its mode. - 🌡️ Heat source idle temperature (optional, with Start and stop the source by its temperature): what the
thermostat source gets while no room asks, instead of the frost protection
(e.g. 17.5 °C for a hallway thermostat that also heats radiators without
TRVs). Below the maximum of the house.
Setup
- 🏷️ Clearer choices for the heating of the whole house. Other thermostats
/ TRVs is now Another thermostat for the whole home, and No heating
devices yet is now Each room heats separately (TRVs, heaters, AC): a
house with TRVs on the radiators picks the second one and adds its rooms.
Only the labels and the explanations change; existing houses are not
affected. The guide has a new section, Which setup for my house?, with
every kind of home, and the configurator a new case for a thermostat that
starts the boiler. - 🏷️ No more options called boost. For the whole-house zone, Boost TRV
temperature while heating is now Heat by the room sensors (also for a
thermostat, not only for TRVs), with its page Heating by the room sensors.
For a room it is now Heat by the room sensor, with its page Heating by
the room sensor (was TRV boost); Boost temperature is now Temperature
while heating in both. For the heat source the new option is Start and
stop the source by its temperature. The explanation of each says when to
choose the other one. The card shows By the room sensor instead of TRV
boost. The explanations of the zone and of the room options now say what
the devices get while heating: the Temperature while heating, by default
the maximum temperature of the house. Only the labels and the explanations
change; the settings are kept.
Card
- 🔌 Devices in the Details: every entity of the room (thermostats,
relays, temperature and humidity sensors, windows, occupancy, calibration)
with its role and its state now; an unavailable, unknown or missing one is
marked, a tap opens it. Newdevicesattribute of the Decision sensor.
Development
- 🧪 Tests for what mutation testing found unchecked: the coldest wall below
0 °C outside and the mold thresholds, distances between coordinates and a
zone without them, far → nearby as an arrival, times like 24:00 or 06:60,
the start of a schedule day that does not begin at midnight, the highest
sun of the day in Bucharest in June and November, the clouds of every
weather condition, and the renaming of a whole-house zone named like the
house. - 🧪 Tests from the first full mutation run (Python 62.8 %, card 30.2 % of
the mutants noticed): the limit of ±3 °C on the adjustments, the levels
exactly at the maximum or the frost protection, the edges of the band with
the learned inertia, no optimal stop when it is off and the ones exactly on
time, the texts in °F, which stretches the learning uses, the time to the
target and the expected temperature during an optimal stop, every attribute
of the Decision sensor, a preset or an hvac mode set by hand coming back
after a window, the calibration within the range of its number, the valve
exercise (5 minutes, after a manual change, only on its day), the alert for
rooms that stay cold; in the card the history, the prediction and the
tooltip values, and every button (mode, pause, guests, buttons of the
house and the room, a temperature for a while, vacation dates, the
heating time period, the schedule editor and its profiles). - 🧬 The card's mutation jobs are split by how many mutants their lines have
(12 jobs of about 400), not by equal lines (from 74 to 919).
Smart Heating Control v2.6.2b7
Integration
- 🔥 Start and stop the source by its temperature (#6):
a thermostat as the heat source of the house (Hive, Nest, Tado, Netatmo, a
Generic Thermostat) starts the boiler only by its own target and sensor, so
switched to heat with a low target it never fired it. Now, like a TRV
heated by the room sensors, it stays in its heat mode and gets the Maximum temperature of the
house to start (not above its own maximum) and the Frost protection of the
house to stop (not below its minimum): the boiler fires when the rooms ask,
and the thermostat still protects against frost if Home Assistant stops. A
target set on it by hand is taken back. New option Start and stop the source by its temperature
(Heat source and heat demand → Heat source), on by default; off keeps the
old behaviour (only its mode, heat / off). A thermostat without a target
temperature is still switched by its mode. - 🌡️ Heat source idle temperature (optional, with Start and stop the source by its temperature): what the
thermostat source gets while no room asks, instead of the frost protection
(e.g. 17.5 °C for a hallway thermostat that also heats radiators without
TRVs). Below the maximum of the house.
Setup
- 🏷️ Clearer choices for the heating of the whole house. Other thermostats
/ TRVs is now Another thermostat for the whole home, and No heating
devices yet is now Each room heats separately (TRVs, heaters, AC): a
house with TRVs on the radiators picks the second one and adds its rooms.
Only the labels and the explanations change; existing houses are not
affected. The guide has a new section, Which setup for my house?, with
every kind of home, and the configurator a new case for a thermostat that
starts the boiler. - 🏷️ No more options called boost. For the whole-house zone, Boost TRV
temperature while heating is now Heat by the room sensors (also for a
thermostat, not only for TRVs), with its page Heating by the room sensors.
For a room it is now Heat by the room sensor, with its page Heating by
the room sensor (was TRV boost); Boost temperature is now Temperature
while heating in both. For the heat source the new option is Start and
stop the source by its temperature. The explanation of each says when to
choose the other one. The card shows By the room sensor instead of TRV
boost. Only the labels and the explanations change; the settings are kept.
Card
- 🔌 Devices in the Details: every entity of the room (thermostats,
relays, temperature and humidity sensors, windows, occupancy, calibration)
with its role and its state now; an unavailable, unknown or missing one is
marked, a tap opens it. Newdevicesattribute of the Decision sensor.
Development
- 🧪 Tests for what mutation testing found unchecked: the coldest wall below
0 °C outside and the mold thresholds, distances between coordinates and a
zone without them, far → nearby as an arrival, times like 24:00 or 06:60,
the start of a schedule day that does not begin at midnight, the highest
sun of the day in Bucharest in June and November, the clouds of every
weather condition, and the renaming of a whole-house zone named like the
house. - 🧪 Tests from the first full mutation run (Python 62.8 %, card 30.2 % of
the mutants noticed): the limit of ±3 °C on the adjustments, the levels
exactly at the maximum or the frost protection, the edges of the band with
the learned inertia, no optimal stop when it is off and the ones exactly on
time, the texts in °F, which stretches the learning uses, the time to the
target and the expected temperature during an optimal stop, every attribute
of the Decision sensor, a preset or an hvac mode set by hand coming back
after a window, the calibration within the range of its number, the valve
exercise (5 minutes, after a manual change, only on its day), the alert for
rooms that stay cold; in the card the history, the prediction and the
tooltip values, and every button (mode, pause, guests, buttons of the
house and the room, a temperature for a while, vacation dates, the
heating time period, the schedule editor and its profiles). - 🧬 The card's mutation jobs are split by how many mutants their lines have
(12 jobs of about 400), not by equal lines (from 74 to 919).
Smart Heating Control v2.6.2b6
Integration
- 🔥 Start and stop the source by its temperature (#6):
a thermostat as the heat source of the house (Hive, Nest, Tado, Netatmo, a
Generic Thermostat) starts the boiler only by its own target and sensor, so
switched to heat with a low target it never fired it. Now, like a TRV
heated by the room sensors, it stays in its heat mode and gets the Maximum temperature of the
house to start (not above its own maximum) and the Frost protection of the
house to stop (not below its minimum): the boiler fires when the rooms ask,
and the thermostat still protects against frost if Home Assistant stops. A
target set on it by hand is taken back. New option Start and stop the source by its temperature
(Heat source and heat demand → Heat source), on by default; off keeps the
old behaviour (only its mode, heat / off). A thermostat without a target
temperature is still switched by its mode. - 🌡️ Heat source idle temperature (optional, with Start and stop the source by its temperature): what the
thermostat source gets while no room asks, instead of the frost protection
(e.g. 17.5 °C for a hallway thermostat that also heats radiators without
TRVs). Below the maximum of the house.
Setup
- 🏷️ Clearer choices for the heating of the whole house. Other thermostats
/ TRVs is now Another thermostat for the whole home, and No heating
devices yet is now Each room heats separately (TRVs, heaters, AC): a
house with TRVs on the radiators picks the second one and adds its rooms.
Only the labels and the explanations change; existing houses are not
affected. The guide has a new section, Which setup for my house?, with
every kind of home, and the configurator a new case for a thermostat that
starts the boiler. - 🏷️ Two options that were both called boost now have their own names. For
the whole-house zone, Boost TRV temperature while heating is now Heat by
the room sensors (also for a thermostat, not only for TRVs), with its own
page Heating by the room sensors. For the heat source the new option is
Start and stop the source by its temperature. The explanation of each
says when to choose the other one. Only the labels and the explanations
change.
Card
- 🔌 Devices in the Details: every entity of the room (thermostats,
relays, temperature and humidity sensors, windows, occupancy, calibration)
with its role and its state now; an unavailable, unknown or missing one is
marked, a tap opens it. Newdevicesattribute of the Decision sensor.
Development
- 🧪 Tests for what mutation testing found unchecked: the coldest wall below
0 °C outside and the mold thresholds, distances between coordinates and a
zone without them, far → nearby as an arrival, times like 24:00 or 06:60,
the start of a schedule day that does not begin at midnight, the highest
sun of the day in Bucharest in June and November, the clouds of every
weather condition, and the renaming of a whole-house zone named like the
house. - 🧪 Tests from the first full mutation run (Python 62.8 %, card 30.2 % of
the mutants noticed): the limit of ±3 °C on the adjustments, the levels
exactly at the maximum or the frost protection, the edges of the band with
the learned inertia, no optimal stop when it is off and the ones exactly on
time, the texts in °F, which stretches the learning uses, the time to the
target and the expected temperature during an optimal stop, every attribute
of the Decision sensor, a preset or an hvac mode set by hand coming back
after a window, the calibration within the range of its number, the valve
exercise (5 minutes, after a manual change, only on its day), the alert for
rooms that stay cold; in the card the history, the prediction and the
tooltip values, and every button (mode, pause, guests, buttons of the
house and the room, a temperature for a while, vacation dates, the
heating time period, the schedule editor and its profiles). - 🧬 The card's mutation jobs are split by how many mutants their lines have
(12 jobs of about 400), not by equal lines (from 74 to 919).
Smart Heating Control v2.6.2b5
Integration
- 🔥 Boost the heat source (#6):
a thermostat as the heat source of the house (Hive, Nest, Tado, Netatmo, a
Generic Thermostat) starts the boiler only by its own target and sensor, so
switched to heat with a low target it never fired it. Now, like the TRV
boost, it stays in its heat mode and gets the Maximum temperature of the
house to start (not above its own maximum) and the Frost protection of the
house to stop (not below its minimum): the boiler fires when the rooms ask,
and the thermostat still protects against frost if Home Assistant stops. A
target set on it by hand is taken back. New option Boost the heat source
(Heat source and heat demand → Heat source), on by default; off keeps the
old behaviour (only its mode, heat / off). A thermostat without a target
temperature is still switched by its mode. - 🌡️ Heat source idle temperature (optional, with the boost): what the
thermostat source gets while no room asks, instead of the frost protection
(e.g. 17.5 °C for a hallway thermostat that also heats radiators without
TRVs). Below the maximum of the house.
Setup
- 🏷️ Clearer choices for the heating of the whole house. Other thermostats
/ TRVs is now Another thermostat for the whole home, and No heating
devices yet is now Each room heats separately (TRVs, heaters, AC): a
house with TRVs on the radiators picks the second one and adds its rooms.
Only the labels and the explanations change; existing houses are not
affected. The guide has a new section, Which setup for my house?, with
every kind of home, and the configurator a new case for a thermostat that
starts the boiler.
Card
- 🔌 Devices in the Details: every entity of the room (thermostats,
relays, temperature and humidity sensors, windows, occupancy, calibration)
with its role and its state now; an unavailable, unknown or missing one is
marked, a tap opens it. Newdevicesattribute of the Decision sensor.
Development
- 🧪 Tests for what mutation testing found unchecked: the coldest wall below
0 °C outside and the mold thresholds, distances between coordinates and a
zone without them, far → nearby as an arrival, times like 24:00 or 06:60,
the start of a schedule day that does not begin at midnight, the highest
sun of the day in Bucharest in June and November, the clouds of every
weather condition, and the renaming of a whole-house zone named like the
house. - 🧪 Tests from the first full mutation run (Python 62.8 %, card 30.2 % of
the mutants noticed): the limit of ±3 °C on the adjustments, the levels
exactly at the maximum or the frost protection, the edges of the band with
the learned inertia, no optimal stop when it is off and the ones exactly on
time, the texts in °F, which stretches the learning uses, the time to the
target and the expected temperature during an optimal stop, every attribute
of the Decision sensor, a preset or an hvac mode set by hand coming back
after a window, the calibration within the range of its number, the valve
exercise (5 minutes, after a manual change, only on its day), the alert for
rooms that stay cold; in the card the history, the prediction and the
tooltip values, and every button (mode, pause, guests, buttons of the
house and the room, a temperature for a while, vacation dates, the
heating time period, the schedule editor and its profiles). - 🧬 The card's mutation jobs are split by how many mutants their lines have
(12 jobs of about 400), not by equal lines (from 74 to 919).
Smart Heating Control v2.6.2b4
Integration
- 🔥 Boost the heat source (#6):
a thermostat as the heat source of the house (Hive, Nest, Tado, Netatmo, a
Generic Thermostat) starts the boiler only by its own target and sensor, so
switched to heat with a low target it never fired it. Now, like the TRV
boost, it stays in its heat mode and gets the Maximum temperature of the
house to start (not above its own maximum) and the Frost protection of the
house to stop (not below its minimum): the boiler fires when the rooms ask,
and the thermostat still protects against frost if Home Assistant stops. A
target set on it by hand is taken back. New option Boost the heat source
(Heat source and heat demand → Heat source), on by default; off keeps the
old behaviour (only its mode, heat / off). A thermostat without a target
temperature is still switched by its mode. - 🌡️ Heat source idle temperature (optional, with the boost): what the
thermostat source gets while no room asks, instead of the frost protection
(e.g. 17.5 °C for a hallway thermostat that also heats radiators without
TRVs). Below the maximum of the house.
Card
- 🔌 Devices in the Details: every entity of the room (thermostats,
relays, temperature and humidity sensors, windows, occupancy, calibration)
with its role and its state now; an unavailable, unknown or missing one is
marked, a tap opens it. Newdevicesattribute of the Decision sensor.
Development
- 🧪 Tests for what mutation testing found unchecked: the coldest wall below
0 °C outside and the mold thresholds, distances between coordinates and a
zone without them, far → nearby as an arrival, times like 24:00 or 06:60,
the start of a schedule day that does not begin at midnight, the highest
sun of the day in Bucharest in June and November, the clouds of every
weather condition, and the renaming of a whole-house zone named like the
house. - 🧪 Tests from the first full mutation run (Python 62.8 %, card 30.2 % of
the mutants noticed): the limit of ±3 °C on the adjustments, the levels
exactly at the maximum or the frost protection, the edges of the band with
the learned inertia, no optimal stop when it is off and the ones exactly on
time, the texts in °F, which stretches the learning uses, the time to the
target and the expected temperature during an optimal stop, every attribute
of the Decision sensor, a preset or an hvac mode set by hand coming back
after a window, the calibration within the range of its number, the valve
exercise (5 minutes, after a manual change, only on its day), the alert for
rooms that stay cold; in the card the history, the prediction and the
tooltip values, and every button (mode, pause, guests, buttons of the
house and the room, a temperature for a while, vacation dates, the
heating time period, the schedule editor and its profiles). - 🧬 The card's mutation jobs are split by how many mutants their lines have
(12 jobs of about 400), not by equal lines (from 74 to 919).
Smart Heating Control v2.6.2b3
Integration
- 🔥 Boost the heat source (#6):
a thermostat as the heat source of the house (Hive, Nest, Tado, Netatmo, a
Generic Thermostat) starts the boiler only by its own target and sensor, so
switched to heat with a low target it never fired it. Now, like the TRV
boost, it stays in its heat mode and gets the Maximum temperature of the
house to start (not above its own maximum) and the Frost protection of the
house to stop (not below its minimum): the boiler fires when the rooms ask,
and the thermostat still protects against frost if Home Assistant stops. A
target set on it by hand is taken back. New option Boost the heat source
(Heat source and heat demand → Heat source), on by default; off keeps the
old behaviour (only its mode, heat / off). A thermostat without a target
temperature is still switched by its mode.
Card
- 🔌 Devices in the Details: every entity of the room (thermostats,
relays, temperature and humidity sensors, windows, occupancy, calibration)
with its role and its state now; an unavailable, unknown or missing one is
marked, a tap opens it. Newdevicesattribute of the Decision sensor.
Development
- 🧪 Tests for what mutation testing found unchecked: the coldest wall below
0 °C outside and the mold thresholds, distances between coordinates and a
zone without them, far → nearby as an arrival, times like 24:00 or 06:60,
the start of a schedule day that does not begin at midnight, the highest
sun of the day in Bucharest in June and November, the clouds of every
weather condition, and the renaming of a whole-house zone named like the
house. - 🧪 Tests from the first full mutation run (Python 62.8 %, card 30.2 % of
the mutants noticed): the limit of ±3 °C on the adjustments, the levels
exactly at the maximum or the frost protection, the edges of the band with
the learned inertia, no optimal stop when it is off and the ones exactly on
time, the texts in °F, which stretches the learning uses, the time to the
target and the expected temperature during an optimal stop, every attribute
of the Decision sensor, a preset or an hvac mode set by hand coming back
after a window, the calibration within the range of its number, the valve
exercise (5 minutes, after a manual change, only on its day), the alert for
rooms that stay cold; in the card the history, the prediction and the
tooltip values, and every button (mode, pause, guests, buttons of the
house and the room, a temperature for a while, vacation dates, the
heating time period, the schedule editor and its profiles). - 🧬 The card's mutation jobs are split by how many mutants their lines have
(12 jobs of about 400), not by equal lines (from 74 to 919).
Smart Heating Control v2.6.2b2
Card
- 🔌 Devices in the Details: every entity of the room (thermostats,
relays, temperature and humidity sensors, windows, occupancy, calibration)
with its role and its state now; an unavailable, unknown or missing one is
marked, a tap opens it. Newdevicesattribute of the Decision sensor.
Development
- 🧪 Tests for what mutation testing found unchecked: the coldest wall below
0 °C outside and the mold thresholds, distances between coordinates and a
zone without them, far → nearby as an arrival, times like 24:00 or 06:60,
the start of a schedule day that does not begin at midnight, the highest
sun of the day in Bucharest in June and November, the clouds of every
weather condition, and the renaming of a whole-house zone named like the
house. - 🧪 Tests from the first full mutation run (Python 62.8 %, card 30.2 % of
the mutants noticed): the limit of ±3 °C on the adjustments, the levels
exactly at the maximum or the frost protection, the edges of the band with
the learned inertia, no optimal stop when it is off and the ones exactly on
time, the texts in °F, which stretches the learning uses, the time to the
target and the expected temperature during an optimal stop, every attribute
of the Decision sensor, a preset or an hvac mode set by hand coming back
after a window, the calibration within the range of its number, the valve
exercise (5 minutes, after a manual change, only on its day), the alert for
rooms that stay cold; in the card the history, the prediction and the
tooltip values, and every button (mode, pause, guests, buttons of the
house and the room, a temperature for a while, vacation dates, the
heating time period, the schedule editor and its profiles). - 🧬 The card's mutation jobs are split by how many mutants their lines have
(12 jobs of about 400), not by equal lines (from 74 to 919).
Smart Heating Control v2.6.2b1
Card
- 🔌 Devices in the Details: every entity of the room (thermostats,
relays, temperature and humidity sensors, windows, occupancy, calibration)
with its role and its state now; an unavailable, unknown or missing one is
marked, a tap opens it. Newdevicesattribute of the Decision sensor. - 🔥 Why the heat source runs: under the house tiles, the line Heat:
asked by Living, Bathroom, or how many rooms are still needed, the
reference room it follows, the rooms in frost protection or with their own
heating and the minimum on / off time it waits for. New attributes of the
house Heat demand sensor:rooms,frost_rooms,own_heat_rooms,
needed,reference_room,source_configured,waiting.
Development
- 🧪 Tests for what mutation testing found unchecked: the coldest wall below
0 °C outside and the mold thresholds, distances between coordinates and a
zone without them, far → nearby as an arrival, times like 24:00 or 06:60,
the start of a schedule day that does not begin at midnight, the highest
sun of the day in Bucharest in June and November, the clouds of every
weather condition, and the renaming of a whole-house zone named like the
house. - 🧪 Tests from the first full mutation run (Python 62.8 %, card 30.2 % of
the mutants noticed): the limit of ±3 °C on the adjustments, the levels
exactly at the maximum or the frost protection, the edges of the band with
the learned inertia, no optimal stop when it is off and the ones exactly on
time, the texts in °F, which stretches the learning uses, the time to the
target and the expected temperature during an optimal stop, every attribute
of the Decision sensor, a preset or an hvac mode set by hand coming back
after a window, the calibration within the range of its number, the valve
exercise (5 minutes, after a manual change, only on its day), the alert for
rooms that stay cold; in the card the history, the prediction and the
tooltip values, and every button (mode, pause, guests, buttons of the
house and the room, a temperature for a while, vacation dates, the
heating time period, the schedule editor and its profiles). - 🧬 The card's mutation jobs are split by how many mutants their lines have
(12 jobs of about 400), not by equal lines (from 74 to 919).
Smart Heating Control v2.6.1
🔥 Relays, on / off thermostats and TRVs with the boost now start and stop by
the inertia the room has learned, so slow heating no longer overshoots. 📈 The
predicted temperature of the chart follows how each device really switches.
🖼️ The card is easier to read: an arrow shows whether a room warms or cools,
the learning shows as tiles and the chart legend hides or shows each line.
🧪 Many more tests, now also of the card, and a weekly mutation testing.
🧠 After the update
- ✅ The learning is kept: rooms that learned with 2.6.0 go on from there.
- 🔥 Use the learned inertia is on by default for relays, on / off
thermostats and the TRV boost: it acts once the room has learned its model,
only inside the hysteresis band. It can be turned off in the room options.
Card
↕️ Warming or cooling: an arrow in the opening of the arc (also on the
folded rows and compact tiles) while the room warms (↑) or cools (↓) by at
least 0.2 °C per hour over the last 30 minutes, that is one step of a usual
sensor (0.1 °C) in 30 minutes. Newtemperature_trendattribute of the
Decision sensor (1, −1, 0).- 🧠 Learning in Details: while learning, two bars (with heating 2 of
4 h, without heating 1 of 4 h); once learned, one tile each for the
heating, the inertia, the weather curve, the sun and the heat loss. - 📈 Chart: tapping a legend item hides or shows its series (kept in the
browser); the expected sun is a faint yellow area in the outdoor band, once
the room has learned that the sun warms it. - ⏳ A manual change with an end shows the time it has left (until 15:10 ·
1 h 30 min left). - 🏠 The house tiles are two by two on a narrow card and in one row on a wide
one; the room buttons have short labels (For a while, Levels). - 🔲 The line of a compact tile: the time to the target while the room heats,
else the next change (the manual change and the open window are shown by
their icons).
Integration and card
- 🐛 A level that the thermostat has no preset for and whose temperature is
unknown (e.g. a Generic Thermostat without that preset) was taken as already
reached: nothing was sent and the preset missing alert never came. Now the
alert comes. - 🔥 Use the learned inertia (new option of the On / off control and
TRV boost steps, on by default): for a relay, a thermostat commanded
On / off or TRVs with the boost, once the room has learned its model, the
heating stops a little early when the heat already given would take the
room to the top of the hysteresis band, and starts a little early when the
room would fall to its bottom before the heat arrives. The band and the
minimum on / off times stay the limits; until the room has learned, only
the band decides. In simulations the mean distance from the target fell
from 0.33 to 0.27 °C with cast iron radiators on a relay (no more time
above target + 0.5 °C, before 14 %), from 0.9 to 0.45 °C with floor
heating, and from 0.28 to about 0.24 °C with TRVs with the boost (time
above target + 0.5 °C from 5 – 7 % to almost 0). The card says stopped
early: the heat already given still takes the room to ~21.3° while it
waits (no_heat_reasoninertia). See the guide. - 📈 The predicted temperature follows the device. The chart switches the
heating ahead as the device does: Generic Thermostat by its cold and hot
tolerance, relays, on / off control and the TRV boost by the hysteresis (and
the learned inertia), thermostats withouthvac_actionby the hysteresis.
The line now goes up and down around the target as the room does, instead
of staying flat with many short heating periods. Thermostats and TRVs that
regulate by themselves, and a Generic Thermostat set up in YAML (its
tolerances cannot be read), still hold the target; their heating ahead is
one period. The Heating rate sensor has thebandin itsmodel. - 🏠 Clearer words for the presence of the house: the house state is Home
instead of the house is home (starea casei e „acasă” in Romanian), in
the setup forms and in the guest mode banner of the card, so it is not
mistaken for the level home.
Development
- 🧪 The tests of the card are in the repository (
tests/card, 55 checks in
Chromium with a fake Home Assistant) and run in CI on every push. - 📊 CI measures the test coverage (on the newest Home Assistant) and shows it
in the summary of the run; it must stay at least 93 %. - 🧪 New tests of the rooms as they are used: Generic Thermostat, thermostats
with their own presets or on / off, TRVs in summer, a relay turned on by
hand around an open window, the child lock, manual changes for the whole
house or until the next reevaluation, the valve exercise, a Schedule helper,
a calendar event, a thermostat as the heat source, tariff and solar
adjustments, unavailable devices, low batteries, offset calibration, the
buttons and the services (coverage from 89 % to 93 % or more). - 🧬 Mutation testing (
tests/mutation): about 3,700 small changes of the
Python code, and those of the card with Stryker, each run against the
tests, to find the mistakes no test would notice. A workflow runs it every
week in the night to Sunday (and by hand from the Actions tab) and writes a
report of the survivors. - 🧩 The room controller is split by job into
room.py(state, schedule,
decision) androom_devices.py,room_override.py,room_optimal.py,
room_alerts.py,room_status.py. Nothing changes in what it does.
Documentation
- 📖 A new README that shows what the integration does, with a video of the
card (40 s, played in the page) and new pictures. The technical
details that were in it are in the new Reference.
The same pictures, the GIF and the video are in the card chapter of the
guide. - 🏠 The same wording for the presence of the house in the guide, the
specification and the configurator. - 🧭 The configurator explains Use the learned inertia, the learned sun and the external temperature
written again every 30 minutes.
Smart Heating Control v2.6.1b6
Beta: relays, on / off thermostats and TRVs with the boost start and stop by
the inertia the room has learned, so slow heating no longer overshoots; the
predicted temperature of the chart follows how each device switches. The
card is easier to read: an arrow shows whether a room warms or cools, the
learning shows as tiles and the chart legend hides or shows each line.
Card
↕️ Warming or cooling: an arrow in the opening of the arc (also on the
folded rows and compact tiles) while the room warms (↑) or cools (↓) by at
least 0.2 °C per hour over the last 30 minutes, that is one step of a usual
sensor (0.1 °C) in 30 minutes. Newtemperature_trendattribute of the
Decision sensor (1, −1, 0).- 🧠 Learning in Details: while learning, two bars (with heating 2 of
4 h, without heating 1 of 4 h); once learned, one tile each for the
heating, the inertia, the weather curve, the sun and the heat loss. - 📈 Chart: tapping a legend item hides or shows its series (kept in the
browser); the expected sun is a faint yellow area in the outdoor band, once
the room has learned that the sun warms it. - ⏳ A manual change with an end shows the time it has left (until 15:10 ·
1 h 30 min left). - 🏠 The house tiles are two by two on a narrow card and in one row on a wide
one; the room buttons have short labels (For a while, Levels). - 🔲 The line of a compact tile: the time to the target while the room heats,
else the next change (the manual change and the open window are shown by
their icons).
Integration and card
-
🐛 A level that the thermostat has no preset for and whose temperature is
unknown (e.g. a Generic Thermostat without that preset) was taken as already
reached: nothing was sent and the preset missing alert never came. Now the
alert comes. -
🔥 Use the learned inertia (new option of the On / off control and
TRV boost steps, on by default): for a relay, a thermostat commanded
On / off or TRVs with the boost, once the room has learned its model, the
heating stops a little early when the heat already given would take the
room to the top of the hysteresis band, and starts a little early when the
room would fall to its bottom before the heat arrives. The band and the
minimum on / off times stay the limits; until the room has learned, only
the band decides. In simulations the mean distance from the target fell
from 0.33 to 0.27 °C with cast iron radiators on a relay (no more time
above target + 0.5 °C, before 14 %), from 0.9 to 0.45 °C with floor
heating, and from 0.28 to about 0.24 °C with TRVs with the boost (time
above target + 0.5 °C from 5 – 7 % to almost 0). The card says stopped
early: the heat already given still takes the room to ~21.3° while it
waits (no_heat_reasoninertia). See the guide. -
📈 The predicted temperature follows the device. The chart switches the
heating ahead as the device does: Generic Thermostat by its cold and hot
tolerance, relays, on / off control and the TRV boost by the hysteresis (and
the learned inertia), thermostats withouthvac_actionby the hysteresis.
The line now goes up and down around the target as the room does, instead
of staying flat with many short heating periods. Thermostats and TRVs that
regulate by themselves, and a Generic Thermostat set up in YAML (its
tolerances cannot be read), still hold the target; their heating ahead is
one period. The Heating rate sensor has thebandin itsmodel. -
🏠 Clearer words for the presence of the house: the house state is Home
instead of the house is home (starea casei e „acasă” in Romanian), in
the setup forms and in the guest mode banner of the card, so it is not
mistaken for the level home.
Development
- 🧪 The tests of the card are in the repository (
tests/card, 55 checks in
Chromium with a fake Home Assistant) and run in CI on every push. - 📊 CI measures the test coverage (on the newest Home Assistant) and shows it
in the summary of the run; it must stay at least 93 %. - 🧪 New tests of the rooms as they are used: Generic Thermostat, thermostats
with their own presets or on / off, TRVs in summer, a relay turned on by
hand around an open window, the child lock, manual changes for the whole
house or until the next reevaluation, the valve exercise, a Schedule helper,
a calendar event, a thermostat as the heat source, tariff and solar
adjustments, unavailable devices, low batteries, offset calibration, the
buttons and the services (coverage from 89 % to 93 % or more). - 🧩 The room controller is split by job into
room.py(state, schedule,
decision) androom_devices.py,room_override.py,room_optimal.py,
room_alerts.py,room_status.py. Nothing changes in what it does.
Documentation
- 📖 A new README that shows what the integration does, with a video of the
card (40 s, played in the page) and new pictures. The technical
details that were in it are in the new Reference.
The same pictures, the GIF and the video are in the card chapter of the
guide. - 🏠 The same wording for the presence of the house in the guide, the
specification and the configurator. - 🧭 The configurator explains Use the learned inertia, the learned sun and the external temperature
written again every 30 minutes.