Add Homecast integration documentation#44341
Add Homecast integration documentation#44341robjampar wants to merge 10 commits intohome-assistant:nextfrom
Conversation
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
…4308) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Add documentation for the Homecast integration which bridges Apple HomeKit devices to Home Assistant via the Homecast cloud API. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
✅ Deploy Preview for home-assistant-docs ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
There was a problem hiding this comment.
Pull request overview
This PR adds documentation for the new Homecast integration and also introduces several website/supporting changes (mobile app landing pages, blog content, author metadata handling, redirects, and dependency bumps).
Changes:
- Add a new integration documentation page for Homecast.
- Add iOS/Android landing/auth pages intended for redirects/Universal Links behavior.
- Add a new blog post (with image), update historical posts to multi-author front matter, adjust author rendering/metadata templates, and update a Discord redirect plus lockfiles.
Reviewed changes
Copilot reviewed 24 out of 27 changed files in this pull request and generated 12 comments.
Show a summary per file
| File | Description |
|---|---|
| source/ios/nfc.markdown | Add iOS NFC landing placeholder page. |
| source/ios/index.markdown | Add iOS landing page with redirect-uri link and JS redirect. |
| source/ios/dev-auth.markdown | Add iOS dev auth landing page with redirect-uri link and JS redirect. |
| source/ios/beta-auth.markdown | Add iOS beta auth landing page with redirect-uri link and JS redirect. |
| source/android/index.markdown | Add Android landing page with multiple redirect-uri links and JS redirect. |
| source/_integrations/homecast.markdown | Add Homecast integration documentation. |
| source/_integrations/broadlink.markdown | Extend Broadlink docs with code-management notes and a new section. |
| source/_redirects | Update the /join-chat-design redirect target. |
| source/_posts/2026-03-26-modernizing-encryption-of-home-assistant-backups.markdown | Add a new blog post about backup encryption modernization. |
| source/images/blog/2026-03-modernizing-encryption-of-home-assistant-backups/art.webp | Add the blog post Open Graph/hero image. |
| source/_posts/2023-10-19-security-audits-of-home-assistant.markdown | Convert author field to a YAML list. |
| source/_posts/2020-08-05-mobile-apps-new-features.markdown | Convert author field to a YAML list. |
| source/_posts/2017-11-12-tor.markdown | Convert author field to a YAML list. |
| source/_posts/2017-06-20-things-you-should-know-about-senic-covi.markdown | Convert author field to a YAML list. |
| source/_posts/2017-05-20-automation-editor-zwave-panel-ocr.markdown | Convert author field to a YAML list. |
| source/_posts/2017-02-11-alert-appletv-mqtt-yeelight.markdown | Convert author field to a YAML list. |
| source/_posts/2016-09-29-async-sleepiq-emoncms-stocks.markdown | Convert author field to a YAML list. |
| source/_posts/2016-07-30-custom-frontend-panels--jupyter-notebooks--directv.markdown | Convert author field to a YAML list. |
| source/_posts/2016-02-09-Smarter-Smart-Things-with-MQTT-and-Home-Assistant.markdown | Convert author field to a YAML list. |
| source/_posts/2015-12-13-setup-encryption-using-lets-encrypt.markdown | Convert author field to a YAML list. |
| source/_includes/site/social_meta.html | Update Twitter “Written by” metadata to support multi-author lists. |
| source/_includes/site/head.html | Update <meta name="author"> handling to support multi-author lists. |
| source/_includes/post/author.html | Update post author rendering to support multiple authors (people.yml lookup per author). |
| source/_data/people.yml | Add an entry for “Erik Montnémery”. |
| package-lock.json | Bump picomatch and add license metadata. |
| Gemfile.lock | Bump Ruby dependencies (ffi/json/rbs/ruby-lsp). |
| Gemfile | Bump ruby-lsp version. |
| __IMPORTANT__: Always use unique names for your switches. A good choice is to prefix the name with the area in which the device is located, e.g. Bedroom TV. | ||
|
|
||
| ## Managing codes for remotes |
There was a problem hiding this comment.
There’s an extra space after the ## marker (## Managing...), which can trip markdown linters and is inconsistent with other headings in this file. Please use a single space after ##.
| __IMPORTANT__: Always use unique names for your switches. A good choice is to prefix the name with the area in which the device is located, e.g. Bedroom TV. | |
| ## Managing codes for remotes | |
| __IMPORTANT__: Always use unique names for your switches. A good choice is to prefix the name with the area in which the device is located, like Bedroom TV. | |
| ## Managing codes for remotes |
|
|
||
| You can grab `irdb2broadlinkha.sh` from [irdb2broadlinkha](https://github.com/molexx/irdb2broadlinkha) project and try to convert codes to format suitable for Home Assistant. | ||
|
|
||
| ### Managig codes with Broadlink Manager |
There was a problem hiding this comment.
Spelling: Managig should be Managing in this heading.
| ### Managig codes with Broadlink Manager | |
| ### Managing codes with Broadlink Manager |
| --- | ||
| title: Homecast | ||
| description: Instructions on setting up Homecast within Home Assistant. | ||
| ha_category: |
There was a problem hiding this comment.
The PR title/description focus on adding Homecast integration documentation, but this PR also introduces mobile app landing/redirect pages, a new blog post (with image), author template changes, a Discord redirect change, and dependency lockfile updates. Please either split these into separate PRs or update the PR title/description so reviewers can scope the changes accurately.
| title: "Home Assistant Android" | ||
| description: "Landing page for Home Assistant Android app." | ||
| --- | ||
|
|
||
| <link rel='redirect_uri' href='homeassistant://auth-callback'> | ||
| <link rel='redirect_uri' href='https://wear.googleapis.com/3p_auth/io.homeassistant.companion.android'> | ||
| <link rel='redirect_uri' href='https://wear.googleapis.com/3p_auth/io.homeassistant.companion.android.debug'> | ||
| <link rel='redirect_uri' href='https://wear.googleapis-cn.com/3p_auth/io.homeassistant.companion.android'> | ||
| <link rel='redirect_uri' href='https://wear.googleapis-cn.com/3p_auth/io.homeassistant.companion.android.debug'> | ||
|
|
||
| <script>document.location.href = 'https://companion.home-assistant.io/';</script> |
There was a problem hiding this comment.
These pages render with the default page layout, so the <link rel='redirect_uri'> ends up in the HTML <body> (invalid for <link>), which can break consumers that expect it in <head>. Consider using a minimal layout: null HTML page (or a custom layout) that places the redirect_uri links in <head> and avoids loading the full site chrome/scripts.
| title: "Home Assistant Android" | |
| description: "Landing page for Home Assistant Android app." | |
| --- | |
| <link rel='redirect_uri' href='homeassistant://auth-callback'> | |
| <link rel='redirect_uri' href='https://wear.googleapis.com/3p_auth/io.homeassistant.companion.android'> | |
| <link rel='redirect_uri' href='https://wear.googleapis.com/3p_auth/io.homeassistant.companion.android.debug'> | |
| <link rel='redirect_uri' href='https://wear.googleapis-cn.com/3p_auth/io.homeassistant.companion.android'> | |
| <link rel='redirect_uri' href='https://wear.googleapis-cn.com/3p_auth/io.homeassistant.companion.android.debug'> | |
| <script>document.location.href = 'https://companion.home-assistant.io/';</script> | |
| layout: null | |
| title: "Home Assistant Android" | |
| description: "Landing page for Home Assistant Android app." | |
| --- | |
| <!doctype html> | |
| <html lang="en"> | |
| <head> | |
| <meta charset="utf-8"> | |
| <title>Home Assistant Android</title> | |
| <meta name="description" content="Landing page for Home Assistant Android app."> | |
| <link rel="redirect_uri" href="homeassistant://auth-callback"> | |
| <link rel="redirect_uri" href="https://wear.googleapis.com/3p_auth/io.homeassistant.companion.android"> | |
| <link rel="redirect_uri" href="https://wear.googleapis.com/3p_auth/io.homeassistant.companion.android.debug"> | |
| <link rel="redirect_uri" href="https://wear.googleapis-cn.com/3p_auth/io.homeassistant.companion.android"> | |
| <link rel="redirect_uri" href="https://wear.googleapis-cn.com/3p_auth/io.homeassistant.companion.android.debug"> | |
| </head> | |
| <body> | |
| <script> | |
| document.location.href = "https://companion.home-assistant.io/"; | |
| </script> | |
| </body> | |
| </html> |
| --- | ||
|
|
||
| <link rel='redirect_uri' href='homeassistant://auth-callback'> | ||
| <script>document.location.href = 'https://companion.home-assistant.io/';</script> |
There was a problem hiding this comment.
These pages render with the default page layout, so the <link rel='redirect_uri'> ends up in the HTML <body> (invalid for <link>), which can break consumers that expect it in <head>. Consider using a minimal layout: null HTML page (or a custom layout) that places the redirect_uri links in <head> and avoids loading the full site chrome/scripts.
| --- | |
| <link rel='redirect_uri' href='homeassistant://auth-callback'> | |
| <script>document.location.href = 'https://companion.home-assistant.io/';</script> | |
| layout: null | |
| --- | |
| <!doctype html> | |
| <html lang="en"> | |
| <head> | |
| <meta charset="utf-8"> | |
| <title>Home Assistant iOS</title> | |
| <meta name="description" content="Landing page for Home Assistant iOS app."> | |
| <link rel="redirect_uri" href="homeassistant://auth-callback"> | |
| <meta http-equiv="refresh" content="0; url=https://companion.home-assistant.io/"> | |
| <script> | |
| window.location.replace("https://companion.home-assistant.io/"); | |
| </script> | |
| </head> | |
| <body> | |
| <p> | |
| If you are not redirected automatically, go to | |
| <a href="https://companion.home-assistant.io/"> | |
| the Home Assistant Companion documentation | |
| </a>. | |
| </p> | |
| </body> | |
| </html> |
|
|
||
| ### Re-authentication | ||
|
|
||
| If your OAuth token expires, Home Assistant will show a notification prompting you to re-authenticate. Go to **{% my integrations title="Settings > Devices & services" %}** > **Homecast** and follow the re-auth flow. |
There was a problem hiding this comment.
This uses the same My link formatting issue as in the Setup steps: the breadcrumbs should be bold inside the My link title (for example, {% my integrations title="**Settings** > **Devices & services**" %}) rather than wrapping the whole tag in **...**.
| If your OAuth token expires, Home Assistant will show a notification prompting you to re-authenticate. Go to **{% my integrations title="Settings > Devices & services" %}** > **Homecast** and follow the re-auth flow. | |
| If your OAuth token expires, Home Assistant will show a notification prompting you to re-authenticate. Go to {% my integrations title="**Settings** > **Devices & services**" %} > **Homecast** and follow the re-auth flow. |
| ### Learning commands | ||
|
|
||
| Use `remote.learn_command` to learn IR and RF codes. These codes are grouped by device and stored as commands in the [storage folder](#learned-codes-storage-location). They can be sent with the `remote.send_command` action later. | ||
| Use `remote.learn_command` to learn IR and RF codes. These codes are grouped by device and stored as commands in the [storage folder](#learned-codes-storage-location). They can be sent with the `remote.send_command` action later. A convenient interface to learn, send, and delete codes can be found in web interface under `/developer-tools/service`. |
There was a problem hiding this comment.
/developer-tools/service is not used elsewhere in the docs, and the UI path is usually referenced via a My link (for example, {% my developer_services title="**Settings** > **Developer tools** > **Actions**" %} in source/_docs/automation/basics.markdown:47). Consider replacing the raw URL/path reference with the My link to avoid drifting UI paths and improve readability.
| Use `remote.learn_command` to learn IR and RF codes. These codes are grouped by device and stored as commands in the [storage folder](#learned-codes-storage-location). They can be sent with the `remote.send_command` action later. A convenient interface to learn, send, and delete codes can be found in web interface under `/developer-tools/service`. | |
| Use `remote.learn_command` to learn IR and RF codes. These codes are grouped by device and stored as commands in the [storage folder](#learned-codes-storage-location). They can be sent with the `remote.send_command` action later. A convenient interface to learn, send, and delete codes is available under {% my developer_services title="**Settings** > **Developer tools** > **Actions**" %}. |
|
|
||
| # Design & User research | ||
| /join-chat-design https://discord.gg/7FcRFq575z | ||
| /join-chat-design https://discord.com/channels/330944238910963714/1475553148847526123 |
There was a problem hiding this comment.
/join-chat-design previously redirected to a Discord invite URL. The new target is a specific Discord channel URL, which won’t help people who aren’t already in the server (and may not be accessible without permissions). If the intent is still to let readers join the design chat, this should remain an invite link (for example, a discord.gg/discord.com/invite/... URL).
| /join-chat-design https://discord.com/channels/330944238910963714/1475553148847526123 | |
| /join-chat-design https://discord.gg/home-assistant |
| title: "Home Assistant iOS beta authentication" | ||
| description: "Landing page for Home Assistant iOS beta app." | ||
| --- | ||
|
|
||
| <link rel='redirect_uri' href='homeassistant-beta://auth-callback'> | ||
| <script>document.location.href = '/docs/ecosystem/ios';</script> |
There was a problem hiding this comment.
This page also renders with the default layout, so the <link rel='redirect_uri'> is placed in <body>. If this is intended for redirect-uri verification, switch to a minimal layout: null HTML page and put the redirect_uri link(s) in <head> (and keep any JS redirect from preventing verification).
| title: "Home Assistant iOS beta authentication" | |
| description: "Landing page for Home Assistant iOS beta app." | |
| --- | |
| <link rel='redirect_uri' href='homeassistant-beta://auth-callback'> | |
| <script>document.location.href = '/docs/ecosystem/ios';</script> | |
| layout: null | |
| title: "Home Assistant iOS beta authentication" | |
| description: "Landing page for Home Assistant iOS beta app." | |
| --- | |
| <!doctype html> | |
| <html lang="en"> | |
| <head> | |
| <meta charset="utf-8"> | |
| <title>Home Assistant iOS beta authentication</title> | |
| <meta name="description" content="Landing page for Home Assistant iOS beta app."> | |
| <link rel="redirect_uri" href="homeassistant-beta://auth-callback"> | |
| <meta http-equiv="refresh" content="0; url=/docs/ecosystem/ios"> | |
| <script> | |
| window.location.href = "/docs/ecosystem/ios"; | |
| </script> | |
| </head> | |
| <body> | |
| <p> | |
| If you are not redirected automatically, | |
| <a href="/docs/ecosystem/ios">go to the Home Assistant iOS documentation</a>. | |
| </p> | |
| </body> | |
| </html> |
| [Homecast](https://homecast.cloud) bridges Apple HomeKit smart home devices to open standards, enabling remote control, API access, and AI assistant integration. The Homecast Mac or iOS app runs on your home network as a relay between HomeKit and the Homecast cloud. | ||
|
|
||
| This integration connects Home Assistant to the Homecast cloud API, exposing your HomeKit devices as native Home Assistant entities. | ||
|
|
There was a problem hiding this comment.
The intro for integration docs typically starts with the pattern The **<name>** {% term integration %} ... (see source/_integrations/_integration_docs_template.markdown:25 and source/_integrations/acaia.markdown:24). Updating the first sentence to follow that convention improves consistency and makes it clearer you're describing the Home Assistant integration (not only the product).
| [Homecast](https://homecast.cloud) bridges Apple HomeKit smart home devices to open standards, enabling remote control, API access, and AI assistant integration. The Homecast Mac or iOS app runs on your home network as a relay between HomeKit and the Homecast cloud. | |
| This integration connects Home Assistant to the Homecast cloud API, exposing your HomeKit devices as native Home Assistant entities. | |
| The **Homecast** {% term integration %} connects Home Assistant to the Homecast cloud API so you can use your Apple HomeKit smart home devices as native Home Assistant entities. [Homecast](https://homecast.cloud) bridges Apple HomeKit devices to open standards, enabling remote control, API access, and AI assistant integration. The Homecast Mac or iOS app runs on your home network as a relay between HomeKit and the Homecast cloud. |
|
Closing to rebase on latest next branch — will reopen with clean diff. |
Summary
Add documentation for the new Homecast integration which bridges Apple HomeKit devices to Home Assistant.
Covers:
Companion PRs:
🤖 Generated with Claude Code