Fritzbox auslesen über igddesc.xml

Begonnen von Tungsten, 27 Mai 2021, 09:09:31

Vorheriges Thema - Nächstes Thema

Tungsten

Moin Zusammen,

gibt es eigentlich ein Modul das etwas vergleichbares macht wie dieser fritzbox_exporter als Docker?

https://registry.hub.docker.com/r/mxschmitt/fritzbox_exporter/

https://github.com/mxschmitt/fritzbox_exporter

Dort werden über http://fritz.box:49000/igddesc.xml und TR064 bestimmte Metriken abgerufen,
die über das was das FRITZBOX modul hat hinaus gehen, wenn ich es richtig sehe.

Da ich bereits in eine MariaDB logge, würde man kann zusätzliches Prometheus benötigen.

Es gibt auch sehr schöne Grafana Dashboards die darauf basieren: https://grafana.com/grafana/dashboards/12579

Hat sich das schon mal jemand angeschaut?




JoWiemann

Der fritzbox_exporter stellt laut git folgende Infos bereit:


Name: urn:schemas-any-com:service:Any:1
WANDevice - FRITZ!Box 7490: urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1
  GetCommonLinkProperties
    WANAccessType: DSL
    Layer1UpstreamMaxBitRate: 1148000
    Layer1DownstreamMaxBitRate: 12860000
    PhysicalLinkStatus: Up
  GetTotalBytesSent
    TotalBytesSent: 255710914
  GetTotalBytesReceived
    TotalBytesReceived: 5037753042
  GetTotalPacketsSent
    TotalPacketsSent: 3050536
  GetTotalPacketsReceived
    TotalPacketsReceived: 1346651
  GetAddonInfos
    ByteSendRate: 0
    ByteReceiveRate: 0
    PacketSendRate: 0
    PacketReceiveRate: 0
    TotalBytesSent: 255710914
    TotalBytesReceived: 5037753042
    AutoDisconnectTime: 0
    IdleDisconnectTime: 10
    DNSServer1: 1.1.1.1
    DNSServer2: 2.2.2.2
    VoipDNSServer1: 1.1.1.1
    VoipDNSServer2: 2.2.2.2
    UpnpControlEnabled: false
    RoutedBridgedModeBoth: 1
WANConnectionDevice - FRITZ!Box 7490: urn:schemas-upnp-org:service:WANDSLLinkConfig:1
  GetDSLLinkInfo
    LinkType: PPPoE
    LinkStatus: Up
  GetModulationType
    ModulationType: ADSL G.lite
  GetDestinationAddress
    DestinationAddress: NONE
  GetATMEncapsulation
    ATMEncapsulation: LLC
  GetFCSPreserved
    FCSPreserved: true
  GetAutoConfig
    AutoConfig: true
WANConnectionDevice - FRITZ!Box 7490: urn:schemas-upnp-org:service:WANIPConnection:1
  X_AVM_DE_GetDNSServer
    IPv4DNSServer1: 1.1.1.1
    IPv4DNSServer2: 2.2.2.2
  GetAutoDisconnectTime
    AutoDisconnectTime: 0
  GetIdleDisconnectTime
    IdleDisconnectTime: 0
  X_AVM_DE_GetExternalIPv6Address
    ExternalIPv6Address:
    PrefixLength: 0
    ValidLifetime: 0
    PreferedLifetime: 0
  GetNATRSIPStatus
    RSIPAvailable: false
    NATEnabled: true
  GetExternalIPAddress
    ExternalIPAddress: 1.1.1.1
  X_AVM_DE_GetIPv6Prefix
    IPv6Prefix:
    PrefixLength: 0
    ValidLifetime: 0
    PreferedLifetime: 0
  X_AVM_DE_GetIPv6DNSServer
    IPv6DNSServer1:
    ValidLifetime1: 2002000000
    IPv6DNSServer2:
    ValidLifetime2: 199800000
  GetConnectionTypeInfo
    ConnectionType: IP_Routed
    PossibleConnectionTypes: IP_Routed
  GetStatusInfo
    ConnectionStatus: Connected
    LastConnectionError: ERROR_NONE
    Uptime: 65386
WANConnectionDevice - FRITZ!Box 7490: urn:schemas-upnp-org:service:WANIPv6FirewallControl:1
  GetFirewallStatus
    FirewallEnabled: true
    InboundPinholeAllowed: false


Was davon benötigts Du denn?

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

KölnSolar

