diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index 5805e4be0e2..8d98d8e2237 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -11,22 +11,26 @@
"appPort": [4000],
"onCreateCommand": "bundle install && npm install",
"containerEnv": { "DEVCONTAINER": "true" },
- "extensions": [
- "davidanson.vscode-markdownlint",
- "editorconfig.editorconfig",
- "GitHub.vscode-pull-request-github",
- "mrmlnc.vscode-scss",
- "rebornix.Ruby",
- "streetsidesoftware.code-spell-checker",
- "taichi.vscode-textlint",
- "yzhang.markdown-all-in-one"
- ],
- "settings": {
- "editor.renderWhitespace": "boundary",
- "editor.rulers": [80, 100, 120],
- "gitlens.showWelcomeOnInstall": false,
- "gitlens.showWhatsNewAfterUpgrades": false,
- "terminal.integrated.shell.linux": "/usr/bin/zsh",
- "workbench.startupEditor": "none"
+ "customizations": {
+ "vscode": {
+ "extensions": [
+ "davidanson.vscode-markdownlint",
+ "editorconfig.editorconfig",
+ "GitHub.vscode-pull-request-github",
+ "mrmlnc.vscode-scss",
+ "rebornix.Ruby",
+ "streetsidesoftware.code-spell-checker",
+ "taichi.vscode-textlint",
+ "yzhang.markdown-all-in-one"
+ ],
+ "settings": {
+ "editor.renderWhitespace": "boundary",
+ "editor.rulers": [80, 100, 120],
+ "gitlens.showWelcomeOnInstall": false,
+ "gitlens.showWhatsNewAfterUpgrades": false,
+ "terminal.integrated.shell.linux": "/usr/bin/zsh",
+ "workbench.startupEditor": "none"
+ }
+ }
}
}
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index e44e78d1062..9a4e28c6be4 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -10,7 +10,7 @@ jobs:
- name: Check out files from GitHub
uses: actions/checkout@v4.1.1
- name: Setting up Node.js
- uses: actions/setup-node@v3.8.1
+ uses: actions/setup-node@v4.0.0
with:
node-version: 16.x
cache: "npm"
@@ -27,7 +27,7 @@ jobs:
- name: Check out files from GitHub
uses: actions/checkout@v4.1.1
- name: Setting up Node.js
- uses: actions/setup-node@v3.8.1
+ uses: actions/setup-node@v4.0.0
with:
node-version: 16.x
cache: "npm"
diff --git a/source/_docs/z-wave/controllers.markdown b/source/_docs/z-wave/controllers.markdown
index e4600ba7b75..0479530b7ac 100644
--- a/source/_docs/z-wave/controllers.markdown
+++ b/source/_docs/z-wave/controllers.markdown
@@ -20,7 +20,7 @@ Users should upgrade the firmware on all 700 series controllers to version 7.17.
-- 800 series controllers
+- 800 series controllers (with some caveats, see notes)
- Zooz 800 Series Z-Wave Long Range S2 Stick (ZST39 LR)
- 700 series controllers
@@ -63,6 +63,15 @@ The alternative to a stick is a hub that supports Z-Wave. Home Assistant support
## Controller Notes
+### 800 Series Controllers
+
+Z-Wave JS and Z-Wave JS UI do not support the following features available on most 800 series controllers.
+
+Unsupported:
+
+ - Long Range
+ - NVM Backup/Restore
+
### Aeotec Z-Stick
diff --git a/source/_includes/installation/operating_system.md b/source/_includes/installation/operating_system.md
index 11ee5885369..8cb94d2838f 100644
--- a/source/_includes/installation/operating_system.md
+++ b/source/_includes/installation/operating_system.md
@@ -276,6 +276,26 @@ _All these can be extended if your usage calls for more resources._
More details can be found about the command can be found [here](https://www.virtualbox.org/manual/ch08.html#vboxmanage-storageattach).
+
+- title: Unraid
+ content: |
+ 1. Download the **.qcow2** image above and decompress it. (**Extract all** in Windows)
+ 2. Store the image in the **isos** share on your server.
+ 3. Make sure under **Settings** > **VM manager**, **Enable VMs** is enabled.
+ 4. Create a new virtual machine: **VMS** > **Add VM**.
+ 5. Select type **Linux** and give the VM a name and a description.
+ 6. Select the CPU cores you want to let the VM use and give it some memory.
+ 7. Under **Primary vDisk Location**, select **Manual** and then select the qcow2 image.
+ 8. Select your keyboard language under **VM Console Keyboard**.
+ 9. Select **br0** under **Network Source**.
+ 10. Select **virtio** under **Network model**.
+ 11. Select any USB-devices that you want to pass through to Home Assistant, such as Zigbee- or Z-Wave controllers.
+ 12. Deselect **Start VM after creation**.
+ 13. Select **Create**.
+ 14. Select the name of your new VM and select the capacity number for your disk. Here, you can expand the disk to whatever your needs are. The default is 32 GB.
+ 15. Select the icon of your new VM and select **start with console (VNC)**.
+
+
{% unless page.installation_type == 'macos' %}
- title: KVM (virt-manager)
content: |
diff --git a/source/_integrations/adax.markdown b/source/_integrations/adax.markdown
index 3d688bb5229..03d77c6fe26 100644
--- a/source/_integrations/adax.markdown
+++ b/source/_integrations/adax.markdown
@@ -18,9 +18,11 @@ Integrates Adax heater into Home Assistant.
You can configure the heaters to use a local or cloud interface.
-The local integrations only works with newer Adax heaters with both Bluetooth and wifi. Home Assistant uses Bluetooth to configure the heaters. For the local integration, you have to reset the heater by pressing + and OK until the display shows 'Reset'. Then press and hold the OK button on the heater until the blue LED starts blinking before pressing Submit. Configuring the heater might take some minutes. Using the local integration will disable cloud communication and the Adax app will not work.
+The local integrations only works with newer Adax heaters with both Bluetooth and wifi. Home Assistant uses Bluetooth LE to configure the heaters, this means your machine running “Home Assistant” needs to have a Bluetooth adapter and the heater needs to be in range during setup. For the local integration, you have to reset the heater by pressing + and OK until the display shows 'Reset'. Then press and hold the OK button on the heater until the blue LED starts blinking before pressing Submit. Configuring the heater might take some minutes. Using the local integration will disable cloud communication and the Adax app will not work.
-For the cloud integration, you'll need the Account ID (which can be found in the Adax Wifi app, pressing 'Account'). You will also need a credential, which you can create in the Adax app:
+For the cloud integration, you'll need the Account ID (which can be found in the Adax Wifi app, pressing 'Account'. Which you will find as a number between the "log out" and "close account" buttons).
+
+You will also need a credential, which you can create in the Adax app:
1. Navigate to the Account tab.
2. Go to **Third party integrations**.
@@ -28,4 +30,6 @@ For the cloud integration, you'll need the Account ID (which can be found in the
4. Select **Add Credential**.
5. Give some name to the created credential (e.g. 'Home Assistant') and copy the generated password.
+In the configuration popup you will need the Account ID, and the generated API password (not the account password)
+
{% include integrations/config_flow.md %}
diff --git a/source/_integrations/epsonworkforce.markdown b/source/_integrations/epsonworkforce.markdown
index e47b5f4682b..1a057cdc183 100644
--- a/source/_integrations/epsonworkforce.markdown
+++ b/source/_integrations/epsonworkforce.markdown
@@ -70,6 +70,7 @@ Tested devices:
- Epson WF4820
- Epson EcoTank ET-77x0
- Epson ET-2650
+- EPSON ET-2750
- Epson ET-4750
- Epson EcoTank ET-5150 (51x0)
- Epson Expression Home XP-2100
diff --git a/source/_integrations/imap.markdown b/source/_integrations/imap.markdown
index f7f4cf7c4e1..07ed28f7ac3 100644
--- a/source/_integrations/imap.markdown
+++ b/source/_integrations/imap.markdown
@@ -226,22 +226,22 @@ template:
id: "custom_event"
event_data:
sender: "no-reply@smartconnect.apc.com"
- - sensor:
- - name: "Previous Day Energy Use"
- unit_of_measurement: "kWh"
- state: >
- {{ trigger.event.data["text"]
- | regex_findall_index("\*Yesterday's Energy Use:\* ([0-9]+) kWh") }}
- - name: "Previous Day Cost"
- unit_of_measurement: "$"
- state: >
+ sensor:
+ - name: "Previous Day Energy Use"
+ unit_of_measurement: "kWh"
+ state: >
{{ trigger.event.data["text"]
- | regex_findall_index("\*Yesterday's estimated energy cost:\* \$([0-9.]+)") }}
- - name: "Billing Cycle Total"
- unit_of_measurement: "$"
- state: >
- {{ trigger.event.data["text"]
- | regex_findall_index("\ days:\* \$([0-9.]+)") }}
+ | regex_findall_index("\*Yesterday's Energy Use:\* ([0-9]+) kWh") }}
+ - name: "Previous Day Cost"
+ unit_of_measurement: "$"
+ state: >
+ {{ trigger.event.data["text"]
+ | regex_findall_index("\*Yesterday's estimated energy cost:\* \$([0-9.]+)") }}
+ - name: "Billing Cycle Total"
+ unit_of_measurement: "$"
+ state: >
+ {{ trigger.event.data["text"]
+ | regex_findall_index("\ days:\* \$([0-9.]+)") }}
```
{% endraw %}
diff --git a/source/_integrations/matter.markdown b/source/_integrations/matter.markdown
index a65b029bb7d..d207c79eb19 100644
--- a/source/_integrations/matter.markdown
+++ b/source/_integrations/matter.markdown
@@ -53,7 +53,7 @@ Home Assistant, as a Matter controller, only supports **control** of Matter devi
## Thread
-Matter goes hand-in-hand with (but is not the same as) [Thread](), which is a low power Radio mesh networking techology. Much like Zigbee, but with the key difference that it is _IP-addressable_, making it the perfect companion transport for Matter.
+Matter goes hand-in-hand with (but is not the same as) [Thread](), which is a low power radio mesh networking technology. Much like Zigbee, but with the key difference that it is _IP-addressable_, making it the perfect companion transport for Matter.
Thread devices become directly addressable by Matter controllers (such as Home Assistant) thanks to the use of so-called Thread Border Routers, which are in fact just devices that are both within your network and have a Thread chip builtin and thus act as a "router" between the Thread radio signal and your local network. These border routers (you will probably end up having multiple of them in your house) make sure that your Thread-based devices are reachable on your regular network and thus can be controlled with Matter. Examples of Thread Borders routers are the Apple TV 4K, HomePod (gen 2 or Mini), and the Google Nest Hub V2, so devices that you may already own. Besides that, all kind of other border routers are available, built-in to hardware appliances or software solutions based on OpenThread Border Router, such as the add-on we provide to use with the built-in Zigbee/Thread chip of the [Home Assistant Yellow](/yellow/) or the [Home Assistant SkyConnect](/skyconnect/) dongle.
@@ -80,7 +80,7 @@ For devices where Home Assistant provides a native integration (with local API),

-Image taken from [this excellent article by The Verge](https://www.theverge.com/23165855/thread-smart-home-protocol-matter-apple-google-interview) about Matter that shows the landcape of Matter, Thread, Border routers and bridges in a nice visualized way.
+Image taken from [this excellent article by The Verge](https://www.theverge.com/23165855/thread-smart-home-protocol-matter-apple-google-interview) about Matter that shows the landscape of Matter, Thread, Border routers and bridges in a nice visualized way.
{% include integrations/config_flow.md %}
@@ -88,7 +88,7 @@ For communicating with Matter devices, the Home Assistant integration runs its o
### Supported installation types
-It is recommended to run the Matter add-on on Home Assistant OS. This is currently the best-supported option.
+It is recommended to run the Matter add-on on Home Assistant OS. This is currently the best-supported option.
If you run Home Assistant in a container, you can run a Docker image of the [Matter server](https://github.com/home-assistant-libs/python-matter-server). The requirements and instructions for your host setup are described on that GitHub page.
@@ -212,7 +212,7 @@ The Philips Hue V2 bridge supports Matter. You can enable Matter support in the
### SwitchBot Hub 2
-SwitchBot has released a (beta) firmware update to enable Matter support on their Hub 2. The SwitchBot Hub 2 is a Matter bridge device. It is bridging some of the devices, such as curtain motors, into Matter.
+SwitchBot has released a (beta) firmware update to enable Matter support on their Hub 2. The SwitchBot Hub 2 is a Matter bridge device. It is bridging some of the devices, such as curtain motors, into Matter.
- To use Matter, in the SwitchBot app, enable Matter bridge support. Then, copy the code and use that to commission the Hub to Home Assistant. Another option is to use a second device to scan the QR code.
- Device support is limited. You bridge specific devices to Matter by adding them as **Secondary device** in the app. Note that not all SwitchBot devices can be bridged.
@@ -235,7 +235,7 @@ Tasmota supports Matter over IP on all ESP32 based devices (in experimental phas
### General recommendations
-- Using Thread-based Matter devices in Home Assistant requires Home Assistant OS version 10 and above. Not using Home Assistant OS is at your own risk. We do provide some [documentation](https://github.com/home-assistant-libs/python-matter-server/blob/main/README.md) on how to run the Matter Server as a Docker container. The documentation includes a description of the host and networking requirements.
+- Using Thread-based Matter devices in Home Assistant requires Home Assistant OS version 10 and above. Not using Home Assistant OS is at your own risk. We do provide some [documentation](https://github.com/home-assistant-libs/python-matter-server/blob/main/README.md) on how to run the Matter Server as a Docker container. The documentation includes a description of the host and networking requirements.
- To use Thread devices you will need a Thread Network with at least one Thread Border Router in your network nearby the Thread device(s). Apple users need for example the Apple TV 4K or the HomePod Mini, while Google users need a Nest Hub V2. Use the Thread integration in Home Assistant to diagnose your Thread network(s).
diff --git a/source/_integrations/nina.markdown b/source/_integrations/nina.markdown
index fd25928cfa7..a027c4ed896 100644
--- a/source/_integrations/nina.markdown
+++ b/source/_integrations/nina.markdown
@@ -18,6 +18,12 @@ The [NINA](https://www.bbk.bund.de/DE/Warnung-Vorsorge/Warn-App-NINA/warn-app-ni
For each county/city it creates warning slots that change to Unsafe when warnings are present. The text of the warning and the metadata are stored in the attributes of the slots.
+
+
+This integration may only works with an Internet connection that supports IPv4.
+
+
+
{% include integrations/config_flow.md %}
### Filter
diff --git a/source/_integrations/private_ble_device.markdown b/source/_integrations/private_ble_device.markdown
index 68b4b5b0391..aa159b24d78 100644
--- a/source/_integrations/private_ble_device.markdown
+++ b/source/_integrations/private_ble_device.markdown
@@ -31,7 +31,7 @@ There are two common representations for encoding an IRK - base64 encoding or he
If you are trying to get the IRK for your iPhone or Apple Watch, you must be logged in to the Mac with the same iCloud account on those devices. This procedure should also work for devices that you pair with macOS.
-1. Start the **Keychain Acess** application.
+1. Start the **Keychain Access** application.
2. In the left sidebar, make sure iCloud is selected.
3. In the search bar in the upper right, type Bluetooth.
4. A list of GUIDs is shown.
diff --git a/source/_integrations/sensor.mqtt.markdown b/source/_integrations/sensor.mqtt.markdown
index 66929025f4c..cc317fe6c5c 100644
--- a/source/_integrations/sensor.mqtt.markdown
+++ b/source/_integrations/sensor.mqtt.markdown
@@ -211,7 +211,20 @@ In this section you find some real-life examples of how to use this sensor.
### JSON attributes topic configuration
-The example sensor below shows a configuration example which uses a JSON dict: `{"ClientName": , "IP": , "MAC": , "RSSI": , "HostName": , "ConnectedSSID": }` in a separate topic `home/sensor1/attributes` to add extra attributes. It also makes use of the `availability` topic.
+The example sensor below shows a configuration example which uses the following separate topic and JSON structure to add extra attributes.
+
+Topic: `home/sensor1/attributes`
+ ```json
+ {
+ "ClientName": ,
+ "IP": ,
+ "MAC": ,
+ "RSSI": ,
+ "HostName": ,
+ "ConnectedSSID":
+}
+ ```
+ It also makes use of the `availability` topic.
Extra attributes will be displayed in the frontend and can also be extracted in [Templates](/docs/configuration/templating/#attributes). For example, to extract the `ClientName` attribute from the sensor below, use a template similar to: {% raw %}`{{ state_attr('sensor.bs_rssi', 'ClientName') }}`{% endraw %}.
@@ -236,7 +249,22 @@ mqtt:
### JSON attributes template configuration
-The example sensor below shows a configuration example which uses a JSON dict: `{"Timer1":{"Arm": , "Time":