Merge branch 'current' into merge-current-in-next

This commit is contained in:
Bram Kragten 2024-10-30 09:23:46 +01:00
commit a0df0200d7
12 changed files with 85 additions and 13 deletions

View File

@ -66,7 +66,7 @@ GEM
nokogiri (~> 1.12) nokogiri (~> 1.12)
jekyll-watch (2.2.1) jekyll-watch (2.2.1)
listen (~> 3.0) listen (~> 3.0)
json (2.7.3) json (2.7.4)
kramdown (2.4.0) kramdown (2.4.0)
rexml rexml
kramdown-parser-gfm (1.1.0) kramdown-parser-gfm (1.1.0)
@ -150,7 +150,7 @@ GEM
rack-protection (= 4.0.0) rack-protection (= 4.0.0)
rack-session (>= 2.0.0, < 3) rack-session (>= 2.0.0, < 3)
tilt (~> 2.0) tilt (~> 2.0)
sorbet-runtime (0.5.11615) sorbet-runtime (0.5.11620)
stringex (2.8.6) stringex (2.8.6)
terminal-table (3.0.2) terminal-table (3.0.2)
unicode-display_width (>= 1.1.1, < 3) unicode-display_width (>= 1.1.1, < 3)

View File

@ -888,6 +888,35 @@ dt:hover a.title-link {
} }
} }
.hero-github-badge .desktop {
display: none;
max-width: 658px;
width: 100%;
}
.hero-github-badge .mobile {
display: block;
max-width: 420px;
width: 100%;
margin-bottom: 2rem;
}
// after 768px, show desktop, hide mobile
@media only screen and (min-width: 1025px) {
.hero-github-badge .mobile {
display: none;
max-width: 385px;
}
.hero-github-badge .desktop {
display: block;
}
}
.hero-buttons {
margin-bottom: 0;
}
.hero-buttons a { .hero-buttons a {
margin: 0 30px 10px 0; margin: 0 30px 10px 0;
@ -896,7 +925,6 @@ dt:hover a.title-link {
} }
} }
// Article formatting // Article formatting
article.post, article.post,
@ -1362,13 +1390,15 @@ a.my {
// Prevent headings from disappearing behind the site header when linked to // Prevent headings from disappearing behind the site header when linked to
h1, h2, h3, h4, h5, h6 { h1, h2, h3, h4, h5, h6 {
position: relative; position: relative;
word-wrap: break-word;
} }
:target { :target {
display: block; display: block;
position: absolute; position: relative;
top: -100px; top: -100px;
visibility: hidden; visibility: hidden;
scroll-margin-top: 80px;
} }
.site-header { .site-header {

View File

@ -14,7 +14,7 @@
max-height: 1080px; max-height: 1080px;
height: 100vh; height: 100vh;
align-content: center; align-content: center;
min-height: 720px; min-height: 840px;
// scroll-snap-align: start; // scroll-snap-align: start;
color: $white; color: $white;
@ -86,11 +86,11 @@
// animation-iteration-count: infinite; // animation-iteration-count: infinite;
// animation-direction: alternate; // animation-direction: alternate;
@media only screen and (max-height: 720px) { @media only screen and (max-height: 840px) {
border-bottom: 0; border-bottom: 0;
margin-bottom: -8px; margin-bottom: -8px;
border-radius: 48px 48px 0 0; border-radius: 48px 48px 0 0;
height: 640px; height: 750px;
} }
@ -126,6 +126,7 @@
@media only screen and (max-width: 760px) { @media only screen and (max-width: 760px) {
.hero { .hero {
min-height: 940px;
.flex { .flex {
flex-direction: column; flex-direction: column;
} }

View File

@ -0,0 +1,13 @@
## Removing an integration instance
If you no longer want to use a device or service in Home Assistant, you can remove the integration instance including the device or service with all its entities.
The following steps describe the general steps needed to remove an integration instance. Depending on the integration, additional steps can be needed, such as resetting the device or to delete credentials. Refer to the integration documentation to see if additional steps are needed.
### To remove an integration instance from Home Assistant
1. Go to {% my integrations title="**Settings** > **Devices & services**" %} and select the integration card.
2. From the list of devices, select the integration instance you want to remove.
3. Next to the entry, select the three-dot menu. Then, select **Delete**.
![Screenshot showing how to remove an integration instance](/images/organizing/integration_instance_delete.png)

View File

@ -19,3 +19,15 @@
<a href='https://demo.home-assistant.io' target='_blank'>View live demos</a> <a href='https://demo.home-assistant.io' target='_blank'>View live demos</a>
<a href='/integrations/'>Browse {{ tot | minus: 1 | divided_by: 100 | round | times: 100 }}+ integrations</a> <a href='/integrations/'>Browse {{ tot | minus: 1 | divided_by: 100 | round | times: 100 }}+ integrations</a>
</p> </p>
<a href="https://github.blog/news-insights/octoverse/octoverse-2024/#the-state-of-open-source" target="_blank" class="hero-github-badge">
<img
src="/images/github-top-project-2024-mobile.png"
class="mobile"
alt="GitHub's top open source project by contributors in 2024"
>
<img
src="/images/github-top-project-2024-desktop.png"
class="desktop"
alt="GitHub's top open source project by contributors in 2024"
>
</a>

View File

@ -397,6 +397,14 @@ This integration adds the Blebox device as a sensor entity to Home Assistant.
- Periodic read of current wind speed - Periodic read of current wind speed
### luxSensor
This integration adds the Blebox device as a sensor entity to Home Assistant.
#### Key supported features
- Periodic read of illuminance (unit: lx)
------ ------
## "BleBox inside" controllers ## "BleBox inside" controllers

View File

@ -38,7 +38,7 @@ Example Automation:
Integration-specific values in the nested `data` section are optional. Integration-specific values in the nested `data` section are optional.
Image attachments can be added using the `attachment` parameter, which can either be a local file reference (ex: `/tmp/image.png`). Image attachments can be added using the `attachment` parameter, which must be a local file reference (ex: `/tmp/image.png`).
To use a specific Pushover device, set it using `target`. If one of the entered devices doesn't exist or is disabled in your Pushover account it will send a message to all you devices. To send to all devices, just skip the target attribute. To use a specific Pushover device, set it using `target`. If one of the entered devices doesn't exist or is disabled in your Pushover account it will send a message to all you devices. To send to all devices, just skip the target attribute.

View File

@ -20,14 +20,19 @@ ha_config_flow: true
The `statistics` integration observes the state of a source sensor and provides aggregated statistical characteristics about its recent past. This integration can be useful in automation, for example, to trigger an action when the air humidity in the bathroom settles after a hot shower or when the number of brewed coffees over a day gets too high. The `statistics` integration observes the state of a source sensor and provides aggregated statistical characteristics about its recent past. This integration can be useful in automation, for example, to trigger an action when the air humidity in the bathroom settles after a hot shower or when the number of brewed coffees over a day gets too high.
The statistics sensor updates with every update of the source sensor, for which the numeric `sensor` and `binary_sensor` are supported. The time period and/or number of recent state changes, which should be considered, must be given in configuration. Check the configuration section below for details. The `statistics` sensor can use either the numeric `sensor` or `binary_sensor` as it's input. The time period and/or number of recent state changes, which should be considered, must be given in configuration. Check the configuration section below for details.
Assuming the [`recorder`](/integrations/recorder/) integration is running, historical sensor data is read from the database on startup and is available immediately after a restart of the platform. If the [`recorder`](/integrations/recorder/) integration is *not* running, it can take some time for the sensor to start reporting data because some characteristics calculations require more than one source sensor value. Assuming the [`recorder`](/integrations/recorder/) integration is running, historical sensor data is read from the database on startup and is available immediately after a restart of the platform. If the [`recorder`](/integrations/recorder/) integration is *not* running, it can take some time for the sensor to start reporting data because some characteristics calculations require more than one source sensor value.
{% tip %} {% tip %}
The `statistics` integration is different to [Long-term Statistics](https://developers.home-assistant.io/docs/core/entity/sensor/#long-term-statistics). More details on the differences can be found in the [2021.8.0 release notes](/blog/2021/08/04/release-20218/#long-term-statistics). The `statistics` integration is not the same as the [Long-term Statistics](https://developers.home-assistant.io/docs/core/entity/sensor/#long-term-statistics). More details on the differences can be found in the [2021.8.0 release notes](/blog/2021/08/04/release-20218/#long-term-statistics).
{% endtip %} {% endtip %}
The `statistics` sensor has an internal buffer that stores the values it needs for the computation of the various functions (for example, `average_step`). The sensor is updated whenever new values are added to the buffer or when elements are removed. This is triggered either by a change of the source sensor (which may or may not change its actual value) or by values expiring (in cases where `max_age` was specified). This means that the buffer can hold a sequence of identical values in cases where values are not changing over time.
When using a time-based buffer (by providing a `max_age`), it is recommended to ensure that the buffer contains at least a decent number of values spanning the full range of time. For sensors that don't change much, this can be achieved by using a template sensor with a time-based trigger as input. If the input values don't cover most of the time range, the computed output values could lead to unexpected results.
Example: To find out whether a switch was used in the last 5 minutes, `count_on` could be used. However, if there are no frequent readings a single "Off" (maybe only a second ago) in the buffer would produce 0 even though the sensor was "On" for most of the last five minutes.
{% include integrations/config_flow.md %} {% include integrations/config_flow.md %}
Further information about these configuration options can be found under the [YAML configuration](#yaml-configuration) Further information about these configuration options can be found under the [YAML configuration](#yaml-configuration)
@ -61,8 +66,8 @@ The following are supported for `sensor` source sensors `state_characteristic`:
| State Characteristic | Description | | State Characteristic | Description |
| -------------------- | ----------- | | -------------------- | ----------- |
| `average_linear` | The average value of stored measurements under consideration of the time distances between them. A linear interpolation is applied per measurement pair. Suited to observe a source sensor with frequent, non-periodic sensor updates and when continuous behavior is represented by the measurements (e.g. your electricity consumption). WARNING: This type of average may show unexpected behavior in cases where values remain stable (e.g. an equally spaced sequence of t1:0 -> t2:0 -> t3:0 -> t4:0 -> t5:10 would produce an average of 5 instead of 1,25 because the non-changing zeros in the middle (t2 to t4) are being filtered out by Home Assistant and so the actually computed curve already starts rising at t1 instead of staying flat until t4). Accordingly, this function is only making sense in the context of noisy sensors that keep changing constantly. | | `average_linear` | The average value of stored measurements under consideration of the time distances between them. A linear interpolation is applied per measurement pair. Suited to observe a source sensor with frequent, non-periodic sensor updates and when continuous behavior is represented by the measurements (e.g. your electricity consumption). WARNING: This doesn't compute the exact average over the full interval defined by `max_age`. It will only consider the interval between the first and the last value in the buffer. |
| `average_step` | The average value of stored measurements under consideration of the time distances between them. LOCF (last observation carried forward weighting) is applied, meaning, that the old value is assumed between two measurements. This is a better fit to how Home Assistant deals with constant values (compared to the linear function) and it is also better fitting to sensors that are switching between stable phases (e.g. a heating level set to either 1, 2 or 3). WARNING: Even when a time interval is specified by the max age parameter, the average is not necessarily matching the average over that whole interval (e.g. when values were removed due to the sampling size limit). | | `average_step` | The average value of stored measurements under consideration of the time distances between them. LOCF (last observation carried forward weighting) is applied, meaning, that the old value is assumed between two measurements. This is a better fit to how Home Assistant deals with constant values (compared to the linear function) and it is also better fitting to sensors that are switching between stable phases (e.g. a heating level set to either 1, 2 or 3). WARNING: This doesn't compute the exact average over the full interval defined by `max_age`. It will only consider the interval between the first and the last value in the buffer. |
| `average_timeless` | The average value of stored measurements. This method assumes that all measurements are equally spaced and, therefore, time is ignored and a simple average of values is computed. Equal to `mean`. | | `average_timeless` | The average value of stored measurements. This method assumes that all measurements are equally spaced and, therefore, time is ignored and a simple average of values is computed. Equal to `mean`. |
| `change_sample` | The average change per sample. The difference between the newest and the oldest measurement is divided by the number of in-between measurements (n-1). | | `change_sample` | The average change per sample. The difference between the newest and the oldest measurement is divided by the number of in-between measurements (n-1). |
| `change_second` | The average change per second. The difference between the newest and the oldest measurement is divided by seconds between them. | | `change_second` | The average change per second. The difference between the newest and the oldest measurement is divided by seconds between them. |

View File

@ -33,6 +33,7 @@ Supported devices:
- Switcher V2 (Espressif chipset - from firmware 3.21) - Switcher V2 (Espressif chipset - from firmware 3.21)
- Switcher V2 (Qualcomm chipset - from firmware 72.32) - Switcher V2 (Qualcomm chipset - from firmware 72.32)
- Switcher V4 - Switcher V4
- Switcher Mini
- Switcher Breeze - Switcher Breeze
- Switcher Runner - Switcher Runner
- Switcher Runner S11 - Switcher Runner S11

View File

@ -22,4 +22,6 @@ Creating an automation for polling gives you more flexibility on when to poll:
1. Not all integrations have a configurable polling interval. The homeassistant.update_entity service, on the other hand, works with most of the integrations; no code changes are required. 1. Not all integrations have a configurable polling interval. The homeassistant.update_entity service, on the other hand, works with most of the integrations; no code changes are required.
2. An automation allows you to poll whenever you want. For example, if you have a rate-limited solar panel provider with a maximum number of requests per day, you may want to lower/stop the polling at night but poll more frequently during the day. 2. An automation allows you to poll whenever you want. For example, if you have a rate-limited solar panel provider with a maximum number of requests per day, you may want to lower/stop the polling at night but poll more frequently during the day.
{% include common-tasks/define_custom_polling.md %} {% include common-tasks/define_custom_polling.md %}
{% include common-tasks/remove_device_service.md %}

Binary file not shown.

After

Width:  |  Height:  |  Size: 171 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 283 KiB