Autor Thema: [Erledigt] Fritz offline?  (Gelesen 1943 mal)

Offline Det20

  • Sr. Member
  • ****
  • Beiträge: 908
[Erledigt] Fritz offline?
« am: 25 Februar 2022, 13:12:48 »
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.
« Letzte Änderung: 25 Februar 2022, 23:15:30 von Det20 »

Offline Det20

  • Sr. Member
  • ****
  • Beiträge: 908
Antw:Fritz offline?
« Antwort #1 am: 25 Februar 2022, 18:27:44 »
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:

  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;
  };

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:

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

- 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)
« Letzte Änderung: 25 Februar 2022, 18:29:49 von Det20 »

Offline Otto123

  • Tester
  • Hero Member
  • ****
  • Beiträge: 21449
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:Fritz offline?
« Antwort #2 am: 25 Februar 2022, 18:59:07 »
Hi,

über tr064 bekommst Du eigentlich exakte Infos. Probier mal
get xxxx tr064Command WANIPConnection:1 wanipconn1 GetInfo
Gruß Otto
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Offline Det20

  • Sr. Member
  • ****
  • Beiträge: 908
Antw:Fritz offline?
« Antwort #3 am: 25 Februar 2022, 19:02:26 »
Da kommt leider

Service='WANIPConnection:1' Control='wanipconn1'
Action='GetInfo'
{ 'UPnPError' => { 'errorCode' => '401', 'errorDescription' => 'Invalid Action' } }
« Letzte Änderung: 25 Februar 2022, 19:06:22 von Det20 »

Offline Otto123

  • Tester
  • Hero Member
  • ****
  • Beiträge: 21449
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:Fritz offline?
« Antwort #4 am: 25 Februar 2022, 19:08:05 »
Ich hätte gedacht weil sie zweiter Router ist? Doch als PPP verbindung?
Versuch:
get xxxx tr064Command WANPPPConnection:1 wanpppconn1 GetInfo
Edit: Achso Starlink hängt hinter der FB?
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Offline Det20

  • Sr. Member
  • ****
  • Beiträge: 908
Antw:Fritz offline?
« Antwort #5 am: 25 Februar 2022, 20:03:02 »
Genau, fritz nutzt starlink am blauen wan port

Offline Otto123

  • Tester
  • Hero Member
  • ****
  • Beiträge: 21449
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:Fritz offline?
« Antwort #6 am: 25 Februar 2022, 20:47:24 »
Was liefert denn?
get xxxx tr064Command Layer3Forwarding:1 layer3forwarding GetDefaultConnectionService
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Offline Det20

  • Sr. Member
  • ****
  • Beiträge: 908
Antw:Fritz offline?
« Antwort #7 am: 25 Februar 2022, 21:10:27 »
Service='Layer3Forwarding:1' Control='layer3forwarding' Action='GetDefaultConnectionService' ---------------------------------------------------------------------- { 'GetDefaultConnectionServiceResponse' => { 'NewDefaultConnectionService' => '1.WANIPConnection.1' } }

Offline Otto123

  • Tester
  • Hero Member
  • ****
  • Beiträge: 21449
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:Fritz offline?
« Antwort #8 am: 25 Februar 2022, 21:29:05 »
Ok sorry, ich darf nicht interpolieren und davon ausgehen, dass Schnittstellen einer Grundlogik entsprechen.  ::)
Der korrekte tr064 Befehl sollte so aussehen.
WANIPConnection:1 wanipconnection1 GetInfo
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Offline Det20

  • Sr. Member
  • ****
  • Beiträge: 908
Antw:Fritz offline?
« Antwort #9 am: 25 Februar 2022, 22:18:36 »
Wow, geil, da sind die Daten. Aber wie komme ich per Script da dran?

Offline Otto123

  • Tester
  • Hero Member
  • ****
  • Beiträge: 21449
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:Fritz offline?
« Antwort #10 am: 25 Februar 2022, 22:48:43 »
In etwa so für die Kommandozeile:
{my $val=fhem("get FB7590 tr064Command WANPPPConnection:1 wanpppconn1 GetInfo",1);;$val =~ m/'NewConnectionStatus' => (.*),/g;;return $1}Achtung: PPPConnection - ich habe das bei mir so getestet - musst Du in Deinen Befehl ändern
« Letzte Änderung: 25 Februar 2022, 22:53:25 von Otto123 »
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Offline Det20

  • Sr. Member
  • ****
  • Beiträge: 908
Antw:Fritz offline?
« Antwort #11 am: 25 Februar 2022, 23:15:17 »
Super, das hilft mir weiter, vielen vielen Dank!!

Service='WANIPConnection:1'   Control='wanipconnection1'   Action='GetInfo'
----------------------------------------------------------------------
{
  'GetInfoResponse' => {
                         'NewConnectionStatus' => 'Connected',
                         'NewEnable' => '1',
                         'NewConnectionType' => 'IP_Routed',
                         'NewDNSOverrideAllowed' => '1',
                         'NewUptime' => '18976',
                         'NewPossibleConnectionTypes' => 'IP_Routed, IP_Bridged',
                         'NewName' => 'internet',
                         'NewDNSServers' => '192.168.1.1,192.168.1.1',
                         'NewRSIPAvailable' => '0',
                         'NewConnectionTrigger' => 'OnDemand',
                         'NewExternalIPAddress' => '192.168.1.170',
                         'NewRouteProtocolRx' => 'Off',
                         'NewNATEnabled' => '1',
                         'NewMACAddress' => '....',
                         'NewDNSEnabled' => '1',
                         'NewLastConnectionError' => 'ERROR_NONE'
                       }
}


Wäre toll, wenn das auch als Reading verfügbar wäre.
« Letzte Änderung: 25 Februar 2022, 23:58:55 von Det20 »

 

decade-submarginal