Merge branch 'current' into next

This commit is contained in:
Franck Nijhof 2025-01-28 14:45:00 +01:00
commit c7fc8d655c
No known key found for this signature in database
GPG Key ID: D62583BA8AB11CA3
33 changed files with 460 additions and 339 deletions

View File

@ -10,7 +10,7 @@ jobs:
- name: Check out files from GitHub
uses: actions/checkout@v4.2.2
- name: Setting up Node.js
uses: actions/setup-node@v4.1.0
uses: actions/setup-node@v4.2.0
with:
node-version: 20
cache: "npm"
@ -27,7 +27,7 @@ jobs:
- name: Check out files from GitHub
uses: actions/checkout@v4.2.2
- name: Setting up Node.js
uses: actions/setup-node@v4.1.0
uses: actions/setup-node@v4.2.0
with:
node-version: 20
cache: "npm"

View File

@ -4,14 +4,14 @@ ruby '> 2.5.0'
group :development do
gem 'rake', '13.2.1'
gem 'jekyll', '4.3.4'
gem 'jekyll', '4.4.0'
gem 'compass', '1.0.3'
gem 'sass-globbing', '1.1.5'
gem 'stringex', '2.8.6'
# > 2.1.0 causes slowdowns https://github.com/sass/sassc-ruby/issues/189
gem 'sassc', '2.1.0'
gem 'sass-embedded', '1.83.4'
gem 'rubocop', '1.70.0'
gem 'rubocop', '1.71.0'
gem 'ruby-lsp', '0.23.6'
gem 'rackup', '2.2.1'
end

View File

@ -22,6 +22,7 @@ GEM
compass-import-once (1.0.5)
sass (>= 3.2, < 3.5)
concurrent-ruby (1.3.5)
csv (3.3.2)
em-websocket (0.5.3)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0)
@ -38,17 +39,20 @@ GEM
http_parser.rb (0.8.0)
i18n (1.14.7)
concurrent-ruby (~> 1.0)
jekyll (4.3.4)
jekyll (4.4.0)
addressable (~> 2.4)
base64 (~> 0.2)
colorator (~> 1.0)
csv (~> 3.0)
em-websocket (~> 0.5)
i18n (~> 1.0)
jekyll-sass-converter (>= 2.0, < 4.0)
jekyll-watch (~> 2.0)
json (~> 2.6)
kramdown (~> 2.3, >= 2.3.1)
kramdown-parser-gfm (~> 1.0)
liquid (~> 4.0)
mercenary (>= 0.3.6, < 0.5)
mercenary (~> 0.3, >= 0.3.6)
pathutil (~> 0.9)
rouge (>= 3.0, < 5.0)
safe_yaml (~> 1.0)
@ -71,7 +75,7 @@ GEM
rexml (>= 3.3.9)
kramdown-parser-gfm (1.1.0)
kramdown (~> 2.0)
language_server-protocol (3.17.0.3)
language_server-protocol (3.17.0.4)
liquid (4.0.4)
listen (3.9.0)
rb-fsevent (~> 0.10, >= 0.10.3)
@ -114,7 +118,7 @@ GEM
regexp_parser (2.10.0)
rexml (3.4.0)
rouge (4.5.1)
rubocop (1.70.0)
rubocop (1.71.0)
json (~> 2.3)
language_server-protocol (>= 3.17.0)
parallel (~> 1.10)
@ -124,7 +128,7 @@ GEM
rubocop-ast (>= 1.36.2, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 2.4.0, < 4.0)
rubocop-ast (1.37.0)
rubocop-ast (1.38.0)
parser (>= 3.3.1.0)
ruby-lsp (0.23.6)
language_server-protocol (~> 3.17.0)
@ -152,7 +156,7 @@ GEM
rack-protection (= 4.1.1)
rack-session (>= 2.0.0, < 3)
tilt (~> 2.0)
sorbet-runtime (0.5.11766)
sorbet-runtime (0.5.11784)
stringex (2.8.6)
terminal-table (3.0.2)
unicode-display_width (>= 1.1.1, < 3)
@ -170,7 +174,7 @@ PLATFORMS
DEPENDENCIES
compass (= 1.0.3)
jekyll (= 4.3.4)
jekyll (= 4.4.0)
jekyll-commonmark (= 1.4.0)
jekyll-paginate (= 1.1.0)
jekyll-sitemap (= 1.4.0)
@ -178,7 +182,7 @@ DEPENDENCIES
nokogiri (= 1.18.2)
rackup (= 2.2.1)
rake (= 13.2.1)
rubocop (= 1.70.0)
rubocop (= 1.71.0)
ruby-lsp (= 0.23.6)
sass-embedded (= 1.83.4)
sass-globbing (= 1.1.5)

View File

@ -108,8 +108,8 @@ social:
# Home Assistant release details
current_major_version: 2025
current_minor_version: 1
current_patch_version: 3
date_released: 2025-01-20
current_patch_version: 4
date_released: 2025-01-24
# Either # or the anchor link to latest release notes in the blog post.
# Must be prefixed with a # and have double quotes around it.

138
package-lock.json generated
View File

