{"id":13456217,"url":"https://github.com/custom-components/remote_homeassistant","last_synced_at":"2025-05-14T20:09:37.525Z","repository":{"id":37660513,"uuid":"152294445","full_name":"custom-components/remote_homeassistant","owner":"custom-components","description":"Links multiple home-assistant instances together","archived":false,"fork":false,"pushed_at":"2024-12-13T21:46:00.000Z","size":530,"stargazers_count":1018,"open_issues_count":87,"forks_count":84,"subscribers_count":42,"default_branch":"master","last_synced_at":"2025-04-13T17:46:42.039Z","etag":null,"topics":["hacktoberfest","hacs","home-assistant"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/custom-components.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-10-09T17:40:09.000Z","updated_at":"2025-04-13T10:40:02.000Z","dependencies_parsed_at":"2024-07-11T04:46:57.280Z","dependency_job_id":"035e8663-0d80-435d-8cf1-b47060928cd9","html_url":"https://github.com/custom-components/remote_homeassistant","commit_stats":{"total_commits":104,"total_committers":22,"mean_commits":"4.7272727272727275","dds":0.4807692307692307,"last_synced_commit":"e07e60ebc2b01fa7e407c8be3e5cc5a52aa03a05"},"previous_names":[],"tags_count":24,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/custom-components%2Fremote_homeassistant","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/custom-components%2Fremote_homeassistant/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/custom-components%2Fremote_homeassistant/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/custom-components%2Fremote_homeassistant/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/custom-components","download_url":"https://codeload.github.com/custom-components/remote_homeassistant/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254219374,"owners_count":22034397,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hacktoberfest","hacs","home-assistant"],"created_at":"2024-07-31T08:01:17.957Z","updated_at":"2025-05-14T20:09:37.480Z","avatar_url":"https://github.com/custom-components.png","language":"Python","funding_links":[],"categories":["Python","hacktoberfest","Custom Integrations"],"sub_categories":["🔗 Federation \u0026 multi-instance"],"readme":"[![License][license-shield]](LICENSE.md)\n\n[![hacs][hacsbadge]][hacs]\n![Project Maintenance][maintenance-shield]\n\n\u003cimg align=\"left\" width=\"80\" height=\"80\" src=\"icons/icon.png\" alt=\"App icon\"\u003e\n\n# Remote Home-Assistant\n\n_Component to link multiple Home-Assistant instances together._\n\n**This component will set up the following platforms.**\n\nPlatform | Description\n-- | --\n`remote_homeassistant` | Link multiple Home-Assistant instances together .\n\nThe main instance connects to the Websocket APIs of the remote instances (already enabled out of box), the connection options are specified via the `host`, `port`, and `secure` configuration parameters. If the remote instance requires an access token to connect (created on the Profile page), it can be set via the `access_token` parameter. To ignore SSL warnings in secure mode, set the `verify_ssl` parameter to false.\n\nAfter the connection is completed, the remote states get populated into the master instance.\nThe entity ids can optionally be prefixed via the `entity_prefix` parameter.\n\nThe entity friendly names can optionally be prefixed via the `entity_friendly_name_prefix` parameter.\n\nThe component keeps track which objects originate from which instance. Whenever a service is called on an object, the call gets forwarded to the particular remote instance.\n\nWhen the connection to the remote instance is lost, all previously published states are removed again from the local state registry.\n\nA possible use case for this is to be able to use different Z-Wave networks, on different Z-Wave sticks (with the second one possible running on another computer in a different location).\n\n\n## Installation\n\nThis component *must* be installed on both the main and remote instance of Home Assistant\n\nIf you use HACS:\n\n1. Click install.\n\nOtherwise:\n\n1. To use this plugin, copy the `remote_homeassistant` folder into your [custom_components folder](https://developers.home-assistant.io/docs/creating_integration_file_structure/#where-home-assistant-looks-for-integrations).\n\n\n**Remote instance**\n\nOn the remote instance you also need to add this to `configuration.yaml`:\n\n```yaml\nremote_homeassistant:\n  instances:\n```\n\nThis is not needed on the main instance.\n\n## Configuration (main instance)\n\n### Web (Config flow)\n\n1. Add a new Remote Home-Assistant integration\n\n\u003cimg src=\"https://raw.githubusercontent.com/lukas-hetzenecker/home-assistant-remote/master/img/setup.png\" height=\"400\"/\u003e\n\n2. Specify the connection details to the remote instance\n\n\u003cimg src=\"https://raw.githubusercontent.com/lukas-hetzenecker/home-assistant-remote/master/img/device.png\" height=\"400\"/\u003e\n\nYou can generate an access token in the by logging into your remote instance, clicking on your user profile icon, and then selecting \"Create Token\" under \"Long-Lived Access Tokens\".\n\nCheck \"Secure\" if you want to connect via a secure (https/wss) connection\n\n3. After the instance is added, you can configure additional Options by clicking the \"Options\" button.\n\n\u003cimg src=\"https://raw.githubusercontent.com/lukas-hetzenecker/home-assistant-remote/master/img/options.png\" height=\"200\"/\u003e\n\n4. You can configure an optional prefix that gets prepended to all remote entities (if unsure, leave this blank).\n\n\u003cimg src=\"https://raw.githubusercontent.com/lukas-hetzenecker/home-assistant-remote/master/img/step1.png\" height=\"200\"/\u003e\n\nClick \"Submit\" to proceed to the next step.\n\n5. You can also define filters, that include/exclude specified entities or domains from the remote instance.\n\n\u003cimg src=\"https://raw.githubusercontent.com/lukas-hetzenecker/home-assistant-remote/master/img/step2.png\" height=\"200\"/\u003e\n\n\n\n---\n\nor via..\n\n### YAML\n\nTo integrate `remote_homeassistant` into Home Assistant, add the following section to your `configuration.yaml` file:\n\nSimple example:\n\n```yaml\n# Example configuration.yaml entry\nremote_homeassistant:\n  instances:\n  - host: raspberrypi.local\n```\n\n\nFull example:\n\n```yaml\n# Example configuration.yaml entry\nremote_homeassistant:\n  instances:\n  - host: localhost\n    port: 8124\n  - host: localhost\n    port: 8125\n    secure: true\n    verify_ssl: false\n    access_token: !secret access_token\n    entity_prefix: \"instance02_\"\n    entity_friendly_name_prefix: \"Instance02 \"\n    include:\n      domains:\n      - sensor\n      - switch\n      - group\n      entities:\n      - zwave.controller\n      - zwave.desk_light\n    exclude:\n      domains:\n      - persistent_notification\n      entities:\n      - group.all_switches\n    filter:\n    - entity_id: sensor.faulty_pc_energy\n      above: 100\n    - unit_of_measurement: W\n      below: 0\n      above: 1000\n    - entity_id: sensor.faulty_*_power\n      unit_of_measurement: W\n      below: 500\n    subscribe_events:\n    - state_changed\n    - service_registered\n    - zwave.network_ready\n    - zwave.node_event\n    load_components:\n    - zwave\n```\n\n```\nhost:\n  host: Hostname or IP address of remote instance.\n  required: true\n  type: string\nport:\n  description: Port of remote instance.\n  required: false\n  type: int\nsecure:\n  description: Use TLS (wss://) to connect to the remote instance.\n  required: false\n  type: bool\nverify_ssl:\n  description: Enables / disables verification of the SSL certificate of the remote instance.\n  required: false\n  type: bool\n  default: true\naccess_token:\n  description: Access token of the remote instance, if set.\n  required: false\n  type: string\nmax_message_size:\n  description: Maximum message size, you can expand size limit in case of an error.\n  required: false\n  type: int\nentity_prefix:\n  description: Prefix for all entities of the remote instance.\n  required: false\n  type: string\nentity_friendly_name_prefix:\n  description: Prefix for all entity friendly names of the remote instance.\n  required: false\n  type: string\ninclude:\n  description: Configures what should be included from the remote instance. Values set by the exclude lists will take precedence.\n  required: false\n  default: include everything\n  type: mapping of\n    entities:\n      description: The list of entity ids to be included from the remote instance\n      type: list\n    domains:\n      description: The list of domains to be included from the remote instance\n      type: list\nexclude:\n  description: Configures what should be excluded from the remote instance\n  required: false\n  default: exclude nothing\n  type: mapping of\n    entities:\n      description: The list of entity ids to be excluded from the remote instance\n      type: list\n    domains:\n      description: The list of domains to be excluded from the remote instance\n      type: list\nfilter:\n  description: Filters out states above or below a certain threshold, e.g. outliers reported by faulty sensors\n  required: false\n  type: list of\n    entity_id:\n      description: which entities the filter should match, supports wildcards\n      required: false\n      type: string\n    unit_of_measurement\n      description: which units of measurement the filter should match\n      required: false\n      type: string\n    above:\n      description: states above this threshold will be ignored\n      required: false\n      type: float\n    below:\n      description: states below this threshold will be ignored\n      required: false\n      type: float\nsubscribe_events:\n  description: Further list of events, which should be forwarded from the remote instance. If you override this, you probably will want to add state_changed!!\n  required: false\n  type: list\n  default: \n  - state_changed\n  - service_registered\nload_components:\n  description: Load components of specified domains only present on the remote instance, e.g. to register services that would otherwise not be available.\n  required: false\n  type: list\nservice_prefix: garage_\n  description: Prefix used for proxy services. Must be unique for all instances.\n  required: false\n  type: str\n  default: remote_\nservices:\n  description: Name of services to set up proxy services for.\n  required: false\n  type: list\n```\n\n## Special notes \n\n### Missing Components\n\nIf you have remote domains (e.g. `switch`), that are not loaded on the main instance you need to list them under `load_components`, otherwise you'll get a `Call service failed` error.\n\nE.g. on the master:\n\n```yaml\nremote_homeassistant:\n  instances:\n  - host: 10.0.0.2\n    load_components:\n    - zwave\n```\n\nto enable all `zwave` services. This can also be configured via options under Configuration-\u003eIntegrations.\n\n### Proxy Services\n\nSome components do not use entities to handle service calls, but handle the\nservice calls themselves. One such example is `hdmi_cec`. This becomes a\nproblem as it is not possible to forward the service calls properly. To work\naround this limitation, it's possible to set up a *proxy service*.\n\nA proxy service is registered like a new service on the master instance, but\nit mirrors a service on the remote instance. When the proxy service is called\non the master, the mirrored service is called on the remote instance. Any\nerror is propagated back to the master. To distinguish proxy services from\nregular services, a service prefix must be provided.\n\nExample: If a proxy service is set up for `hdmi_cec.volume` with service\nprefix `remote_`, a new service called `hdmi_cec.remote_volume` will be\nregistered on the master instance. When called, the actual call will be forwarded\nto `hdmi_cec.volume` on the remote instance. The YAML config would\nlook like this:\n\n```yaml\nremote_homeassistant:\n  instances:\n  - host: 10.0.0.\n    service_prefix: remote_\n    services:\n      - hdmi_cec.volume\n```\n\nThis can also be set up via Options for the integration under\nConfiguration -\u003e Integrations.\n\n---\n\nSee also the discussion on https://github.com/home-assistant/home-assistant/pull/13876 and https://github.com/home-assistant/architecture/issues/246 for this component\n\n[hacs]: https://github.com/hacs/integration\n[hacsbadge]: https://img.shields.io/badge/HACS-Custom-orange.svg?style=for-the-badge\n[license-shield]: https://img.shields.io/github/license/lukas-hetzenecker/home-assistant-remote.svg?style=for-the-badge\n[maintenance-shield]: https://img.shields.io/badge/maintainer-lukas--hetzenecker-blue.svg?style=for-the-badge\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcustom-components%2Fremote_homeassistant","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcustom-components%2Fremote_homeassistant","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcustom-components%2Fremote_homeassistant/lists"}