Fritzbox Internet Traffic auslesen um es zu loggen

Begonnen von Cruiser79, 16 Dezember 2015, 09:19:14

Vorheriges Thema - Nächstes Thema

Cruiser79

Kann mir nochmal jemand erklären, was denn verstecke Readings sind und wie man an die ran kommt?

Gruß,
Tim
FHEM auf Raspberry Pi
HM-CFG-LAN mit HM-TC-IT-WM-W-EU, HM-CC-RT-DN, HM-WDS10-TH-O, HM-LC-SW1-FM, HM-LC-Bl1-FM
Signalduino mit Elro AB440, LOGILINK WS0002, IT CMR-1000

dev0

Es sind Readings mit einem Punkt am Anfang des Names. Sie werden dadurch nicht in der FHEMWEB Detailansicht unter Readings angezeigt. Zugriff erfolgt wie bei normalen Readings auch.

Wernieman

Gibt es eigentlich eine Möglichkeit, sich solche Reading trotzdem anzeigen zu lasen?

Oder ist zu dem Wissen, das es sie gibt, Insiderknowhof erforderlich?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

dev0


Cruiser79

Zitat von: dev0 am 18 Dezember 2015, 09:18:53
list <device> zeigt sie an.
Wenn ich bei mir ein list FritzBox mache, bekomme ich zwar die "normalen" Readings angezeigt, von den Punkt-Readings fehlen aber alle.


Internals:
   APICHECKED 1
   HOST       fritz.box
   INTERVAL   300
   LUAQUERY   1
   M3U_LOCAL  ./www/images/FritzBox.m3u
   M3U_URL    undefined
   NAME       FritzBox
   NR         235
   PERL       Modul functionality limited because of missing perl modules: Net::Telnet
   REMOTE     1
   SECPORT    49443
   STATE      WLAN: on gWLAN: off
   TR064      1
   TYPE       FRITZBOX
   WEBCM      0
   Readings:
     2015-12-18 10:04:46   TotalBytesReceived 2048743464
     2015-12-18 10:04:46   TotalBytesSend  1040900
     2015-12-18 10:04:46   alarm1          Wecker 1
     2015-12-18 10:04:46   alarm1_state    off
     2015-12-18 10:04:46   alarm1_target   FON 1
     2015-12-18 10:04:46   alarm1_time     00:00
     2015-12-18 10:04:46   alarm1_wdays    daily
     2015-12-18 10:04:46   alarm2          Wecker 2
     2015-12-18 10:04:46   alarm2_state    off
     2015-12-18 10:04:46   alarm2_target   FON 1
     2015-12-18 10:04:46   alarm2_time     00:00
     2015-12-18 10:04:46   alarm2_wdays    daily
     2015-12-18 10:04:46   alarm3          Wecker 3
     2015-12-18 10:04:46   alarm3_state    off
     2015-12-18 10:04:46   alarm3_target   FON 1
     2015-12-18 10:04:46   alarm3_time     00:00
     2015-12-18 10:04:46   alarm3_wdays    daily
     2015-12-18 10:04:46   box_connect     5
     2015-12-18 10:04:46   box_cpuTemp     54
     2015-12-18 10:04:46   box_dect        off
     2015-12-18 10:04:46   box_fwVersion   113.06.50
     2015-12-18 10:04:46   box_guestWlan   off
     2015-12-18 10:04:46   box_guestWlanRemain 0
     2015-12-18 10:04:46   box_ipExtern    xxxx
     2015-12-18 10:04:41   box_model       FRITZ!Box 7490 [avm]
     2015-12-18 10:04:46   box_moh         default
     2015-12-18 10:04:46   box_powerRate   38
     2015-12-18 10:04:46   box_rateDown    3.638
     2015-12-18 10:04:46   box_rateUp      0.452
     2015-12-18 10:04:46   box_stdDialPort fon1
     2015-12-18 10:04:46   box_tr064       on
     2015-12-18 10:04:46   box_tr069       on
     2015-12-18 10:04:46   box_wlan_2.4GHz on
     2015-12-18 10:04:46   box_wlan_5GHz   on
     2015-12-18 10:04:46   fon1            Telefon
     2015-12-18 10:04:46   fon1_intern     1
     2015-12-18 10:04:46   fon1_out        SIP0
     2015-12-18 10:04:46   fon2            Telefon
     2015-12-18 10:04:46   fon2_intern     2
     2015-12-18 10:04:46   fon2_out        SIP0
     2015-12-18 10:04:46   lastReadout     156 values captured in 1.47 s
     2015-12-18 10:04:46   mac_xxxxx
     2015-12-18 10:04:46   state           WLAN: on gWLAN: off
     2015-12-18 10:04:46   tam1            Anrufbeantworter
     2015-12-18 10:04:46   tam1_newMsg     0
     2015-12-18 10:04:46   tam1_oldMsg     0
     2015-12-18 10:04:46   tam1_state      on
     2015-12-18 10:04:46   user01          (guest)
     2015-12-18 10:04:46   user01_thisMonthTime 3:50
     2015-12-18 10:04:46   user01_todaySeconds 0
     2015-12-18 10:04:46   user01_todayTime 0:00
     2015-12-18 10:04:46   user01_type     Guest
   Fhem:
     LOCAL      0
     definedHost undefined
     is_double_wlan 1
     lastHour   0
     modulVersion $Date: 2015-12-15 21:09:40 +0100 (Tue, 15 Dec 2015) $
     radioCount 40
     sid        x
     sidTime    x
     Landevice:
       [..]
     Radio:
       0
       1
       10
       11
       12
       13
       14
       15
       16
       17
       18
       19
       2
       20
       21
       22
       23
       24
       25
       26
       27
       28
       29
       3
       30
       31
       32
       33
       34
       35
       36
       37
       38
       39
       4
       5
       6
       7
       8
       9
   Helper:
     TimerCmd   FritzBox.Cmd
     TimerReadout FritzBox.Readout
