Skip to content
Closed

Madvr #33401

Show file tree
Hide file tree
Changes from all commits
Commits
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
4 changes: 2 additions & 2 deletions _config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -108,8 +108,8 @@ social:
# Home Assistant release details
current_major_version: 2024
current_minor_version: 7
current_patch_version: 0
date_released: 2024-07-03
current_patch_version: 1
date_released: 2024-07-05

# Either # or the anchor link to latest release notes in the blog post.
# Must be prefixed with a # and have double quotes around it.
Expand Down
7 changes: 4 additions & 3 deletions sass/homeassistant/pages/_component_page.scss
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,6 @@
align-content: center;
transition: box-shadow .33s;


.img-container {
height: 64px;
margin: 12px 16px;
Expand Down Expand Up @@ -128,11 +127,13 @@ a.option-card:hover {

@for $i from 1 through 40 {
.option-card:nth-child(#{$i}) {
animation-delay: #{$i * 0.04}s !important;
animation-delay: #{$i * 0.025}s !important;
@media only screen and (max-width: $palm-end) {
animation-delay: #{$i * 0.05}s !important;
}
}
}


@media only screen and (max-width: $palm-end) {
.hass-option-cards {
.option-card {
Expand Down
9 changes: 5 additions & 4 deletions source/_docs/automation/using_blueprints.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -49,13 +49,14 @@ To edit an imported blueprint, follow these steps:

1. Go to **{% my blueprints title="Settings > Automations & Scenes > Blueprints" %}**.
2. Select the blueprint from the list.
3. Select the three dots menu and select **Take control**.
3. Select the {% icon "mdi:dots-vertical" %} and select **Take control**.
4. A preview of the automation is shown.
- **Info**: By taking control, the blueprint is converted into an automation. You won't be able to convert this back into a blueprint.
- To convert it into an automation and take control, select **Yes**.
- If you change your mind and want to keep the blueprint, select **No**.

![Screencast showing how to take control of a blueprint](/images/blueprints/blueprint_take_control.webp)

4. Under **Take control of automation?**, select **OK**
- **Info**: By taking control, the blueprint is converted into an automation. You won't be able to convert this back into a blueprint.

## Re-importing a blueprint

Blueprints created by the community may go through multiple revisions. Sometimes a user creates a blueprint,
Expand Down
3 changes: 2 additions & 1 deletion source/_integrations/forecast_solar.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,8 @@ the results a bit.

The **damping** factor allows you to adjust and "damp" the results of your solar
predictions in the morning and evening a bit and is a great method to make
results less optimistic and more tuned to your reality.
results less optimistic and more tuned to your reality. More details on damping can
be found [here](https://doc.forecast.solar/damping).

The **inverter** size can be used in a situation where the maximum power of your
inverter is lower than the total power of all your solar panels (as entered under
Expand Down
9 changes: 6 additions & 3 deletions source/_integrations/generic_hygrostat.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,14 @@ ha_config_flow: true

The `generic_hygrostat` humidifier {% term integration %} is a virtual hygrostat implemented in Home Assistant. It uses a sensor and a switch connected to a humidifier or dehumidifier under the hood. When in humidifier mode, if the measured humidity is less than the target humidity, the humidifier will be turned on and turned off when the required humidity is reached. When in dehumidifier mode, if the measured humidity is greater than the target humidity, the dehumidifier will be turned on and turned off when required humidity is reached. One Generic Hygrostat entity can only control one switch. If you need to activate two switches, one for a humidifier and one for a dehumidifier, you will need two Generic Hygrostat entities.

To enable the {% term integration %}, you need to add it to your {% term "`configuration.yaml`" %} file.
{% include integrations/restart_ha_after_config_inclusion.md %}

{% include integrations/config_flow.md %}

{% note %}
Configuration using our user interface provides a more limited subset of options, making this integration more accessible while covering most use cases.

If you need more specific features for your use case, the manual [YAML-configuration section](#yaml-configuration) of this integration might provide them.
{% endnote %}

## YAML configuration

Alternatively, this integration can be configured and set up manually via YAML
Expand Down
6 changes: 6 additions & 0 deletions source/_integrations/generic_thermostat.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,12 @@ The `generic_thermostat` climate {% term integration %} is a thermostat implemen

{% include integrations/config_flow.md %}

{% note %}
Configuration using our user interface provides a more limited subset of options, making this integration more accessible while covering most use cases.

If you need more specific features for your use case, the manual [YAML-configuration section](#yaml-configuration) of this integration might provide them.
{% endnote %}

## YAML configuration

Alternatively, this integration can be configured and set up manually via YAML
Expand Down
56 changes: 37 additions & 19 deletions source/_integrations/heos.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,10 @@ A connection to a single device enables control for all devices on the network.
Use the sign-in service (go to Developer Tools -> Services and then run the `heos.sign_in` with your username and password. Use the "Fill example data" first, then change it with your data. Check the logs right after, there you should see if the sign-in was successful or not) to sign the connected controller into a HEOS account so that it can retrieve and play HEOS favorites and playlists. An error message is logged if sign-in is unsuccessful. Example service data payload:

```yaml
username: "example@example.com"
password: "password"
service: heos.sign_in
data:
username: "example@example.com"
password: "password"
```

| Service data attribute | Optional | Description |
Expand All @@ -57,9 +59,11 @@ Use the sign-out service to sign the connected controller out of a HEOS account.
You can play a HEOS favorite by number or name with the `media_player.play_media` service. Example service data payload:

```yaml
entity_id: media_player.office
media_content_type: "favorite"
media_content_id: "1"
service: media_player.play_media
data:
entity_id: media_player.office
media_content_type: "favorite"
media_content_id: "1"
```

| Service data attribute | Optional | Description |
Expand All @@ -73,9 +77,11 @@ media_content_id: "1"
You can play a HEOS playlist with the `media_player.play_media` service. Example service data payload:

```yaml
entity_id: media_player.office
media_content_type: "playlist"
media_content_id: "Awesome Music"
service: media_player.play_media
data:
entity_id: media_player.office
media_content_type: "playlist"
media_content_id: "Awesome Music"
```

| Service data attribute | Optional | Description |
Expand All @@ -89,9 +95,11 @@ media_content_id: "Awesome Music"
You can play a HEOS Quick Select by number or name with the `media_player.play_media` service. Example service data payload:

```yaml
entity_id: media_player.office
media_content_type: "quick_select"
media_content_id": "1"
service: media_player.play_media
data:
entity_id: media_player.office
media_content_type: "quick_select"
media_content_id": "1"
```

| Service data attribute | Optional | Description |
Expand All @@ -105,9 +113,11 @@ media_content_id": "1"
You can play a URL through a HEOS media player using the `media_player.play_media` service. The HEOS player must be able to reach the URL. Example service data payload:

```yaml
entity_id: media_player.office
media_content_type: "url"
media_content_id: "http://path.to/stream.mp3"
service: media_player.play_media
data:
entity_id: media_player.office
media_content_type: "url"
media_content_id: "http://path.to/stream.mp3"
```

| Service data attribute | Optional | Description |
Expand All @@ -121,10 +131,12 @@ media_content_id: "http://path.to/stream.mp3"
For grouping HEOS media players together for synchronous playback you can use the `media_player.join` service. With the example service data payload down below you'll expand playback of `media_player.office` to the `media_player.kitchen` and `media_player.bathroom` players. Please note that all of the media players need to be HEOS players.

```yaml
entity_id: media_player.office
group_members:
- media_player.kitchen
- media_player.bathroom
service: media_player.join
data:
entity_id: media_player.office
group_members:
- media_player.kitchen
- media_player.bathroom
```

| Service data attribute | Optional | Description |
Expand All @@ -137,6 +149,12 @@ group_members:

For removing a HEOS player from a group you can use the `media_player.unjoin` service.

```yaml
service: media_player.unjoin
data:
entity_id: media_player.office
```

| Service data attribute | Optional | Description |
| ---------------------- | -------- | ------------------------------------------------ |
| `entity_id` | yes | Unjoin this media player from any player groups. |
Expand All @@ -146,7 +164,7 @@ For removing a HEOS player from a group you can use the `media_player.unjoin` se
- Receivers with multiple zones are represented as a single media player. They will be turned on when playback is started, but cannot be turned off by the integration at this time.
- [Denon AVR](/integrations/denonar/) and HEOS media players can be combined into a [Universal Media Player](/integrations/universal/#denon-avr--heos)

## Troubleshooing
## Troubleshooting

### Debugging

Expand Down
13 changes: 0 additions & 13 deletions source/_integrations/modbus.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -1621,19 +1621,6 @@ Description:
| value | (write_register) A single value or an array of 16-bit values. Single value will call modbus function code 0x06. Array will call modbus function code 0x10. Values might need reverse ordering. E.g., to set 0x0004 you might need to set `[4,0]`, this depend on the byte order of your CPU |
| state | (write_coil) A single boolean or an array of booleans. Single boolean will call modbus function code 0x05. Array will call modbus function code 0x0F |

The modbus integration also provides communication stop/restart services. These services will not do any reconfiguring, but simply stop/start the modbus communication layer.

| Service | Description |
| -------------- | --------------------------------------------- |
| modbus.stop | Stop communication |
| modbus.restart | Restart communication (Stop first if running) |

Description:

| Attribute | Description |
| --------- | ------------------------------------------------ |
| hub | Hub name (defaults to 'modbus_hub' when omitted) |

## Example: writing a float32 type register

To write a float32 datatype register use network format like `10.0` == `0x41200000` (network order float hexadecimal).
Expand Down
12 changes: 11 additions & 1 deletion source/_integrations/template.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,19 @@ _For old sensor/binary sensor configuration format, [see below](#legacy-binary-s

## UI configuration

Sensor template and binary sensor template can be configured using the user interface at **{% my helpers title="Settings > Devices & Services > Helpers" %}**. Select the **+ Add helper** button and then select the **{% my config_flow_start domain=page.ha_domain title=page.title %}** helper.
Sensor template and binary sensor template can be configured using the user interface at **{% my helpers title="Settings > Devices & Services > Helpers" %}**.

{% include integrations/config_flow.md %}

{% important %}
To be able to add **{% my helpers title="Helpers" %}** via the user interface, you should have `default_config:` in your {% term "`configuration.yaml`" %}. It should already be there by default unless you removed it.
{% endimportant %}

{% note %}
Configuration using our user interface provides a more limited subset of options, making this integration more accessible while covering most use cases.

If you need more specific features for your use case, the manual [YAML-configuration section](#yaml-configuration) of this integration might provide them.
{% endnote %}

## YAML configuration

Expand Down
2 changes: 1 addition & 1 deletion source/_integrations/unifi.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ The UniFi Network application allows you to create multiple users on it besides

### UniFi OS

For UniFi OS a local-only user needs to be created. A user who uses the Ubiquiti cloud will not work. You can do this in the manage users section on the UniFi OS dashboard. Make sure to give it the right permissions for the functions you want to use. Note the Dream Machine Pro and Cloud Key Gen2 plus updated to UniFi OS needs the port to be 443.
For UniFi OS a local-only user needs to be created. A user who uses the Ubiquiti cloud will not work. You can do this in the manage users section on the UniFi OS dashboard. Make sure to give it the right permissions for the functions you want to use. Note the Dream Machine Pro and Cloud Key Gen2 plus updated to UniFi OS needs the port to be 443. For some self hosted servers the port will be 8443.

### Conflicts with MQTT

Expand Down
8 changes: 8 additions & 0 deletions source/_integrations/webmin.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,14 @@ ha_platforms:

This {% term integration %} provides sensors for monitoring the CPU and memory usage of your server.

## Prerequisites

For best security, create a specific Webmin user for Home Assistant with a strong password and only "Can accept RPC calls" permission (under "Permissions for all modules") and remove the "Can accept RPC calls" permission for all other users.

{% note %}
Be aware that the Webmin API ignores any 2FA set up via the frontend, e.g. it is even with enabled 2FA possible to use the API with only username and password.
{% endnote %}

{% include integrations/config_flow.md %}

## Sensors
Expand Down
56 changes: 28 additions & 28 deletions source/_layouts/default.html
Original file line number Diff line number Diff line change
@@ -1,45 +1,45 @@
{% include site/head.html %}
<body {% if page.body_id %} id="{{ page.body_id }}"{% elsif page.layout == "landingpage" %} id="landingpage"{% endif %}>
<header class='site-header {% if page.hero_unit %}dark{% endif %}'>
<header class='site-header {% if page.dark_header %}dark{% endif %}'>
{% include site/header.html %}
</header>

<div class="page-content">

{% if page.hero_unit %}
{% include site/hero_unit.html %}
{% endif %}
{% if page.hero_unit %}
{% include site/hero_unit.html %}
{% endif %}

<div class="grid-wrapper">
<div class="grid grid-center">
{% if page.is_post and page.sidebar == false %}
<div class="grid__item four-fifths lap-one-whole palm-one-whole">
{% elsif page.is_homepage or page.layout == "landingpage" %}
<div class="grid__item one-whole">
{% else %}
<div class="grid__item two-thirds lap-one-whole palm-one-whole">
{% endif %}

{% if page.is_homepage or page.layout == "landingpage" %}
{{ content }}
<div class="grid-wrapper">
<div class="grid grid-center">
{% if page.is_post and page.sidebar == false %}
<div class="grid__item four-fifths lap-one-whole palm-one-whole">
{% elsif page.is_homepage or page.layout == "landingpage" %}
<div class="grid__item one-whole">
{% else %}
{{ content | output_modder }}
<div class="grid__item two-thirds lap-one-whole palm-one-whole">
{% endif %}
</div>

{% unless page.sidebar == false or page.layout == "landingpage" %}
<aside id="sidebar" class="grid__item one-third lap-one-whole palm-one-whole">
{% include site/sidebar.html %}
</aside>
{% endunless %}
{% if page.is_homepage or page.layout == "landingpage" %}
{{ content }}
{% else %}
{{ content | output_modder }}
{% endif %}
</div>

{% unless page.sidebar == false or page.layout == "landingpage" %}
<aside id="sidebar" class="grid__item one-third lap-one-whole palm-one-whole">
{% include site/sidebar.html %}
</aside>
{% endunless %}
</div>
</div>
</div>

<footer>
{% include site/footer.html %}
</footer>
<footer>
{% include site/footer.html %}
</footer>

</div>
</div>
{% include javascripts/scripts.html %}
</body>
</html>
Loading