@ -10,15 +10,15 @@
"devDependencies": {
"remark-cli": "^12.0.1",
"remark-frontmatter": "^5.0.0",
"remark-lint": "^10.0.0",
"remark-lint-fenced-code-flag": "^4.0.0",
"remark-lint-heading-increment": "^4.0.0",
"remark-lint-heading-style": "^4.0.0",
"remark-lint-no-shell-dollars": "^4.0.0",
"remark-lint-ordered-list-marker-style": "^4.0.0",
"remark-lint-ordered-list-marker-value": "^4.0.0",
"remark-lint": "^10.0.1",
"remark-lint-fenced-code-flag": "^4.1.1",
"remark-lint-heading-increment": "^4.0.1",
"remark-lint-heading-style": "^4.0.1",
"remark-lint-no-shell-dollars": "^4.0.1",
"remark-lint-ordered-list-marker-style": "^4.0.1",
"remark-lint-ordered-list-marker-value": "^4.0.1",
"remark-lint-prohibited-strings": "^4.0.0",
"remark-lint-unordered-list-marker-style": "^4.0.0",
"remark-lint-unordered-list-marker-style": "^4.0.1",
"remark-stringify": "^11.0.0",
"textlint": "^14.4.2",
"textlint-filter-rule-comments": "^1.2.2",
@ -4286,10 +4286,11 @@
}
},
"node_modules/remark-lint": {
"version": "10.0.0",
"resolved": "https://registry.npmjs.org/remark-lint/-/remark-lint-10.0.0.tgz",
"integrity": "sha512-E8yHHDOJ8b+qI0G49BRu24pe8t0fNNBWv8ENQJpCGNrVeTeyBIGEbaUe1yuF7OG8faA6PVpcN/pqWjzW9fcBWQ==",
"version": "10.0.1",
"resolved": "https://registry.npmjs.org/remark-lint/-/remark-lint-10.0.1.tgz",
"integrity": "sha512-1+PYGFziOg4pH7DDf1uMd4AR3YuO2EMnds/SdIWMPGT7CAfDRSnAmpxPsJD0Ds3IKpn97h3d5KPGf1WFOg6hXQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@types/mdast": "^4.0.0",
"remark-message-control": "^8.0.0",
@ -4301,10 +4302,11 @@
}
},
"node_modules/remark-lint-fenced-code-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/remark-lint-fenced-code-flag/-/remark-lint-fenced-code-flag-4.0.0.tgz",
"integrity": "sha512-Zs0wJd4nRvBo/9NWQVfWg5Ykapbo0Zzw/SyZc3f0h73S1gTZZcfeU+bA5oDivlBdcUgLBsyHRE0QaoaVvN3/Wg==",
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/remark-lint-fenced-code-flag/-/remark-lint-fenced-code-flag-4.1.1.tgz",
"integrity": "sha512-hKPqowc79jrJL47AfnqDThvE8Q249nHCleR5nxuf9ybriMqcAHYxragKzU5c4W1fNy20bTfFdZz/iAAQAk9kwg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@types/mdast": "^4.0.0",
"mdast-util-phrasing": "^4.0.0",
@ -4425,10 +4427,11 @@
}
},
"node_modules/remark-lint-heading-increment": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/remark-lint-heading-increment/-/remark-lint-heading-increment-4.0.0.tgz",
"integrity": "sha512-TARnsjXWzY/yLwxh/y4+KnDSXO3Koue8Crp55T8G9pjj3vw+XgTAG35zSpIIY9HmGiQ2a3R0SOj2pAxATpnckg==",
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/remark-lint-heading-increment/-/remark-lint-heading-increment-4.0.1.tgz",
"integrity": "sha512-uat7RTQn0hGlMv62p7yjLlg3tO3RljFbH6C+0M+5BNEF+s3NrA8jJgqW0UwLLNdCd3EABCKaWloHumT57ND7PQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@types/mdast": "^4.0.0",
"devlop": "^1.0.0",
@ -4549,10 +4552,11 @@
}
},
"node_modules/remark-lint-heading-style": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/remark-lint-heading-style/-/remark-lint-heading-style-4.0.0.tgz",
"integrity": "sha512-dQ6Jul5K0+aNUvrq4W7H0+osSoC9hsmwHZqBFq000+eMP/hWJqI8tuudw1rap8HHYuOsKLRbB5q+Fr7G+3Vw+Q==",
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/remark-lint-heading-style/-/remark-lint-heading-style-4.0.1.tgz",
"integrity": "sha512-+rUpJ/N2CGC5xPgZ18XgsCsUBtadgEhdTi0BJPrsFmHPzL22BUHajeg9im8Y7zphUcbi1qFiKuxZd2nzDgZSXQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@types/mdast": "^4.0.0",
"mdast-util-heading-style": "^3.0.0",
@ -4674,10 +4678,11 @@
}
},
"node_modules/remark-lint-no-shell-dollars": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/remark-lint-no-shell-dollars/-/remark-lint-no-shell-dollars-4.0.0.tgz",
"integrity": "sha512-ye2h8FzjsgqqQV0HHN2g9N4FqI3eD9Gpgu7tU5ADIJyQ3mUJdwBoFn7IlGnpmumR1fb/l6u/AhRavIZxXYqG+Q==",
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/remark-lint-no-shell-dollars/-/remark-lint-no-shell-dollars-4.0.1.tgz",
"integrity": "sha512-UPE1DNCIkLtnS3YFD065Gkq5lQqfndBDpX8Ct/Zjn7M0/hzCyf9B6tpwCU0I20m9jzhS/CSY6mxYnAiEg+KkFA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@types/mdast": "^4.0.0",
"collapse-white-space": "^2.0.0",
@ -4797,10 +4802,11 @@
}
},
"node_modules/remark-lint-ordered-list-marker-style": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/remark-lint-ordered-list-marker-style/-/remark-lint-ordered-list-marker-style-4.0.0.tgz",
"integrity": "sha512-xZ7Xppy5fzACH4b9h1b4lTzVtNY2AlUkNTfl1Oe6cIKN8tk3juFxN0wL2RpktPtSZ7iRIabzFmg6l8WPhlASJA==",
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/remark-lint-ordered-list-marker-style/-/remark-lint-ordered-list-marker-style-4.0.1.tgz",
"integrity": "sha512-vZTAbstcBPbGwJacwldGzdGmKwy5/4r29SZ9nQkME4alEl5B1ReSBlYa8t7QnTSW7+tqvA9Sg71RPadgAKWa4w==",
"dev": true,
"license": "MIT",
"dependencies": {
"@types/mdast": "^4.0.0",
"mdast-util-phrasing": "^4.0.0",
@ -4830,72 +4836,6 @@
"integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==",
"dev": true
},
"node_modules/remark-lint-ordered-list-marker-style/node_modules/mdast-util-phrasing": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz",
"integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==",
"dev": true,
"dependencies": {
"@types/mdast": "^4.0.0",
"unist-util-is": "^6.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
"node_modules/remark-lint-ordered-list-marker-style/node_modules/micromark-util-character": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
"integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
"dev": true,
"funding": [
{
"type": "GitHub Sponsors",
"url": "https://github.com/sponsors/unifiedjs"
},
{
"type": "OpenCollective",
"url": "https://opencollective.com/unified"
}
],
"dependencies": {
"micromark-util-symbol": "^2.0.0",
"micromark-util-types": "^2.0.0"
}
},
"node_modules/remark-lint-ordered-list-marker-style/node_modules/micromark-util-symbol": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
"integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
"dev": true,
"funding": [
{
"type": "GitHub Sponsors",
"url": "https://github.com/sponsors/unifiedjs"
},
{
"type": "OpenCollective",
"url": "https://opencollective.com/unified"
}
]
},
"node_modules/remark-lint-ordered-list-marker-style/node_modules/micromark-util-types": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz",
"integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==",
"dev": true,
"funding": [
{
"type": "GitHub Sponsors",
"url": "https://github.com/sponsors/unifiedjs"
},
{
"type": "OpenCollective",
"url": "https://opencollective.com/unified"
}
]
},
"node_modules/remark-lint-ordered-list-marker-style/node_modules/unified": {
"version": "11.0.4",
"resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz",
@ -4988,10 +4928,11 @@
}
},
"node_modules/remark-lint-ordered-list-marker-value": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/remark-lint-ordered-list-marker-value/-/remark-lint-ordered-list-marker-value-4.0.0.tgz",
"integrity": "sha512-7UjNU2Nv9LGEONTU9GPmTVoNoGKD5aL1X2xHzMbSJiTc50bfcazYqZawO+qj1pQ04WPhto1qHnl0HRB5wwSVwA==",
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/remark-lint-ordered-list-marker-value/-/remark-lint-ordered-list-marker-value-4.0.1.tgz",
"integrity": "sha512-HQb1MrArvApREC1/I6bkiFlZVDjngsuII29n8E8StnAaHOMN3hVYy6wJ9Uk+O3+X9O8v7fDsZPqFUHSfJhERXQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@types/mdast": "^4.0.0",
"devlop": "^1.0.0",
@ -5174,10 +5115,11 @@
}
},
"node_modules/remark-lint-unordered-list-marker-style": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/remark-lint-unordered-list-marker-style/-/remark-lint-unordered-list-marker-style-4.0.0.tgz",
"integrity": "sha512-XlP4Wr4KJNovyWVv0H5axfUlF23iE9Kt2SxaVq4+ieum5YcMmKE6KsL+aqt3kiJb60SH1u6a0bxKFvdM/9riOA==",
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/remark-lint-unordered-list-marker-style/-/remark-lint-unordered-list-marker-style-4.0.1.tgz",
"integrity": "sha512-HMrVQC0Qbr8ktSy+1lJGRGU10qecL3T14L6s/THEQXR5Tk0wcsLLG0auNvB4r2+H+ClhVO/Vnm1TEosh1OCsfw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@types/mdast": "^4.0.0",
"mdast-util-phrasing": "^4.0.0",

