Skip to main content

Generate voice assistant configuration from Home Assistant labels.

Project description

image

Automatically generate your voice assistant configuration from Home Assistant labels.

Python checks

✨ Features

✔ Generate Google Assistant YAML from labels ✔ Home Assistant integration ✔ CLI ✔ Automatic backups ✔ PyPI package ✔ HACS support (coming soon)

🚧 Early development project

Feedback and ideas are welcome.

Why?

Do you maintain dozens of Google Assistant entities manually?

Managing voice assistant configurations manually quickly becomes difficult.

HA Voice Label Sync automatically generates the required configuration from Home Assistant labels, making your labels the single source of truth.

With the current release you can:

Stop maintaining large YAML files manually. Avoid duplicated configuration. Keep Home Assistant as the only place where entities are managed. Generate your configuration in seconds.

Current Status

Project status

HVLS is currently under active development.

Latest stable release: v0.1.2

Current development version: 0.2.0.dev0

Current capabilities:

  • Standalone CLI
  • Reusable Python core
  • Google Assistant YAML generation
  • Dry-run support
  • Safe atomic file writing
  • Automatic backups and retention
  • Initial Home Assistant integration skeleton

Not yet available:

  • Full Home Assistant configuration UI
  • Home Assistant actions and buttons
  • Backup restoration from the UI
  • HACS installation

HA Voice Label Sync has been designed to support multiple voice assistants.

  • Currently supported :

    ✅ Google Assistant
    
  • Planned :

    Amazon Alexa
    Apple HomeKit
    

Instead of maintaining a long list of exposed entities manually, simply assign a label in Home Assistant, run the script, and let HA Voice Label Sync generate the configuration for you.

Features

  • Select entities using a Home Assistant label
  • Generate entity_config for Google Assistant
  • Use Home Assistant friendly names
  • Use Home Assistant areas as Google rooms
  • Ignore disabled or hidden entities
  • Dry-run mode before writing the file

How it works

                           Home Assistant
                                │
                                ▼
                              Labels
                                │
                                ▼
                        Voice Assistant Sync
                                │
                         ┌──────┴───────┐
                         │              │
               Google Assistant    Amazon Alexa
       

Generated entity_config

switch.prise_pompe:
  expose: true
  name: Pompe piscine
  room: Piscine

Home Assistant configuration

google_assistant:
  project_id: YOUR_PROJECT_ID
  service_account: !include google_key.json
  report_state: true
  expose_by_default: false
  entity_config: !include google_assistant_entities.yaml

Quick start

Installation

Option 1 – Download the script

Download the latest version of ga_label_sync.py from the repository.

Copy it to your Home Assistant scripts directory.

Typical locations are:

/config/scripts/

or

<home-assistant-config>/scripts/

depending on your Home Assistant installation.

Option 2 – Clone the repository

git clone https://github.com/flimo44/ha-voice-label-sync.git

The script is located in:

scripts/ga_label_sync.py
If you simply want to use the script, downloading scripts/ga_label_sync.py is enough.

Cloning the repository is recommended only if you plan to follow development or contribute to the project.

Usage :

Step 1 — Add the label

Capture d'écran 2026-06-26 201643

Step 2 — Preview the generated configuration

Capture d'écran 2026-06-26 203136
python3 /config/scripts/ga_label_sync.py --label "google_assistant" --dry-run
# --- Couloir ---
lock.serrure_maison:
  expose: true
  name: Serrure porte entrée
  room: Couloir

# --- Jardin ---
switch.portail:
  expose: true
  name: Portail
  room: Jardin

# --- Piscine ---
input_select.piscine_mode_gestion:
  expose: true
  name: "Piscine - Mode Gestion"
  room: Piscine

switch.piscine_chauffage:
  expose: true
  name: Pac Piscine
  room: Piscine

switch.prise_pompe2:
  expose: true
  name: Pompe piscine
  room: Piscine

Step 3 — Generate the file

python3 /config/scripts/ga_label_sync.py --label "google_assistant"
Capture d'écran 2026-06-26 200340

Step 4 — Restart Home Assistant

Step 5 — Synchronize Google Home

Google Home before synchronization

Screenshot_2026-06-26-19-44-33-60_2d2bd67b5e15ae98c151ac739cd6881e

Google Home after synchronization

Screenshot_2026-06-26-19-45-48-86_2d2bd67b5e15ae98c151ac739cd6881e

License MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ha_voice_label_sync-0.2.0.tar.gz (11.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ha_voice_label_sync-0.2.0-py3-none-any.whl (14.6 kB view details)

Uploaded Python 3

File details

Details for the file ha_voice_label_sync-0.2.0.tar.gz.

File metadata

  • Download URL: ha_voice_label_sync-0.2.0.tar.gz
  • Upload date:
  • Size: 11.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ha_voice_label_sync-0.2.0.tar.gz
Algorithm Hash digest
SHA256 5d4703788ab266272a276188b41e08a9ddf379d7e0850d7aa61dd0ef2461c4c6
MD5 ad0ca94903d25e7961cc71f4fafaec81
BLAKE2b-256 8db2d37c2550d6f62b65de14d177a98d4ad767584c4d6d52ebe0b0b294666aae

See more details on using hashes here.

Provenance

The following attestation bundles were made for ha_voice_label_sync-0.2.0.tar.gz:

Publisher: publish-pypi.yml on flimo44/ha-voice-label-sync

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ha_voice_label_sync-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for ha_voice_label_sync-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 77e330a10901d3a8e09f686cd728779de62bf75eb0dd83f5dfb557d459d9d7d0
MD5 c5f993ebde51f007f831532c26154b03
BLAKE2b-256 481000cacb6bbf6d9de9cd4d2d1ee7e10d5a4b81bbf87fd805e9a731e1a057bc

See more details on using hashes here.

Provenance

The following attestation bundles were made for ha_voice_label_sync-0.2.0-py3-none-any.whl:

Publisher: publish-pypi.yml on flimo44/ha-voice-label-sync

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page