{"id":48083629,"url":"https://github.com/klausj1/homeassistant-statistics","last_synced_at":"2026-04-04T15:01:49.654Z","repository":{"id":222258548,"uuid":"756168276","full_name":"klausj1/homeassistant-statistics","owner":"klausj1","description":"This HA integration allows to import and export long term statistics from/to a file like csv or tsv","archived":false,"fork":false,"pushed_at":"2026-04-04T13:26:43.000Z","size":1877,"stargazers_count":157,"open_issues_count":3,"forks_count":12,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-04-04T14:41:45.236Z","etag":null,"topics":["home-assistant-integration","python","statistics"],"latest_commit_sha":null,"homepage":"","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/klausj1.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","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":"AGENTS.md","dco":null,"cla":null}},"created_at":"2024-02-12T05:22:34.000Z","updated_at":"2026-04-04T13:25:04.000Z","dependencies_parsed_at":"2025-12-05T06:06:47.873Z","dependency_job_id":null,"html_url":"https://github.com/klausj1/homeassistant-statistics","commit_stats":null,"previous_names":["klausj1/homeassistant-statistics"],"tags_count":20,"template":false,"template_full_name":null,"purl":"pkg:github/klausj1/homeassistant-statistics","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klausj1%2Fhomeassistant-statistics","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klausj1%2Fhomeassistant-statistics/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klausj1%2Fhomeassistant-statistics/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klausj1%2Fhomeassistant-statistics/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/klausj1","download_url":"https://codeload.github.com/klausj1/homeassistant-statistics/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klausj1%2Fhomeassistant-statistics/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31403952,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T10:20:44.708Z","status":"ssl_error","status_checked_at":"2026-04-04T10:20:06.846Z","response_time":60,"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":["home-assistant-integration","python","statistics"],"created_at":"2026-04-04T15:01:47.131Z","updated_at":"2026-04-04T15:01:49.645Z","avatar_url":"https://github.com/klausj1.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Import Statistics Integration\n\nA Home Assistant custom integration to import and export long-term statistics from CSV, TSV, or JSON files.\n\n[![GitHub Release][releases-shield]][releases]\n[![GitHub Activity][commits-shield]][commits]\n[![License][license-shield]](LICENSE)\n[![Community Forum][forum-shield]][forum]\n\n\u003e **Note:** This integration provides actions only (no entities or dashboard cards). You call its actions from Developer Tools or automations.\n\n## Quick Links\n\n- [Installation](#installation) | [Importing](#importing-statistics) | [Exporting](#exporting-statistics) | [Inventory](#exporting-statistics-inventory) | [Troubleshooting Tips](./docs/user/troubleshooting-tips.md)\n- [Counter Statistics Explained](./docs/user/counters.md#understanding-counter-statistics-sumstate) | [Delta Import](./docs/user/counters.md#delta-import) | [Inventory Categories](./docs/user/export_inventory_categories.md)\n- [Debug Logging Guide](./docs/user/debug-logging.md) - How to enable debug logs for troubleshooting\n\nThis is the user guide. If you are a developer, check the [Developer Documentation](./docs/dev/README.md).\n\n## Requirements\n\n- Home Assistant 2026.1.0 or newer\n\n## Installation\n\n### Option 1: HACS (Recommended)\n\n1. Install via HACS, or click: [![Open HACS Repository][hacs-repo-badge]][hacs-repo]\n2. Restart Home Assistant\n3. Add the integration: [![Add Integration][config-flow-badge]][config-flow]\n\n### Option 2: Manual\n\n1. Download all files from `custom_components/import_statistics/` in this repository\n2. Copy them to `\u003cconfig\u003e/custom_components/import_statistics/` (create folders if needed)\n3. Add `import_statistics:` to your `configuration.yaml`\n4. Restart Home Assistant\n\n## Available Actions\n\n| Action                                | Description                                    |\n| ------------------------------------- | ---------------------------------------------- |\n| `import_statistics.import_from_file`  | Import statistics from a CSV/TSV file          |\n| `import_statistics.import_from_json`  | Import statistics from JSON (UI or API)        |\n| `import_statistics.export_statistics` | Export statistics to CSV/TSV or JSON           |\n| `import_statistics.export_inventory`  | Export metadata inventory of all statistics    |\n\n\u003e As this integration uses database-independent methods, it works with all databases supported by Home Assistant.\n\n---\n\n## Importing Statistics\n\nImport your statistics from CSV, TSV, or JSON files to populate or update Home Assistant's long-term statistics database.\n\n### How to Import\n\n1. Copy your file to your Home Assistant config folder\n2. Go to **Developer Tools → Actions**\n3. Select `import_statistics: import_from_file` (or `import_from_json`)\n4. Fill in the settings (from the UI or YAML)\n5. Click `perform action` to start the import.\n\n### Settings Description\n\n- **`filename` (required)**\n  - Input file name (relative to Home Assistant config directory).\n  - Supported:\n    - `.csv` or `.tsv` for CSV/TSV import\n    - `.json` for JSON import (use `import_from_json` action)\n- **`delimiter` (optional)**\n  - Delimiter between columns for CSV/TSV import.\n  - If omitted, it is inferred from the filename extension:\n    - `.csv` uses comma (`,`) by default\n    - `.tsv` uses tab (`\\t`) by default\n  - Options: `\\t` (tab), `;` (semicolon), `,` (comma), `|` (pipe), or custom value.\n- **`decimal` (required, default: `\".\"`)**\n  - Decimal separator character: `\".\"` for dot or `\",\"` for comma.\n- **`datetime_format` (optional, default: `%d.%m.%Y %H:%M`)**\n  - Input format of the `datetime` strings in the file.\n  - Default: `DD.MM.YYYY HH:MM` (e.g., `17.03.2024 02:00`)\n  - Common formats: `%d.%m.%Y %H:%M`, `%Y.%m.%d %H:%M`, `%Y-%m-%d %H:%M`, `%m/%d/%Y %H:%M`, `%d/%m/%Y %H:%M`\n- **`timezone_identifier` (optional)**\n  - Defaults to Home Assistant's configured timezone if omitted. Typically can be left empty.\n  - Timezone identifier (check pytz timezones or \u003chttps://en.wikipedia.org/wiki/List_of_tz_database_time_zones\u003e).\n\n\u003e **Important:** Input files **must** contain a `unit` column with the unit of measurement for each statistic. For existing statistics, the unit in the input file must match the unit already stored in Home Assistant's database, otherwise the import will fail with an error.\n\u003e\n\u003e **Note:** Timestamps must be full hours (minutes must be `:00`). Timestamps are interpreted in the specified timezone.\n\u003e\n\u003e **Performance note**: Importing large datasets may take time as the operation is synchronous. The action completes when all data is saved into the database.\n\n#### Example using the UI\n\n![import from file](assets/service_import_ui.png)\n\n#### Examples using YAML\n\n##### Import from TSV file\n\n```yaml\naction: import_statistics.import_from_file\ndata:\n  filename: my_statistics.tsv\n  delimiter: \\t\n  decimal: \".\"\n```\n\n##### Import from CSV file with custom format\n\n```yaml\naction: import_statistics.import_from_file\ndata:\n  filename: my_statistics.csv\n  delimiter: \",\"\n  decimal: \".\"\n  datetime_format: \"%Y-%m-%d %H:%M\"\n  timezone_identifier: \"Europe/Vienna\"\n```\n\n##### Import from JSON\n\n```yaml\naction: import_statistics.import_from_json\ndata:\n  statistics: \u003cJSON content\u003e\n```\n\n### File Format Requirements\n\nYour file must contain one type of statistics:\n\n- **Measurements (state_class == measurement or measurement_angle)** (temperature, humidity, direction,etc.): columns `min`, `max`, `mean`\n- **Counters (state_class == total or total_increasing)** (energy, water meters, etc.): columns `sum`, `state` (or `delta`)\n\n\u003e **Before importing counters, make sure to read** [Understanding counter statistics in Home Assistant](./docs/user/counters.md)\n\u003e For importing counters, it is **recommended to use the import with the delta column** instead of importing sum/state, see [Delta Import](./docs/user/counters.md#delta-import)\n\nExample files:\n\n- [Measurements (min/max/mean)](./assets/min_max_mean.tsv)\n- [Counters (sum/state)](./assets/state_sum.tsv)\n- [Counters (delta)](./assets/delta.tsv)\n\n#### Required Columns\n\nOnly these columns are accepted (unknown columns cause an error):\n\n| Column               | Required          | Description                          |\n| -------------------- | ----------------- | ------------------------------------ |\n| `statistic_id`       | Yes               | The entity identifier                |\n| `start`              | Yes               | Timestamp                            |\n| `unit`               | Sometimes         | Required for external statistics     |\n| `min`, `max`, `mean` | For measurements  | Cannot mix with counter columns      |\n| `sum`, `state`       | For counters      | Cannot mix with measurement columns  |\n| `delta`              | For counters      | Alternative to sum/state (see below) |\n\n#### Statistic ID Format\n\n| Type         | Format                   | Example                  | When to use                                |\n| ------------ | ------------------------ | ------------------------ | ------------------------------------------ |\n| **Internal** | `domain.name` (with `.`) | `sensor.temperature`     | For existing Home Assistant entities       |\n| **External** | `domain:name` (with `:`) | `sensor:imported_energy` | For external (custom/synthetic) statistics |\n\n\u003e Internal statistics must match an existing entity.\n\n#### File Encoding\n\n- **Encoding**: UTF-8 (required for special characters like m³ or °C)\n- **Delimiter**: Tab (default), comma, semicolon, or pipe\n- **Decimal separator**: `.` (default) or `,`\n\n### Import Behavior\n\n- **Overwrites existing data**: Importing the same timestamps replaces old values\n- **Gaps are preserved**: Missing hours will show as gaps in graphs\n- **Synchronous operation**: The action completes when all data is saved into the database. This can take a longer time for large input data\n- **Validation errors**: Shown directly in the UI; check logs if import fails silently\n\n\u003e If importing does not work and you do not get an error directly in the GUI, but there is an error in the Home Assistant logs, then this is a bug. This happens if the integration misses some checks, which lead to import errors later. Please create an issue.\n\n### Data Validation\n\nThe integration performs strict validation on all import data:\n\n- **All rows must be valid** - If any row contains invalid data, the entire import fails\n- **Clear error messages** - The error message will indicate which row failed and why\n- **No partial imports** - Either all data is imported successfully, or none of it is\n- **Common validation errors**:\n  - Invalid timestamp format or non-full-hour timestamps\n  - Invalid numeric values (non-numeric strings, NaN, empty values)\n  - Constraint violations (e.g., min \u003e max for measurement data)\n  - Missing required columns\n\nThis strict validation ensures data integrity and helps you identify and fix data quality issues immediately.\n\n### JSON Import\n\nYou can also import via JSON, either through the UI or the Home Assistant API.\n\nExample format: [state_sum.json](./assets/state_sum.json)\n\n**Via API:**\n\n```http\nPOST https://\u003cyour-ha-url\u003e/api/services/import_statistics/import_from_json\nContent-Type: application/json\n\n\u003cJSON content\u003e\n```\n\n---\n\n## Exporting Statistics\n\nExport your statistics to a file e.g. for backup, analysis, preparing a counter import with delta, or transfer to another Home Assistant instance.\n\n### How to Export\n\n1. Go to **Developer Tools → Actions**\n2. Select `import_statistics: export_statistics`\n3. Fill in the settings (from the UI or YAML)\n4. Click `perform action` to start the export.\n\n### Settings Description\n\n- **`filename` (required)**\n  - Output file name (relative to Home Assistant config directory).\n  - Supported:\n    - `.json` for JSON export\n    - `.csv` or `.tsv` for TSV/CSV export\n- **`entities` (optional)**\n  - List of statistic IDs or entity IDs to export. Make sure to use a YAML list with `-`\n  - Leave empty to export all available statistics.\n  - Supports wildcard patterns using `*` (glob matching) inside an entry:\n    - `sensor.paris_*` (prefix)\n    - `sensor.*_temperature` (suffix)\n    - `sensor.*temp*` (contains)\n  - Constraints:\n    - `*` alone is not allowed\n    - Broad patterns like `sensor.*` / `sensor:*` must not be mixed with other entries (omit `entities` to export all)\n- **`start_time` (optional)**\n  - Start of the export range format: `%Y-%m-%d %H:%M:%S` ( `YYYY-MM-DD HH:MM:SS` ). Make sure you use quotes around the string.\n  - Must be a full hour (`MM:SS` must be `00:00`).\n  - If omitted, export starts from the earliest available long-term (hourly) statistic.\n- **`end_time` (optional)**\n  - End of the export range format: `%Y-%m-%d %H:%M:%S` ( `YYYY-MM-DD HH:MM:SS` ). Make sure you use quotes around the string.\n  - Must be a full hour (`MM:SS` must be `00:00`).\n  - If omitted, export ends at the most recent available long-term (hourly) statistic.\n- **`timezone_identifier` (optional)**\n  - Defaults to Home Assistant's configured timezone if omitted. Typically can be left empty.\n  - Timezone identifier (check pytz timezones or \u003chttps://en.wikipedia.org/wiki/List_of_tz_database_time_zones\u003e).\n- **`datetime_format` (optional, default: `%d.%m.%Y %H:%M`)**\n  - Output format of the `datetime` strings in the exported file.\n- **`delimiter` (optional)**\n  - Delimiter between columns for TSV/CSV export.\n  - If omitted, it is inferred from the filename extension:\n    - `.csv` uses comma (`,`) by default\n    - `.tsv` uses tab (`\\t`) by default\n- **`decimal` (required, default: `\".\"`)**\n  - Decimal separator character: `\".\"` for dot or `\",\"` for comma.\n- **`split_by` (optional, default: `none`)**\n  - Split output into multiple files by statistic type:\n    - `none`: default; write a single combined file\n    - `measurement`: write only measurements statistics (mean/min/max)\n    - `counter`: write only counter statistics (sum/state/delta)\n    - `both`: write both files\n  - Output files use suffixes `_measurements` and `_counters` before the extension.\n- **`counter_fields` (optional, default: `both`)**\n  - Controls which counter columns are written in **CSV/TSV** exports:\n    - `both`: include `state`, `sum`, and `delta`\n    - `sum`: include `state` and `sum`\n    - `delta`: include `delta` only\n  - **Limitation**: this option is ignored for JSON export.\n\n\u003e **Note:** If you omit `start_time`/`end_time`, the action will auto-detect the time range from the recorder.\n\u003e This requires long-term (hourly) statistics to exist. On new Home Assistant instances you may only have short-term statistics at first;\n\u003e in that case, wait until long-term statistics are generated, or provide explicit `start_time` and `end_time`.\n\u003e\n\u003e **Performance note**: Exporting all statistics from large databases (450k+ records) may take 30-60 seconds depending on hardware.\n\n#### Example using the UI\n\n![export to file](assets/service_export_ui.png)\n\n#### Examples using YAML\n\n##### Export selected entities\n\n```yaml\naction: import_statistics.export_statistics\ndata:\n  filename: exported_statistics.tsv\n  entities:\n    - sensor.temperature\n    - sensor.energy_consumption\n    - sensor:ext_value\n  start_time: \"2025-12-22 12:00:00\"\n  end_time: \"2025-12-25 12:00:00\"\n  delimiter: \\t\n  decimal: \".\"\n  # timezone_identifier: Europe/Vienna  # Optional - defaults to HA timezone\n```\n\n##### Export using wildcard patterns\n\n```yaml\naction: import_statistics.export_statistics\ndata:\n  filename: temperatures.tsv\n  entities:\n    - sensor.*_temperature\n  start_time: \"2025-12-22 00:00:00\"\n  end_time: \"2025-12-23 00:00:00\"\n  delimiter: \\t\n  decimal: \".\"\n```\n\n##### Export all statistics\n\n```yaml\naction: import_statistics.export_statistics\ndata:\n  filename: exported_statistics.tsv\n  delimiter: \\t\n  decimal: \".\"\n```\n\n##### Export all statistics into separate files (measurements + counters)\n\n```yaml\naction: import_statistics.export_statistics\ndata:\n  filename: exported_statistics.tsv\n  split_by: both\n  delimiter: \\t\n  decimal: \".\"\n```\n\n##### Export only measurements\n\n```yaml\naction: import_statistics.export_statistics\ndata:\n  filename: exported_statistics.tsv\n  entities:\n    - sensor.temperature\n    - sensor.energy_consumption\n  start_time: \"2025-12-22 00:00:00\"\n  end_time: \"2025-12-23 00:00:00\"\n  split_by: measurements\n  delimiter: \\t\n  decimal: \".\"\n```\n\n### Export Output\n\nThe exported file contains:\n\n| For Measurements     | For Counters            |\n| -------------------- | ----------------------- |\n| `min`, `max`, `mean` | `sum`, `state`, `delta` |\n\n\u003e **Note:** You can export measurements and counters together, but you'll need to split them into separate files before re-importing (import only accepts one type per file).\n\n---\n\n## Exporting Statistics Inventory\n\nExport a metadata-only inventory of all long-term statistics. This is useful for:\n\n- **Migration planning**: Compare statistics between old and new Home Assistant instances\n- **Database analysis**: Understand what statistics exist and their sizes\n- **Cleanup**: Identify deleted or orphaned statistics\n\n### How to Export Inventory\n\n1. Go to **Developer Tools → Actions**\n2. Select `import_statistics: export_inventory`\n3. Fill in the settings (from the UI or YAML)\n4. Click `perform action` to start the export.\n\n### Settings Description\n\n- **`filename` (required)**\n  - Output file name (relative to Home Assistant config directory).\n  - Use `.tsv` or `.csv` extension.\n- **`delimiter` (optional)**\n  - Delimiter between columns.\n  - If omitted, it is inferred from the filename extension:\n    - `.csv` uses comma (`,`) by default\n    - `.tsv` uses tab (`\\t`) by default\n- **`timezone_identifier` (optional)**\n  - Defaults to Home Assistant's configured timezone if omitted.\n  - Used for formatting `first_seen` and `last_seen` timestamps.\n\n### Example YAML\n\n```yaml\naction: import_statistics.export_inventory\ndata:\n  filename: statistics_inventory.csv\n```\n\n### Inventory Output\n\n- Export creates **two files** using the same base name:\n  - `\u003cfilename\u003e.csv` or `\u003cfilename\u003e.tsv`: table only (one row per statistic, no summary block)\n  - `\u003cfilename\u003e.txt`: summary only\n\n- Example: if `filename: inventory.csv`, outputs are:\n  - `inventory.csv` (table)\n  - `inventory.txt` (summary)\n\n- Summary file content:\n\n```text\nTotal statistics: 257\nMeasurements: 194\nCounters: 63\nTotal samples: 5038317\nGlobal start: 2022-01-09 16:00:00\nGlobal end: 2026-02-12 13:00:00\nActive statistics: 224\nOrphan statistics: 7\nDeleted statistics: 26\nExternal statistics: 0\n```\n\n- Table file content (one row per statistic):\n\n| statistic_id | unit_of_measurement | source | category | type | samples_count | first_seen | last_seen | days_span |\n| --- | --- | --- | --- | --- | --- | --- | --- | --- |\n| sensor.button_master_power | % | recorder | Active | Measurement | 32949 | 2/12/2022 10:00 | 2/12/2026 13:00 | 1461.1 |\n| sensor.disk_free | GiB | recorder | Active | Measurement | 35876 | 1/9/2022 16:00 | 2/12/2026 13:00 | 1494.9 |\n| sensor.disk_use | GiB | recorder | Active | Measurement | 35876 | 1/9/2022 16:00 | 2/12/2026 13:00 | 1494.9 |\n| sensor.disk_use_percent | % | recorder | Active | Measurement | 35876 | 1/9/2022 16:00 | 2/12/2026 13:00 | 1494.9 |\n| sensor.e3_tcu10_x07_buffer_main_temperature | °C | recorder | Active | Measurement | 20326 | 9/29/2023 10:00 | 2/12/2026 13:00 | 867.2 |\n| sensor.e3_tcu10_x07_compressor_hours | h | recorder | Active | Counter | 17638 | 1/20/2024 21:00 | 2/12/2026 13:00 | 753.7 |\n| sensor.e3_tcu10_x07_compressor_starts |  | recorder | Active | Counter | 17638 | 1/20/2024 21:00 | 2/12/2026 13:00 | 753.7 |\n\n#### Table Columns\n\n| Column | Description |\n| ------ | ----------- |\n| `statistic_id` | The statistic ID (e.g., `sensor.temperature`) |\n| `unit_of_measurement` | Unit (e.g., `°C`, `kWh`) |\n| `source` | Source of the statistic (e.g., `recorder`) |\n| `category` | Classification: `Active`, `Orphan`, `Deleted`, or `External` |\n| `type` | `Measurement` (has mean/min/max) or `Counter` (has sum) |\n| `samples_count` | Number of long-term (hourly) samples |\n| `first_seen` | Timestamp of earliest sample |\n| `last_seen` | Timestamp of most recent sample |\n| `days_span` | Number of days covered by samples |\n\n#### Category Classification\n\nCategory classification is based on the Home Assistant entity registry and does not use `states_meta`.\n\n- **Active**: `statistic_id` exists in the entity registry active entities (`core.entity_registry.entities`).\n- **Orphan**: `statistic_id` exists in the entity registry deleted entities (`core.entity_registry.deleted_entities`) and has a non-null `orphaned_timestamp`.\n- **Deleted**:\n  - `statistic_id` exists in `core.entity_registry.deleted_entities` and has a null/missing `orphaned_timestamp`, or\n  - `statistic_id` is not found in the entity registry at all (neither active nor deleted).\n- **External**: Statistic is external (either `source != \"recorder\"` or `statistic_id` uses the `domain:name` format with `:`).\n\nFor more details, see [Export Inventory Categories](./docs/user/export_inventory_categories.md).\n\n---\n\n## Best Practices\n\n### Importing counters (state_class `total / total_increasing`)\n\n- Import `delta`, not `sum` and `state`\n- Export first\n- Modify the exported file\n- Import\n\nSee [Delta Import](./docs/user/counters.md#delta-import)\n\n### Testing and Validation\n\n- Always make a backup before importing\n  - Consider using the export functionality for backup as well\n- Test with a small dataset first (10-20 rows)\n- Create a test entity for initial imports\n- Verify data in History graph before checking Energy Dashboard\n- Enable debug logging to see detailed error messages (see [Debug Logging Guide](./docs/user/debug-logging.md))\n- Existing values can be overwritten - use this to correct mistakes\n\n### Data Preparation\n\n- Use Excel, Google Sheets or similar to prepare the data\n- Verify column headers match exactly\n- Check for consistent data types in each column\n- Check for consistent usage of delimiters\n- Validate timestamps are full hours\n\n---\n\n## Troubleshooting\n\nFor troubleshooting tips, see [Troubleshooting Tips for Import Statistics Integration](./docs/user/troubleshooting-tips.md).\n\n---\n\n## Additional Resources\n\n- **[Community Guide: Loading, Manipulating, and Recovering Statistics](https://community.home-assistant.io/t/loading-manipulating-recovering-and-moving-long-term-statistics-in-home-assistant/953802)** — Detailed examples for fixing historical data (thanks to Geoffrey!)\n- **[Jeedom Migration Guide](./misc/jeedom.md)** — How to import statistics from Jeedom\n\n---\n\n[commits-shield]: https://img.shields.io/github/commit-activity/y/klausj1/homeassistant-statistics.svg\n[commits]: https://github.com/klausj1/homeassistant-statistics/commits/main\n[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg\n[forum]: https://community.home-assistant.io/t/custom-integration-to-import-long-term-statistics-from-a-file-like-csv-or-tsv\n[license-shield]: https://img.shields.io/github/license/klausj1/homeassistant-statistics.svg\n[releases-shield]: https://img.shields.io/github/v/release/klausj1/homeassistant-statistics?include_prereleases\n[releases]: https://github.com/klausj1/homeassistant-statistics/releases\n[hacs-repo-badge]: https://my.home-assistant.io/badges/hacs_repository.svg\n[hacs-repo]: https://my.home-assistant.io/redirect/hacs_repository/?owner=klausj1\u0026repository=homeassistant-statistics\u0026category=integration\n[config-flow-badge]: https://my.home-assistant.io/badges/config_flow_start.svg\n[config-flow]: https://my.home-assistant.io/redirect/config_flow_start?domain=import_statistics\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fklausj1%2Fhomeassistant-statistics","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fklausj1%2Fhomeassistant-statistics","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fklausj1%2Fhomeassistant-statistics/lists"}