FritzBox Status abrufen

Begonnen von Lling, 13 Oktober 2014, 19:24:15

Vorheriges Thema - Nächstes Thema

Lling

Moin Leute
ich würde mir gerne in FHEM die Statuswerte meiner Firtzbox anzeigen lassen. Quasi die, die im Screenshot zu sehen sind. Aus dem Wikieintrag werd ich nicht wirklich schlau. Kann mir da jemand helfen?

bugster_de

oh, da wirst du wohl selbst programmieren müssen. Die im Screenshot angezeigten Werte mußt du aus der API heraus holen. Und was in der API drin steckt, erschliesst sich nach ausgiebigem Studium von wehavemorefun:
http://www.wehavemorefun.de/fritzbox/User-Interface-Module

hexenmeister

#2
Einiges davon ist mit SYSMON machbar.

(http://forum.fhem.de/index.php?action=dlattach;topic=27889.0;attach=20017;image)
Bei mir läuft auf der FB FHEM mit einer SYSMON-Instanz. Verbunden mit dem 'HauptFHEM' per FHEM2FHEM und mit SYSMON_ShowValuesHTMLTitled angezeigt:

# Anzeige SYSMON : FB
define SysValuesFB weblink htmlCode {SYSMON_ShowValuesHTMLTitled('fb_sysmon', '<b>FritzBox 7490</b>', ('date:Date','uptime_text:System up time','fhemuptime_text:FHEM up time','idletime_text:Idle','loadavg:Load average','ram:RAM','swap:swap','fs_nand:NAND','fs_var:/var','fs_usb1:USB','fs_online:Online','internet_state:Internet','internet_ip:IP','wlan_state:WLAN','wlan_guest_state:Guest WLAN','dsl_rate:DSL rate','dsl_synctime:DSLAM connected','dsl_fec_15:recoverable errors','dsl_crc_15:unrecoverable errors','fhem_version:FHEM version'))}
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

Lling

Hmm. FHEM will ich nicht auf der Fritzbox haben. Schade hätte gehofft, da gibts schon ne fertige Variante für.^^

hexenmeister

Sie ist ja vertig, die Variante, aber eben mit FHEM ;)
Es gibt sicher auch anderer Weg (UPNP?), aber dazu hat leider noch niemand ein Modul geschrieben.
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

MauiJim

Gibt es hier nach aktuellem Stand irgendwelche Neuerungen?

Würde gerne den Internet-Reconnect der FritzBox loggen.
Mit dem aktuellen Modul so leider immer noch nicht möglich, oder?

SCMP77

#6
Das Fritzbox-Modul liefert doch schon einiges. Z.B. wird mi dem Reading box_ipExtern die aktuelle IP-Adresse der Internet-Verbindung geliefert. Wenn man deren Änderung beobachtet, hat man eigentlich schon die Reconnects erkannt. Fehlt die Verbindung, steht da ein '-' drin.
Weitere Infos wird man u.U. auch über TR064 erhalten können, dessen Zugriff dieses Modul ebenfalls ermöglicht.


PS: Unter dem Eintrag "box_connect" findet man auch die Anzahl der Connections seit dem letzten Boot-Vorgang der Fritz!Box. Auf dessen Änderungen könnte dann beispielsweise mit einem DOIF oder notify reagieren.
Raspberry Pi 3 Model B mit Rasbian, SolvisMax, AVM DECT 200, Sonoff mit Tasmota geflasht

MauiJim

Zitat von: SCMP77 am 07 Februar 2018, 18:11:42
Das Fritzbox-Modul liefert doch schon einiges. Z.B. wird mi dem Reading box_ipExtern die aktuelle IP-Adresse der Internet-Verbindung geliefert. Wenn man deren Änderung beobachtet, hat man eigentlich schon die Reconnects erkannt. Fehlt die Verbindung, steht da ein '-' drin.
Weitere Infos wird man u.U. auch über TR064 erhalten können, dessen Zugriff dieses Modul ebenfalls ermöglicht.
Kann ich leider Aufgrund statischer IP nicht wirklich nutzen.

Zitat von: SCMP77 am 07 Februar 2018, 18:11:42
PS: Unter dem Eintrag "box_connect" findet man auch die Anzahl der Connections seit dem letzten Boot-Vorgang der Fritz!Box. Auf dessen Änderungen könnte dann beispielsweise mit einem DOIF oder notify reagieren.
Habe das über ein notify mit Pushmsg Benachrichtigung getestet, bekomme das aber leider mit der "Änderung" nicht hin.
Müsste ja quasi den alten Wert in einem Userreading speichern und dann vergleichen oder?

SCMP77

Zitat von: MauiJim am 08 Februar 2018, 12:55:59
Kann ich leider Aufgrund statischer IP nicht wirklich nutzen.

