fix(satellite): Router als router erkennen, Docker-Netze nicht als Geraete

Auf ARIAs VM fand der neue Satellit 58 Geraete, darunter die Container der
Docker-Netze (docker0/br-*/veth) — die sind keine Geraete und fallen jetzt
aus der ARP-Liste. Die FRITZ!Box 5590 kam per SSDP als 'media-renderer';
InternetGatewayDevice / FRITZ!Box heisst jetzt type 'router'.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-31 17:27:09 +01:00
co-authored by Claude Opus 5.5
parent 116a947a4a
commit a58756ddfd
+10
View File
@@ -597,6 +597,10 @@ def _discover_ssdp(timeout: float) -> list[dict]:
entry["name"] = dev["name"]
if dev.get("model"):
entry["model"] = dev["model"]
# Router (FritzBox & Co.) melden sich per SSDP als
# InternetGatewayDevice — kein Medienabspieler.
if re.search(r"InternetGatewayDevice|FRITZ!Box", f"{entry['name']} {dev.get('model', '')}"):
entry["type"] = "router"
if dev.get("manufacturer"):
entry["manufacturer"] = dev["manufacturer"]
if dial_app or dev.get("dialAppUrl"):
@@ -641,6 +645,12 @@ def _discover_arp() -> list[dict]:
ip, _hw, _flags, mac = parts[0], parts[1], parts[2], parts[3]
if mac == "00:00:00:00:00:00":
continue
# Docker-interne Netze (Container auf DIESEM Rechner) sind keine
# Geraete — laeuft der Satellit auf einem Docker-Host (z.B. ARIAs
# VM), stuenden sonst alle Container in der Liste.
iface = parts[5] if len(parts) > 5 else ""
if iface.startswith(("docker", "br-", "veth")):
continue
out.append({
"id": _slug(f"host-{ip}"), "name": ip, "type": "host",
"ip": ip, "mac": mac, "via": "arp",