From 6b35e63615f7518d750e495eaf4ba8e774c18bcc Mon Sep 17 00:00:00 2001 From: Zack Barett Date: Mon, 21 Mar 2022 08:53:12 -0500 Subject: [PATCH 01/15] Comment out subscribe form in blog sidebar for now (#22102) --- source/_includes/asides/about.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_includes/asides/about.html b/source/_includes/asides/about.html index 5e77ee9c918..20cf4582788 100644 --- a/source/_includes/asides/about.html +++ b/source/_includes/asides/about.html @@ -8,13 +8,13 @@
  • Try the online demo
  • -
  • +
    From e2ad20b99a8c95de61e2c987fb29dd05e04d0a36 Mon Sep 17 00:00:00 2001 From: Pieter Rautenbach Date: Mon, 21 Mar 2022 16:25:53 +0200 Subject: [PATCH 02/15] Document that variables can be templated (#22103) Co-authored-by: Franck Nijhof --- source/_docs/scripts.markdown | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/source/_docs/scripts.markdown b/source/_docs/scripts.markdown index a600a91ce07..cf468a3a0a1 100644 --- a/source/_docs/scripts.markdown +++ b/source/_docs/scripts.markdown @@ -75,6 +75,22 @@ The variables action allows you to set/override variables that will be accessibl {% endraw %} +Variables can be templated. + +{% raw %} + +```yaml +- alias: "Set a templated variable" + variables: + blind_state_message: "The blind is {{ states('cover.blind') }}." +- alias: "Notify about the state of the blind" + service: notify.mobile_app_iphone + data: + message: "{{ blind_state_message }}" +``` + +{% endraw %} + ### Scope of Variables Variables have local scope. This means that if a variable is changed in a nested sequence block, that change will not be visible in an outer sequence block. From a7f3694100e7c970714f9f0524533c4bcb9a3cad Mon Sep 17 00:00:00 2001 From: ChevySSinSD <47265616+ChevySSinSD@users.noreply.github.com> Date: Mon, 21 Mar 2022 09:30:39 -0700 Subject: [PATCH 03/15] Remove CPUSpeed logo from frontmatter (#22090) --- source/_integrations/cpuspeed.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/cpuspeed.markdown b/source/_integrations/cpuspeed.markdown index 1605cf04f8c..bfb3a982a41 100644 --- a/source/_integrations/cpuspeed.markdown +++ b/source/_integrations/cpuspeed.markdown @@ -1,7 +1,6 @@ --- title: CPU Speed description: Instructions on how to integrate CPU speed within Home Assistant. -logo: cpu.png ha_category: - System Monitor ha_release: pre 0.7 From 23eda907360432170df7e1db8e7ad54dfc205add Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Mon, 21 Mar 2022 23:33:43 +0100 Subject: [PATCH 04/15] Improve Tailscale note, to make more clear what it is not. (#22107) --- source/_integrations/tailscale.markdown | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/source/_integrations/tailscale.markdown b/source/_integrations/tailscale.markdown index 0e3bb6c58f4..3c1c35a6e7b 100644 --- a/source/_integrations/tailscale.markdown +++ b/source/_integrations/tailscale.markdown @@ -22,9 +22,16 @@ The Tailscale integration integrates the [Tailscale](https://www.tailscale.com) with Home Assistant; giving you the possibility to monitor and automate on the state of the devices in your Tailscale VPN network (Tailnet). -Please, note that this integration integrates with data from the Tailscale API, -it is not a Tailscale client itself, and thus add Home Assistant to your -Tailscale VPN network. +
    + +This integration **DOES NOT** make your Home Assistant accessible via +Tailscale VPN remotely! + +If you want to access your Home Assistant instance remotely, you will +need to install Tailscale itself on your own. For instructions on how to do +this, please consult the [Tailscale documentation](https://tailscale.com/kb/). + +
    ## Prerequisites From df4b4a926b2d7c770af2711fa6ac7d0c55aa3e15 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Tue, 22 Mar 2022 03:44:44 +0000 Subject: [PATCH 05/15] 2022.3.6 --- _config.yml | 4 +- .../_posts/2022-03-02-release-20223.markdown | 49 +++++++++++++++++++ 2 files changed, 51 insertions(+), 2 deletions(-) diff --git a/_config.yml b/_config.yml index d39d12ccbe3..7bba34a0523 100644 --- a/_config.yml +++ b/_config.yml @@ -107,8 +107,8 @@ social: # Home Assistant release details current_major_version: 2022 current_minor_version: 03 -current_patch_version: 5 -date_released: 2022-03-15 +current_patch_version: 6 +date_released: 2022-03-21 # Either # or the anchor link to latest release notes in the blog post. # Must be prefixed with a # and have double quotes around it. diff --git a/source/_posts/2022-03-02-release-20223.markdown b/source/_posts/2022-03-02-release-20223.markdown index 21bcd9a37fd..09160e7c05e 100644 --- a/source/_posts/2022-03-02-release-20223.markdown +++ b/source/_posts/2022-03-02-release-20223.markdown @@ -53,6 +53,7 @@ Enjoy the release! - [Release 2022.3.3 - March 7](#release-202233---march-7) - [Release 2022.3.4 - March 11](#release-202234---march-11) - [Release 2022.3.5 - March 15](#release-202235---march-15) +- [Release 2022.3.6 - March 21](#release-202236---march-21) - [Need help? Join the community!](#need-help-join-the-community) - [Breaking Changes](#breaking-changes) - [Updates for custom integration developers](#updates-for-custom-integration-developers) @@ -552,6 +553,54 @@ The following integrations are now available via the Home Assistant UI: [shelly docs]: /integrations/shelly/ [somfy_mylink docs]: /integrations/somfy_mylink/ +## Release 2022.3.6 - March 21 + +- Fix TypeError in SamsungTV ([@epenet] - [#68235]) ([samsungtv docs]) +- Fix lyric climate ([@nprez83] - [#67018]) ([lyric docs]) +- Fix finding matrix room that is already joined ([@antlarr] - [#67967]) ([matrix docs]) +- Respect disable_new_entities for new device_tracker entities ([@mib1185] - [#68148]) ([device_tracker docs]) +- Add missing await [velbus] ([@cdce8p] - [#68153]) ([velbus docs]) +- Fix point by adding authlib constraint ([@cdce8p] - [#68176]) ([point docs]) +- Update opensensemap-api to 0.2.0 ([@frenck] - [#68193]) ([opensensemap docs]) +- Bump renault-api to 0.1.10 ([@epenet] - [#68260]) ([renault docs]) +- Hue integration: update errors that should be supressed ([@marcelveldt] - [#68337]) ([hue docs]) +- Filter IPv6 addreses from enphase_envoy discovery ([@bdraco] - [#68362]) ([enphase_envoy docs]) +- Handle Hue discovery errors ([@balloob] - [#68392]) ([hue docs]) +- Fix tplink color temp conversion ([@bdraco] - [#68484]) ([tplink docs]) + +[#67018]: https://github.com/home-assistant/core/pull/67018 +[#67967]: https://github.com/home-assistant/core/pull/67967 +[#68148]: https://github.com/home-assistant/core/pull/68148 +[#68153]: https://github.com/home-assistant/core/pull/68153 +[#68176]: https://github.com/home-assistant/core/pull/68176 +[#68193]: https://github.com/home-assistant/core/pull/68193 +[#68235]: https://github.com/home-assistant/core/pull/68235 +[#68260]: https://github.com/home-assistant/core/pull/68260 +[#68337]: https://github.com/home-assistant/core/pull/68337 +[#68362]: https://github.com/home-assistant/core/pull/68362 +[#68392]: https://github.com/home-assistant/core/pull/68392 +[#68484]: https://github.com/home-assistant/core/pull/68484 +[@antlarr]: https://github.com/antlarr +[@balloob]: https://github.com/balloob +[@bdraco]: https://github.com/bdraco +[@cdce8p]: https://github.com/cdce8p +[@epenet]: https://github.com/epenet +[@frenck]: https://github.com/frenck +[@marcelveldt]: https://github.com/marcelveldt +[@mib1185]: https://github.com/mib1185 +[@nprez83]: https://github.com/nprez83 +[device_tracker docs]: /integrations/device_tracker/ +[enphase_envoy docs]: /integrations/enphase_envoy/ +[hue docs]: /integrations/hue/ +[lyric docs]: /integrations/lyric/ +[matrix docs]: /integrations/matrix/ +[opensensemap docs]: /integrations/opensensemap/ +[point docs]: /integrations/point/ +[renault docs]: /integrations/renault/ +[samsungtv docs]: /integrations/samsungtv/ +[tplink docs]: /integrations/tplink/ +[velbus docs]: /integrations/velbus/ + ## Need help? Join the community! Home Assistant has a great community of users who are all more than willing From 9ea013532e27ec6d3078fab4ce6009f558424435 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 22 Mar 2022 08:04:07 +0100 Subject: [PATCH 06/15] Bump concurrent-ruby from 1.1.9 to 1.1.10 (#22109) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index fdc7794d7d6..6a753cb0e3a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -18,7 +18,7 @@ GEM sass (>= 3.3.0, < 3.5) compass-import-once (1.0.5) sass (>= 3.2, < 3.5) - concurrent-ruby (1.1.9) + concurrent-ruby (1.1.10) em-websocket (0.5.3) eventmachine (>= 0.12.9) http_parser.rb (~> 0) From 147a5adb0c8cd0ce5bad50772d3ea224aa40e513 Mon Sep 17 00:00:00 2001 From: Erik Montnemery Date: Tue, 22 Mar 2022 08:45:42 +0100 Subject: [PATCH 07/15] Update binary sensor group documentation (#22110) --- .../binary_sensor.group.markdown | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/source/_integrations/binary_sensor.group.markdown b/source/_integrations/binary_sensor.group.markdown index dbb98c88394..eeaeef86a91 100644 --- a/source/_integrations/binary_sensor.group.markdown +++ b/source/_integrations/binary_sensor.group.markdown @@ -11,13 +11,12 @@ ha_domain: group The group binary_sensor platform lets you combine multiple binary_sensors into one entity. This integration presents itself as a single binary sensor in the UI. This allows the UI to use the text and icon of the type of sensor you are grouping. The sensor doesn't know what device class it should be, so this should be set to match the device class of the items in the group. -## Group behavior - -By default when any member of a group is `on` then the group will also be `on`. If you set the `all` option to `true` though, this behavior is inverted and all members of the group have to be `on` for the group to turn on as well. +## Configuration To enable this platform in your installation, add the following to your `configuration.yaml` file: ```yaml +# Example configuration.yaml entry binary_sensor: - platform: group name: Patio Doors @@ -50,3 +49,18 @@ device_class: required: false type: string {% endconfiguration %} + +## Group behavior + +Group behavior differs depending on if the `all` option is `false` (the default) or `true`. +If `all` is `false`(the default): +- Group state is `unavailable` if all group members are `unavailable` +- Otherwise, group state is `unknown` if all group members are `unknown` +- Otherwise, group state is `on` if at least one group member is `on` +- Otherwise, group state is `off` + +If `all` is `true`(the default): +- Group state is `unavailable` if all group members are `unavailable` +- Otherwise, group state is `unknown` if at least one group member is `unknown` or `unavailable` +- Otherwise, group state is `off` if at least one group member is `off` +- Otherwise, group state is `on` From da8b51aa5125a0469c7c23a52939d55bb8cde529 Mon Sep 17 00:00:00 2001 From: epenet <6771947+epenet@users.noreply.github.com> Date: Tue, 22 Mar 2022 12:14:21 +0100 Subject: [PATCH 08/15] Add note regarding SamsungTV sources (#22115) Co-authored-by: Franck Nijhof --- source/_integrations/samsungtv.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/samsungtv.markdown b/source/_integrations/samsungtv.markdown index 2028b9f6049..814fe94df14 100644 --- a/source/_integrations/samsungtv.markdown +++ b/source/_integrations/samsungtv.markdown @@ -89,6 +89,7 @@ media_content_type: channel #### Selecting a source It's possible to switch between the 2 sources `TV` and `HDMI`. +Some older models also expose the installed applications through the WebSocket, in which case the source list is adjusted accordingly. ### Known issues and restrictions From e321348260b3c91c963df669580f8104ea803ae5 Mon Sep 17 00:00:00 2001 From: Guy Sheffer Date: Tue, 22 Mar 2022 14:19:57 +0200 Subject: [PATCH 09/15] Add note about switcher needing access to port 20002 UDP (#22086) * Add note about switcher needing access to port 20002 UDP * Remove extra line Co-authored-by: Shay Levy * Add note for home assistance port in case if a vlan Co-authored-by: Shay Levy Co-authored-by: Shay Levy --- source/_integrations/switcher_kis.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_integrations/switcher_kis.markdown b/source/_integrations/switcher_kis.markdown index d0a0b607232..8c8c783e371 100644 --- a/source/_integrations/switcher_kis.markdown +++ b/source/_integrations/switcher_kis.markdown @@ -62,3 +62,7 @@ Note: This does not affect the auto off timer. | ------------- | --------- | -------------------------------------------------------------------------------------- | -------------------------- | | `entity_id` | Yes | Name of the entity id associated with the integration, used for permission validation | switch.switcher_kis_boiler | | `timer_minutes` | Yes | Integer containing timer minutes (valid range 1 to 150) | 90 | + +## Notes + +If Home Assistant and your Switcher are not on the same network, you need to create a firewall rule, which allows a connection on port 20002 with the UDP protocol from Switcher to your Home Assistant and port 9957 with the TCP protocol from Home Assistant to your Switcher. From 3512e03b4cd3f4d9aedd6406aea75172330e8e68 Mon Sep 17 00:00:00 2001 From: Matthias Pfefferle Date: Tue, 22 Mar 2022 14:09:00 +0100 Subject: [PATCH 10/15] [RFLink] fixed links because of re-design of rflink.nl (#21810) --- source/_integrations/rflink.markdown | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/source/_integrations/rflink.markdown b/source/_integrations/rflink.markdown index 1837107611f..5f3127ac17e 100644 --- a/source/_integrations/rflink.markdown +++ b/source/_integrations/rflink.markdown @@ -16,17 +16,17 @@ ha_codeowners: - '@javicalle' --- -The `rflink` integration supports devices that use [RFLink gateway firmware](http://www.rflink.nl/blog2/download), for example, the [Nodo RFLink Gateway](https://www.nodo-shop.nl/nl/21-rflink-gateway). RFLink Gateway is an Arduino Mega firmware that allows two-way communication with a multitude of RF wireless devices using cheap hardware (Arduino + transceiver). +The `rflink` integration supports devices that use [RFLink gateway firmware](https://www.rflink.nl/download.php), for example, the [Nodo RFLink Gateway](https://www.nodo-shop.nl/nl/21-rflink-gateway). RFLink Gateway is an Arduino Mega firmware that allows two-way communication with a multitude of RF wireless devices using cheap hardware (Arduino + transceiver). The 433 MHz spectrum is used by many manufacturers mostly using their own protocol/standard and includes devices like: light switches, blinds, weather stations, alarms and various other sensors. -RFLink Gateway supports a number of RF frequencies, using a wide range of low-cost hardware. [Their website](http://www.rflink.nl/blog2/) provides details for various RF transmitters, receivers and transceiver modules for 433MHz, 868MHz and 2.4 GHz. +RFLink Gateway supports a number of RF frequencies, using a wide range of low-cost hardware. [Their website](https://www.rflink.nl) provides details for various RF transmitters, receivers and transceiver modules for 433MHz, 868MHz and 2.4 GHz.
    Note: Versions later than R44 add support for Ikea Ansluta, Philips Living Colors Gen1 and MySensors devices.
    -A complete list of devices supported by RFLink can be found [here](http://www.rflink.nl/blog2/devlist). +A complete list of devices supported by RFLink can be found [here](https://www.rflink.nl/devlist.php). This integration is tested with the following hardware/software: @@ -69,7 +69,7 @@ tcp_keepalive_idle_timer: description: Time in seconds to wait since last data packet was seen before a TCP KEEPALIVE is sent. Value of 0 will disable this feature. required: false default: 3600 - type: integer + type: integer {% endconfiguration %} ### Full example @@ -160,7 +160,7 @@ Even though a lot of devices are supported by RFLink, not all have been tested/i ### Device Incorrectly Identified -If you find a device is recognized differently, with different protocols or the ON OFF is swapped or detected as two ON commands, it can be overcome with the RFLink 'RF Signal Learning' mechanism from RFLink Rev 46 (11 March 2017). [Link to further detail.](http://www.rflink.nl/blog2/faq#RFFind) +If you find a device is recognized differently, with different protocols or the ON OFF is swapped or detected as two ON commands, it can be overcome with the RFLink 'RF Signal Learning' mechanism from RFLink Rev 46 (11 March 2017). [Link to further detail.](https://www.rflink.nl/faq.php#RFFind) ### Technical Overview From b038ce0bf91663a0eb0552308b5069d1c4cf0332 Mon Sep 17 00:00:00 2001 From: Hedda Date: Tue, 22 Mar 2022 15:34:31 +0100 Subject: [PATCH 11/15] LEDVANCE is OSRAM & SALUS is Computime for ZHA OTA (#22120) Co-authored-by: Franck Nijhof --- source/_integrations/zha.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/_integrations/zha.markdown b/source/_integrations/zha.markdown index c078930ceb0..925606d116d 100644 --- a/source/_integrations/zha.markdown +++ b/source/_integrations/zha.markdown @@ -206,7 +206,7 @@ custom_quirks_path: ZHA component has the ability to automatically download and perform OTA (Over-The-Air) firmware updates of Zigbee devices if the OTA firmware provider source URL for updates is available. OTA firmware updating is set to disabled (`false`) in the configuration by default. -Online OTA providers for firmware updates are currently only available for IKEA, LEDVANCE and SALUS devices. Support for OTA updates from other manufacturers could be supported in the future, if they publish their firmware images publicly. +Online OTA providers for firmware updates are currently only available for IKEA, LEDVANCE/OSRAM, and SALUS/Computime devices. Support for OTA updates from other manufacturers could be supported in the future if they publish their firmware images publicly. To enable OTA firmware updates for the ZHA integration you need to add the following configuration to your `configuration.yaml` and restart Home Assistant: @@ -215,8 +215,8 @@ zha: zigpy_config: ota: ikea_provider: true # Auto update Trådfri devices - ledvance_provider: true # Auto update LEDVANCE devices - salus_provider: true # Auto update SALUS devices + ledvance_provider: true # Auto update LEDVANCE/OSRAM devices + salus_provider: true # Auto update SALUS/Computime devices #otau_directory: /path/to/your/ota/folder # Utilize .ota files to update everything else ``` From e132c1620ebe15d3da018f7b1132f1ff8eec466d Mon Sep 17 00:00:00 2001 From: Stephen Jones Date: Tue, 22 Mar 2022 14:35:25 +0000 Subject: [PATCH 12/15] Add text mentioning replacement integration. (#22047) Co-authored-by: Franck Nijhof --- source/_integrations/updater.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_integrations/updater.markdown b/source/_integrations/updater.markdown index 7bca70369a4..3d01c38f2aa 100644 --- a/source/_integrations/updater.markdown +++ b/source/_integrations/updater.markdown @@ -16,6 +16,8 @@ ha_platforms:
    This integration is deprecated and will be removed in Home Assistant Core 2022.5. + +Similar functionality is available using the [Version integration](/integrations/version/).
    From 6a6eda3015587f486019d0171807db1026870709 Mon Sep 17 00:00:00 2001 From: Erik Montnemery Date: Tue, 22 Mar 2022 20:14:19 +0100 Subject: [PATCH 13/15] Update binary_sensor.group.markdown (#22123) --- source/_integrations/binary_sensor.group.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/binary_sensor.group.markdown b/source/_integrations/binary_sensor.group.markdown index eeaeef86a91..eda2f90c535 100644 --- a/source/_integrations/binary_sensor.group.markdown +++ b/source/_integrations/binary_sensor.group.markdown @@ -59,7 +59,7 @@ If `all` is `false`(the default): - Otherwise, group state is `on` if at least one group member is `on` - Otherwise, group state is `off` -If `all` is `true`(the default): +If `all` is `true`: - Group state is `unavailable` if all group members are `unavailable` - Otherwise, group state is `unknown` if at least one group member is `unknown` or `unavailable` - Otherwise, group state is `off` if at least one group member is `off` From 778c824cebe33abad09324e7a850719d5500c342 Mon Sep 17 00:00:00 2001 From: Erik Montnemery Date: Wed, 23 Mar 2022 08:45:48 +0100 Subject: [PATCH 14/15] Clarify MQTT camera documentation (#22130) Co-authored-by: Franck Nijhof --- source/_integrations/camera.mqtt.markdown | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/source/_integrations/camera.mqtt.markdown b/source/_integrations/camera.mqtt.markdown index 1e0f5eb56c0..958bb75ab33 100644 --- a/source/_integrations/camera.mqtt.markdown +++ b/source/_integrations/camera.mqtt.markdown @@ -8,7 +8,7 @@ ha_iot_class: Configurable ha_domain: mqtt --- -The `mqtt` camera platform allows you to integrate the content of an image file sent through MQTT into Home Assistant as a camera. Every time a message under the `topic` in the configuration is received, the image displayed in Home Assistant will also be updated. +The `mqtt` camera platform allows you to integrate the content of an image file sent through MQTT into Home Assistant as a camera. Every time a message under the `topic` in the configuration is received, the image displayed in Home Assistant will also be updated. Messages received on `topic` should contain the full contents of an image file, for example, a JPEG image, without any additional encoding or metadata. This can be used with an application or a service capable of sending images through MQTT. @@ -23,6 +23,12 @@ camera: topic: zanzito/shared_locations/my-device ``` +The sample configuration above can be tested by publishing an image to the topic from the console: + +```shell +mosquitto_pub -h -t zanzito/shared_locations/my-device -f +``` + {% configuration %} availability: description: A list of MQTT topics subscribed to receive availability (online/offline) updates. Must not be used together with `availability_topic`. From e60a52dfc9563811602c721e305ec42a789c1452 Mon Sep 17 00:00:00 2001 From: ChevySSinSD <47265616+ChevySSinSD@users.noreply.github.com> Date: Wed, 23 Mar 2022 01:20:40 -0700 Subject: [PATCH 15/15] Clarify requirement for ethernet cable (#22129) --- source/_includes/installation/operating_system.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_includes/installation/operating_system.md b/source/_includes/installation/operating_system.md index 1ff82edbce2..3c65d63c8a1 100644 --- a/source/_includes/installation/operating_system.md +++ b/source/_includes/installation/operating_system.md @@ -16,7 +16,7 @@ We will need a few things to get started with installing Home Assistant. Links b - [Power Supply for Raspberry Pi 4](https://amzn.to/2ReZ2Vq) or [Power Supply for Raspberry Pi 3](https://amzn.to/2R8yG7h) - [Micro SD Card](https://amzn.to/2X0Z2di). Ideally get one that is [Application Class 2](https://www.sdcard.org/developers/overview/application/index.html) as they handle small I/O much more consistently than cards not optimized to host applications. A 32 GB or bigger card is recommended. - SD Card reader. This is already part of most laptops, but you can purchase a [standalone USB adapter](https://amzn.to/2WWxntY) if you don't have one. The brand doesn't matter, just pick the cheapest. -- Ethernet cable. Home Assistant can work with Wi-Fi, but an Ethernet connection is more reliable and highly recommended. +- [Ethernet cable](https://amzn.com/dp/B00N2VISLW). Required for installation. After installation, Home Assistant can work with Wi-Fi, but an Ethernet connection is more reliable and highly recommended. {% endif %}