ich misch mich hier mal ein, weil es sich ja um klassisches UPnP handelt u. mit meinem neuen UPNPController die device- u. service-Struktur auch ausgelesen wird     2021-05-26 22:32:11   localIP_49000_3-UDN uuid:75802409-uuidPart2-3-8e6c-uuidPart5
     2021-03-12 09:00:54   localIP_49000_3-friendlyName FRITZ!Box Fon WLAN 7390
     2021-05-26 22:32:11   localIP_49000_3-location http://localIP:49000/igddesc.xml
     2021-03-12 09:00:54   localIP_49000_3-manufacturer AVM Berlin
     2021-03-12 09:00:54   localIP_49000_3-modelDescription FRITZ!Box Fon WLAN 7390
     2021-03-12 09:00:54   localIP_49000_3-modelName FRITZ!Box Fon WLAN 7390
     2021-03-12 09:00:54   localIP_49000_3-modelNumber avm
     2021-03-14 15:04:01   localIP_49000_3-presence online
     2021-03-12 09:00:54   localIP_49000_3-zs-any1 urn:schemas-any-com:service:Any:1
     2021-05-24 14:22:07   localIP_49000_3-zs-l2tpv31 urn:schemas-any-com:service:l2tpv3:1
     2021-03-12 09:00:54   localIP_49000_3-zz uuid:uuidPart1-3-8e6b-uuidPart5
     2021-03-12 09:00:54   localIP_49000_3-zz-UDN uuid:uuidPart1-3-8e6b-uuidPart5
     2021-03-12 09:00:54   localIP_49000_3-zz-friendlyName WANDevice - FRITZ!Box Fon WLAN 7390
     2021-03-12 09:00:54   localIP_49000_3-zz-location http://localIP:49000/igddesc.xml
     2021-03-12 09:00:54   localIP_49000_3-zz-manufacturer AVM Berlin
     2021-03-12 09:00:54   localIP_49000_3-zz-modelDescription WANDevice - FRITZ!Box Fon WLAN 7390
     2021-03-12 09:00:54   localIP_49000_3-zz-modelName WANDevice - FRITZ!Box Fon WLAN 7390
     2021-03-12 09:00:54   localIP_49000_3-zz-modelNumber avm
     2021-03-12 09:00:54   localIP_49000_3-zz-presence online
     2021-05-27 10:41:27   localIP_49000_3-zz-zs-WANCommonIFC1 subscribed
     2021-03-12 09:00:54   localIP_49000_3-zz-zz uuid:uuidPart1-3-8e6a-uuidPart5
     2021-03-12 09:00:54   localIP_49000_3-zz-zz-UDN uuid:uuidPart1-3-8e6a-uuidPart5
     2021-03-12 09:00:54   localIP_49000_3-zz-zz-friendlyName WANConnectionDevice - FRITZ!Box Fon WLAN 7390
     2021-03-12 09:00:54   localIP_49000_3-zz-zz-location http://localIP:49000/igddesc.xml
     2021-03-12 09:00:54   localIP_49000_3-zz-zz-manufacturer AVM Berlin
     2021-03-12 09:00:54   localIP_49000_3-zz-zz-modelDescription WANConnectionDevice - FRITZ!Box Fon WLAN 7390
     2021-03-12 09:00:54   localIP_49000_3-zz-zz-modelName WANConnectionDevice - FRITZ!Box Fon WLAN 7390
     2021-03-12 09:00:54   localIP_49000_3-zz-zz-modelNumber avm
     2021-03-12 09:00:54   localIP_49000_3-zz-zz-presence online
     2021-05-27 10:42:03   localIP_49000_3-zz-zz-zs-WANDSLLinkC1 subscribed
     2021-05-27 10:42:39   localIP_49000_3-zz-zz-zs-WANIPConn1 subscribed
     2021-05-27 10:43:10   localIP_49000_3-zz-zz-zs-WANIPv6Firewall1 subscribed

