Fritz Connection
FritzBox Router-Status über die TR-064 API mit fritzconnection.
⚠️ Sicherheitshinweise
Folgende Befehle erfordern IMMER eine Rückfrage vor der Ausführung:
- -
reconnect – Kappt die Internetverbindung für alle Geräte kurzzeitig (10-30 Sekunden) reboot – Startet den Router neu, alles fällt aus (Internet, WLAN, Telefonie) für 2-5 Minutenwlan on/off – Systemweite Auswirkung auf alle Geräte- Router-Konfiguration ändern – Kann alle Devices betreffen
Ausnahme: Nur wenn explizit genehmigt ("mach mal", "ja bitte", etc.)
Diese Befehle betreffen nicht nur den User, sondern alle Geräte und Personen im Netzwerk.
Voraussetzungen
CODEBLOCK0
Konfiguration
In ~/.openclaw/skills/.env:
CODEBLOCK1
Hinweis: FritzBox nutzt nur Passwort-Auth, kein Username.
Nutzung
CODEBLOCK2
Verfügbare Befehle
status
Router-Status und Verbindungsinformationen.
Output:
CODEBLOCK3
traffic
Bandbreite und Datenvolumen.
Output:
CODEBLOCK4
hosts
Alle bekannten Geräte mit Status.
Output:
CODEBLOCK5
Legende: ✅ = aktiv, ⏸️ = offline/inaktiv
wlan
WLAN-Status aller Netzwerke (2.4 GHz, 5 GHz, Gastzugang).
Output:
CODEBLOCK6
WLAN-Netzwerke:
- - 📶 2.4 GHz – Hauptnetz (WLANConfiguration:1)
- 📡 5 GHz – Hauptnetz (WLANConfiguration:2)
- 🏠 Gastzugang – Gäste-WLAN (WLANConfiguration:3)
calls
Anrufliste mit Typ, Nummer und Zeitstempel.
Output:
CODEBLOCK7
Optionen:
- -
-n, --limit N - Anzahl Einträge (default: 10)
Call-Typen:
- - 📞 Eingehend (Type 1) - Angenommene eingehende Anrufe
- 📵 Verpasst (Type 2) - Verpasste eingehende Anrufe
- 📱 Ausgehend (Type 3) - Ausgehende Anrufe
reconnect
Erzwingt einen Reconnect und fordert eine neue externe IP an.
CODEBLOCK8
Output:
CODEBLOCK9
⚠️ Systemweiter Eingriff:
- - Kappt die Internetverbindung für alle Geräte kurzzeitig
- Neue externe IP wird zugewiesen
- Dauert normalerweise 10-30 Sekunden
- Niemals ohne Rückfrage ausführen!
reboot
Startet die FRITZ!Box neu.
CODEBLOCK10
Output:
CODEBLOCK11
⚠️ Systemweiter Eingriff:
- - Kappt ALLE Verbindungen (Internet, WLAN, Telefonie) für 2-5 Minuten
- Alle Geräte im Netz verlieren die Verbindung
- Router startet komplett neu
- Niemals ohne Rückfrage ausführen!
fritzconnection Library
Python-Library für FritzBox TR-064 API.
Dokumentation: https://fritzconnection.readthedocs.io/
Zwei API-Interfaces
fritzconnection nutzt zwei unterschiedliche APIs:
| API | Methode | Verwendung |
|---|
| TR-064 | INLINECODE13 | Netzwerk, Status, Konfiguration, Smart Home |
| AHA-HTTP |
fc.call_http(command, ain) | Smart Home DECT, Device Stats, XML-Responses |
TR-064 gibt Python-Datentypen zurück (Dict mit konvertierten Werten).
HTTP-Interface gibt rohe HTTP-Response (text/plain oder text/xml, braucht oft Parsen).
Grundlegende Nutzung
CODEBLOCK12
Haupt-Services (TR-064)
| Service | Beschreibung | Status |
|---|
| WANIPConnection | WAN-Status, IP, Uptime, Reconnect | ✅ Implementiert |
| WANCommonInterfaceConfig |
Traffic-Stats, Bandbreite | ✅ Implementiert |
|
Hosts | Verbundene Geräte, MAC-Filter | ✅ Implementiert |
|
DeviceInfo | Model, Firmware, Serial | ✅ Implementiert |
|
XAVM-DEOnTel | Anrufliste, Telefonbuch | ✅ Implementiert |
|
WLANConfiguration | WLAN-Netzwerke, Gäste-WLAN | ✅ Implementiert |
|
DeviceConfig | Router-Reboot | ✅ Implementiert |
|
XAVM-DEHomeauto | DECT-Smart-Home (Steckdosen, Thermostate) | 🔲 Geplant |
|
LANHostConfigManagement | DHCP-Einstellungen | 🔲 Geplant |
Geräte-Unterstützung
- - Fritz!Box - Vollständig unterstützt (alle Services)
- Fritz!Repeater - Teilweise unterstützt (TR-064, aber weniger Services)
- Fritz!Fon - Nur über Box erreichbar
Die verfügbaren Services hängen vom Router-Modell und der Firmware ab.
Erweiterungsideen
WLAN-Steuerung
CODEBLOCK13
Smart Home (DECT via TR-064)
CODEBLOCK14
Smart Home (DECT via HTTP-Interface)
CODEBLOCK15
Anrufliste (TR-064)
CODEBLOCK16
Call-Monitoring (Realtime)
CODEBLOCK17
Reconnect (Neue IP)
CODEBLOCK18
Reboot
CODEBLOCK19
Python-API
CODEBLOCK20
Architektur
CODEBLOCK21
Links
- - Library: https://github.com/kbr/fritzconnection
- Doku: https://fritzconnection.readthedocs.io/
- TR-064 Dokumentation: https://avm.de/service/schnittstellen/
- AVM Service-Übersicht: https://fritz.box:49000/tr64desc.xml
Fritz Connection
通过 fritzconnection 库,利用 TR-064 API 获取 FritzBox 路由器状态。
⚠️ 安全提示
以下命令在执行前必须征得用户确认:
- - reconnect – 短暂中断所有设备的互联网连接(10-30 秒)
- reboot – 重启路由器,所有服务中断(互联网、WLAN、电话)2-5 分钟
- wlan on/off – 系统级影响所有设备
- 修改路由器配置 – 可能影响所有设备
例外情况: 仅在获得明确许可时(开始吧、好的,请等)
这些命令不仅影响当前用户,还会影响网络中的所有设备和人员。
前提条件
bash
cd ~/.openclaw/workspace/skills/fritz-status
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt
配置
在 ~/.openclaw/skills/.env 文件中:
FRITZBOX_HOST=192.168.178.1
FRITZBOX_PASSWORD=你的密码
注意:FritzBox 仅使用密码认证,无需用户名。
使用方法
bash
cd ~/.openclaw/workspace/skills/fritz-status
路由器状态(型号、运行时间、WAN IP)
.venv/bin/python scripts/fritz_status.py status
流量统计(接收/发送字节数、下行/上行速率)
.venv/bin/python scripts/fritz_status.py traffic
已连接设备(名称、IP、MAC、状态)
.venv/bin/python scripts/fritz_status.py hosts -v
WLAN 状态(2.4GHz、5GHz、访客网络)
.venv/bin/python scripts/fritz_status.py wlan
通话记录(最近 10 条)
.venv/bin/python scripts/fritz_status.py calls
通话记录(最近 20 条)
.venv/bin/python scripts/fritz_status.py calls -n 20
重新连接(获取新 IP)⚠️ 需要确认!
.venv/bin/python scripts/fritz_status.py reconnect
重启(重启路由器)⚠️ 需要确认!
.venv/bin/python scripts/fritz_status.py reboot
可用命令
status
路由器状态和连接信息。
输出:
🖥️ AVM FRITZ!Box 6660 Cable
📍 主机:192.168.178.1
🔌 连接状态:已连接
⏱️ 运行时间:456789 秒(126 小时 49 分钟)
🌐 外部 IP:203.0.113.42
traffic
带宽和数据流量。
输出:
📥 最大下行速率:274 Mbit/s
📤 最大上行速率:52 Mbit/s
📊 总接收数据:299.68 GB
📊 总发送数据:20.34 GB
hosts
所有已知设备及其状态。
输出:
📱 已连接设备:5 台
✅ 智能手机 (192.168.178.10, AA:BB:CC:DD:EE:01)
✅ 笔记本电脑 (192.168.178.20, AA:BB:CC:DD:EE:02)
✅ fritz.box (192.168.178.1, AA:BB:CC:DD:EE:03)
⏸️ 平板电脑 (192.168.178.30, AA:BB:CC:DD:EE:04)
⏸️ 智能电视 (192.168.178.40, AA:BB:CC:DD:EE:05)
图例: ✅ = 在线,⏸️ = 离线/未激活
wlan
所有网络的 WLAN 状态(2.4 GHz、5 GHz、访客网络)。
输出:
📡 WLAN 状态
📶 2.4 GHz:
状态:✅ 已启用
SSID:MeinWLAN
信道:6
标准:ax
📡 5 GHz:
状态:✅ 已启用
SSID:MeinWLAN
信道:36
标准:ax
🏠 访客网络:
状态:❌ 已禁用
SSID:MeinWLAN Gast
📡 WLAN 已开启
WLAN 网络:
- - 📶 2.4 GHz – 主网络(WLANConfiguration:1)
- 📡 5 GHz – 主网络(WLANConfiguration:2)
- 🏠 访客网络 – 访客 WLAN(WLANConfiguration:3)
calls
通话记录,包含类型、号码和时间戳。
输出:
📋 通话记录(10 条)
📞 来电
📞 01234567890
🕐 03.03.2026 18:54 (0:39)
📵 未接来电
📞 09876543210
🕐 02.03.2026 15:30 (0:00)
📱 去电
📞 017000000000
🕐 01.03.2026 12:15 (2:30)
📌 最近通话:📞 来电 来自 01234567890 于 03.03.26 18:54
选项:
- - -n, --limit N - 条目数量(默认:10)
通话类型:
- - 📞 来电(类型 1)- 已接听的来电
- 📵 未接来电(类型 2)- 未接听的来电
- 📱 去电(类型 3)- 拨出的电话
reconnect
强制重新连接并获取新的外部 IP。
bash
.venv/bin/python scripts/fritz_status.py reconnect
输出:
🔄 已请求重新连接。正在等待新连接...
⚠️ 系统级操作:
- - 短暂中断所有设备的互联网连接
- 分配新的外部 IP
- 通常需要 10-30 秒
- 未经确认切勿执行!
reboot
重启 FRITZ!Box。
bash
.venv/bin/python scripts/fritz_status.py reboot
输出:
🔄 已请求重启。FRITZ!Box 正在重启。
⏱️ 通常需要 2-5 分钟。
📡 所有设备将断开连接(互联网、WLAN、电话)。
⚠️ 系统级操作:
- - 中断所有连接(互联网、WLAN、电话)2-5 分钟
- 网络中所有设备断开连接
- 路由器完全重启
- 未经确认切勿执行!
fritzconnection 库
用于 FritzBox TR-064 API 的 Python 库。
文档: https://fritzconnection.readthedocs.io/
两个 API 接口
fritzconnection 使用两个不同的 API:
| API | 方法 | 用途 |
|---|
| TR-064 | fc.callaction(service, action, args) | 网络、状态、配置、智能家居 |
| AHA-HTTP |
fc.callhttp(command, ain) | 智能家居 DECT、设备统计、XML 响应 |
TR-064 返回 Python 数据类型(包含转换后值的字典)。
HTTP 接口 返回原始 HTTP 响应(text/plain 或 text/xml,通常需要解析)。
基本用法
python
from fritzconnection import FritzConnection
fc = FritzConnection(address=192.168.178.1, password=pw)
路由器信息
print(fc) # 型号信息
TR-064:通过重新连接获取新 IP
fc.call_action(WANIPConn1, ForceTermination)
fc.reconnect() # 上述操作的快捷方式
HTTP:获取智能家居设备统计
response = fc.call_http(getbasicdevicestats, ain=12345 7891011)
主要服务(TR-064)
| 服务 | 描述 | 状态 |
|---|
| WANIPConnection | WAN 状态、IP、运行时间、重新连接 | ✅ 已实现 |
| WANCommonInterfaceConfig |
流量统计、带宽 | ✅ 已实现 |
|
Hosts | 已连接设备、MAC 过滤 | ✅ 已实现 |
|
DeviceInfo | 型号、固件、序列号 | ✅ 已实现 |
|
XAVM-DEOnTel | 通话记录、电话簿 | ✅ 已实现 |
|
WLANConfiguration | WLAN 网络、访客 WLAN | ✅ 已实现 |
|
DeviceConfig | 路由器重启 | ✅ 已实现 |
|
X_AVM-DE