View File

@ -5,15 +5,15 @@
"devDependencies": {
"remark-cli": "^12.0.1",
"remark-frontmatter": "^5.0.0",
"remark-lint": "^10.0.0",
"remark-lint-fenced-code-flag": "^4.0.0",
"remark-lint-heading-increment": "^4.0.0",
"remark-lint-heading-style": "^4.0.0",
"remark-lint-no-shell-dollars": "^4.0.0",
"remark-lint-ordered-list-marker-style": "^4.0.0",
"remark-lint-ordered-list-marker-value": "^4.0.0",
"remark-lint": "^10.0.1",
"remark-lint-fenced-code-flag": "^4.1.1",
"remark-lint-heading-increment": "^4.0.1",
"remark-lint-heading-style": "^4.0.1",
"remark-lint-no-shell-dollars": "^4.0.1",
"remark-lint-ordered-list-marker-style": "^4.0.1",
"remark-lint-ordered-list-marker-value": "^4.0.1",
"remark-lint-prohibited-strings": "^4.0.0",
"remark-lint-unordered-list-marker-style": "^4.0.0",
"remark-lint-unordered-list-marker-style": "^4.0.1",
"remark-stringify": "^11.0.0",
"textlint": "^14.4.2",
"textlint-filter-rule-comments": "^1.2.2",

View File

@ -35,6 +35,7 @@ You can group cards without using horizontal or vertical stack cards.
3. Under **Max number of sections wide**, select the maximum number of columns you want to see in the new sections view.
4. Under **Dense section placement**, select if you want to allow the cards to be arranged automatically in order to fill gaps between cards.
- This will remove some gaps, but it also means you have less control over the order of the cards.
- Note that this only applies to horizontal gaps if you used sections more than one column wide.
5. When you are done, select **Save**.
- You are now presented with a new, empty view.
- If you chose a background image, the page is filled with that image.

View File

@ -56,7 +56,7 @@ Server:
"[NFS]<sup>1</sup> Remote share path":
description: The path used to connect to the remote storage server.
"[CIFS]<sup>2</sup> Username":
description: The username to use when connecting to the storage server.
description: "The username to use when connecting to the storage server. Use User Principal Name for domain accounts. For example: `user@domain.com`."
"[CIFS]<sup>2</sup> Password":
description: The password to use when connecting to the storage server.
"[CIFS]<sup>2</sup> Share":

View File

@ -34,19 +34,19 @@ Device:
description: "The Bluetooth device that is your scale."
{% endconfiguration_basic %}
# Available platforms & entities
## Available platforms & entities
## Binary sensors
### Binary sensors
- **Timer running**: Whether the timer is currently running on the scale
## Buttons
### Buttons
- **Tare**: Tares the scale.
- **Reset timer**: Resets the timer. If the timer is running, it will continue to run.
- **Start/stop timer**: Starts or stops the timer, depending on whether the timer is currently running. Does not reset, but continue the timer.
## Sensors
### Sensors
- **Battery**: Current battery level of the scale.
- **Volume flow rate**: Calculates the current flow rate (in mL/s) while brewing.

View File

@ -14,17 +14,19 @@ ha_platforms:
ha_integration_type: device
---
AquaCell is a water-softening device. The [AquaCell](https://www.aquacell-waterontharder.nl/) {% term integration %} allows you to monitor your AquaCell device in Home Assistant.
AquaCell is a water-softening device made by [Culligan](https://culliganinternational.com). The [AquaCell](https://www.aquacell-waterontharder.nl/) {% term integration %} allows you to monitor your AquaCell device in Home Assistant.
You will need your Aquacell account information as used in the **AquaCell** app.
This integration also supports [Harvey](https://www.harveywatersofteners.co.uk/) softeners.
This integration also supports other [Culligan brands](https://culliganinternational.com/brands) of water softener, such as [Harvey](https://www.harveywatersofteners.co.uk/) and [TwinTec](https://www.twintec.com/) (made by Harvey) softeners.
## Supported devices
This integration only works for softener models which have an **i-Lid** and are configured through the 'Mijn AquaCell' or 'My Harvey' mobile app.
This integration only works for softener models which have an **i-Lid** and are configured through the 'Mijn AquaCell' or 'myHarvey' mobile app.
These models are also recognizable by the required curved salt blocks.
- [AquaCell](https://www.aquacell-waterontharder.nl/aquacell)
- [HarveyArc Water Softener](https://www.harveywatersofteners.co.uk/products/water-softeners/harveyarc-water-softener)
- [TwinTec Cobalt](https://www.twintec.com/our-products/tt-cobalt/)
## Prerequisites

View File

@ -104,12 +104,12 @@ For example, the following action in an automation would take a recording from "
```yaml
actions:
- variables:
entity_id: camera.yourcamera # Store the camera entity_id in a variable for reuse
my_camera_id: camera.yourcamera # Store the camera entity_id in a variable for reuse
- action: camera.record
target:
entity_id: '{{ entity_id }}'
entity_id: '{{ my_camera_id }}'
data:
filename: '/tmp/{{ entity_id }}_{{ now().strftime("%Y%m%d-%H%M%S") }}.mp4'
filename: '/tmp/{{ my_camera_id }}_{{ now().strftime("%Y%m%d-%H%M%S") }}.mp4'
```
{% endraw %}
@ -132,12 +132,12 @@ For example, the following action in an automation would take a snapshot from "y
```yaml
actions:
- variables:
entity_id: camera.yourcamera # Store the camera entity_id in a variable for reuse
my_camera_id: camera.yourcamera # Store the camera entity_id in a variable for reuse
- action: camera.snapshot
target:
entity_id: '{{ entity_id }}'
entity_id: '{{ my_camera_id }}'
data:
filename: '/tmp/{{ entity_id }}_{{ now().strftime("%Y%m%d-%H%M%S") }}.jpg'
filename: '/tmp/{{ my_camera_id }}_{{ now().strftime("%Y%m%d-%H%M%S") }}.jpg'
```
{% endraw %}

View File

@ -54,7 +54,8 @@ This integration is known to work for:
- Iskra ME382 / MT382 (DSMR 2.2)
- ISKRA AM550 (DSMR 5.0)
- Landis+Gyr E350 (DMSR 4)
- Landis+Gyr E350 (DSMR 4)
- Landis+Gyr E360 (DSMR 5)*
- Landis+Gyr ZCF110 / ZM F110 (DSMR 4.2)
- Kaifa E0026
- Kaifa MA304C (DSMR 4.2)
@ -64,6 +65,8 @@ This integration is known to work for:
- Ziv E0058 ESMR5
- EasyMeter Q3D
Remarks:
\* The E360 requires a special P1 cable, various webstores sell these specific to the E360.
### M-Bus support
A smart meter can have multiple subdevices, also known as [M-Bus](https://m-bus.com/) devices.

View File

@ -29,65 +29,62 @@ For Home Assistant Cloud users, documentation can be found [here](https://www.na
The Google Assistant integration (without Home Assistant Cloud) requires a bit more setup than most due to the way Google requires Assistant Apps to be set up.
{% important %}
To use Google Assistant, your Home Assistant configuration has to be [externally accessible with a hostname and SSL certificate](/docs/configuration/remote/). If you haven't already configured that, you should do so before continuing. If you make DNS changes to accomplish this, please ensure you have allowed up to the full 48 hours for DNS changes to propagate, otherwise, Google may not be able to reach your server. Once you have confirmed you can reach your Home Assistant from outside your home network, you can set up the Google integration:
{% endimportant %}
### Prerequisites
To use Google Assistant, your Home Assistant configuration has to be [externally accessible with a hostname and SSL certificate](/docs/configuration/remote/).
- If you haven't already configured that, you should do so before continuing.
- If you make DNS changes to accomplish this, ensure you have allowed up to the full 48 hours for DNS changes to propagate, otherwise, Google may not be able to reach your server.
- Once you have confirmed you can reach your Home Assistant from outside your home network, you can set up the Google integration:
### Google Cloud Platform configuration
1. Create a new project in the [Actions on Google console](https://console.actions.google.com/).
1. Select **New Project** and give your project a name.
2. Select the **Smart Home** card, then select the **Start Building** button.
3. Under **Quick Setup**, select **Name your Smart Home action**. Give your Action a name - Home Assistant will appear in the Google Home app as `[test] <Action Name>`
4. Select the **Overview** tab at the top of the page to go back.
5. Select **Build your Action**, then select **Add Action(s)**.
6. Add your Home Assistant URL: `https://[YOUR HOME ASSISTANT URL:PORT]/api/google_assistant` in the **Fulfillment URL** textbox, replace the `[YOUR HOME ASSISTANT URL:PORT]` with the domain / IP address and the port under which your Home Assistant is reachable.
7. Select **Save**.
8. Select the three little dots (more) icon in the upper right corner, select **Project settings**.
9. Make note of the **Project ID** that are listed on the **General** tab of the **Settings** page.
2. **Account linking** is required for your app to interact with Home Assistant.
1. Start by going back to the **Overview** tab.
2. Select on **Setup account linking** under the **Quick Setup** section of the **Overview** page.
3. If asked, leave options as they default **No, I only want to allow account creation on my website** and select **Next**.
4. Then if asked, for the **Linking type** select **OAuth** and **Authorization Code**. Select **Next**.
5. Enter the following:
1. Client ID: `https://oauth-redirect.googleusercontent.com/r/[YOUR_PROJECT_ID]`. (Replace `[YOUR_PROJECT_ID]` with your project ID from above)
2. Client Secret: Anything you like, Home Assistant doesn't need this field.
3. Authorization URL: `https://[YOUR HOME ASSISTANT URL:PORT]/auth/authorize`. (Replace `[YOUR HOME ASSISTANT URL:PORT]` with your values.)
4. Token URL (replace with your actual URL): `https://[YOUR HOME ASSISTANT URL:PORT]/auth/token`. (Replace `[YOUR HOME ASSISTANT URL:PORT]` with your values.)
Select **Next**, then **Next** again.
6. In the **Configure your client** **Scopes** textbox, type `email` and select **Add scope**, then type `name` and select **Add scope** again.
7. Do **NOT** check **Google to transmit clientID and secret via HTTP basic auth header**.
8. Select **Next**, then select **Save**.
1. Create a new project in the [Google Developer Console](https://console.home.google.com/projects).
1. Select **Create a Project**
2. On the **Get started** page, select **Create project**.
- Give your project a name and select **Create project**.
3. Save your Project ID (it's under the main project name) for use below.
4. Select **Add a Cloud-to-Cloud integration**.
5. In the bottom right corner, select **Next: Develop**, then select **Next: Setup**.
6. Select all applicable device types (you can select them all).
7. Create an app icon 144 x 144 pixels and upload it.
8. Under **Account Linking**, in the **OAuth Client ID** field, enter `https://oauth-redirect.googleusercontent.com/r/[YOUR_PROJECT_ID]`.
9. Replace `[YOUR_PROJECT_ID]` with your project ID from above.
10. Fill in the details:
- In the **Client Secret** field, add any string (without special characters).Home Assistant doesn't need this field.
- In the **Authorization URL** field, enter `https://[yourdomain:port]/auth/authorize`.
- In the **Token URL** field, enter `https://[yourdomain:port]/auth/token`.
- In the **Cloud fulfillment URL** field, enter `https://[yourdomain:port]/api/google_assistant`.
- For now, skip **Local fulfillment** and **App Flip**.
- Under **Scope(s)**, enter `email`. Select **Add scope** and enter `name`.
- Leave the checkbox **Have Google transmit Client ID and secret via HTTP basic auth header** unchecked/cleared.
- Select **Save**.
- **Result**: You will see your project saved with the status **Draft**.
- You do not need to test.
<img src='/images/integrations/google_assistant/accountlinking.png' alt='Screenshot: Account linking'>
3. Select the **Develop** tab at the top of the page, then, in the upper right hand corner, select the **Test** button to generate the draft version Test App. If you don't see this option, go to the **Test** tab instead, select the **Settings** button in the top right below the header, and ensure **On device testing** is enabled (if it isn't, enable it).
4. Enable device sync ([see below for more information](#enable-device-sync)).
1. Go to [Google Cloud Platform](https://console.cloud.google.com/).
2. Go to **Select a project**.
3. In the window that popped up, select your newly created project from step 1.
4. Go to the menu and select **APIs and Services** and next **Credentials**.
5. In the **Credentials** view, select **Create credentials** and next **Service account**.
2. In the left hand menu of your project, select the **Analytics** link.
- Select the hamburger {% icon "mdi:hamburger-menu" %} menu and select **APIs and Services**.
3. Enable device sync ([see below for more information](#enable-device-sync)).
1. In the left hand menu, select **Credentials**.
2. In the **Credentials** view, select **Create credentials** and next **Service account**.
1. **Service account name**: Give your account a self-selected name.
2. Select **Create and Continue**.
3. Under **Select a role**, select **Service Accounts** > **Service Account Token Creator**.
4. Select **Continue** and then **Done**.
6. Under **Service Accounts**, there should now be an account called [name from 5.1]@[projectname].iam.gserviceaccount.com.
7. Select the pencil button of that service account.
8. Go to **Keys** and **Add key**.
9. Create a private key in JSON format.
10. This will start a download of a JSON file.
3. Under **Service Accounts**, there should now be an account called [name from 3.2.1]@[projectname].iam.gserviceaccount.com.
4. Select the pencil button of that service account.
5. Go to **Keys** and **Add key**.
6. Create a private key in JSON format.
7. This will start a download of a JSON file.
1. Rename the file to `SERVICE_ACCOUNT.JSON`.
2. Add this file to your config-folder. This will be the same folder as your{% term "`configuration.yaml`" %}.
11. Go back to [Google Cloud Platform](https://console.cloud.google.com/) and select **Close**.
12. Then select **Save**.
13. Go to the **Search products and resources** and search for **Homegraph API** and select it.
14. Enable the HomeGraph API.
2. In Home Assistant, add this file to your config-folder. This will be the same folder as your {% term "`configuration.yaml`" %}.
8. Go back to [Google Cloud Platform](https://console.cloud.google.com/) and select **Close**.
9. Then select **Save**.
10. Go to the **Search products and resources** and search for **Homegraph API** and select it.
11. Enable the HomeGraph API.
5. Add the `google_assistant` integration configuration to your{% term "`configuration.yaml`" %} file and restart Home Assistant following the [configuration guide](#yaml-configuration) below.
6. Add services in the Google Home App (note that app versions may be slightly different).
4. Add the `google_assistant` integration configuration to your {% term "`configuration.yaml`" %} file and restart Home Assistant following the [configuration guide](#yaml-configuration) below.
5. Add services in the Google Home App (note that app versions may be slightly different).
1. Open the Google Home app.
2. Select the `+` button on the top left corner, select **Set up device**. In the **Set up a device** screen, select **Works with Google**. You should have `[test] <Action Name>` listed under **Add new**. Selecting that should lead you to a browser to login your Home Assistant instance, then redirect back to a screen where you can set rooms and nicknames for your devices if you wish.

View File

@ -21,8 +21,10 @@ ha_config_flow: true
ha_dhcp: true
---
The `incomfort` {% term integration %} links Home Assistant with your Intergas Lan2RF gateway, including the boiler and any room thermostats attached to it.
The integration uses the [incomfort](https://pypi.org/project/incomfort-client/) client library.
This integration links Home Assistant with your Intergas Lan2RF gateway, including the boiler and any room thermostats attached to it.
The integration uses the [incomfort-client](https://pypi.org/project/incomfort-client/) library.
### Supported devices
The Intergas Lan2RF Gateway connects thermostats based on the OpenTherm standard. An example of such a thermostat is the [Comfort Touch Thermostat](https://www.intergas-verwarming.nl/en/consumer/products/comfort-touch-thermostat/). The thermostats and LAN2RF gateway are often sold as a set. The gateway is suitable for use with Intergas Kombi Kompakt HRE and HReco appliances from year of manufacture 2014. If the Comfort Touch thermostat is used together with the gateway, then this will work in combination with Intergas Kombi Kompakt HRE, HReco, or Xtreme devices from year of manufacture 2017.
@ -38,7 +40,22 @@ Any room thermostats (there can be 0, 1 or 2) are represented as **Climate** dev
{% include integrations/config_flow.md %}
The hub does not have to be in the same network as Home Assistant, but the hub must be reachable via port 80/HTTP.
{% configuration_basic %}
host:
description: "Hostname or IP-address of the Intergas InComfort Lan2RF Gateway."
required: true
type: string
username:
description: "The username to log into the gateway. This is `admin` in most cases."
required: false
type: string
password:
description: "The password to log into the gateway, is printed at the bottom of the Lan2RF Gateway or is `intergas` for some older devices."
required: false
type: string
{% endconfiguration_basic %}
The hub does not have to be in the same network as HA, but must be reachable via port 80/HTTP.
The above configuration can also be adjusted later via
{% my integrations title="**Settings** > **Devices & services**" %},
@ -66,9 +83,13 @@ Note that **all** sensors are disabled by default.
- Boiler Hot water tap: Indicates if the hot water tap is running.
- Boiler Pump: Indicate the pump is running for cental heating.
## Troubleshooting
In case setting up an older gateway type fails, then try to leave `username` and `password` fields empty.
## Data updates
The `incomfort` {% term integration %} will fetch state data from the gateway every 30 seconds. When the target temperature on the thermostat is changed, it might take some time for the set point to be updated on the Home Assistant climate {% term entity %}.
The Intergas Lan2RF Gateway will fetch state data from the gateway every 30 seconds. When the target temperature on the thermostat is changed, it might take some time for the set point to be updated on the Home Assistant climate {% term entity %}.
## Remove integration

View File

@ -598,7 +598,11 @@ respond_to_read:
The KNX binary sensor platform allows you to monitor [KNX](https://www.knx.org/) binary sensors.
Binary sensors are read-only. To write to the KNX bus configure an exposure [KNX Integration Expose](/integrations/knx/#exposing-entity-states-entity-attributes-or-time-to-knx-bus).
{% note %}
Binary sensors are read-only entities. To write to the KNX bus, configure a [KNX Switch entity](#switch) or use the [`knx.send` action](#send).
{% endnote %}
```yaml
knx:
@ -1831,7 +1835,11 @@ entity_category:
The KNX sensor platform allows you to monitor [KNX](https://www.knx.org/) sensors.
Sensors are read-only. To write to the KNX bus configure a [Number](#number), an exposure [KNX Integration Expose](/integrations/knx/#exposing-entity-states-entity-attributes-or-time-to-knx-bus) or use the `knx.send` action.
{% note %}
Sensors are read-only entities. To write to the KNX bus, configure a [KNX Number entity](#number) or use the [`knx.send` action](#send).
{% endnote %}
```yaml
# Example configuration.yaml entry

View File

@ -30,7 +30,9 @@ ha_integration_type: hub
The Litter-Robot integration allows you to control and monitor your Wi-Fi-enabled, automatic, self-cleaning litter box and pet feeders.
You will need a Litter-Robot account as well as a Wi-Fi-enabled Litter-Robot or Feeder-Robot unit that has already been associated with your account.
## Prerequisites
Before using this integration, youll need a Whisker account and a Wi-Fi-enabled Litter-Robot or Feeder-Robot linked to it. You can do this via the Whisker app.
{% include integrations/config_flow.md %}
@ -93,3 +95,9 @@ data:
start_time: "22:30:00"
```
## Removing the integration
This integration follows standard integration removal. No extra steps are required.
{% include integrations/remove_device_service.md %}

View File

@ -625,3 +625,9 @@ logger:
```
- *Not receiving camera motion and person events*: assuming the integration is correctly configured (for example, the oauth and SDM API are set up correctly, you can see camera streams, and permissions are correctly set in [Partner Connections Manager](https://nestservices.google.com/partnerconnections)): If you are then still not seeing events, it's possible you need to adjust the Google Home App settings. Refer to the [Google Home App Notification Settings](#google-home-app-notification-settings) for details.
- **Configuration error: Failed to create subscriber `subscription/name` was not found** - By default, Google pub/sub subscriptions will be deleted after 31 days of inactivity ([reference](https://cloud.google.com/knowledge/kb/pub-sub-subscriptions-disappeared-without-any-deletion-logs-000004170)). If this happens, then the integration will fail, and you will see the preceding log line in your Home Assistant logs. If that is the case, then:
1. Go to the [Device Access Console](https://console.nest.google.com/device-access/project-list) and re-enable the Pub/Sub Topic.
2. The Nest integration may need to be recreated to pick up the new Pub/Sub topic.
3. (Optional) To prevent future expirations, go to your [Google Cloud Console Pub/Sub subscription page](https://console.cloud.google.com/cloudpubsub/subscription/list) and edit the Pub/Sub subscription created by Nest to not expire by default.

View File

@ -102,3 +102,9 @@ script:
## Supported devices
Network receivers from Onkyo and Integra are supported starting with models from the year 2011. Pioneer network receivers are supported starting with models from 2016.
## Removing the integration
This integration follows standard integration removal. No extra steps are required.
{% include integrations/remove_device_service.md %}

View File

@ -19,6 +19,10 @@ The **P1 Monitor** {% term integration %} allows you to gather data from your [P
P1 Monitor is a piece of software that can be installed on a Raspberry Pi or other Linux-based system. It reads the data from your smart meter via the serial port (P1), such as your energy consumption, but also that of gas or a water meter.
{% note %}
If youre not using **P1 Monitor** software, youre likely looking for the [DSMR Smart Meter](/integrations/dsmr/) integration, which connects directly to DSMR-compatible smart meters.
{% endnote %}
{% include integrations/config_flow.md %}
{% configuration_basic %}

View File

@ -168,154 +168,148 @@ This integration follows standard integration removal. No extra steps are requir
This will also remove all connected Adam devices (such as Anna, Tom or Lisa) or connected Adam/Stretch plugs.
### Actions
## Actions
#### Update Smile data
### Climate control actions
Forced update of data from your Smile can be triggered by calling the generic `homeassistant.update_entity` action with your Smile entity as the target.
For information on how to use the available actions, please refer to the [climate](/integrations/climate#climate-control-actions) integration.
Available actions to all climate gateways: `climate.set_temperature`, `climate.set_hvac_mode`, and `climate.set_preset_mode`.
Additional actions available for Adam: `climate.turn_on`, `climate.turn_off`, and `climate.toggle`.
{% note %}
The additional actions will change Adam's **regulation mode** (the HVAC system mode) to either on or off, affecting the operation of **all** connected thermostats. Turning on activates the previously selected heating or cooling mode.
{% endnote %}
### Schedule select action
Available action: `select.select_option`
{% tip %}
The available schedules depend on the [schedules](#schedule-management) you have configured.
{% endtip %}
### HVAC modes
The following HVAC modes are available:
- `auto`: Active schedule The thermostat changes presets/setpoints according to the schedule.
- `cool or heat`: No active schedule The system is manually set to cooling or heating mode, activating based on room temperature relative to the thermostat setpoint.
For Adam:
- `off`: Regulation is set to off The HVAC system does not heat or cool, but the domestic hot water heating function (if available) remains active.
If you have an Anna with Elga:
- `heat_cool`: No active schedule The system is in automatic cooling or heating mode, using the active preset or manually set temperature to control the HVAC system.
{% note %}
The last schedule that was active is determined the same way long-tapping the top of an Anna works.
{% endnote %}
## Gateway Modes
The Adam Gateway supports multiple operational modes that provide flexibility in managing your heating and cooling systems, allowing you to tailor your system's behavior to your needs.
- Normal Mode
- **Description**: This is the default operational mode, operating based on the active schedules and presets configured. Ideal for day-to-day operations, ensuring optimal comfort and energy efficiency.
- **Remarks**: Smart thermostats and zone controls continue their self-regulating behavior, including pre-heating or cooling based on their forecasted requirements.
- Pause Mode
- **Description**: Pause mode temporarily halts the heating or cooling operations, disabling all schedules and temperature control.
- **Remarks**: Useful for scenarios where no climate control is needed, such as extended periods when doors or windows are open for ventilation or maintenance work is ongoing. The system remains idle until switched back to Normal mode or another operational state.
- Vacation Mode
- **Description**: Vacation mode optimizes the system for prolonged absence, reducing energy consumption while maintaining basic functionality. Heating or cooling is set to a minimal level to prevent freezing (in winter) or excessive heat (in summer).
- **Remarks**: Ideal for extended trips or holidays when the house will be unoccupied. Active schedules are overridden until the mode is switched back to Normal.
{% tip %}
For best results, ensure your schedules and presets are appropriately configured for Normal mode and align Vacation mode settings with your energy-saving goals.
{% endtip %}
## Examples
### Energy-Based Automations
A great example of automating charging your car from the energy data the P1 provides can be found in the [Energy Management System for Car Charging](https://community.home-assistant.io/t/energy-management-system-for-car-charging-surplus-trip-calendar/744069) blueprint.
### Climate-Based Automations
When using smart zone controls or thermostats, relying heavily on additional automations may interfere with their ability to accurately predict warm-up or cool-down times. Instead, leverage their preset modes to optimize energy efficiency and reduce environmental impact, as well as your energy bills. Below are some examples to help you get started.
For advanced customization and full manual control, consider using a blueprint like [Advanced Heating Control](https://community.home-assistant.io/t/advanced-heating-control/469873/1). If you choose this route, we recommend disabling your Plugwise schedules to ensure the blueprint takes full control.
#### Presence-based preset mode
The example automation below adjusts the active preset to 'away' when no one is home, reducing unnecessary heating or cooling. For instance, if you unexpectedly head to the office on a work-from-home day, the system will conserve energy. The active schedule will later override the 'away' mode, or you can create a complementary automation to activate another preset when someone returns home.
```yaml
# Example script change the temperature
script:
force_adam_update:
sequence:
- action: homeassistant.update_entity
target:
entity_id: climate.living_room
automation:
alias: "Set climate to away when nobody is home"
triggers:
# When either occupant leaves for more than 15 minutes
- trigger: state
entity_id:
- person.mom
- person.dad
to: not_home
for:
minutes: 15
conditions:
# If Anna is using the normal "home" preset
- condition: state
entity_id: climate.anna
attribute: preset_mode
state: home
# And nobody is home
- condition: state
entity_id: person.mom
entity_id: person.dad
state: not_home
actions:
# Change Anna to Away
- action: climate.set_preset_mode
data:
preset_mode: away
target:
entity_id: climate.anna
```
#### Reboot the Plugwise gateway
#### Calendar-based Vacation Mode
action: `button.press`
The example automations below will change the gateway mode of your Adam to Vacation mode (and back) assuming you have a [calendar](/integrations/calendar) integration with a specific calendar set up for events when nobody is at home.
```yaml
# Example script change the thermostat schedule
script:
reboot_gateway:
sequence:
- action: button.press
target:
entity_id: button.adam_reboot
automation:
- triggers:
- trigger: calendar
event: start
# Calendar when your home is vacant
entity_id: calendar.vacancy
actions:
# Change Adam operational mode
- action: select.select_option
data:
option: "vacation"
target:
entity_id: select.adam_gateway_mode
- triggers:
- trigger: calendar
event: end
# Calendar when your home is vacant
entity_id: calendar.vacancy
# Offset by some time to allow to pre-condition
offset: -04:00:00
actions:
# Change Adam operational mode
- action: select.select_option
data:
option: "full"
target:
entity_id: select.adam_gateway_mode
```
#### Set HVAC mode
action: `climate.set_hvac_mode`
Available options include `off` (Adam only) `auto`, `cool`, `heat`, and `heat_cool` (Anna with Elga only).
The meaning of `off` is that the Adam regulation is set to off. This means that the connected HVAC-system does not heat or cool, only the domestic hot water heating function, when available, is active.
The meaning of `cool` or `heat` is that there is no schedule active. For example, if the system is manually set to cooling- or heating-mode, the system will be active if the room temperature is above/below the thermostat setpoint.
The meaning of `heat/cool` is that there is no schedule active. For example, if the system is in automatic cooling- or heating-mode, the active preset or manually set temperature is used to control the HVAC system.
The meaning of `auto` is that a schedule is active and the thermostat will change presets/setpoints accordingly.
The last schedule that was active is determined the same way long-tapping the top of Anna works.
Example:
```yaml
# Example script climate.set_hvac_mode to auto = schedule active
script:
lisa_reactivate_last_schedule:
sequence:
- action: climate.set_hvac_mode
target:
entity_id: climate.living_room
data:
hvac_mode: auto
```
#### Turn on / turn off
action: `climate.turn_off`, `climate.turn_on` (Adam only)
These actions will switch the Adam regulation mode (= HVAC system mode) to off or on, affecting the operation of all connected thermostats.
`climate.turn_on` will activate the previously selected heating or cooling mode.
Example:
```yaml
# Example script climate.turn_off
script:
turn_heating_on:
sequence:
- action: climate.turn_off
target:
entity_id: climate.bios
```
#### Change climate schedule
action: `select.select_option`
```yaml
# Example script change the thermostat schedule
script:
lisa_change_schedule:
sequence:
- action: select.select_option
target:
entity_id: select.bios_thermostat_schedule
data:
option: "Regulier"
```
#### Change boiler setpoint
action: `number.set_value`
```yaml
# Example script change the boiler setpoint
script:
change_max_boiler_tempeture_setpoint:
sequence:
- action: number.set_value
target:
entity_id: number.opentherm_max_boiler_temperature_setpoint
data:
value: 60
```
#### Set temperature
action: `climate.set_temperature`
Example:
```yaml
# Example script change the temperature
script:
anna_set_predefined_temperature:
sequence:
- action: climate.set_temperature
target:
entity_id: climate.anna
data:
temperature: 19.5
```
#### Set preset mode
action: `climate.set_preset_mode`
Available options include: `home`, `vacation` (Anna only), `no_frost`, `asleep` & `away`.
Example:
```yaml
# Example script changing the active (or currently set by schedule) preset
script:
anna_activate_preset_asleep:
sequence:
- action: climate.set_preset_mode
data:
preset_mode: asleep
```
## Supported devices
### Supported devices
### Adam

View File

@ -5,7 +5,6 @@ ha_category:
- Vacuum
ha_iot_class: Local Push
ha_release: 0.51
ha_conflig_flow: true
ha_codeowners:
- '@pschmitt'
- '@cyr-ius'

View File

@ -62,7 +62,7 @@ type: markdown
title: Packages in transit
content: >
{% for package in
states.sensor['seventeentrack_in_transit'].attributes.packages %}
states.sensor['17track_in_transit'].attributes.packages %}
>- **{{ package.friendly_name }} ({{ package.tracking_number }}):** {{
package.info_text }}

View File

@ -22,7 +22,7 @@ The **Solarlog** {% term integration %} uses the open JSON interface on [Solar-L
## Supported devices
The integration should work with all Solar-Log devices.
The integration should work with all Solar-Log devices with [firmware 3.x](#known-limitations).
## Prerequisites
@ -142,3 +142,4 @@ The integration provides no additional actions.
## Known limitations
The integration only provides the (limited) data exposed by means of the JSON interface. This also entails that the values for the self-consumption are rounded to full kWh.
Firmware versions below 3.x are not supported, as they do not expose the JSON interface. Please contact the Solar-Log support if you need assistance with updating the firmware of your Solar-Log device.

View File

@ -21,7 +21,7 @@ ha_integration_type: integration
The Squeezebox integration allows you to control music players from the [Lyrion Music Server](https://lyrion.org/) (LMS) ecosystem. Lyrion Music Server was formerly known as [Logitech Media Server](https://en.wikipedia.org/wiki/Squeezebox_%28network_music_player%29).
This integration provides both media players connected to the server and supporting binary sensors for the server status.
This integration connects to an existing <abbr title="Lyrion Music Server">LMS</abbr> server and provides both media players and sensors for monitoring server status.
The Squeezebox music player ecosystem, which can be controlled through this integration, includes hardware audio players from Logitech, including [Squeezebox 3rd Generation, Squeezebox Boom, Squeezebox Receiver, Transporter, Squeezebox2, Squeezebox and SLIMP3](https://lms-community.github.io/players-and-controllers/hardware-comparison/), and many software emulators like [Squeezelite, SqueezeSlave, SoftSqueeze and SqueezePlay](https://sourceforge.net/projects/lmsclients/files/).

View File

@ -217,7 +217,7 @@ These are the entities available in the Tesla Fleet integration. Not all entitie
| Binary sensor | Trip charging | No |
| Binary sensor | User present | Yes |
| Button | Flash lights | Yes |
| Button | Homelink | Yes |
| Button | HomeLink | Yes |
| Button | Honk horn | Yes |
| Button | Keyless driving | Yes |
| Button | Play fart | Yes |

View File

@ -107,7 +107,7 @@ These are the entities available in the Teslemetry integration. Not all entities
|Binary sensor|User present|Yes|
|Binary sensor|Wiper heat|No|
|Button|Flash lights|Yes|
|Button|Homelink|Yes|
|Button|HomeLink|Yes|
|Button|Honk horn|Yes|
|Button|Keyless driving|Yes|
|Button|Play fart|Yes|

View File

@ -91,7 +91,7 @@ The integration will create binary sensor entities for a variety of metrics rela
The integration will create button entities to control various aspects of the vehicle:
- Flash lights
- Homelink
- HomeLink
- Honk horn
- Keyless driving
- Play fart

View File

@ -199,10 +199,24 @@ If required, you can manually trigger an update via **Developer tools** > **Acti
### Device connections
- Take note of the known limitation for subnets above.
- Try switching the device off for 5 seconds before switching back on again.
- Ensure that your username is your TP-Link cloud username, which is your *case-sensitive* email address.
- Ensure you have enabled **Tapo Lab** > **Third-Party Compatibility** in the Tapo app. You may need to factory reset and re-add to the Tapo app after this step.
- Disable or remove any custom integrations that interact with TPLink devices supported by this integration.
- Ensure stable network connectivity between Home Assistant and the device.
- Check the [reported connection solutions](#reported-connection-solutions) section below.
- Check the [supported device list](#supported-devices) to see if the device is tested to work with the integration.
- Try running the [kasa tool](https://github.com/python-kasa/python-kasa) to connect to the device. An easy way to do this is to [install uv](https://docs.astral.sh/uv/getting-started/installation/) and run `uvx --from python-kasa kasa --username <tplink cloud username> --password <tplink cloud password>`
- Raise a support issue
- Raise a support issue. See the [section below](#raising-support-issues) for guidelines.
#### Reported connection solutions
These are some of the solutions that Home Assistant users have reported as solving their device connection issues:
- Make the first letter of your TP-Link cloud username email upper-case. This could be because it was automatically capitalized when first entered into the Tapo app.
- Remove the device from the Tapo app and re-add by searching for the correct model (i.e. do not use auto-discovery)
- Log out of the Tapo and Kasa apps, factory reset the device, log back in to the Tapo app, then re-add the device to the Tapo app.
- Specifically for cameras, disable and re-enable the **Settings** > **Advanced Settings** > **Camera account** options in the Tapo app.
- Specifically for cameras, reset the **Settings** > **Advanced Settings** > **Camera account** credentials in the Tapo app.
### Unavailable entities
@ -217,6 +231,32 @@ Currently, Tapo devices and newer Kasa devices do not report total consumption,
This entity has been removed from the integration due to stability issues, calling the TPLink cloud API to check for updates. It will be replaced in a future release with a new Update entity, but if you have an Unavailable entity ID starting with `binary_sensor.` and ending with `update`, you can safely delete it.
### Raising support issues
For the maintainers of the TP-Link integration to be able to properly assist with a support issue, please follow these guidelines:
- Raise an issue with [Home Assistant Core](https://github.com/home-assistant/core/issues).
- Fill in as many of the fields in the issue template as you can.
- If applicable, list all steps taken from the [Troubleshooting device connections](#device-connections) section above.
- Upload [debug logs](#enable-debug-logging) that run from Home Assistant first starting up, until the error is encountered.
### Enable debug logging
To capture debug logs from Home Assistant first starting up, update [`configuration.yaml`](https://www.home-assistant.io/docs/configuration/) to look like this:
```yaml
logger:
default: warning # This will already be present. Add the lines below.
logs:
homeassistant.components.tplink: debug
kasa: debug
```
Then restart Home Assistant, trigger the error, and download the logs from **Settings** > **System** > **Logs** > **Download logs**
{% note %}
Remember to disable debug logging after troubleshooting to prevent excessive log growth and performance impact.
{% endnote %}
## Examples

View File

@ -33,7 +33,7 @@ The `weather` {% term entity %} can provide the conditions listed below as its s
- **Cloudy**: There are many clouds in the sky. `cloudy`.
- **Fog**: There is a thick mist or fog reducing visibility. `fog`.
- **Hail**: Hailstones are falling. `hail`.
- **Lightning**: Lightning/thunderstorms are occurring. `lighting`.
- **Lightning**: Lightning/thunderstorms are occurring. `lightning`.
- **Lightning, rainy**: Lightning/thunderstorm is occurring along with rain. `lightning-rainy`.
- **Partly cloudy**: The sky is partially covered with clouds. `partlycloudy`.
- **Pouring**: It is raining heavily. `pouring`.

View File

@ -163,6 +163,10 @@ automation:
icon: "/home/homeassistant/images/doorbell.png"
```
{% important %}
The icon has to be a local file accessible by Home Assistant, not a web URL. The icon does not need to be accessible by the TV. The integration sends the icon to the TV encoded inside the notification message.
{% endimportant %}
## Data updates
LG webOS TV devices are automatically pushing data to Home Assistant.

View File

@ -71,7 +71,7 @@ The Xbox remote platform will create Remote entities for each console linked to
| Data attribute | Optional | Description |
| ---------------------- | -------- | ---------------------------------------------------------------------- |
| `entity_id` | no | `entity_id` of the Xbox remote. |
| `command` | no | List of the controller commands or text input to be sent.<br />Commands: A, B, X, Y, Up, Down, Left, Right |
| `command` | no | List of the controller commands or text input to be sent.<br />Commands: A, B, X, Y, Up, Down, Left, Right, Menu, View |
| `num_repeats` | yes | Number of times to repeat the commands. |
| `delay_secs` | yes | Interval in seconds between one send and another. |

View File

@ -72,6 +72,7 @@ Enjoy the release!
- [2025.1.1 - January 7](#202511---january-7)
- [2025.1.2 - January 9](#202512---january-9)
- [2025.1.3 - January 20](#202513---january-20)
- [2025.1.4 - January 24](#202514---january-24)
- [Need help? Join the community!](#need-help-join-the-community)
- [Backward-incompatible changes](#backward-incompatible-changes)
- [All changes](#all-changes)
@ -838,6 +839,46 @@ release every Friday.
[@kgraefe]: https://github.com/kgraefe
[@synesthesiam]: https://github.com/synesthesiam
### 2025.1.4 - January 24
- Update Hydrawise maximum watering duration to meet the app limits ([@mattdoran] - [#136050])
- Bump holidays to 0.65 ([@gjohansson-ST] - [#136122])
- Handle width and height placeholders in the thumbnail URL ([@Makrit] - [#136227])
- Fix slave id equal to 0 ([@crug80] - [#136263])
- Handle LinkPlay devices with no mac ([@silamon] - [#136272])
- Fallback to None for literal "Blank" serial number for APCUPSD integration ([@yuxincs] - [#136297])
- Update peblar to v0.4.0 ([@frenck] - [#136329])
- Avoid keyerror on incomplete api data in myuplink ([@astrandb] - [#136333])
- Update frontend to 20250109.1 ([@piitaya] - [#136339])
- Update frontend to 20250109.2 ([@piitaya] - [#136348])
- Bump aiowithings to 3.1.5 ([@joostlek] - [#136350])
- Bump powerfox to v1.2.1 ([@klaasnicolaas] - [#136366])
[#136050]: https://github.com/home-assistant/core/pull/136050
[#136122]: https://github.com/home-assistant/core/pull/136122
[#136227]: https://github.com/home-assistant/core/pull/136227
[#136263]: https://github.com/home-assistant/core/pull/136263
[#136272]: https://github.com/home-assistant/core/pull/136272
[#136297]: https://github.com/home-assistant/core/pull/136297
[#136329]: https://github.com/home-assistant/core/pull/136329
[#136333]: https://github.com/home-assistant/core/pull/136333
[#136339]: https://github.com/home-assistant/core/pull/136339
[#136348]: https://github.com/home-assistant/core/pull/136348
[#136350]: https://github.com/home-assistant/core/pull/136350
[#136366]: https://github.com/home-assistant/core/pull/136366
[@Makrit]: https://github.com/Makrit
[@astrandb]: https://github.com/astrandb
[@bramkragten]: https://github.com/bramkragten
[@crug80]: https://github.com/crug80
[@frenck]: https://github.com/frenck
[@gjohansson-ST]: https://github.com/gjohansson-ST
[@joostlek]: https://github.com/joostlek
[@klaasnicolaas]: https://github.com/klaasnicolaas
[@mattdoran]: https://github.com/mattdoran
[@piitaya]: https://github.com/piitaya
[@silamon]: https://github.com/silamon
[@yuxincs]: https://github.com/yuxincs
## Need help? Join the community!
Home Assistant has a great community of users who are all more than willing

View File

@ -1287,6 +1287,46 @@ For a summary in a more readable format:
[@kgraefe]: https://github.com/kgraefe
[@synesthesiam]: https://github.com/synesthesiam
## Release 2025.1.4 - January 24
- Update Hydrawise maximum watering duration to meet the app limits ([@mattdoran] - [#136050])
- Bump holidays to 0.65 ([@gjohansson-ST] - [#136122])
- Handle width and height placeholders in the thumbnail URL ([@Makrit] - [#136227])
- Fix slave id equal to 0 ([@crug80] - [#136263])
- Handle LinkPlay devices with no mac ([@silamon] - [#136272])
- Fallback to None for literal "Blank" serial number for APCUPSD integration ([@yuxincs] - [#136297])
- Update peblar to v0.4.0 ([@frenck] - [#136329])
- Avoid keyerror on incomplete api data in myuplink ([@astrandb] - [#136333])
- Update frontend to 20250109.1 ([@piitaya] - [#136339])
- Update frontend to 20250109.2 ([@piitaya] - [#136348])
- Bump aiowithings to 3.1.5 ([@joostlek] - [#136350])
- Bump powerfox to v1.2.1 ([@klaasnicolaas] - [#136366])
[#136050]: https://github.com/home-assistant/core/pull/136050
[#136122]: https://github.com/home-assistant/core/pull/136122
[#136227]: https://github.com/home-assistant/core/pull/136227
[#136263]: https://github.com/home-assistant/core/pull/136263
[#136272]: https://github.com/home-assistant/core/pull/136272
[#136297]: https://github.com/home-assistant/core/pull/136297
[#136329]: https://github.com/home-assistant/core/pull/136329
[#136333]: https://github.com/home-assistant/core/pull/136333
[#136339]: https://github.com/home-assistant/core/pull/136339
[#136348]: https://github.com/home-assistant/core/pull/136348
[#136350]: https://github.com/home-assistant/core/pull/136350
[#136366]: https://github.com/home-assistant/core/pull/136366
[@Makrit]: https://github.com/Makrit
[@astrandb]: https://github.com/astrandb
[@bramkragten]: https://github.com/bramkragten
[@crug80]: https://github.com/crug80
[@frenck]: https://github.com/frenck
[@gjohansson-ST]: https://github.com/gjohansson-ST
[@joostlek]: https://github.com/joostlek
[@klaasnicolaas]: https://github.com/klaasnicolaas
[@mattdoran]: https://github.com/mattdoran
[@piitaya]: https://github.com/piitaya
[@silamon]: https://github.com/silamon
[@yuxincs]: https://github.com/yuxincs
[#115483]: https://github.com/home-assistant/core/pull/115483
[#117355]: https://github.com/home-assistant/core/pull/117355
[#121371]: https://github.com/home-assistant/core/pull/121371