{"id":42359820,"url":"https://github.com/waldbaer/knx-ga-exporter","last_synced_at":"2026-01-27T17:06:57.957Z","repository":{"id":148199831,"uuid":"346482674","full_name":"waldbaer/knx-ga-exporter","owner":"waldbaer","description":"Spreadsheet to KNX group address CSV file converter for ETS","archived":false,"fork":false,"pushed_at":"2025-11-01T14:14:15.000Z","size":606,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-11-01T16:05:08.887Z","etag":null,"topics":["converter","csv","ets","groupaddress","knx","smarthome"],"latest_commit_sha":null,"homepage":"https://github.com/waldbaer/knx-ga-exporter","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/waldbaer.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-03-10T20:25:42.000Z","updated_at":"2025-11-01T14:14:18.000Z","dependencies_parsed_at":"2025-07-31T21:08:29.433Z","dependency_job_id":"cbb8835d-1108-4027-ad23-508ce792c530","html_url":"https://github.com/waldbaer/knx-ga-exporter","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/waldbaer/knx-ga-exporter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waldbaer%2Fknx-ga-exporter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waldbaer%2Fknx-ga-exporter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waldbaer%2Fknx-ga-exporter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waldbaer%2Fknx-ga-exporter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/waldbaer","download_url":"https://codeload.github.com/waldbaer/knx-ga-exporter/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waldbaer%2Fknx-ga-exporter/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28816581,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-27T12:25:15.069Z","status":"ssl_error","status_checked_at":"2026-01-27T12:25:05.297Z","response_time":168,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["converter","csv","ets","groupaddress","knx","smarthome"],"created_at":"2026-01-27T17:06:57.597Z","updated_at":"2026-01-27T17:06:57.949Z","avatar_url":"https://github.com/waldbaer.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![PyPI version](https://badge.fury.io/py/knx-ga-exporter.svg)](https://badge.fury.io/py/knx-ga-exporter)\n[![MIT License](https://img.shields.io/github/license/waldbaer/knx-ga-exporter?style=flat-square)](https://opensource.org/licenses/MIT)\n[![GitHub issues open](https://img.shields.io/github/issues/waldbaer/knx-ga-exporter?style=flat-square)](https://github.com/waldbaer/knx-ga-exporter/issues)\n[![GitHub Actions](https://github.com/waldbaer/knx-ga-exporter/actions/workflows/python-pdm.yml/badge.svg?branch=master)](https://github.com/waldbaer/knx-ga-exporter/actions/workflows/python-pdm.yml)\n\n\n# KNX GroupAddress Exporter for ETS\n\n## Introduction\nA simple converter for spreadsheets to KNX ETS group address configurations in CSV format.\n\nConverter allows to use all possible features of the spreadsheet tools like Excel, LibreOffice etc to plan, duplicate and maintain your KNX group addresses. No more unhandy group address duplication or management in the KNX ETS software.\n\nLeveraging the powerful [jsonargparse](https://jsonargparse.readthedocs.io/) library, this tool supports configuration and control via command-line parameters or a JSON configuration file.\n\n\n## Features\n- Parse and convert Excel sheets to KNX ETS readable CSV files containing group address configuration.\n- Different KNX ETS CSV formats supported.\n- Configurable Excel sheet layout\n\n## Changelog\nChanges can be followed at [CHANGELOG.md](https://github.com/waldbaer/knx-ga-exporter/blob/master/CHANGELOG.md).\n\n\n## Requirements\n\n - [Python 3.9](https://www.python.org/)\n - [pip](https://pip.pypa.io/) or [pipx](https://pipx.pypa.io/stable/)\n\n For development:\n - [python-pdm (package dependency manager)](https://pdm-project.org/)\n\n## Setup\n\n### With pip / pipx\n```\npip install knx-ga-exporter\npipx install knx-ga-exporter\n```\n\n### Setup directly from github repo / clone\n```\ngit clone https://github.com/waldbaer/knx-ga-exporter.git\ncd knx-ga-exporter\n\npython -m venv .venv\nsource ./.venv/bin/activate\npip install .\n```\n\n## Usage\n\n### Step1: Convert spreadsheet to ETS readable CSV file.\n\nCreate / design all needed KNX group addresses in an spreadsheet using Excel / LibreOffice XLSX document:\n\n\u003cimg src=\"https://github.com/waldbaer/knx-ga-exporter/blob/master/docs/images/example-spreadsheet.png?raw=true\" title=\"Design KNX GroupAddresses in spreadsheet\" /\u003e\n\n\nExport the spreadsheet contents as CSV file:\n\n```\nknx-ga-exporter -i docs/Examples/01-SmallExampleWithRoomBook/KNX-planning-example.xlsx -vv\n\n2025-02-02 11:48:23 INFO: Loading XLSX input file 'docs/Examples/01-SmallExampleWithRoomBook/KNX-planning-example.xlsx'\n2025-02-02 11:48:23 DEBUG: Parsed GA: 0/0/1    | Light \u0026 Power | Switch | DPST-1-1 | B0-0-L - Basement Office - Ceiling light - Light \u0026 Power Switch\n2025-02-02 11:48:23 DEBUG: Parsed GA: 0/0/2    | Light \u0026 Power | Switch | DPST-1-1 | T0-0-L - Top Floor Bathroom - Ceiling light - Light \u0026 Power Switch\n2025-02-02 11:48:23 DEBUG: Parsed GA: 0/0/3    | Light \u0026 Power | Switch | DPST-1-1 | T1-0-L - Top Floor Bedroom - Wall light (north) - Light \u0026 Power Switch\n2025-02-02 11:48:23 DEBUG: Parsed GA: 0/0/5    | Light \u0026 Power | Switch | DPST-1-1 | B1-2-P - Basement Kitchen - Wall plug - next to bed. - Light \u0026 Power Switch\n...\n2025-02-02 11:48:23 INFO: Exporting group addresses into CSV file 'knx-ga-addresses.csv'. format: 1/1, separator: '[TAB]', encoding: iso-8859-1\n2025-02-02 11:48:23 DEBUG: Exporting main group     0        | Light \u0026 Power |\n2025-02-02 11:48:23 DEBUG: Exporting   middle group 0/0      |               | Switch |\n2025-02-02 11:48:23 DEBUG: Exporting     sub group: 0/0/1    | Light \u0026 Power | Switch | DPST-1-1 | B0-0-L - Basement Office - Ceiling light - Light \u0026 Power Switch\n2025-02-02 11:48:23 DEBUG: Exporting     sub group: 0/0/2    | Light \u0026 Power | Switch | DPST-1-1 | T0-0-L - Top Floor Bathroom - Ceiling light - Light \u0026 Power Switch\n2025-02-02 11:48:23 DEBUG: Exporting     sub group: 0/0/3    | Light \u0026 Power | Switch | DPST-1-1 | T1-0-L - Top Floor Bedroom - Wall light (north) - Light \u0026 Power Switch\n2025-02-02 11:48:23 DEBUG: Exporting     sub group: 0/0/5    | Light \u0026 Power | Switch | DPST-1-1 | B1-2-P - Basement Kitchen - Wall plug - next to bed. - Light \u0026\n...\n2025-02-02 11:48:23 DEBUG: Statistics: #GA: 16\n2025-02-02 11:48:23 INFO: Conversion successfully finished.\n```\n\nThe exported CSV can be found in `knx-group-addresses.csv`:\n```\n\"Group name\"\t\"Address\"\t\"Central\"\t\"Unfiltered\"\t\"Description\"\t\"DatapointType\"\t\"Security\"\n\"Light \u0026 Power\"\t\"0/-/-\"\t\"\"\t\"\"\t\"\"\t\"\"\t\"Auto\"\n\"Switch\"\t\"0/0/-\"\t\"\"\t\"\"\t\"\"\t\"\"\t\"Auto\"\n\"B0-0-L - Basement Office - Ceiling light - Light \u0026 Power Switch\"\t\"0/0/0\"\t\"\"\t\"\"\t\"Additional comment\"\t\"DPST-1-1\"\t\"Auto\"\n\"T0-0-L - Top Floor Bathroom - Ceiling light - Light \u0026 Power Switch\"\t\"0/0/1\"\t\"\"\t\"\"\t\"is added to ETS description field\"\t\"DPST-1-1\"\t\"Auto\"\n\"T1-0-L - Top Floor Bedroom - Wall light (north) - Light \u0026 Power Switch\"\t\"0/0/2\"\t\"\"\t\"\"\t\"\"\t\"DPST-1-1\"\t\"Auto\"\n\"B1-2-P - Basement Kitchen - Wall plug - next to bed. - Light \u0026 Power Switch\"\t\"0/0/4\"\t\"\"\t\"\"\t\"\"\t\"DPST-1-1\"\t\"Auto\"\n...\n```\n\n### Step2: Load CSV into KNX ETS application ###\n- Open the KNX ETS application and the project.\n- Edit -\u003e Import Group Addresses -\u003e Select the generated CSV file.\n- Voila! New group addresses are added or existing addresses got renamed.\n\n  \u003cimg src=\"https://github.com/waldbaer/knx-ga-exporter/blob/master/docs/images/ets-import.png?raw=true\" title=\"Design KNX GroupAddresses in spreadsheet\" width=\"300\" /\u003e\n\n  \u003cimg src=\"https://github.com/waldbaer/knx-ga-exporter/blob/master/docs/images/est-import-result.png?raw=true\" title=\"Imported KNX GroupAddresses in ETS\" /\u003e\n\n\n_Hint_: The KNX ETS application will not automatically delete group addresses not contained in the CSV file anymore. A cleanup must be done manually.\n\n### Examples\n\nExamples including the standard spreadsheet format can be found in folder [docs/Examples](https://github.com/waldbaer/knx-ga-exporter/tree/master/docs/Examples)\n\n\n### All Available Parameters and Configuration Options\n\nDetails about all available options:\n\n```\nUsage: knx-ga-exporter [-h] [--version] [-c CONFIG] [-v] [-i FILE] [-o FILE] [--output.encoding ENCODING] [--output.format {1/1,3/3}]\n                       [--output.separator {tabulator,comma,semicolon}] [--layout.sheet-name SHEET_NAME]\n                       [--layout.first-row FIRST_ROW] [--layout.last-column LAST_COLUMN] [--layout.main-ID-column MAIN_ID_COLUMN]\n                       [--layout.middle-ID-column MIDDLE_ID_COLUMN] [--layout.sub-ID-column SUB_ID_COLUMN]\n                       [--layout.main-name-column MAIN_NAME_COLUMN] [--layout.middle-name-column MIDDLE_NAME_COLUMN]\n                       [--layout.sub-name-column SUB_NAME_COLUMN] [--layout.dpt-column DPT_COLUMN]\n                       [--layout.target-ID-column TARGET_ID_COLUMN] [--layout.comment-column COMMENT_COLUMN]\n\nConverter for spreadsheets to KNX ETS group address configurations in CSV format. | Version 2.0.3 | Copyright 2019-2025\n\nDefault Config File Locations:\n  ['./config.json'], Note: no existing default config file found.\n\nOptions:\n  -h, --help            Show this help message and exit.\n  --version             Print version and exit.\n  -c, --config CONFIG   Path to JSON configuration file.\n  -v, --verbose         Increase log-level. -v: INFO, -vv DEBUG. Default: WARN/ERROR (default: 0)\n  -i, --input.file FILE\n                        Path to XSLX file to be parsed. (required)\n  -o, --output.file FILE\n                        Path of exported CSV file. (default: knx-ga-addresses.csv)\n  --output.encoding ENCODING\n                        Output file encoding (default: iso-8859-1)\n  --output.format {1/1,3/3}\n                        CSV output format.\n\n                        Possible formats:\n                        1/1: Name / Address\n                        3/3: Main- Middle- Sub- Name/Main- Middle- Sub-Address\n                         (default: 1/1)\n  --output.separator {tabulator,comma,semicolon}\n                        CSV separator.\n\n                        Possible separators:\n                        tabulator: [TAB]\n                        comma:     ,\n                        semicolon: ;\n                         (type: None, default: tabulator)\n  --layout.sheet-name SHEET_NAME\n                        Name of XLSX sheet containing the KNX group addresses (default: KNX Group Addresses)\n  --layout.first-row FIRST_ROW\n                        First row containing GAs (default: 8)\n  --layout.last-column LAST_COLUMN\n                        Last column (default: 10)\n  --layout.main-ID-column MAIN_ID_COLUMN\n                        Column containing main ID of KNX GA (default: 0)\n  --layout.middle-ID-column MIDDLE_ID_COLUMN\n                        Column containing middle ID of KNX GA (default: 2)\n  --layout.sub-ID-column SUB_ID_COLUMN\n                        Column containing sub ID of KNX GA (default: 4)\n  --layout.main-name-column MAIN_NAME_COLUMN\n                        Column containing main name of KNX GA (default: 1)\n  --layout.middle-name-column MIDDLE_NAME_COLUMN\n                        Column containing middle name of KNX GA (default: 3)\n  --layout.sub-name-column SUB_NAME_COLUMN\n                        Column containing sub name of KNX GA (default: 8)\n  --layout.dpt-column DPT_COLUMN\n                        Column containing datapoint type of KNX GA (default: 5)\n  --layout.target-ID-column TARGET_ID_COLUMN\n                        Column containing target ID KNX GA (default: 6)\n  --layout.comment-column COMMENT_COLUMN\n                        Column containing GA comment (default: 9)\n```\n\n\n## Development\n\n### Setup environment\n\n```\npdm install --dev\n```\n\n### Update dependencies to latest versions\n\n```\npdm update --unconstrained --save-exact --no-sync\n```\n\n### Format / Linter / Tests\n\n```\n# Check code style\npdm run format\n\n# Check linter\npdm run lint\n\n# Run tests\npdm run tests\n```\n\n### Publish\n\n```\n# API token will be requested interactively as password\npdm publish -u __token__\n\n# or to test.pypi.org\npdm publish --repository testpypi -u __token__\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwaldbaer%2Fknx-ga-exporter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwaldbaer%2Fknx-ga-exporter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwaldbaer%2Fknx-ga-exporter/lists"}