FritzBox DSL monitoren

Begonnen von esk, 11 August 2014, 20:40:58

Vorheriges Thema - Nächstes Thema

esk

Hi,

da ich etwas Probleme mit meinem DSL an der Fritzbox habe, "überwache" ich es FHEM.
(Fhem läuft auf Rasberry Pi)

Voraussetzung: "Statusinformationen über UPnP" in der Fritzbox enablen : "Heimnetz->Netzwerk->Tab: Programme"

* Folgende Definitionen anlegen
# fritzbox Link
define FB_Link dummy
define FileLog_FB_Link FileLog ./log/FB-Link-%Y-%m.log FB_Link
attr FB_Link room Test

define FB_Link_SVG SVG FileLog_FB_Link:Interface:CURRENT
attr FB_Link_SVG alias Fritzbox DSL
attr FB_Link_SVG label "Fritzbox DSL Link: Uplink: $data{currval1} DownLink: $data{currval2} kbit/s"
attr FB_Link_SVG room Test

# fritzbox Traffic
define FB_Traffic dummy
define FileLog_FB_Traffic FileLog ./log/FB-Traffic-%Y-%m.log FB_Traffic

define FB_Traffic_SVG SVG FileLog_FB_Traffic:Interface:CURRENT
attr FB_Traffic_SVG alias Fritzbox Traffic
attr FB_Traffic_SVG label "Fritzbox DSL Traffic: Uplink: $data{currval1} DownLink: $data{currval2} kbit/s"
attr FB_Traffic_SVG room Test

Damit werden 2 dummys + filelog + SVG graphic erzeugt. Auf die beiden dummys FB_Link und FB_Traffic werden mit externen programmen (cronjobs siehe unten) die aktuelle DSL Geschwindigkeit und der DSL Traffic geschrieben. "/opt/fhem/fhem.pl 7072 set FB_Traffic Up: 217 Down: 311"

* Die beiden python scripte aus dem Anhang über einen cronjob starten

# m h  dom mon dow   command
*/5 * * * * python /opt/fhem/fhem_fritz_link.py
*/5 * * * * python /opt/fhem/fhem_fritz_traffic.py

Die beiden python scripte fragen über upnp Informationen von der Fritzbox ab. Die 5 min sind willkürlich gewählt. (je nach bedarf anpassen)

* Die gplot Datei Interface.gplot nach /opt/fhem/www/gplot/ kopieren

Über Anregungen und Verbesserungen freue ich mich und wenn es ok ist, stelle ich es auch gerne ins wiki.
BTW: Nachdem ich das DSL Monitoring in FHEM "installiert" habe ist mein DSL Link stabil  :)

(http://forum.fhem.de/index.php?action=dlattach;topic=26070.0;attach=18055)

Mfg. esk

50er

Hallo,

finde diese Idee echt klasse.

Leider funktioniert es bei mit nicht. Wenn ich in der Konsole "python /opt/fhem/fhem_fritz_link.py" zum starten eingebe,
kommt lediglich "Can't connect to local host: 7072"  :-[. Vielleicht könntest du mir dabei helfen.


esk

Hi,

Auf der cmd-line sollte

/opt/fhem/fhem.pl 7072 "set FB_Link Up: 637 Down: 5819"

erst mal funtionieren, sonst ist der Telnet Port von fhem nicht offen.

Deine fhem config sollte einen telnet zugang enthalten

define telnetPort telnet 7072 global


Man kann dann via
"telnet localhost 7072" oder  "telnet IP_des_FHEM_Servers 7072" mit fhem kommunizieren.

esk

carlos

Bei mir funktionierts leider auch nicht.
Ich habe eine Fritzbox 7490 mit neuester Firmware FRITZ!OS 06.20 :

*** Outgoing SOAP ******************************************************
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
  SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
>
<SOAP-ENV:Body>
<ns1:GetResponse xmlns:ns1="urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1">
</ns1:GetResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
************************************************************************
*** Incoming SOAP ******************************************************
<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Body>
<s:Fault>
<faultcode>s:Client</faultcode>
<faultstring>UPnPError</faultstring>
<detail>
<UPnPError xmlns="urn:schemas-upnp-org:control-1-0">
<errorCode>401</errorCode>
<errorDescription>Invalid Action</errorDescription>
</UPnPError>
</detail>
</s:Fault>
</s:Body>
</s:Envelope>
************************************************************************
Problem to get info from FritzBox via upnp.

Da scheint sich was geändert zu haben!
Gruß
Carlos
FHEM svn auf Intel NUC mit proxmox, 3 Raspberry Pi, signalduino, nanoCUL,  toom Baumarkt Funksteckdosen, einige sonoffs, hue, shelly

Lars

Zunächst Danke für die Skripte, die Überwachung der Internetanbindung stand bei mir auch noch auf der Todo-Liste.
Ich habe die Skripte für DBLog angepasst und übergebe Up und Down als getrennte Readings.

Hier die Defines für die cfg
# fritzbox Link
define LTE_Link dummy
attr LTE_Link room Technik

define LTE_Link_SVG SVG mydblog:bandbreite:HISTORY
attr LTE_Link_SVG label "LTE Link Up: $data{currval1} kbit/s, Down: $data{currval2} kbit/s"
attr LTE_Link_SVG plotfunction LTE_Link
attr LTE_Link_SVG room Technik

# fritzbox Traffic
define LTE_Traffic dummy
attr LTE_Traffic room Technik

define LTE_Traffic_SVG SVG mydblog:bandbreite:HISTORY
attr LTE_Traffic_SVG label "LTE Traffic: Up: $data{currval1} kbit/s, Down: $data{currval2} kbit/s"
attr LTE_Traffic_SVG plotfunction LTE_Traffic
attr LTE_Traffic_SVG room Technik


FHEM Hauptsystem auf ESXi VM | dblog | 3 rPi für Nebensysteme | 2 Beaglebone Black Test- / Integrationssystem

50er

Hallo,

vielen Dank für die schnelle Hilfe. Der Fehler lag tatsächlich in dem nicht definierten Telent Port in FHEM.

Grüße
50er

Falkenstein

Hallo,bis zum letzten Update von "Fhem" lief das wirklich prima bei mir...

Doch jetzt kommt bei den ausführen von den Python Sripten folgender Fehler:

Ausgabe des Befehls /opt/fhem/fhem_fritz_link.py ..

Traceback (most recent call last):
  File "/opt/fhem/fhem_fritz_link.py", line 27, in <module>
    fhem_set("FB_Link", "Up: " + repr(NewLayer1UpstreamMaxkBitRate) + " Down: " + repr(NewLayer1DownstreamMaxkBitRate) )
  File "/opt/fhem/fhem_fritz_link.py", line 8, in fhem_set
    subprocess.call(['/opt/fhem/fhem.pl', '7072', 'set '+ var +' ' + value])
  File "/usr/lib/python2.7/subprocess.py", line 522, in call
    return Popen(*popenargs, **kwargs).wait()
  File "/usr/lib/python2.7/subprocess.py", line 710, in __init__
    errread, errwrite)
  File "/usr/lib/python2.7/subprocess.py", line 1327, in _execute_child
    raise child_exception
OSError: [Errno 13] Permission denied

Ausgabe des Befehls /opt/fhem/fhem_fritz_link.py ..

Traceback (most recent call last):
  File "/opt/fhem/fhem_fritz_link.py", line 27, in <module>
    fhem_set("FB_Link", "Up: " + repr(NewLayer1UpstreamMaxkBitRate) + " Down: " + repr(NewLayer1DownstreamMaxkBitRate) )
  File "/opt/fhem/fhem_fritz_link.py", line 8, in fhem_set
    subprocess.call(['/opt/fhem/fhem.pl', '7072', 'set '+ var +' ' + value])
  File "/usr/lib/python2.7/subprocess.py", line 522, in call
    return Popen(*popenargs, **kwargs).wait()
  File "/usr/lib/python2.7/subprocess.py", line 710, in __init__
    errread, errwrite)
  File "/usr/lib/python2.7/subprocess.py", line 1327, in _execute_child
    raise child_exception
OSError: [Errno 13] Permission denied


Hat jemand einen Tip wo da der Fehler ist? Wie schon geschrieben,es lief vorher ohne Propleme bis ich heute ein Update von Fhem gemacht hatte.

Schon mal vielen dank im voraus,

MfG
Falkes





esk

Die Zugriffsrechte von /opt/fhem/fhem.pl haben sich wohl geändert...

bitte:

subprocess.call(['/opt/fhem/fhem.pl', '7072', 'set '+ var +' ' + value])
nach

subprocess.call(['perl','/opt/fhem/fhem.pl', '7072', 'set '+ var +' ' + value])
ändern

Falkenstein

Super..vielen dank,jetzt geht es wieder  :)

MfG
Falkes

scooty

Hallo esk,

klasse, genau das, was ich gesucht habe.  :)

Bekomme aber leider bei Testaufruf von:
/opt/fhem/fhem_fritz_link.py
und
/opt/fhem/fhem_fritz_traffic.py

