Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Fritzbox regelmäßig neu starten - erbitte Hilfe

    NEWS

    • Neues Video über Aliase, virtuelle Geräte und Kategorien

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    Fritzbox regelmäßig neu starten - erbitte Hilfe

    This topic has been deleted. Only users with topic management privileges can see it.
    • B
      Berlon last edited by

      Hallo,
      ich erbitte von euch Hilfe bei einem Problem.

      Meine FB bekommt nach 5-7 Tagen Probleme dahingehend das die angemeldeten Geräte nicht mehr aktualisiert werden und meine WLAN- Repeater aus dem Mesh fliegen.
      Habe mit AVM darüber schon Mailverkehr gehabt. Haben von mir Log´s sämtlicher Geräte bei Fehlerfall bekommen und anschließend nach dem Neustart. AVM hat sich diese Log´s angeschaut, aber keinen Ursache für den Fehler gefunden.
      Danach habe ich im Internet mal gestöbert um meine Idee eines regelmäßigen Neustarts der FB zu realiesiern. Ich Komme aus der WIndowsecke und kann mit den Linuxmechanissmen nicht viel anfangen.

      Deshalb meine Frage:
      Kann ich meinen Raspberry Pi 4 oder ioBroker irgendwie programmieren das der FB alle 4 Tage zwischen 3 und 4 Uhr von außen den Befehl zum Neustart gesendet wird?
      Wie wäre dann die genaue Vorgehenweise?

      Thomas Braun R 2 Replies Last reply Reply Quote 0
      • Thomas Braun
        Thomas Braun Most Active @Berlon last edited by

        @Berlon

        https://www.andysblog.de/avm-fritzbox-automatisch-neu-starten-lassen

        1 Reply Last reply Reply Quote 0
        • R
          Rand @Berlon last edited by

          @Berlon

          Ich starte per JS folgendes Shell script

          #!/bin/bash
          
          #######################################################
          ### Autor: Nico Hartung <nicohartung1@googlemail.com> #
          #######################################################
          
          # Skript sollte ab FritzOS 6.0 (2013) funktioneren - also auch für die 6.8x und 6.9x
          # Dieses Bash-Skript nutzt das Protokoll TR-064 nicht die WEBCM-Schnittstelle
          
          # http://fritz.box:49000/tr64desc.xml
          # https://wiki.fhem.de/wiki/FRITZBOX#TR-064
          # https://avm.de/service/schnittstellen/
          
          # Thanks to Dragonfly (https://homematic-forum.de/forum/viewtopic.php?t=27994)
          
          
          ###=======###
          # Variablen #
          ###=======###
          
          IPS="FB-IP-Adresse"
          
          FRITZUSER="MeinUser"
          FRITZPW="MeinPassword"
          
          
          ###====###
          # Skript #
          ###====###
          
          location="/upnp/control/deviceconfig"
          uri="urn:dslforum-org:service:DeviceConfig:1"
          action='Reboot'
          
          for IP in ${IPS}; do
                  curl -k -m 5 --anyauth -u "$FRITZUSER:$FRITZPW" http://$IP:49000$location -H 'Content-Type: text/xml; charset="utf-8"' -H                                                                              "SoapAction:$uri#$action" -d "<?xml version='1.0' encoding='utf-8'?><s:Envelope s:encodingStyle='http://schemas.xmlsoap.org/soap/e                                                                             ncoding/' xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'><s:Body><u:$action xmlns:u='$uri'></u:$action></s:Body></s:Envelope>                                                                             " -s > /dev/null
          done
          
          

          Der relevante JS Teil (in einer async function)

          exec('/home/iobroker/reset_fb.sh > /home/iobroker/FBlog', function(err, stdout, stderr) {
                      if(err)
                      { 
                          log('Exec-Fehler: '+ stderr, 'error');
                      }
                      else
                      {
                          log('FB restarted'+ stdout, 'info');
                      }
                  });
          
          B 1 Reply Last reply Reply Quote 0
          • B
            Berlon @Rand last edited by

            @Rand
            Danke schon mal für die Dateien.
            Nur: Wo wird was wie gespeichert? Wo stelle ich ein, das das Script alle 4 Tage zwischn 3 und 4 Uhr startet?
            Die einzutragenen Daten sind mir klar.

            R 1 Reply Last reply Reply Quote 0
            • R
              Rand @Berlon last edited by Rand

              @Berlon

              Naja das Shell Skript kommt nach "/home/iobroker/reset_fb.sh" (mit entsprechenden ausführungsrechten für user iobroker und auf execute gesetzt [chmod +x /home/iobroker/reset_fb.sh]), (oder wo anders hin, nur der Aufruf im Skript muss dann natürlich geändert werden)
              das Javascript legst du irgendwo im Javascript adapter an und dann per cron wie gewüscht triggern.

              Da fehlt natürlich noch ein paar Kleinigkeiten, ich triggere es aber über einen Button in der VIS und nicht via cron, aber so was sollte dann passen (mit anderen Zeiten)

              function test ()
              {
                  console.log("Restarting");
                  exec('/home/iobroker/reset_fb.sh > /home/iobroker/FBlog', function(err, stdout, stderr) {
                          if(err)
                          { 
                              log('Exec-Fehler: '+ stderr, 'error');
                          }
                          else
                          {
                              log('FB restarted'+ stdout, 'info');
                          }
                      });
              }
              
                schedule("* * * * *", function () {
                  test();
              });
              
              B 1 Reply Last reply Reply Quote 0
              • B
                Berlon @Rand last edited by

                @Rand
                bin jetzt erst dazu gekommen das ganze umzusetzen.

                Problem:
                Das Script läuft, FB wird resettet.
                Habe über das Uhrsymbol eine Zeit eingestellt. Alle 3 Tage um 3:00.
                das Script wurde vom Editor folgendermaßen geändert.

                '{"time":{"start":"03:00","end":"04:00","mode":"hours","interval":1},"valid":{"from":"06.11.2020"},"period":{"days":3}}'
                function test ()
                {
                    console.log("Restarting");
                    exec('/home/iobroker/reset_fb.sh > /home/iobroker/FBlog', function(err, stdout, stderr) {
                            if(err)
                            { 
                                log('Exec-Fehler: '+ stderr, 'error');
                            }
                            else
                            {
                                log('FB restarted'+ stdout, 'info');
                            }
                        });
                }
                
                  schedule("* * * * *", function () {
                    test();
                });
                

                Wenn ich nun das Script laufen lasse wird die FB immer neu gestartet und im Log erscheint folgender Fehler:

                javascript.0	2020-11-08 06:48:05.322	error	(2029) script.js.meine_Scripte.FB-Reset_starten: Exec-Fehler:
                javascript.0	2020-11-08 06:48:00.007	info	(2029) script.js.meine_Scripte.FB-Reset_starten: Restarting
                

                Wo liegt der Fehler? Wie gesagt, ich komme aus der Windowsecke und habe mit Linux "noch" nicht viel Erfahrung.

                Gruß
                Bernd

                D R 2 Replies Last reply Reply Quote 0
                • D
                  Dragon @Berlon last edited by

                  @Berlon Ich würde um es einfach zu halten einfach den tr064 Adapter installieren und per Zeitsteuerung im Blockly einfach den Datenpunkt reboot nutzen lassen und gut ists. Ist das einfachste...

                  B 1 Reply Last reply Reply Quote 1
                  • B
                    Berlon @Dragon last edited by Berlon

                    @David-Froebus
                    habe mal das Script zusammen geklickt. Würde das funktionieren?

                    <block xmlns="https://developers.google.com/blockly/xml" type="schedule" id="ip^_?xFbOW;Z1}!(Pug7" x="38" y="38">
                      <field name="SCHEDULE">{"time":{"start":"03:00","end":"","mode":"hours","interval":0},"period":{"days":3},"valid":{"from":"08.11.2020"}}</field>
                      <statement name="STATEMENT">
                        <block type="control" id="0G%-]IJ#r~caPJ~0^P~B">
                          <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                          <field name="OID">tr-064.0.states.reboot</field>
                          <field name="WITH_DELAY">FALSE</field>
                          <value name="VALUE">
                            <block type="logic_boolean" id="AR+JzgrSo,{WDF],[hLe">
                              <field name="BOOL">TRUE</field>
                            </block>
                          </value>
                        </block>
                      </statement>
                    </block>
                    

                    Wegen der langen Zeitspanne kann ich es nicht überprüfen, hoffe nun auf die Meister des Scriptens.
                    Gruß
                    Bernd

                    D 1 Reply Last reply Reply Quote 0
                    • D
                      Dragon @Berlon last edited by

                      @Berlon Da warst du nah dran. Aber für den ersten Versuch ganz gut. Du musst keine Zeitspannen nehmen, sondern einen bestimmten Zeitpunkt. Und bei dem "Button" Status würde ich umschalten. Dann gehst du auf Nummer sicher...
                      Versuch es so:

                      <block xmlns="https://developers.google.com/blockly/xml" type="schedule" id="ip^_?xFbOW;Z1}!(Pug7" x="38" y="38">
                        <field name="SCHEDULE">{"time":{"start":"03:00","exactTime":true},"valid":{"from":"08.11.2020"},"period":{"days":3}}</field>
                        <statement name="STATEMENT">
                          <block type="toggle" id="|Zny_ua0bv/ZQd(muxpV">
                            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                            <field name="OID">tr-064.0.states.reboot</field>
                            <field name="WITH_DELAY">FALSE</field>
                          </block>
                        </statement>
                      </block>
                      
                      B 1 Reply Last reply Reply Quote 0
                      • B
                        Berlon @Dragon last edited by

                        @David-Froebus
                        danke schon mal. "Zu einem bestimmeten Zeitpunkt" sehe ich ein. ist eleganter.
                        Aber was bewirkt Umschalten gegenüber steure??

                        Gruß
                        Bernd

                        D 1 Reply Last reply Reply Quote 0
                        • D
                          Dragon @Berlon last edited by

                          @Berlon Der State reboot ist ein Button. Da habe ich mal iwo gelesen nutzt man einfach umschalten. Habe ich nicht hinterfragt und hat bei mir auch super geklappt...

                          1 Reply Last reply Reply Quote 0
                          • R
                            Rand @Berlon last edited by

                            @Berlon

                            Sorry war etwas busy...

                            Ich sehe Du hast umgebaut und damit ggf nicht mehr relevant, aber zur Vollständigkeit -
                            ich nehme an das Dein Script mit einem Exit Code != 0 endet (aber ohne Fehlermeldung) auf stderr; daher gibt es einen Fehler ohne Mitteilung.

                            Sollte sich auf shell ebene einfdach prüfen lassen mit einem "echo $?" nachdem das script aufgerufen wurde.

                            Oder heisst "immer neu gestartet" bei jedem Aufruf? - Nicht ganz klar was das Problem ist:)

                            B 1 Reply Last reply Reply Quote 0
                            • B
                              Berlon @Rand last edited by

                              @Rand
                              Das Problem bestand darin, das die FB bei laufendem Script alle 3-4 Minuten neu gestartet ist.
                              Da ich die FB so eingestellt habe, das bei einem Neustart Logs per eMail zugestellt bekomme habe ich die halt alle 3-4 Minuten erhalten.
                              Wo das Problem liegt weiß ich nicht.
                              Die Jetzige Funktion geht auch, nur mit dem Unterschied das die Logs nicht mehr zugestellt werden.
                              Vieleicht kann man da nochmal drüber schauen, das mit den zugestellten Logs ist schon gut.
                              Gruß
                              Bernd

                              R 1 Reply Last reply Reply Quote 0
                              • R
                                Rand @Berlon last edited by

                                @Berlon

                                Naja Du hast oben einen alle 3 Tage triggger und unter ein dauernd trigger würde ich sagen, aber schedules sind mir auch noch ein wenig suspekt... die agieren bei mir auch öfter mal schwer nachvollziehbar;)

                                Sieht aber für mich doppelt aus - ersetze mal den unteren aufruf einfach mit test(), also

                                
                                
                                '{"time":{"start":"03:00","end":"04:00","mode":"hours","interval":1},"valid":{"from":"06.11.2020"},"period":{"days":3}}'
                                
                                function test ()
                                
                                {
                                
                                  console.log("Restarting");
                                
                                  exec('/home/iobroker/reset_fb.sh > /home/iobroker/FBlog', function(err, stdout, stderr) {
                                
                                          if(err)
                                
                                          { 
                                
                                              log('Exec-Fehler: '+ stderr, 'error');
                                
                                          }
                                
                                          else
                                
                                          {
                                
                                              log('FB restarted'+ stdout, 'info');
                                
                                          }
                                
                                      });
                                
                                }
                                
                                test();
                                
                                B 1 Reply Last reply Reply Quote 0
                                • B
                                  Berlon @Rand last edited by Berlon

                                  Hallo Rand,
                                  bin zur Zeit stark beruflich gebunden und komme deshalb momentan zu selten an den Broker. Habe dein Script mal eingetragen bekomme aber den Fehler

                                  08:26:28.281	error	javascript.0 (2029) script.js.meine_Scripte.FB-Reset_starten compile failed: at script.js.meine_Scripte.FB-Reset_starten:1
                                  

                                  beim ausfüheren des Skriptes.

                                  Die Datei reset_fb.sh ist vorhanden und ausgefüllt.
                                  Für die Datei ist sudo chmod +x /home/iobroker/reset_fb.sh ausgeführt

                                  In der Datei FBlog steht nix drin.

                                  Kannst du mir da weiterhelfen da ich mit der Fehlermeldung nix anfangen kann.

                                  Gruß
                                  Bernd

                                  R 1 Reply Last reply Reply Quote 0
                                  • R
                                    Rand @Berlon last edited by

                                    @Berlon
                                    Hi,

                                    hast Du mal die Leerzeile weggemacht? (und die anderen unnötigen auch damit es besser lesbar ist)
                                    Der Codeblock war nur Copy&Paste und nicht getestet...

                                    B 1 Reply Last reply Reply Quote 0
                                    • B
                                      Berlon @Rand last edited by

                                      @Rand ,
                                      so langsam verzweifele ich am Broker......

                                      Script sieht nun so aus:

                                      function test ()
                                      {
                                        console.log("Restarting");
                                        exec('/home/iobroker/reset_fb.sh > /home/iobroker/FBlog', function(err, stdout, stderr) {
                                                if(err)
                                                { 
                                                    log('Exec-Fehler: '+ stderr, 'error');
                                                }
                                                else
                                                {
                                                    log('FB restarted'+ stdout, 'info');
                                                }
                                            });
                                      }
                                      test();
                                      

                                      Fehlermeldung kommt:

                                      javascript.0	2020-11-21 08:25:30.514	error	(2029) script.js.meine_Scripte.FB-Reset_starten: Exec-Fehler:
                                      javascript.0	2020-11-21 08:25:25.465	info	(2029) script.js.meine_Scripte.FB-Reset_starten: registered 0 subscriptions and 0 schedules
                                      javascript.0	2020-11-21 08:25:25.427	info	(2029) script.js.meine_Scripte.FB-Reset_starten: Restarting
                                      javascript.0	2020-11-21 08:25:25.413	info	(2029) Start javascript script.js.meine_Scripte.FB-Reset_starten
                                      

                                      Ich sehe den Fehler nicht da vom Broker keine genaueren Angaben.

                                      Hiiilfe!!!!

                                      Gruß
                                      Bernd

                                      R 1 Reply Last reply Reply Quote 0
                                      • R
                                        Rand @Berlon last edited by

                                        @Berlon said in Fritzbox regelmäßig neu starten - erbitte Hilfe:

                                        function test ()

                                        Naja das sieht doch so aus als würde er versuchen das Skript auszuführen (Log Meldung Restarting), aber dann auf Shell Ebene einen unbekannten Fehler finden.

                                        Läuft das Shell script denn wenn du es als User iobroker ausführst?

                                        B 1 Reply Last reply Reply Quote 0
                                        • B
                                          Berlon @Rand last edited by Berlon

                                          @Rand
                                          hmmm.. wie Eingangs schongeschrieben bin ich linuxmäßig ein DAU.
                                          Wenn ich mit Putty auf den Pi gehe habe ich als user:
                                          pi@raspberry.
                                          Wie kann ich da nun das Script als iobroker ausführen.
                                          Und wenn das nicht geht, wie kann ich dem iobroker die Rechte für das Script geben?

                                          Gruß
                                          Bernd

                                          R 1 Reply Last reply Reply Quote 0
                                          • R
                                            Rand @Berlon last edited by

                                            @Berlon

                                            Wenn du das Passwort vom iobroker User gesetzt hast dann mit su - iobroker

                                            Alternativ su - um root zu werden, dann su - iobroker
                                            Falls Du das root pw nicht hast ggf auch sudo su - wenn bei Dir sudo eingerichtet ist.

                                            Dann als iobroker /home/iobroker/reset_fb.sh ausführen.

                                            Wenn es einen Ausführungsfehler gibt bitte ein ls -l /home/iobroker/reset_fb.sh herzeigen
                                            Wenn es einen anderen Fehler ist dann entsprechend den zeigen

                                            Thomas Braun 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            702
                                            Online

                                            32.1k
                                            Users

                                            80.6k
                                            Topics

                                            1.3m
                                            Posts

                                            fritzbox 7490
                                            4
                                            25
                                            4317
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo