Skip to content

Add device_id param documentation #5108

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 6 commits into
base: current
Choose a base branch
from

Conversation

mik-laj
Copy link

@mik-laj mik-laj commented Jul 16, 2025

Description:

I noticed that we added documentation for esphome.devices and esphome.areas, but we did not add documentation for the device_id parameter that can be used on the entity.

This PR updates every entity-platform page to document the new optional device_id key for sub-device support. Up to now, the feature was only mentioned on the central Sub-Devices page; individual entity docs still lacked any reference to it.

Users reading an entity page now immediately see that sub-devices are supported and how to enable them for entities.
Every platform follows the same wording and link target, reducing confusion and copy-paste errors.

Follow up: #4813

CC: @dala318

Related issue (if applicable): fixes

Pull request in esphome with YAML changes (if applicable):

  • esphome/esphome#

Checklist:

  • I am merging into next because this is new documentation that has a matching pull-request in esphome as linked above.
    or

  • I am merging into current because this is a fix, change and/or adjustment in the current documentation and is not for a new component or feature.

  • Link added in /components/index.rst when creating new documents for new components or cookbook.

Copy link
Contributor

coderabbitai bot commented Jul 16, 2025

## Walkthrough

The documentation for multiple ESPHome components was updated to include a new optional configuration variable, `device_id`. This variable allows specifying the identifier of a sub-device to which an entity belongs. If omitted, entities remain attached to the main ESP device. No changes were made to code, logic, or exported/public entity declarations.

## Changes

| Files                                                                                   | Change Summary                                                                                                   |
|-----------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------|
| components/binary_sensor/index.rst<br>components/button/index.rst<br>components/climate/index.rst<br>components/cover/index.rst<br>components/datetime/index.rst<br>components/esp32_camera.rst<br>components/event/index.rst<br>components/fan/index.rst<br>components/light/index.rst<br>components/lock/index.rst<br>components/media_player/index.rst<br>components/number/index.rst<br>components/select/index.rst<br>components/sensor/index.rst<br>components/switch/index.rst<br>components/text/index.rst<br>components/text_sensor/index.rst<br>components/update/index.rst<br>components/valve/index.rst | Added documentation for new optional configuration variable `device_id` to associate entities with sub-devices. No code or logic changes. |

## Suggested reviewers

- jesserockz

📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a5e32a1 and dae9d14.

📒 Files selected for processing (3)
  • components/binary_sensor/index.rst (1 hunks)
  • components/event/index.rst (1 hunks)
  • components/sensor/index.rst (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (3)
  • components/event/index.rst
  • components/sensor/index.rst
  • components/binary_sensor/index.rst

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

♻️ Duplicate comments (4)
components/text/index.rst (1)

51-51: Same style-consistency issue as flagged earlier – apply the italicised *Optional* formatting here as well.

components/datetime/index.rst (1)

51-51: Repeat of the *Optional* formatting mismatch noted for the cover docs.

components/esp32_camera.rst (1)

45-45: Same bullet-list formatting nit: use (*Optional*, string) for consistency.

components/text_sensor/index.rst (1)

50-50: Consistent with earlier comments: italicise Optional inside parentheses.

🧹 Nitpick comments (15)
components/cover/index.rst (1)

55-55: Use italicised *Optional* to stay consistent with surrounding bullet-list style

All other optional items in this list format the keyword as (*Optional*, …).
Keeping the same convention avoids visual inconsistency across docs.

- - **device_id** (Optional, string): Identifier of the sub-device this entity belongs to. Must match the id of an entry in :ref:`esphome.devices <esphome-devices>`. If omitted, the entity remains attached to the main ESP device.
+ - **device_id** (*Optional*, string): Identifier of the sub-device this entity belongs to. Must match the id of an entry in :ref:`esphome.devices <esphome-devices>`. If omitted, the entity remains attached to the main ESP device.
components/valve/index.rst (1)

53-53: Keep style consistent & replace non-standard hyphen

The newly-added line deviates from the surrounding convention ((*Optional*, …)) and includes a U+2011 non-breaking hyphen that can cause Sphinx warnings or awkward copy-pasting.

- - **device_id** (Optional, string): Identifier of the sub-device this entity belongs to. Must match the id of an entry in :ref:`esphome.devices <esphome-devices>`. If omitted, the entity remains attached to the main ESP device.
+ - **device_id** (*Optional*, string): Identifier of the sub-device this entity belongs to. Must match the id of an entry in :ref:`esphome.devices <esphome-devices>`. If omitted, the entity remains attached to the main ESP device.
components/update/index.rst (1)

38-38: Match bullet formatting with the rest of the page

Use italics around “Optional” and swap the non-breaking hyphen for a normal hyphen.

- - **device_id** (Optional, string): Identifier of the sub-device this entity belongs to. Must match the id of an entry in :ref:`esphome.devices <esphome-devices>`. If omitted, the entity remains attached to the main ESP device.
+ - **device_id** (*Optional*, string): Identifier of the sub-device this entity belongs to. Must match the id of an entry in :ref:`esphome.devices <esphome-devices>`. If omitted, the entity remains attached to the main ESP device.
components/media_player/index.rst (1)

47-47: Follow existing parameter-list style

Same minor consistency issue as other files.

- - **device_id** (Optional, string): Identifier of the sub-device this entity belongs to. Must match the id of an entry in :ref:`esphome.devices <esphome-devices>`. If omitted, the entity remains attached to the main ESP device.
+ - **device_id** (*Optional*, string): Identifier of the sub-device this entity belongs to. Must match the id of an entry in :ref:`esphome.devices <esphome-devices>`. If omitted, the entity remains attached to the main ESP device.
components/switch/index.rst (1)

68-69: Tweak wording for consistency & fix typography

- - **device_id** (Optional, string): Identifier of the sub-device this entity belongs to. Must match the id of an entry in :ref:`esphome.devices <esphome-devices>`. If omitted, the entity remains attached to the main ESP device.
+ - **device_id** (*Optional*, string): Identifier of the sub-device this entity belongs to. Must match the id of an entry in :ref:`esphome.devices <esphome-devices>`. If omitted, the entity remains attached to the main ESP device.
components/binary_sensor/index.rst (1)

78-80: Align with house style & remove non-breaking hyphen

-   Set to ``""`` to remove the default entity category. 
- - **device_id** (Optional, string): Identifier of the sub-device this entity belongs to. Must match the id of an entry in :ref:`esphome.devices <esphome-devices>`. If omitted, the entity remains attached to the main ESP device.
+   Set to ``""`` to remove the default entity category.
+ - **device_id** (*Optional*, string): Identifier of the sub-device this entity belongs to. Must match the id of an entry in :ref:`esphome.devices <esphome-devices>`. If omitted, the entity remains attached to the main ESP device.

(Space at end of previous line also trimmed to avoid trailing-whitespace warnings.)

components/climate/index.rst (1)

89-90: Align with existing “(Optional, …)” bullet style

The new line drops the surrounding asterisks around Optional and uses a non-breaking hyphen in “sub-device”. Keep the same bullet syntax and a regular hyphen to stay consistent with the rest of the docs.

- **device_id** (Optional, string): Identifier of the sub-device this entity belongs to. Must match the id of an entry in :ref:`esphome.devices <esphome-devices>`. If omitted, the entity remains attached to the main ESP device.
+ **device_id** (*Optional*, string): Identifier of the sub-device this entity belongs to. Must match the id of an entry in :ref:`esphome.devices <esphome-devices>`. If omitted, the entity remains attached to the main ESP device.
components/fan/index.rst (1)

58-59: Match bullet-point formatting with surrounding options

Use the (*Optional*, type) pattern and replace the non-breaking hyphen inside “sub-device”.

- **device_id** (Optional, string): Identifier of the sub-device this entity belongs to. Must match the id of an entry in :ref:`esphome.devices <esphome-devices>`. If omitted, the entity remains attached to the main ESP device.
+ **device_id** (*Optional*, string): Identifier of the sub-device this entity belongs to. Must match the id of an entry in :ref:`esphome.devices <esphome-devices>`. If omitted, the entity remains attached to the main ESP device.
components/lock/index.rst (1)

47-48: Stylistic consistency for new option

All previous bullets italicise Optional. Update the new line and normalise the hyphen.

- **device_id** (Optional, string): Identifier of the sub-device this entity belongs to. Must match the id of an entry in :ref:`esphome.devices <esphome-devices>`. If omitted, the entity remains attached to the main ESP device.
+ **device_id** (*Optional*, string): Identifier of the sub-device this entity belongs to. Must match the id of an entry in :ref:`esphome.devices <esphome-devices>`. If omitted, the entity remains attached to the main ESP device.
components/sensor/index.rst (1)

84-85: Format Optional like the other entries

Keep the option list uniform and swap the non-breaking hyphen.

- **device_id** (Optional, string): Identifier of the sub-device this entity belongs to. Must match the id of an entry in :ref:`esphome.devices <esphome-devices>`. If omitted, the entity remains attached to the main ESP device.
+ **device_id** (*Optional*, string): Identifier of the sub-device this entity belongs to. Must match the id of an entry in :ref:`esphome.devices <esphome-devices>`. If omitted, the entity remains attached to the main ESP device.
components/button/index.rst (1)

60-61: Use the same optional-indicator style

Other bullets wrap Optional in asterisks—do the same here and replace the special hyphen.

- **device_id** (Optional, string): Identifier of the sub-device this entity belongs to. Must match the id of an entry in :ref:`esphome.devices <esphome-devices>`. If omitted, the entity remains attached to the main ESP device.
+ **device_id** (*Optional*, string): Identifier of the sub-device this entity belongs to. Must match the id of an entry in :ref:`esphome.devices <esphome-devices>`. If omitted, the entity remains attached to the main ESP device.
components/light/index.rst (1)

94-95: Align bullet-point markup with surrounding style

The surrounding list consistently formats the option qualifier as (*Optional*, <type>), whereas the new bullet uses plain (Optional, string).
Keep the markup uniform for readability and to avoid Sphinx/reST style regressions.

- - **device_id** (Optional, string): Identifier of the sub-device …
+ - **device_id** (*Optional*, string): Identifier of the sub-device …
components/event/index.rst (1)

68-69: Use the same “Optional” inline markup as the other bullets

All previous entries use italics for Optional. Update this line for consistency.

- - **device_id** (Optional, string): Identifier of the sub-device …
+ - **device_id** (*Optional*, string): Identifier of the sub-device …
components/number/index.rst (1)

52-53: Restore consistent option-qualifier formatting

Stick to (*Optional*, …) to match the rest of the list.

- - **device_id** (Optional, string): Identifier of the sub-device …
+ - **device_id** (*Optional*, string): Identifier of the sub-device …
components/select/index.rst (1)

52-53: Minor style fix – italicise “Optional”

Same consistency issue as in the other files:

- - **device_id** (Optional, string): Identifier of the sub-device …
+ - **device_id** (*Optional*, string): Identifier of the sub-device …
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 43f9587 and e644a61.

📒 Files selected for processing (19)
  • components/binary_sensor/index.rst (1 hunks)
  • components/button/index.rst (1 hunks)
  • components/climate/index.rst (1 hunks)
  • components/cover/index.rst (1 hunks)
  • components/datetime/index.rst (1 hunks)
  • components/esp32_camera.rst (1 hunks)
  • components/event/index.rst (1 hunks)
  • components/fan/index.rst (1 hunks)
  • components/light/index.rst (1 hunks)
  • components/lock/index.rst (1 hunks)
  • components/media_player/index.rst (1 hunks)
  • components/number/index.rst (1 hunks)
  • components/select/index.rst (1 hunks)
  • components/sensor/index.rst (1 hunks)
  • components/switch/index.rst (1 hunks)
  • components/text/index.rst (1 hunks)
  • components/text_sensor/index.rst (1 hunks)
  • components/update/index.rst (1 hunks)
  • components/valve/index.rst (1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
**

Instructions used from:

Sources:
⚙️ CodeRabbit Configuration File

🧠 Learnings (6)
📓 Common learnings
Learnt from: jesserockz
PR: esphome/esphome-docs#4865
File: .github/workflows/needs-docs.yml:0-0
Timestamp: 2025-05-01T03:29:47.922Z
Learning: In the esphome-docs repository, the "current" label is automatically added by a bot to pull requests, making it a reliable indicator for the target branch.
Learnt from: clydebarrow
PR: esphome/esphome-docs#0
File: :0-0
Timestamp: 2025-05-05T05:08:25.575Z
Learning: In ESPHome documentation, leading slashes in doc references are necessary when the source document is not at the root of the tree, as absolute paths to referenced documents are required in this context.
Learnt from: realzoulou
PR: esphome/esphome-docs#4879
File: components/gps.rst:34-34
Timestamp: 2025-05-04T09:40:22.331Z
Learning: In ESPHome's GPS component, the `update_interval` parameter belongs to the `gps` component itself, not to individual sensors like `altitude`. It should be indented at the same level as the sensor configurations in the YAML.
Learnt from: jesserockz
PR: esphome/esphome-docs#4901
File: changelog/2025.4.0.rst:124-126
Timestamp: 2025-05-12T00:02:50.869Z
Learning: In the ESPHome changelog structure, the "All changes" section should have the `:open:` attribute to be expanded by default, but the "Dependency Changes" section should NOT have this attribute as it should remain collapsed by default.
components/datetime/index.rst (1)
Learnt from: realzoulou
PR: esphome/esphome-docs#4879
File: components/gps.rst:34-34
Timestamp: 2025-05-04T09:40:22.331Z
Learning: In ESPHome's GPS component, the `update_interval` parameter belongs to the `gps` component itself, not to individual sensors like `altitude`. It should be indented at the same level as the sensor configurations in the YAML.
components/switch/index.rst (1)
Learnt from: jesserockz
PR: esphome/esphome-docs#4901
File: changelog/2025.4.0.rst:124-126
Timestamp: 2025-05-12T00:02:50.869Z
Learning: In the ESPHome changelog structure, the "All changes" section should have the `:open:` attribute to be expanded by default, but the "Dependency Changes" section should NOT have this attribute as it should remain collapsed by default.
components/binary_sensor/index.rst (1)
Learnt from: jesserockz
PR: esphome/esphome-docs#4901
File: changelog/2025.4.0.rst:124-126
Timestamp: 2025-05-12T00:02:50.869Z
Learning: In the ESPHome changelog structure, the "All changes" section should have the `:open:` attribute to be expanded by default, but the "Dependency Changes" section should NOT have this attribute as it should remain collapsed by default.
components/sensor/index.rst (1)
Learnt from: realzoulou
PR: esphome/esphome-docs#4879
File: components/gps.rst:34-34
Timestamp: 2025-05-04T09:40:22.331Z
Learning: In ESPHome's GPS component, the `update_interval` parameter belongs to the `gps` component itself, not to individual sensors like `altitude`. It should be indented at the same level as the sensor configurations in the YAML.
components/update/index.rst (1)
Learnt from: realzoulou
PR: esphome/esphome-docs#4879
File: components/gps.rst:34-34
Timestamp: 2025-05-04T09:40:22.331Z
Learning: In ESPHome's GPS component, the `update_interval` parameter belongs to the `gps` component itself, not to individual sensors like `altitude`. It should be indented at the same level as the sensor configurations in the YAML.

Copy link

netlify bot commented Jul 16, 2025

Deploy Preview for esphome ready!

Name Link
🔨 Latest commit dae9d14
🔍 Latest deploy log https://app.netlify.com/projects/esphome/deploys/687aac1bbd825e00087b8d8c
😎 Deploy Preview https://deploy-preview-5108--esphome.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

mik-laj

This comment was marked as off-topic.

@esphome esphome bot marked this pull request as draft July 17, 2025 20:52
@esphome
Copy link

esphome bot commented Jul 17, 2025

Please take a look at the requested changes, and use the Ready for review button when you are done, thanks 👍

Learn more about our pull request process.

@mik-laj mik-laj marked this pull request as ready for review July 18, 2025 20:18
@esphome esphome bot requested a review from jesserockz July 18, 2025 20:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants