{"id":45625913,"url":"https://github.com/werthdavid/homeassistant-fritzmesh","last_synced_at":"2026-03-01T14:00:44.136Z","repository":{"id":340089235,"uuid":"1164216712","full_name":"werthdavid/homeassistant-fritzmesh","owner":"werthdavid","description":"Home Assistant custom component for visualizing FRITZ! Mesh Topology","archived":false,"fork":false,"pushed_at":"2026-02-27T10:05:17.000Z","size":397,"stargazers_count":9,"open_issues_count":2,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-27T15:53:29.990Z","etag":null,"topics":["fritzbox","home-assistant","homeassistant","homeassistant-custom-component","mesh"],"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/werthdavid.png","metadata":{"files":{"readme":"README.md","changelog":null,"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":"2026-02-22T20:07:27.000Z","updated_at":"2026-02-27T10:05:20.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/werthdavid/homeassistant-fritzmesh","commit_stats":null,"previous_names":["werthdavid/homeassistant-fritzmesh"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/werthdavid/homeassistant-fritzmesh","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/werthdavid%2Fhomeassistant-fritzmesh","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/werthdavid%2Fhomeassistant-fritzmesh/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/werthdavid%2Fhomeassistant-fritzmesh/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/werthdavid%2Fhomeassistant-fritzmesh/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/werthdavid","download_url":"https://codeload.github.com/werthdavid/homeassistant-fritzmesh/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/werthdavid%2Fhomeassistant-fritzmesh/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29970543,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-01T13:32:00.443Z","status":"ssl_error","status_checked_at":"2026-03-01T13:32:00.084Z","response_time":124,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["fritzbox","home-assistant","homeassistant","homeassistant-custom-component","mesh"],"created_at":"2026-02-23T20:27:36.292Z","updated_at":"2026-03-01T14:00:44.115Z","avatar_url":"https://github.com/werthdavid.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FRITZ!Box Mesh — Home Assistant Custom Component\n\nShows which devices are connected to which mesh node (FRITZ!Box master or repeaters/slaves) in your AVM FRITZ!Box mesh network.\n\n\u003cimg src=\"meshcard.png\" width=\"400\"\u003e\n\n:exclamation: **This is an unofficial component that is not officially supported by FRITZ!/AVM**\n\nDisclaimer: No Affiliation with AVM Fritz!\nThis project is an independent, open-source software developed by David Werth. \nIt is not affiliated with, endorsed by, sponsored by, or otherwise connected to AVM GmbH (the makers of FRITZ! products) in any way. \nI have no business relationship with AVM, and this software is provided for informational purposes only.\n\n## Features\n\n- **Native HA entities** — sensors and binary sensors appear directly in HA, no YAML, no MQTT\n- **Per mesh node** — Connected/WiFi/LAN count sensors plus current RX/TX rate sensors\n- **Per client device** — connectivity binary sensor, Mesh Node sensor, Connection type sensor\n- **Custom Lovelace card with visual editor** — configure sorting, click behavior target, transfer metric mode, colors, and font scaling in UI\n- **Dynamic discovery** — new devices appearing on the network are added without restarting HA\n- **Config flow UI** — set up via Settings → Integrations, no files to edit\n- **Auto-refresh** — polls the FRITZ!Box every N seconds (configurable, default 60 s)\n\n## Prerequisites\n\n- Home Assistant 2023.6 or newer\n- AVM FRITZ!Box with mesh enabled (FRITZ!OS 7.0+)\n- A FRITZ!Box user account with **Smart Home** or admin permissions\n  - FRITZ!Box UI → **System → FRITZ!Box Users** → create / select a user → enable access rights\n\n## Installation\n\n### Via HACS (recommended)\n\n1. Open HACS → **Integrations** → ⋮ → **Custom repositories**\n2. Add `https://github.com/werthdavid/homeassistant-fritzmesh` as type **Integration**\n3. Install **FRITZ! Mesh**\n4. Restart Home Assistant\n\n### Manual\n\n1. Copy `custom_components/FRITZmesh/` into your HA `config/custom_components/` directory:\n   ```\n   config/\n   └── custom_components/\n       └── FRITZmesh/       ← copy this whole folder\n   ```\n2. Restart Home Assistant\n\n## Setup\n\n1. **Settings → Integrations → Add integration → search \"FRITZ Mesh\"**\n2. Fill in the form:\n\n   | Field | Default | Description |\n   |---|---|---|\n   | Host | `192.168.178.1` | IP or hostname of your FRITZ!Box |\n   | Port | `49000` | TR-064 port (`49000` HTTP, `49443` HTTPS) |\n   | Username | _(empty)_ | FRITZ!Box username |\n   | Password | _(empty)_ | FRITZ!Box password |\n   | Use TLS | off | Enable for HTTPS (set port to 49443) |\n   | Poll interval | `60` | Seconds between topology refreshes |\n   | Debug raw JSON output | `off` | `off`, `log`, `file`, `log_and_file` |\n\n3. Click **Submit** — HA validates the credentials and creates the integration\n\n## Using the card\n\n- Find the ID of the topology entity of the mesh master (e.g. `sensor.fritz_box_mesh_192_168_178_1_topology`)\n- Create a card in the **Lovelace UI** with the following YAML:\n```yaml\ntype: custom:fritzmesh-card\nentity: sensor.fritz_box_mesh_192_168_178_1_topology\n```\n\n### Visual editor options\n\nThe card supports full UI configuration in Lovelace Visual Editor:\n\n| Option | Values | Description |\n|---|---|---|\n| Name detail display | `Connected mesh node`, `Connection state` | Defines which entity is shown in **More Info** when clicking a device name |\n| Node sorting | `Default`, `By name`, `By IP`, `By MAC` | Sort order for repeater sections and client lists |\n| Transfer metric mode | `Aggregate`, `Uplink only`, `Max single client`, `Average client` | Metric shown as TX/RX label on master and repeater cards |\n| URL template | e.g. `http://{ip}`, `https://{ip}` | Used when clicking IP addresses (IPs are always clickable) |\n| Line / Accent / Text colors | color pickers | Card appearance customization |\n| Master panel gradient start/end | color pickers | Color customization for the blue mesh-master panel |\n| Font size scale | `80`–`140` | Scales card text size in percent |\n\n\n## Entities created\n\n**Per mesh node** (device = the FRITZ!Box / repeater):\n\n| Entity | Type | Example value |\n|---|---|---|\n| `{node} Connected Devices` | sensor | `5` |\n| `{node} WiFi Devices` | sensor | `3` |\n| `{node} LAN Devices` | sensor | `2` |\n| `{node} Current RX Rate` | sensor | `1733000` (`kbit/s`) |\n| `{node} Current TX Rate` | sensor | `1201000` (`kbit/s`) |\n\n**Per client device** (device = laptop, phone, etc., identified by MAC):\n\n| Entity | Type | Example value |\n|---|---|---|\n| `{client}` (connectivity) | binary_sensor | `on` / `off` |\n| `{client} Mesh Node` | sensor | `\"FRITZ!Box 7590\"` |\n| `{client} Connection` | sensor | `\"WiFi\"` / `\"LAN\"` |\n\n## Troubleshooting\n\n**\"Cannot connect\" during setup:**\n- Verify the FRITZ!Box IP, port (49000 for HTTP, 49443 for HTTPS), and TLS setting\n- Ensure the FRITZ!Box user has Smart Home or admin access rights\n\n**\"Invalid auth\" during setup:**\n- Double-check username and password in FRITZ!Box UI → System → FRITZ!Box Users\n\n**Devices show generic names (e.g. long UIDs):**\n- Assign friendly names in the FRITZ!Box UI → **Home Network → Network → Devices \u0026 Accounts**\n\n**Repeaters not appearing:**\n- Ensure devices are configured as a FRITZ!Box mesh (not just WiFi extenders)\n  — FRITZ!Box UI → **Home Network → Mesh**\n\n**Need to inspect raw FRITZ!Box mesh JSON:**\n- Set **Debug raw JSON output** to:\n  - `log` → writes JSON to Home Assistant logs\n  - `file` → writes JSON to `config/fritzmesh_debug/\u003chost\u003e_mesh_raw.json`\n  - `log_and_file` → both\n\n---\n\n## How It Works\n\nUses the [FRITZconnection](https://github.com/kbr/FRITZconnection) Python library:\n\n1. TR-064 SOAP call to `Hosts1.X_AVM-DE_GetMeshListPath` → gets the mesh list URL\n2. Fetches the mesh JSON from the FRITZ!Box (authenticated)\n3. Parses `nodes[] → node_interfaces[] → node_links[]` to build the topology tree\n4. Cross-references with `FRITZHosts.get_hosts_info()` to add IP addresses and hostnames\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwerthdavid%2Fhomeassistant-fritzmesh","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwerthdavid%2Fhomeassistant-fritzmesh","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwerthdavid%2Fhomeassistant-fritzmesh/lists"}