jeweils folgenden Fehler:
Problem to get info from FritzBox via upnp.

Beide .py Dateien habe ich über die Dateiberechtigungen als ausführbar gesetzt (755)
Den Fix aus #7 habe ich in die fhem_fritz_link.py eingetragen.
SOAPpy habe ich über
sudo apt-get install python-lxml python-fpconst python-soappy
nachinstalliert.
Ich lasse die Scripte von einem Raspi gegen eine Fritz!Box 6360 (FRITZ!OS 06.04) laufen. "Änderungen der Sicherheitseinstellungen über UPnP gestatten" ist eingeschaltet.
Benötige ich auf der FB noch weitere Module/Komponenten?

Bitte lass mich einfach wissen, was ich tun kann, um dem Problem auf die Spur zu kommen.

Velen Dank und Grüße,
Andreas
Fhem auf Gigabyte Brix
CUL V3 HM / CUL V3 MAX / MaxCube aFW Homematic&MAX / ZWave.me ZME_UZB1 / SDuino 433 / Velux KLF200
Homematic / MAX / Logitech Hub / ZWave / Wifi LED / div. 433 Temperatursensoren / pywws WH1080 / IO Homecontrol

scooty

Weitere Infos mit den in der "fhem_fritz_link.py" auskommentierten Zeilen

server.config.dumpSOAPOut = 1
server.config.dumpSOAPIn = 1


erscheint als Ausgabe:
*** Outgoing SOAP ******************************************************
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
  SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
>
<SOAP-ENV:Body>
<ns1:GetResponse xmlns:ns1="urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1">
</ns1:GetResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
************************************************************************
*** Incoming SOAP ******************************************************
<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Body>
<s:Fault>
<faultcode>s:Client</faultcode>
<faultstring>UPnPError</faultstring>
<detail>
<UPnPError xmlns="urn:schemas-upnp-org:control-1-0">
<errorCode>401</errorCode>
<errorDescription>Invalid Action</errorDescription>
</UPnPError>
</detail>
</s:Fault>
</s:Body>
</s:Envelope>
************************************************************************
Problem to get info from FritzBox via upnp.


Also als Response der Fritz!Box ein "401: Invalid Action"?

Weitere Rechercheergebnisse:
Laut einem ähnlichen Problem (klick mich) verlangt die Fritz!Box für diese Arte der Abfrage nun die Anmeldeinformationen (Fritz!Box User/Passwort).
Wo könnte ich diese in den Python-Scripts hinterlegen?

Andreas
Fhem auf Gigabyte Brix
CUL V3 HM / CUL V3 MAX / MaxCube aFW Homematic&MAX / ZWave.me ZME_UZB1 / SDuino 433 / Velux KLF200
Homematic / MAX / Logitech Hub / ZWave / Wifi LED / div. 433 Temperatursensoren / pywws WH1080 / IO Homecontrol

scooty

#11
Hallo zusammen,

nach weiterer Recherche (klick mich) habe ich nun herausgefunden, dass AVM die UPNP-Implementation geändert hat.

In der "fhem_fritz_link.py" und der "fhem_fritz_traffic.py" muss die SOAP-Proxy-Server Angabe von
proxy='http://fritz.box:49000/upnp/control/WANCommonIFC1'
in
proxy='http://fritz.box:49000/igdupnp/control/WANCommonIFC1'
geändert werden.

Damit läuft's bei mir.  :)

Ich bin so frei und hänge die beiden nun bei mir funktionierenden Dateien an.

Andreas
Fhem auf Gigabyte Brix
CUL V3 HM / CUL V3 MAX / MaxCube aFW Homematic&MAX / ZWave.me ZME_UZB1 / SDuino 433 / Velux KLF200
Homematic / MAX / Logitech Hub / ZWave / Wifi LED / div. 433 Temperatursensoren / pywws WH1080 / IO Homecontrol

esk


LotharRappsilber

Bei mir kommt immer ein Fehler.


Traceback (most recent call last):
  File "W:\ELV\fhem_fritz_link_dblog.py", line 3, in <module>
    from SOAPpy import SOAPProxy
ImportError: No module named 'SOAPpy'


Was muss ich tun?

Gruß
Lothar
FB 7590, FHEM, 1xCCU2, 6xDECT200, 1xDECT201, 1xHMIP-SWO-PL, 1xHMIP-PS, 1xDECT301,  2xHM-LC-Sw1-PL

esk

SOAPpy fehlt:

sudo apt-get install python-soappy

(auf raspberry)