Wie man sieht, versuchte ich die services zu subscriben. Das ging aber in die Hose(sonst wäre der Reading-Inhalt von z.B. localIP_49000_3-zz-zz-zs-WANDSLLinkC1 ein anderer  :-[). Ist aber ein interessanter case, um mein Modul zu korrigieren(liegt vermutlich daran, dass auf dem selben Port(49000) mehrere UPnP-devices(..._3... vorhanden sind).

Wenn ich meinen Fehler korrigiert habe, könnte man in folgenden Schritten weitermachen:
1. bei erfolgreicher subscription dem Log die Daten entnehmen, die die Fritte "pushed".
2. ein einfaches Modul(2-Stufenmodell;vergleichbar meinem DLNAController) entwickeln, welches die interessanten Informationen als readings bereitstellt.
3. das Modul um set-Befehle erweitern, um weitere Informationen zu "pollen" oder auch um evtl. Parameter zu setzen.

Grüße Markus

RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

Tungsten

@Jörg: gerne alle Werte als Readings, die das Fritzbox Modul bisher nicht hat, aber im fritz_exporter entahlten sind. Wo würdest du die und wie einbauen?

@Markus: mit welchem Modul experimentierst du da gerade?


Es gibt ja verschiedene Versionen des fritz_exporter. Ich habe jetzt mit mehreren als Docker herumprobiert, bekomme aber nur den von mxschmitt ans Laufen. Er scheint es aber nicht mehr zu betreuen und leider finde ich kein passendes Grafana Dashboard dazu.

JoWiemann

Zitat von: Tungsten am 27 Mai 2021, 17:13:21
@Jörg: gerne alle Werte als Readings, die das Fritzbox Modul bisher nicht hat, aber im fritz_exporter entahlten sind. Wo würdest du die und wie einbauen?

Bisher kennt das FritzBox Modul keine UPnP Abfragen. Könnte man aber integrieren.

@Markus, wäre dann ein Anwendungsfall für Dein UPNPDevice. Andererseits sind die SOAP Abfragen auch gut in das FritzBox-Modul einbaubar.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

KölnSolar

Hallo Ihr Zwei,
schön, dass zumindest ein Anfangsinteresse besteht.
Zitatmit welchem Modul experimentierst du da gerade?
dem UPNPController

Zitat@Markus, wäre dann ein Anwendungsfall für Dein UPNPDevice. Andererseits sind die SOAP Abfragen auch gut in das FritzBox-Modul einbaubar.
Nicht UPNPDevice(in meinem Sprachgebrauch) Das ist bei mir ein virtuelles/logisches in FHEM definiertes UPNP device, welches kein physisches Pendant hat.

Der UPNPController setzt auf dem UPnP-Standard auf und hat folgende Funktionalitäten:
- presence-Erkennung anhand von alive- u. byebye-messages
- search-Funktionalität(initial und bei Bedarf), um UPnP devices(ungleich UPNPDevice  ;)) im lokalen Netz zu finden
- Darstellung von device-Attributen, Liste der services eines device
- subscribe-(renewal-,unsubscribe-)Funktion, um events zu "abonnieren"(keine Darstellung der events im FHEM-device, sondern lediglich je nach verbose-level Infos im Log)
- dispatch von messages an Module 2. Stufe(bisher nur der DLNAController)

Und am Bsp. des DLNAControllers, wie ein Modul der 2. Stufe sich den UPNPController zunutze machen kann
- anlegen von FHEM-devices per autocreate
- automatische subscription von services(einfacher Aufruf des UPNPControllers)
- Interpretation u. Darstellung der vom UPNPController dispatchten messages in readings
- syntaktische Befehlsdefinition, aber "technische" Übertragung durch Übergabe an den UPNPController

Lange Rede kurzer Sinn: Man kann sich den UPNPController zu nutze machen, ohne UPnP verstehen bzw. technisch umsetzen zu müssen. Bis dato schien mir das mächtige FritzBox-Modul nicht wirklich ein Kandidat dafür, da dort ja andere Techniken zur Informationsbeschaffung und Befehlsausführung genutzt werden.

Zitatgerne alle Werte als Readings, die das Fritzbox Modul bisher nicht hat, aber im fritz_exporter entahlten sind. Wo würdest du die und wie einbauen?
Da hab ich so meine Bedenken. Die Latte der readings  ist ja jetzt schon recht lang und unübersichtlich. Ich werfe mal einen Blick in den fritz_exporter....
Grüße Markus

RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

kadettilac89

Ich kenne den fritzbox_exporter nicht. Ich nutze ein anderes Script das ich in Telegraf eingebunden habe. Losgelöst von Fhem gehen die DAten in Influx und Darstellung in Grafana.

Im Github ist etwas Doku, vielleicht kann man auch vom Script was übernehmen.

Es läuft bei mir seit längerem zuverlässig. Ich gehe davon aus, dass die selbe Schnittstelle der Fritzbox verwendet wird, es sind zumindest viele Informationen verfügbar.

https://github.com/jhubig/FritzBoxShell

KölnSolar

#7
Hab meinen Fehler gefunden. Läuft im Testsystem.
Bei welchem der vielen servicesMeineIP_49000-zs-AVM_ServerStatus urn:avm.de:service:AVM_ServerStatus:1
MeineIP_49000-zs-ConnectionManager urn:schemas-upnp-org:service:ConnectionManager:1
MeineIP_49000-zs-ContentDirectory urn:schemas-upnp-org:service:ContentDirectory:1
MeineIP_49000-zs-X_MS_MediaReceiverRegistrar urn:microsoft.com:service:X_MS_MediaReceiverRegistrar:1
MeineIP_49000_1-zs-l2tpv31 urn:schemas-any-com:service:l2tpv3:1
MeineIP_49000_2-zs-fritzbox urn:schemas-any-com:service:fritzbox:1
MeineIP_49000_3-zs-any1 subscription committed, timeout: 1800
MeineIP_49000_3-zz-zs-WANCommonIFC1 urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1
MeineIP_49000_3-zz-zs-any1 subscribed
MeineIP_49000_3-zz-zz-zs-WANDSLLinkC1 SID: uuid:8c2ce90a-1dd2-11b2-8f6f-960ef1772485 timeout: 1800 property: AutoConfig
MeineIP_49000_3-zz-zz-zs-WANIPConn1 SID: uuid:c56cce24-1dd1-11b2-8f70-960ef1772485 timeout: 1800 property: PortMappingNumberOfEntries
MeineIP_49000_3-zz-zz-zs-WANIPv6Firewall1 urn:schemas-upnp-org:service:WANIPv6FirewallControl:1
MeineIP_49000_4-zs-any1 urn:schemas-any-com:service:Any:1
MeineIP_49000_4-zz-zs-WANCommonIFC1 urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1
MeineIP_49000_4-zz-zz-zs-WANDSLLinkC1 urn:schemas-upnp-org:service:WANDSLLinkConfig:1
MeineIP_49000_4-zz-zz-zs-WANIPConn1 urn:schemas-upnp-org:service:WANIPConnection:2
MeineIP_49000_4-zz-zz-zs-WANIPv6Firewall1 urn:schemas-upnp-org:service:WANIPv6FirewallControl:1
macht eine subscription Sinn(erwartete Änderungen/Ereignisse) ? :-\
Grüße Markus

Edit:
- subscription-prozess funktioniert anstandslos nach 24h
- service WANDSLLinkC1 liefert keine events; bei der subscription
2021.05.29 19:44:43 5: UPNPController: Received event: by MeineIP_49000_3-zz-zz-zs-WANDSLLinkC1 UPnP::ControlPoint::Service=HASH(0x4500d28)
$VAR1 = 'AutoConfig';
$VAR2 = '0';
$VAR3 = 'LinkStatus';
$VAR4 = 'Up';


- interessanter WANIPConn1
  - subscription    $VAR1 = 'PortMappingNumberOfEntries';
$VAR2 = '0';
$VAR3 = 'PossibleConnectionTypes';
$VAR4 = 'IP_Routed';
$VAR5 = 'ExternalIPAddress';
$VAR6 = '88.76.26.xyz';
$VAR7 = 'ConnectionStatus';
$VAR8 = 'Connected';
$VAR9 = 'ExternalIPv6Address';
$VAR10 = '';

    - heute Nacht beim IP-Wechsel
2021.05.30 03:01:16 5: UPNPController: Received event: by MeineIP_49000_3-zz-zz-zs-WANIPConn1 UPnP::ControlPoint::Service=HASH(0x44f6b38)
$VAR1 = 'ConnectionStatus';
$VAR2 = 'Connecting';
2021.05.30 03:24:31 5: UPNPController: Received event: by MeineIP_49000_3-zz-zz-zs-WANIPConn1 UPnP::ControlPoint::Service=HASH(0x44f6b38)
$VAR1 = 'ConnectionStatus';
$VAR2 = 'Disconnected';
2021.05.30 03:24:31 5: UPNPController: Received event: by MeineIP_49000_3-zz-zz-zs-WANIPConn1 UPnP::ControlPoint::Service=HASH(0x44f6b38)
$VAR1 = 'ConnectionStatus';
$VAR2 = 'Connecting';
2021.05.30 03:24:31 5: UPNPController: Received event: by MeineIP_49000_3-zz-zz-zs-WANIPConn1 UPnP::ControlPoint::Service=HASH(0x44f6b38)
$VAR1 = 'ExternalIPAddress';
$VAR2 = '94.221.104.xyz';
2021.05.30 03:24:31 5: UPNPController: Received event: by MeineIP_49000_3-zz-zz-zs-WANIPConn1 UPnP::ControlPoint::Service=HASH(0x44f6b38)
$VAR1 = 'ConnectionStatus';
$VAR2 = 'Connected';
2021.05.30 03:58:48 5: UPNPController: Received event: by MeineIP_49000_3-zz-zz-zs-WANIPConn1 UPnP::ControlPoint::Service=HASH(0x44f6b38)
$VAR1 = 'ConnectionStatus';
$VAR2 = 'Connecting';

(fragt mich nicht, was da um 3:01 u. 3:58 passiert ist  :-\. 3:24 fand der IP-Wechsel statt. Das FritzBox-Modul hat es erst 4' später "bemerkt".  :) )

@Jörg: Hab ich das richtig verstanden, dass TR-064 "nur" auf UPnP aufsetzt u. somit vergleichbar DLNA zu betrachten ist ? War mir bisher zumindest nicht klar.
Wann u. wie soll Dein fork in das offizielle Modul einfließen ? Kontakt mit tupol ?
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt