FHEM - Hardware > FRITZ!Box

[Erledigt] Fritz offline?

(1/3) > >>

Det20:
Hallo,

ab und an hängt sich mein Starlink auf, dann kommt die Fritz 7590 nicht raus und die WWW-Lampe leuchtet rot. Gibt es ein Reading, über das ich feststellen kann, ob die Fritz gerade online bzw offline ist? Irgendwie muss sie das ja erkennen, sonst wäre die Lampe nicht rot. Ich könnte Starlink dann über eine Steckdose ggf neu starten; scheint leider keine Dishy-API zu geben, scheint mir also der einzige Weg zu sein. Habe schon versucht, über den Raspberry ein DNS Lookup auf verschiedene Seiten wie Google oder Microsoft zu machen, nur leider funktioniert das aus irgendwelchen Gründen manchmal nicht, obwohl alles online ist.

box_ipExtern ist leider leer, liegt vielleicht daran, dass Starlink als "Anschluss an externes Modem oder Router" angebunden ist? Laut Oberfläche bekommt er die IP .170, es gibt aber kein entsprechendes Reading.

Det20:
Habe es jetzt erstmal so gelöst (falls es irgendjemanden interessiert): Auf dem Raspberry läuft ein Apache, der regelmäßig ein PHP Script aufruft:


--- Code: ---  function IsOffline_Intern()
  {
    try
{
      $file = fsockopen ('192.168.0.1', 80, $errno, $errstr, 5); // 5 Sek Timeout
      if (!$file) { $offline = true; }
      else { $offline = false; }
}
    catch (Exception $e) { $offline = true; };

if($Offline==true) { @LogToFileClearSingle("/opt/fhem/online_int.txt","0"); }
        else { @LogToFileClearSingle("/opt/fhem/online_int.txt","1"); };

return $Offline;
  };

  function IsOffline_Extern()
  {
    $Zufall = Rand(0,3);

    putenv('RES_OPTIONS=retrans:1 retry:1 timeout:2 attempts:2');
    if($Zufall==0) { $TestURL = "www.microsoft.de"; }
    else if($Zufall==1) { $TestURL = "www.google.de"; }
    else if($Zufall==2) { $TestURL = "www.oracle.com"; }
    else { $TestURL = "www.akamai.com"; };
 
    try
{
      $WWWTest = gethostbyname($TestURL);
      $Offline = (($WWWTest==$TestURL) or ($WWWTest==""));
}
    catch (Exception $e) { $Offline = true; };
 
if($Offline==true) { @LogToFileClearSingle("/opt/fhem/online_ext.txt","0"); }
        else { @LogToFileClearSingle("/opt/fhem/online_ext.txt","1"); };
return $Offline;
  };

--- Ende Code ---

Es werden zwei Textdateien erzeugt, in denen jeweils 0 (offline) oder 1 (online) steht. Eine Funktion prüft die Verbindung ins Internet (ext), eine zur Fritzbox (int).
In FHEM rufe ich nun alle 5 Minuten eine Funktion auf:


--- Code: ---  my $OnlineExt = read_file("/opt/fhem/online_ext.txt");
  my $OnlineInt = read_file("/opt/fhem/online_int.txt");

--- Ende Code ---

- Wenn Ext 1 und Int 1, dann ist alles ok
- Wenn Ext 0 und Int 0, dann wird der Raspberry neu gestartet
- Wenn Ext 0 und Int 1, dann wird über eine Fritz Dect Steckdose der Starlink Router für 10 Sekunden vom Strom genommen (off-for-timer)

Otto123:
Hi,

über tr064 bekommst Du eigentlich exakte Infos. Probier mal

--- Code: ---get xxxx tr064Command WANIPConnection:1 wanipconn1 GetInfo
--- Ende Code ---

Gruß Otto

Det20:
Da kommt leider


--- Code: ---Service='WANIPConnection:1' Control='wanipconn1'
Action='GetInfo'
{ 'UPnPError' => { 'errorCode' => '401', 'errorDescription' => 'Invalid Action' } }

--- Ende Code ---

Otto123:
Ich hätte gedacht weil sie zweiter Router ist? Doch als PPP verbindung?
Versuch:

--- Code: ---get xxxx tr064Command WANPPPConnection:1 wanpppconn1 GetInfo
--- Ende Code ---

Edit: Achso Starlink hängt hinter der FB?

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln