Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
52bc4cb
Update name of light action (#45082)
Laufmaschine Apr 29, 2026
0b05dd1
Remove LLM errors in the new templating syntax documentation (#45095)
etiennec78 Apr 29, 2026
7baeb9e
Fix spell checker errors for Alexa Devices (#45089)
chemelli74 Apr 30, 2026
10ca046
Revise Google Drive integration documentation (#45098)
mik-laj Apr 30, 2026
78dba31
Update homepage "sponsors" (#45055)
dan-long-dev Apr 30, 2026
edfaedc
Revise iZone network settings documentation (#45030)
Swamp-Ig Apr 30, 2026
94de669
Update section titles and descriptions for clarity (#45124)
OldSurferDude May 1, 2026
bbaf45f
Humidity: add condition (Labs feature) (#45110)
c0ffeeca7 May 1, 2026
7e514cc
docs: fix grammar in bug report section of main help page (#45118)
robotsnh May 1, 2026
f3cf31b
docs: fix punctuation errors on debug page explaining why lxc marks i…
robotsnh May 2, 2026
5d7b601
docs: added Oxford comma to `cloud/index.markdown` (#45135)
robotsnh May 2, 2026
7605fd2
docs: used flowing verse on the debug page explaining why unprivilege…
robotsnh May 2, 2026
cdbb450
docs: used the Home Assistant-standard flowing verse on the help page…
robotsnh May 2, 2026
262f832
docs: used flowing verse on the help page for flagged-as-unsupported …
robotsnh May 2, 2026
b422ddc
docs: used flowing verse on the debug page explaining why LXC might m…
robotsnh May 2, 2026
158f641
Update action selection wording in battery alerts tutorial (#45145)
PiedeGrue May 2, 2026
706aa88
docs: use flowing verse on debug page explaining DNS server failures …
robotsnh May 2, 2026
926cba5
update config flow for ecobee (#45087)
ch604 May 4, 2026
b72e0b4
Add cross-references between database docs and SQL integration (#45147)
mik-laj May 4, 2026
af46a82
docs: fixed grammar errors and inaccuracies in DNS server IPv6 error …
robotsnh May 4, 2026
bcfb0ce
Enhance Indevolt integration documentation for gold scale requirement…
Xirt May 4, 2026
94d1670
Revise Roborock vacuum area cleaning instructions (#45158)
remidebette May 4, 2026
92d985a
Build(deps-dev): Bump json from 2.19.4 to 2.19.5 (#45160)
dependabot[bot] May 4, 2026
a367da8
Clarify MCP Server setup instructions for local and remote clients (#…
allenporter May 4, 2026
ca735dd
blebox: add documentation for energy meters (#45163)
bkobus-bbx May 4, 2026
252bcaf
Update Ecovacs integration documentation (#45164)
Gamester17 May 4, 2026
569837b
Update concepts and terminology page: cloud icon replaced by globe ic…
tomhagan29 May 4, 2026
08d2867
blebox: add documentation for inputSensor devices
bkobus-bbx May 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ GEM
nokogiri (~> 1.12)
jekyll-watch (2.2.1)
listen (~> 3.0)
json (2.19.4)
json (2.19.5)
kramdown (2.5.2)
rexml (>= 3.4.4)
kramdown-parser-gfm (1.1.0)
Expand Down
45 changes: 43 additions & 2 deletions sass/homeassistant/_overrides.scss
Original file line number Diff line number Diff line change
Expand Up @@ -1417,15 +1417,56 @@ a.material-card:hover {

}

.sponsor {
margin-top: 5rem;
}

.sponsored-by {
text-align: center;

img {
width: 100%;
max-width: 180px;
max-height: 160px;
border: 0;
border-radius: 0;
box-shadow: none;
margin: 24px;
max-height: 160px;
}

&-title {
max-width: 800px;
margin: 0 auto 24px;
font-size: 1.4rem;
line-height: 1.4;
font-weight: 600;

@media screen and (min-width: 768px) {
font-size: 1.6rem;
line-height: 1.6;
}
}

&-subtitle {
font-size: 1rem;
margin-bottom: 0;
font-weight: 400;

@media screen and (min-width: 768px) {
font-size: 1.2rem;
}
}

&-grid {
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
gap: 2rem;
margin-top: 2rem;

@media screen and (min-width: 768px) {
gap: 4rem;
}
}
}
}
Expand Down
228 changes: 228 additions & 0 deletions source/_conditions/humidity.is_value.markdown
Original file line number Diff line number Diff line change
@@ -0,0 +1,228 @@
---
title: "Relative humidity"
condition: humidity.is_value
domain: humidity
description: "Tests if a relative humidity value is above a threshold, below a threshold, or in a range of values."
---

The **Relative humidity** condition passes when a humidity reading meets a threshold you define. You can check that humidity is above, below, or within a specific range. The condition works with humidity sensors, climate devices, humidifiers, and weather entities. Use it to run an automation only when the bedroom feels too damp, or only when the air is dry enough to need attention.

When you target more than one entity, the condition's **Condition passes if** option controls how the check combines results. You can require any targeted entity to meet the threshold, or demand that all of them do.

{% include integrations/labs_entity_triggers_note.md %}

{% include conditions/ui_header.md %}

To use **Relative humidity** in an automation:

1. Go to {% my automations title="**Settings** > **Automations & scenes**" %}.
2. Open an existing automation, or select **Create automation** > **Create new automation**.
3. In the **And if** section, select **Add condition**.
4. Select what you want to check. Under **By target** (see [Targets](#targets)), pick the area your humidity sensor is in (like your bedroom or bathroom). You can also select a device, a specific entity, or a label.
5. From the conditions shown for that target, select **Relative humidity**.
6. Under **Threshold type**, set the humidity level the condition checks against:
- Select **Number** to enter a fixed percentage directly, for example `65` for 65%.
- Select **Entity** to use a helper or sensor as the threshold. When you pick an `input_number` or `number` helper, you can adjust the threshold without editing the automation. When you pick a humidity sensor, its current reading becomes the threshold and updates automatically as the sensor changes. This is useful for comparing two humidity readings, for example to check whether indoor humidity is higher than outdoor humidity.
Then pick whether the reading must be above, below, or within a range of the threshold.
7. Under **Condition passes if** (see [Behavior](#behavior-with-multiple-targets)), pick **Any** or **All**.
8. Select **Save**.

### Options in the UI

{% options_ui %}
Threshold type:
description: >
The humidity level the entity has to meet for the condition to pass. You can enter a fixed percentage between 0 and 100 (select **Number**), or pick an entity as a dynamic threshold (select **Entity**). When you pick an `input_number` or `number` helper, you can change the threshold without editing the automation. When you pick a humidity sensor, its live reading becomes the threshold, which is useful for comparing two humidity values, for example indoor versus outdoor. In both cases, also pick whether the reading must be above, below, or within a range of that value.
required: true
Condition passes if:
description: When multiple entities are targeted, controls how results combine. Pick **Any** to pass if at least one targeted entity meets the threshold, or **All** to pass only when every targeted entity does.
required: true
{% endoptions_ui %}

{% include conditions/yaml_header.md %}

In YAML, refer to this condition as `humidity.is_value`. A basic example looks like this:

{% example %}
condition: |
condition: humidity.is_value
target:
entity_id: sensor.bedroom_humidity
options:
threshold:
above: 60
behavior: any
{% endexample %}

This passes when the bedroom humidity sensor reads above 60%.

To check that humidity stays below a certain level:

{% example %}
condition: |
condition: humidity.is_value
target:
entity_id: sensor.bedroom_humidity
options:
threshold:
below: 40
behavior: any
{% endexample %}

This passes when the bedroom humidity sensor reads below 40%.

To check that humidity stays within a comfortable range:

{% example %}
condition: |
condition: humidity.is_value
target:
entity_id: sensor.bedroom_humidity
options:
threshold:
above: 40
below: 60
behavior: any
{% endexample %}

This passes when the bedroom humidity sensor reads between 40% and 60%.

### Options in YAML

{% options_yaml %}
threshold:
description: >
The humidity level the entity has to meet for the condition to pass. Use `above` to set a minimum, `below` to set a maximum, or both to define a range. Accepts a fixed number between 0 and 100, or a reference to an `input_number`, `number`, or `sensor` entity. When you reference a sensor, its current reading is used as the threshold at the moment the condition is evaluated. This lets you compare two humidity readings dynamically, for example checking whether indoor humidity is above outdoor humidity.
required: true
type: any
behavior:
description: >
When multiple entities are targeted, controls how results combine. Accepts `all` or `any`.
required: true
type: string
default: any
{% endoptions_yaml %}

{% include conditions/targets.md %}

{% include conditions/behavior.md %}

## Good to know

- The condition works with humidity sensors, climate entities (using the current humidity reading), humidifier entities (using the current humidity reading), and weather entities.
- Entities that are unavailable (`unavailable`) or have an unknown state (`unknown`) are skipped for **Any** and fail for **All**.
- Humidity is expressed as a percentage. Indoor comfort is generally between 40% and 60%. Below 30% often feels dry and can irritate airways. Above 65% can encourage mold and dust mites.
- This condition checks the entity's _current_ humidity reading, not its target setpoint. To check a humidifier's target setpoint instead, use the [Humidifier target humidity](/conditions/humidifier.is_target_humidity/) condition.
- When you use a sensor as a dynamic threshold, its value is read at the moment the condition runs. The threshold is not continuously tracked; it is re-evaluated each time the automation fires.

{% include conditions/try_it.md %}

{% include conditions/more_examples.md %}

### Automation: run a dehumidifier when the room gets too damp

When the bedroom humidity sensor reads above 65%, turn on the dehumidifier to bring levels back to a comfortable range. The condition prevents the dehumidifier from running when the air is already dry enough.

- **Trigger**: Time pattern: Every 15 minutes
- **Condition**: Relative humidity (above 65%)
- **Target**: Bedroom humidity sensor
- **Condition passes if**: Any
- **Action**: Switch: Turn on

{% details "YAML example for running a dehumidifier when humidity is high" %}

{% example %}
automation: |
alias: "Run dehumidifier when bedroom is too damp"
triggers:
- trigger: time_pattern
minutes: "/15"
conditions:
- condition: humidity.is_value
target:
entity_id: sensor.bedroom_humidity
options:
threshold:
above: 65
behavior: any
actions:
- action: switch.turn_on
target:
entity_id: switch.bedroom_dehumidifier
{% endexample %}

{% enddetails %}

### Automation: send an alert when the air gets too dry

At midnight, check the living room humidity. If it has dropped below 30%, send a notification so you can switch on a humidifier before you go to sleep.

- **Trigger**: Time: 00:00
- **Condition**: Relative humidity (below 30%)
- **Target**: Living room humidity sensor
- **Condition passes if**: Any
- **Action**: Notify mobile app

{% details "YAML example for a low humidity alert" %}

{% example %}
automation: |
alias: "Alert when living room air is too dry"
triggers:
- trigger: time
at: "00:00:00"
conditions:
- condition: humidity.is_value
target:
entity_id: sensor.living_room_humidity
options:
threshold:
below: 30
behavior: any
actions:
- action: notify.mobile_app_phone
data:
message: >
The living room humidity is below 30%.
Consider switching on the humidifier.
{% endexample %}

{% enddetails %}

### Automation: run the ventilation fan when indoor humidity exceeds outdoor humidity

Every 15 minutes, check whether the living room is more humid than the outside air. If so, open the ventilation to let drier air in. The outdoor humidity sensor acts as a live threshold, so the condition always compares the two current readings.

- **Trigger**: Time pattern: Every 15 minutes
- **Condition**: Relative humidity (above, entity: outdoor humidity sensor)
- **Target**: Living room humidity sensor
- **Condition passes if**: Any
- **Action**: Switch: Turn on ventilation fan

{% details "YAML example for comparing indoor to outdoor humidity" %}

{% example %}
automation: |
alias: "Ventilate when indoor humidity exceeds outdoor"
triggers:
- trigger: time_pattern
minutes: "/15"
conditions:
- condition: humidity.is_value
target:
entity_id: sensor.living_room_humidity
options:
threshold:
above: sensor.outdoor_humidity
behavior: any
actions:
- action: switch.turn_on
target:
entity_id: switch.ventilation_fan
{% endexample %}

{% enddetails %}

{% include conditions/stuck.md %}

{% include conditions/related.md %}
6 changes: 6 additions & 0 deletions source/_docs/backend/database.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -263,4 +263,10 @@ group.all_switches 8018

If you don't want to keep certain entities, you can delete them permanently by using the [actions provided by the recorder](/integrations/recorder/#action-purge_entities).

### Use the SQL sensor for live queries

Beyond manual exploration, you can run SQL queries directly inside Home Assistant using the [SQL](/integrations/sql/) {% term integration %}. It connects to the same recorder database by default and lets you expose query results as sensor entities, or call queries from automations using the `sql.query` action — no external tools needed.

### Data Science Portal

For a more interactive way of working with the database, check the [Data Science Portal](https://data.home-assistant.io/).
14 changes: 4 additions & 10 deletions source/_docs/templating/syntax.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -185,19 +185,13 @@ Here is a gotcha that catches everyone at least once. The `|` symbol binds tight

{% example %}
template: |
{{ 10 / 10 | round(2) }}
output: "1"
{{ 10 / 3 | round(2) }}
output: "3.3333333333333335"
{% endexample %}

You might read that as "ten divided by ten, rounded to two decimals", which should be `1.0`. But because filters take priority, it actually runs as "ten divided by (ten rounded to two decimals)", which is `10 / 10.0 = 1.0`... Wait, that's also `1.0`. Let me try a clearer example:
You might read that as "ten divided by three, rounded to two decimals", which should be `3.33`. But because filters take priority, it actually runs as "ten divided by (three rounded to two decimals)", which is `10 / 3.0 = 3.3333333333333335`.

{% example %}
template: |
{{ 20 - 5 | round(0) }}
output: "15"
{% endexample %}

This one also happens to work. The gotcha bites hardest when the filter changes the value meaningfully. When in doubt, add parentheses so the order you want is clear:
The gotcha bites hardest when the filter changes the value meaningfully. When in doubt, add parentheses so the order you want is clear:

{% example %}
template: |
Expand Down
2 changes: 1 addition & 1 deletion source/_docs/templating/tutorial-battery-alerts.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ You want this to run once every morning.
### Add the action

1. Under **Then do**, select **Add action**.
2. Choose **Call service**, then pick your `notify` action (like `notify.mobile_app_your_phone`).
2. Choose **Perform Action**, then pick your `notify` action (like `notify.mobile_app_your_phone`).
3. Fill in the message field with the template you built in step 3.

In YAML, the action looks like this:
Expand Down
2 changes: 1 addition & 1 deletion source/_includes/site/footer.html
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
/>
</div>
<p>
Home Assistant is a project from the <a href="https://www.openhomefoundation.org/">Open Home Foundation</a>, sponsored by <a href="https://www.nabucasa.com/">Nabu Casa</a>.
Home Assistant is a project from the <a href="https://www.openhomefoundation.org/">Open Home Foundation</a>.
</p>
</div>

Expand Down
8 changes: 4 additions & 4 deletions source/_integrations/alexa_devices.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ There is support for the following device families within Home Assistant:

{% warning %}

This integration requires multifactor authentication using an authentication app (such as Microsoft Authenticator, for example). To enable MFA, in your Amazon account settings select **Login & Security** > **2-step verification** > **Backup methods** > **Add new app**. See [Amazon's documentation](https://www.amazon.com/gp/help/customer/display.html?nodeId=G9MX9LXNWXFKMJYU) for more information.
This integration requires multi-factor authentication using an authentication app (such as Microsoft Authenticator, for example). To enable MFA, in your Amazon account settings select **Login & Security** > **2-step verification** > **Backup methods** > **Add new app**. See [Amazon's documentation](https://www.amazon.com/gp/help/customer/display.html?nodeId=G9MX9LXNWXFKMJYU) for more information.

You must ensure the authenticator app is setup as your preferred method for 2FA.

Expand Down Expand Up @@ -101,7 +101,7 @@ The `alexa_devices.send_text_command` action allows you to control Alexa using t
The `alexa_devices.send_sound` action allows you to play one of the built-in Alexa sounds. The full list of sounds is available in [Amazon's documentation (needs authentication)](https://alexa.amazon.com/api/behaviors/entities?skillId=amzn1.ask.1p.sound)

{%tip%}
Additional sounds are available through advanced markup using the `notify.send_message` [action](#action-notifysend_message)
Additional sounds are available through advanced markup using the `notify.send_message` [action](#action-send-message)
{%endtip%}

| Data attribute | Optional | Description |
Expand Down Expand Up @@ -163,7 +163,7 @@ automation:
data:
message: Welcome home Simone
target:
entity_id: notify.echo_dot_livingroom_announce
entity_id: notify.echo_dot_living_room_announce
```

### Ask the time
Expand Down Expand Up @@ -250,7 +250,7 @@ This integration {% term polling polls %} data from the device every five minute

## Known limitations

- This integration requires multifactor authentication using an authentication app (such as Microsoft Authenticator). To enable MFA, in your Amazon account settings, select **Login & Security** > **2-step verification** > **Backup methods** > **Add new app**. See [Amazon's documentation](https://www.amazon.com/gp/help/customer/display.html?nodeId=G9MX9LXNWXFKMJYU) for more information.
- This integration requires multi-factor authentication using an authentication app (such as Microsoft Authenticator). To enable MFA, in your Amazon account settings, select **Login & Security** > **2-step verification** > **Backup methods** > **Add new app**. See [Amazon's documentation](https://www.amazon.com/gp/help/customer/display.html?nodeId=G9MX9LXNWXFKMJYU) for more information.
- Reminders may not be added to the sensor if the configured account is linked to an Alexa Household.
- [Amazon Japan](https://www.amazon.co.jp) appears to use a different login mechanism to other locations preventing setup of the integration. This should be resolved in a future release.

Expand Down
Loading