Mmmmhh, das verstehe ich nicht ganz.
Das Modul hat zwei Möglichkeiten, wenn die Fritz!Box noch als DHCP-Server arbeitet (Default) müsste sie unter dem URL "fritz.box" zugänglich sein. Wenn Du das in der Fritz!Box ausgeschaltet haben solltest, kannst Du die IP unter dem Attribut "fritzBoxIP" setzen.

Zitat von: MauiJim am 08 Februar 2018, 12:55:59Habe das über ein notify mit Pushmsg Benachrichtigung getestet, bekomme das aber leider mit der "Änderung" nicht hin.
Müsste ja quasi den alten Wert in einem Userreading speichern und dann vergleichen oder?

Also für Deine Beobachtung von neuen Connection-Aufbaus müsstest Du für das Reading "box_connect" das Attribute "event-on-change-reading" setzen. Also etwa so:

attr <FritzBoxDevicename> event-on-change-reading box_connect

Dann sollte immer nur ein Event kommen, wenn der Connection-Zähler sich geändert hat. Dadurch benötigt man kein userreading o.ä..

Dann kannst Du mit einem notify darauf reagiren, z.B.:

define n_FritzBoxConnection notify <FritzBoxDevicename>:box_connect.* <fhem-Befehl>

Natürlich würde auch ein DOIF gehen, aber damit kenne ich mich nicht aus, da ich die Reaktionen auf ein notify in Perl schreibe und ich so nicht eine weiter "Programmiersprache" lernen muss ;).
Raspberry Pi 3 Model B mit Rasbian, SolvisMax, AVM DECT 200, Sonoff mit Tasmota geflasht

MauiJim

Vielen Dank :)

Hatte das kurzfristig so gelöst:

fritz:box_connect:.* {
if ( $EVTPART1 > AttrVal("fritz", "last_box_connect", 0) ) {
       fhem("set pushmsg msg \"FritzBox new connect $EVTPART1\";attr fritz last_box_connect $EVTPART1;");
  }
}


Da ist die Lösung via event-on-change-reading natürlich eleganter  ;)

SCMP77

So geht es natürlich auch. Ein eher theoretischer Nachteil dieser Lösung ist der leicht höhere Resourcenverbrauch. Mit event-on-change-reading wird der Event schon recht früh abgefangen, eh der etwas aufwendigere Eventhandling-Mechanismus gestartet wird (Interpretation von regex etc.).
Da defaultmäßig der Event von dem FRITZBOX-Modul nur alle 5 Minuten abgesetzt wird, ist der Unterschied aber nur theoretischer Natur.
Bei häufig vorkommenden Events sollte man das schon im Auge behalten, da Fhem rein synchron arbeitet, alle notifies eines Events müssen erst abgefertigt sein, ehe das nächste Event abgearbeitet werden kann.
Raspberry Pi 3 Model B mit Rasbian, SolvisMax, AVM DECT 200, Sonoff mit Tasmota geflasht

MauiJim

Habe jetzt mal zum Testen die tägliche Zwangstrennung wieder in der FritzBox aktiviert.
Leider zeigt der box_connect immer noch 5 an, obwohl die Daten in fhem aktualisiert wurden.

Kann sich das jemand erklären?

SCMP77

Zitat von: MauiJim am 09 Februar 2018, 09:59:27Kann sich das jemand erklären?

Ich vermute, dass das Userreading so abgefragt werden müsste:

ReadingsVal("fritz","last_box_connect",0)
Raspberry Pi 3 Model B mit Rasbian, SolvisMax, AVM DECT 200, Sonoff mit Tasmota geflasht

MauiJim

es geht um das Reading box_connect des Fritz Moduls, nicht um mein Attribut last_box_connect  ;)

SCMP77

Zitat von: MauiJim am 09 Februar 2018, 09:59:27
Habe jetzt mal zum Testen die tägliche Zwangstrennung wieder in der FritzBox aktiviert.

Ich habe es jetzt bei mir auch angesehen, ja, Du hast recht, der steht auch bei mir immer auf 5, scheint also zumindest mit der aktuellen FB-FW-Version nicht zu gehen.

Ich denke aber, dass man mit Hilfe der TR064-Befehle der Sache Herr werden könnte. So liefert beispielsweise der TR064-Befehl
"get <FritzBoxDevice> tr064Command DeviceInfo:1 deviceinfo GetInfo"
u.a. folgende Information unter dem parameter "NewDeviceLog":
"10.02.18 15:19:56 Internetverbindung wurde erfolgreich hergestellt. IP-Adresse: ......"
Wenn man das regelmäßig mitloggt (z.B. alle 5 Minuten), erkennt man an einem Datums-/Uhrzeit-Wechsel eine reconnection.

Unter den vielen TR064-Befehlen findet man vielleicht aber noch etwas passsenderes.


Raspberry Pi 3 Model B mit Rasbian, SolvisMax, AVM DECT 200, Sonoff mit Tasmota geflasht