Attributes:
   allowTR064Command 1
   boxUser    xxx
   room       xxx
   userReadings TotalBytesReceived {my $resp=fhem( "get FritzBox tr064Command WANCommonInterfaceConfig:1 wancommonifconfig1 GetTotalBytesReceived");;$resp =~/\'NewTotalBytesReceived\' => '(.*)'/;;return $1;;}, TotalBytesSend {my $resp=fhem( "get FritzBox tr064Command WANCommonInterfaceConfig:1 wancommonifconfig1 GetTotalPacketsSent");;$resp =~/\'NewTotalPacketsSent\' => '(.*)'/;;return $1;;}
   verbose    2
FHEM auf Raspberry Pi
HM-CFG-LAN mit HM-TC-IT-WM-W-EU, HM-CC-RT-DN, HM-WDS10-TH-O, HM-LC-SW1-FM, HM-LC-Bl1-FM
Signalduino mit Elro AB440, LOGILINK WS0002, IT CMR-1000

dev0

#20
Musste jetzt auch kurz suchen, aber es muss folgendes noch gesetzt sein:
attr global showInternalValues 1

EDIT: dann werden sie aber auch bei den Readings in der GUI angezeigt.

wmr72

Zitat von: Cruiser79 am 16 Dezember 2015, 22:20:29
Kann ich der sub fhem denn das loggen austreiben? Wahrscheinlich dann nur mit einem verbose 2 auf global!?

Ja, kann man, indem man als zweiten Parameter eine 1 übergibt, also
fhem("get <device> <irgendwas>", 1)


Das steht recht versteckt in der commandref ganz unten: http://fhem.de/commandref.html#perl

Wolfgang

Pseudex

Als UserReading kann man die versteckten Werte auch raus holen!

box_TodayBytesReceived {ReadingsNum("FritzBox", ".box_TodayBytesReceivedLow",0)
+ReadingsNum("FritzBox", ".box_TodayBytesReceivedHigh",0)*2^32;}
,box_TodayBytesSent {ReadingsNum("FritzBox", ".box_TodayBytesSentLow",0)
+ReadingsNum("FritzBox", ".box_TodayBytesSentHigh",0)*2^32;}

Shojo

Da ich aktuell auch versuche anständige Daily Traffic Stats aus der Fritzbox zu holen, habe ich den alten Thread hier gefunden.

Allerdings ist mir aufgefallen das sich bei mir .box_TodayBytesReceivedLow, .box_TodayBytesReceivedHigh, .box_TodayBytesSentLow und .box_TodayBytesSentLow bei einen neuen DHCP Lease von meinen Provider zurücksetzten.

Daher habe ich versucht an den Daten der Fitzbox über http://fritz.box/internet/inetstat_counter.lua zu kommen, leider scheitere ich hier.
Das hatte ich gefunden https://www.symcon.de/forum/threads/20405-Funktionierende-Scripts-für-FRITZ%21OS-05-50-7390?s=3f74fd8309104f2c3e87a9861fcd904d&p=203506#post203506 ,
ich bin mir nicht sicher wie ich das unter FHEM bewerkstelligen soll.

Hat das schon mal einer von euch versucht oder ein Tipp für mich?

Gruß
Dennis

FHEM auf: Shuttle PC (x64) (Docker)
Bridge: SignalESP 433mHz, ConBee (deCONZ in Docker)
Rest: ESP8266, SONOFF, Sonos, Echo Dot, Xiaomi Vacuum (root), ESP RGBWW Wifi Led Controller, Node-RED, LEDMatrix, Pixel It

Shojo

So ich bin etwas weitergekommen.....

Wenn man ein Post auf http://fritz.box/internet/inetstat_counter.lua?sid=<DeineSessionID> absetzt bekommen man die Stats als HTML ausgeliefert.
Jetzt stellt sich aber noch die Herausforderung sich eine aktuelle gültige SessionId zu besorgen, und den Spaß dann im FHEM zu verarbeiten. 
FHEM auf: Shuttle PC (x64) (Docker)
Bridge: SignalESP 433mHz, ConBee (deCONZ in Docker)
Rest: ESP8266, SONOFF, Sonos, Echo Dot, Xiaomi Vacuum (root), ESP RGBWW Wifi Led Controller, Node-RED, LEDMatrix, Pixel It

Otto123

Hallo Dennis,

hast Du mal geschaut ob die Werte über TR064 abrufbar sind?

Im Wiki gibt es dazu auch etwas -> https://wiki.fhem.de/wiki/FRITZBOX
Da steht auch was von getluaquery  ;)

Aber ich habe keine praktischen Tipps.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Shojo

Hiho Otto,
Zitat von: Otto123 am 26 Juni 2018, 11:46:50
hast Du mal geschaut ob die Werte über TR064 abrufbar sind?
ja habe ich, aber das gibt leider die Schnittstelle nicht her. 

Zitat von: Otto123 am 26 Juni 2018, 11:46:50
Im Wiki gibt es dazu auch etwas -> https://wiki.fhem.de/wiki/FRITZBOX
Da steht auch was von getluaquery  ;)
Das hatte ich auch gesehen aber meine Versuche damit was zu erreichen sind leider erfolglos geblieben.

Danke dir für deine Anteilname :) 

Gruß
Dennis
FHEM auf: Shuttle PC (x64) (Docker)
Bridge: SignalESP 433mHz, ConBee (deCONZ in Docker)
Rest: ESP8266, SONOFF, Sonos, Echo Dot, Xiaomi Vacuum (root), ESP RGBWW Wifi Led Controller, Node-RED, LEDMatrix, Pixel It

Cruiser79

Zitat von: Shojo am 26 Juni 2018, 09:57:14
So ich bin etwas weitergekommen.....

Wenn man ein Post auf http://fritz.box/internet/inetstat_counter.lua?sid=<DeineSessionID> absetzt bekommen man die Stats als HTML ausgeliefert.
Jetzt stellt sich aber noch die Herausforderung sich eine aktuelle gültige SessionId zu besorgen, und den Spaß dann im FHEM zu verarbeiten.

Ich hätte da noch httpmod als Idee. Schaue dir mal https://wiki.fhem.de/wiki/HTTPMOD#Advanced_configuration_to_create_a_valid_session_id_that_might_be_necessary an, nach dem Muster solltest du den Login und das nachfolgende Auslesen auf der Fritzbox auch hinbekommen.

Gruß,
Tim
FHEM auf Raspberry Pi
HM-CFG-LAN mit HM-TC-IT-WM-W-EU, HM-CC-RT-DN, HM-WDS10-TH-O, HM-LC-SW1-FM, HM-LC-Bl1-FM
Signalduino mit Elro AB440, LOGILINK WS0002, IT CMR-1000

Shojo

Zitat von: Cruiser79 am 26 Juni 2018, 12:24:22
Ich hätte da noch httpmod als Idee.
Ja das sieht schon sehr mächtig aus, bloß ich werde nicht schlau draus wie ich den Login realisieren soll.

Hatte zwar den PHP Code gefunden, wüsste ihn aber nicht im FHEM mit httpmod umzusetzen...

<?
$fritzbox_ip = '192.168.178.1';
$password    = 'xxxxx';

$ch = curl_init('http://192.168.178.1/login_sid.lua');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$login = curl_exec($ch);
$session_status_simplexml = simplexml_load_string($login);
if ($session_status_simplexml->SID != '0000000000000000')
{
   $SID = $session_status_simplexml->SID;
}
else
{
   $challenge = $session_status_simplexml->Challenge;
   $response = $challenge . '-' . md5(mb_convert_encoding($challenge . '-' . $password, "UCS-2LE", "UTF-8"));

   curl_setopt($ch, CURLOPT_POSTFIELDS, "response={$response}&page=/login_sid.lua");
   $sendlogin = curl_exec($ch);
   $session_status_simplexml = simplexml_load_string($sendlogin);

   if ($session_status_simplexml->SID != '0000000000000000')
   {
   $SID = $session_status_simplexml->SID;
   }
   else
   {
      echo "Fehler: Login fehlgeschlagen";
      return;
    }
}

?>
FHEM auf: Shuttle PC (x64) (Docker)
Bridge: SignalESP 433mHz, ConBee (deCONZ in Docker)
Rest: ESP8266, SONOFF, Sonos, Echo Dot, Xiaomi Vacuum (root), ESP RGBWW Wifi Led Controller, Node-RED, LEDMatrix, Pixel It

Benjamin50