Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Ausfallsicherung

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Ausfallsicherung

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      Smartin @zahnheinrich last edited by

      @zahnheinrich said in Ausfallsicherung:

      Systemhardwareausfall

      OK, da geht es um ein jeweiliges 2. Backupsystem. Das möchte ich nicht, dafür sind mir die extrem wenigen Ausfälle dann auch nicht wichtig genug.
      Hier geht´s ja nur um kurze Ausfälle, die mit einem Neustart behoben sind.

      Z Armilar 3 Replies Last reply Reply Quote 0
      • Z
        zahnheinrich @Smartin last edited by

        @smartin
        👍

        1 Reply Last reply Reply Quote 0
        • E
          emil70 last edited by

          Pack den Pi doch an eine Schaltbare Steckdose und nutzt ein script auf einem anderen System,was den Pi anpingt. Ist dieser nicht erreichbar wird die Steckdoese aus und nach ein paar Sekunden wieder eingeschlaltet.

          W Homoran 2 Replies Last reply Reply Quote 0
          • Armilar
            Armilar Most Active Forum Testing @Smartin last edited by Armilar

            @smartin
            Wenn es nicht wichtig ist, dann zeige deiner Regierung die Position der Steckdose 😉

            EDIT: Ich dachte bei Ausfallsicherheit eigentlich an Redundanz und Hochverfügbarkeit.

            1 Reply Last reply Reply Quote 0
            • Armilar
              Armilar Most Active Forum Testing @Smartin last edited by

              @smartin
              Aber mal im ernst, ist dann der ganze ioBroker weg, oder hängt sich nur eine bestimmte Instanz eines Adapters weg? Das könnte man dann auch mit einem Wachdog lösen und dem Durchstarten einer Instanz.

              Alternativ hast du eventuell tatsächlich irgendeinen Steckdosentypen, den du losgelöst vom ioBroker fernsteuern kannst.

              S 1 Reply Last reply Reply Quote 0
              • W
                Wildbill @emil70 last edited by

                @emil70 Das wäre zumindest die sicherste Lösung, sich das, was dann noch läuft abzuschießen und bei der Gelegenheit auch noch das Filesystem oder die ganze SD-Karte zu schrotten.
                Sowas macht man nicht. Weder bei Raspi, noch Rechner und erst Recht nicht Servern einfach den Strom weg. Wenn ein Neustart nötig ist, dann sauber rebooten.
                Wenn kein Zugriff mehr per SSH möglich ist, Monitor und Tastatur ran und schauen, was los ist. Wenn da auch nix mehr kommt, dann gibt es dafür einen Grund! Ein Linux-Rechner (und dazu gehört auch ein Raspi) schmiert nicht einfach so ab. Dann steht was in den Logs, dann geht man das an. Möglicherweise kommt der Fehler ja auch von früheren Aktionen, bei denen man einfach den Strom abgedreht hat. Deshalb gehört vor sowas eine kleine USV, die Stromausfälle abfängt und dann sauber beendet.

                @Smartin : Wenn sich Dein Raspi immer wieder rettungslos aufhängt, dann geh das an. Schau, warum das so ist. Eventuell zu schwaches Netzteil. Sterbende SD-Karte. Falls SSD, die versehentlich an USB3 (soll man beim Raspi 4 nicht!). Irgendwelche Scripte in iobroker die falsch mit Timeouts/Intervallen laufen und sich hochschaukeln. iobroker nicht korrekt installiert (Node + Nodejs).
                Meine Geräte laufen Monate durch und werden nur zu Servicezwecken oder für Updates sauber neu gestartet. Da schmiert nix einfach so an. Geh das an. Setz zur Not alles sauber neu auf und spiel ein Update ein, dann hast Du ein sauberes Grundgerüst.
                Wenn es Meldungen im Log gibt, die auf ein Problem hinweisen, dann schreib es hier im Forum, da wird Dir sicher geholfen.

                Gruss, Jürgen

                1 Reply Last reply Reply Quote 0
                • S
                  Smartin @Armilar last edited by

                  @armilar
                  Ich hatte das in 3 Jahren bisher 3x, sonst läuft meine Installation wirklich geschmeidig.
                  Einmal hatte sich tatsächlich nur der admin.0 Adapter weggehängt, 2x hat es den ganzen Raspi gerissen. Keine Einträge mehr im syslog bis zum Neustart. Beide Male habe ich anhand der Logs und den Vorgängen vorher nicht herausgefunden woran es lag, habe aber auch nachdem es danach wieder rund und ausdauernd lief nicht mehr viel nachgeforscht.
                  Meiner Frau den Stecker zeigen ist übrigens die schlechteste alle Möglichkeiten 😳 Wenn irgendetwas ihrer Meinung nach dann nicht funktioniert, zerrt sie schon am Stecker bzw. drückt sie schon den Schalter 😁
                  Nee nee ... lieber nicht.
                  Automatisiert wäre mir da wohler ...

                  @emil70
                  Der Pi hängt an einer schaltbaren Steckdose (Sonoff). Ich habe als "anderes System" nur den RasPi Zero der als ioBroker Slave läuft. Wie könnte ich denn da ein solches script laufen lassen?
                  Mit einer 2. Instanz vom js-Adapter? Läuft das denn nicht auch über den Master, der ja dann nicht erreichbar ist?

                  @Wildbill
                  Das System läuft stabil, da ist nix zu fixen. Wie schon erwähnt, es soll nur eine schnelle Hilfe sein, falls doch mal was unrund läuft. Und bisher hatte ein Neustart (wenn eben auch einer der harten Sorte) ausgereicht um wieder alles am laufen zu haben.
                  Wenn dadurch mein System mal komplett abkac.en sollte, die SD abraucht oder sonstwie, wird das System mit Backups eben wieder schnell neu aufgesetzt. Sicher, es soll laufen (tut es ja auch stabil), aber wenn, dann hat bei mir zumindest ein kurzer Stromreset noch nie geschadet. Sollte es mal anders kommen .... Cést la vie und schnell behoben. Trotzdem hast du natürlich völlig Recht, ich schaue mir auch jeden Ausfall genau an und sollten dort Probleme auftauchen werde ich die natürlich primär lösen.

                  Armilar E 2 Replies Last reply Reply Quote 0
                  • Armilar
                    Armilar Most Active Forum Testing @Smartin last edited by Armilar

                    @smartin
                    na 3x in 3 Jahren. Ziehen wir mal den admin.0 ab.

                    Dann gibt es alle 1,5 Jahre mal gemecker... Da würde ich auch nicht viel investieren

                    Eine zweite JS-Instanz kann schon Sinn machen. Nutze die auch zum Testen, da beim kompilieren globaler TS-Skripte ein JS-Neustart ja vorprogrammiert ist. Auf einer weiteren Instanz läuft dann ein Watchdog.

                    function createNotification(notificationText) {
                        sendTo("telegram", "send", {text: notificationText});
                    }
                      
                    on({id: /^system\.adapter\..+\.alive$/, change: 'ne', val: false}, function (dp) {
                        var id = dp.id.split('.');
                        id = 'system.adapter.' + id[2] + '.' + id[3];
                        var instance = getObject(id);
                        var ignoreList= ["dwd.0 alive", 
                                         "ical.0 alive", 
                                         "ical.1 alive",
                                         "knmi-weather.0 alive",
                                         "weatherunderground.0 alive",
                                         "pegelalarm.0 alive", 
                                         "openweathermap.0 alive",
                                         "uv-protect.0 alive",
                                         "luftdaten.0 alive",
                                         "odl.0 alive",
                                         "daswetter.0 alive",
                                         "followthesun.0 alive",
                                         "feiertage.0 alive",
                                         "coronavirus-statistics.0 alive"];
                    
                        if (!ignoreList.includes(dp.common.name) && instance.common.enabled) {
                            createNotification(dp.common.name);
                            console.log(dp.common.name);
                        }
                    });
                    

                    Erzählt immer fleißig was an Instanzen Probleme hat.

                    1 Reply Last reply Reply Quote 1
                    • E
                      emil70 @Smartin last edited by emil70

                      @smartin

                      Ich lass meine Sonoff mit der Software überwachen, ob sie online sind. Wenn nicht werden sie neu gestartet.


                      #!/bin/bash

                      check and log if a host is reachable by ping

                      #CONFIGURATION

                      #IP of host
                      GERAET=Buerobeleuchtung
                      WATCH_IP="192.168.178.40"
                      #path to logfile
                      LOGFILE="/var/log/Sonoff/Buerobeleuchtung.log"
                      #duration between pings
                      PAUSE=60
                      #how many failed pings before log
                      TESTS=10

                      #SCRIPT

                      #initialize
                      MISSED=0
                      #touch $LOGFILE

                      #-lt = lesser than = kleiner als
                      #-eq = equal = Gleichheit
                      #-ne = not equal = Ungleichheit
                      #-le = lesser or equal = kleiner oder gleich
                      #-ge = greater or equal = größer oder gleich
                      #-gt = greater than = größer als

                      while true; do
                      if ! ping -c 1 -w 1 $WATCH_IP > /dev/null; then echo $MISSED
                      ((MISSED++))
                      else
                      if [ $MISSED -ge $TESTS ]; then
                      echo date "-" $GERAET "ist wieder online." >> $LOGFILE;
                      fi
                      MISSED=0
                      fi;
                      if [ $MISSED -eq $TESTS ]; then
                      echo date "-" $GERAET "wurde neu gestartet." >> $LOGFILE;
                      echo "reboot" | socat - udp-sendto:192.168.178.40:6676
                      fi
                      sleep $PAUSE;
                      done

                      Müsste man anpassen

                      Das script arbeitet als Schleife

                      socat muss installiert sein

                      Armilar S 2 Replies Last reply Reply Quote 1
                      • Armilar
                        Armilar Most Active Forum Testing @emil70 last edited by

                        @emil70

                        Auch interessant. Ein Watchdog für Tasmotas außerhalb ioBroker.

                        1 Reply Last reply Reply Quote 0
                        • S
                          Smartin @emil70 last edited by

                          @emil70

                          Das ist klasse!
                          Genauso wie übrigens das Überwachungs-Script von @armilar 👍

                          Ich bin allerdings wie gesagt nicht so wirklich ein Linux/Script-Held ...
                          Ich vermute in dieser Zeile würde ich den Aus/An Befehl unterbringen müssen

                          echo "reboot" | socat - udp-sendto:192.168.178.40:6676
                          

                          Richtig?
                          Wie müsste das aussehen, wenn der Befehl

                          http://192.168.1.42/cm?cmnd=Power%20off
                          

                          bzw.

                          http://192.168.1.42/cm?cmnd=Power%20on
                          

                          lautet und dazwischen noch eine Pause von 10 Sekunden eingehalten werden soll?

                          E Armilar 4 Replies Last reply Reply Quote 0
                          • E
                            emil70 @Smartin last edited by emil70

                            @smartin

                            ja das ist der Part

                            Du nutzt Tasmota, so wie ich die Befehle sehe. Das nutze ich leider nicht und kann da nicht sagen, wie da der Befehl über Konsole lautet. http geht so auf jeden Fall nicht

                            Vielleicht geht bei Tasmota ssh

                            ssh IP vom Sonoff -p 22 -l "reboot"
                            
                            Armilar 1 Reply Last reply Reply Quote 0
                            • Armilar
                              Armilar Most Active Forum Testing @Smartin last edited by

                              @smartin

                              https://tasmota.github.io/docs/Commands/#with-web-requests

                              Ist schon korrekt so

                              1 Reply Last reply Reply Quote 0
                              • Homoran
                                Homoran Global Moderator Administrators @emil70 last edited by Homoran

                                @emil70 sagte in Ausfallsicherung:

                                Pack den Pi doch an eine Schaltbare Steckdose und nutzt ein script auf einem anderen System,was den Pi anpingt. Ist dieser nicht erreichbar wird die Steckdoese aus und nach ein paar Sekunden wieder eingeschlaltet.

                                Das wären dann ja doch wieder zwei Geräte.

                                Außerdem müsste man jetzt genau wissen was unter Ausfall zu verstehen ist.
                                Auch ich

                                @armilar sagte in Ausfallsicherung:

                                dachte bei Ausfallsicherheit eigentlich an Redundanz und Hochverfügbarkeit.

                                und wenn es nur um

                                @smartin sagte in Ausfallsicherung:

                                einem Neustart

                                geht wäre

                                @emil70 sagte in Ausfallsicherung:

                                eine Schaltbare Steckdose

                                so ziemlich das Teil was man nicht als erste Wahl nehmen sollte.
                                Die Folgen von "reboot" durch Stecker raus sollten ja inzwischen hinlänglich bekannt sein.

                                EDIT:
                                Wo kommen denn jetzt auf einmal die ganzen Posts her?
                                Da war gerade nix!

                                also vergesst meinen Post, ist ja nix neues

                                1 Reply Last reply Reply Quote 0
                                • E
                                  emil70 @Smartin last edited by emil70

                                  @smartin

                                  Teste mal

                                  curl -s http://192.168.1.42/cm?cmnd=Power%20off
                                  
                                  curl -s http://192.168.1.42/cm?cmnd=Power%20off
                                  

                                  curl muss installiert sein

                                  geht bei mir auf jede Fall mit der von mir verwendetet Software

                                  1 Reply Last reply Reply Quote 0
                                  • Armilar
                                    Armilar Most Active Forum Testing @Smartin last edited by Armilar

                                    @smartin

                                    oder so

                                       var ip = '55'; //letzte Zahl der IP
                                       require("request")((['http://192.168.1.',('' + ip),'/cm?cmnd=cmnd=Power%20off'].join(''))).on("error", function (e) 
                                    
                                    1 Reply Last reply Reply Quote 0
                                    • Armilar
                                      Armilar Most Active Forum Testing @emil70 last edited by Armilar

                                      @Smartin

                                      Übrigens wenn du deinen Rechner kontrolliert rebooten lassen willst, geht das auch:

                                      createState('0_userdata.0.Reboot.t2c_System.LinuxRestart_command', '');
                                      on({id: '0_userdata.0.Reboot.t2c_System.LinuxRestart_command', change: 'any'}, function (obj) {
                                        if (obj.newState.val === true || obj.newState.val === 'true'){
                                            log('Command stop');
                                            setState('0_userdata.0.Reboot.t2c_System.LinuxRestart_command', 'false');
                                            exec ('sudo reboot');
                                        }
                                      });
                                      

                                      In den angelegten DP true zum Zeitpunkt deiner Wahl schreiben... und exec im JS-Adapter zulassen.

                                      Dann startet dein ioBroker durch.

                                      EDIT:
                                      Ich denke an so etwas hat @Homoran bestimmt gedacht, als er die Steckdose als Power on/off sah 😉

                                      Homoran 1 Reply Last reply Reply Quote 0
                                      • Homoran
                                        Homoran Global Moderator Administrators @Armilar last edited by

                                        @armilar aber wenn der iob hängt, geht ja nichts mehr.

                                        Armilar 1 Reply Last reply Reply Quote 0
                                        • Armilar
                                          Armilar Most Active Forum Testing @Homoran last edited by

                                          @homoran
                                          ich nehme immer an, dass mindestens ein Adapter seine Arbeit noch macht. Daher auch die JS-Instanz für PROD und eine für z.B. Wartung. Wenn der iob hängt, dann kann er höchstens versuchen sich mit VPN auf den pi zuzugreifen und ein sudo reboot aus der Console abzusetzen. Na und wenn das auch nicht mehr geht - Dann muss die Steckdose halt ran.

                                          S 1 Reply Last reply Reply Quote 1
                                          • S
                                            Smartin @Armilar last edited by Smartin

                                            Ja, wie schon gesagt, ich bin da auch nicht so zimperlich. Sollte das System tatsächlich doch Schaden nehmen, setze ich es eben neu auf, Backups habe ich ja. Und ca. alle 4 Wochen spiegele ich die SD Karte auf eine andere, sodass ich schnell wieder am Start wäre mit relativ wenig Aufwand.
                                            Ich habe jetzt mal den Ansatz von @emil70 versucht mit dem Shellscript und dem curl Befehl (der auf der Konsole ohne Probleme funktioniert).
                                            Allerdings komme ich da nicht recht weiter.

                                            #!/bin/bash
                                            #CONFIGURATION
                                            #IP of host
                                            GERAET=RasPi1
                                            WATCH_IP="192.168.1.109"
                                            #path to logfile
                                            LOGFILE="/media/fritz.nas/SAMSUNG/RasPI/raspi1.log"
                                            #duration between pings
                                            PAUSE1=120
                                            PAUSE2=10
                                            #how many failed pings before log
                                            TESTS=2
                                            #SCRIPT
                                            #initialize
                                            MISSED=0
                                            # touch $LOGFILE
                                            #-lt = lesser than = kleiner als
                                            #-eq = equal = Gleichheit
                                            #-ne = not equal = Ungleichheit
                                            #-le = lesser or equal = kleiner oder gleich
                                            #-ge = greater or equal = größer oder gleich
                                            #-gt = greater than = größer als
                                            while true; do
                                            if ! ping -c 1 -w 1 $WATCH_IP > /dev/null; then echo $MISSED
                                            ((MISSED++))
                                            else
                                            if [ $MISSED -ge $TESTS ]; then
                                            echo date "-" $GERAET "ist wieder online." >> $LOGFILE;
                                            fi
                                            MISSED=0
                                            fi;
                                            if [ $MISSED -eq $TESTS ]; then
                                            echo date "-" $GERAET "wurde neu gestartet." >> $LOGFILE;
                                            curl -s http://192.168.1.42/cm?cmnd=Power%20off
                                            sleep $PAUSE2;
                                            curl -s http://192.168.1.42/cm?cmnd=Power%20on
                                            fi
                                            sleep $PAUSE1;
                                            done
                                            
                                            

                                            Das Script bleibt aber mit der Meldung

                                            ./restart_raspi1.sh: 33: ./restart_raspi1.sh: MISSED++: not found
                                            

                                            hängen, stört sich also an der Addition der Fehlversuche.
                                            Bei shellCheck wird das Script als völlig korrekt angezeigt.
                                            Was mache ich denn falsch? Oder würde das so überhaupt funktionieren?
                                            Der Logfile wird erstellt, die Datei ist vorhanden (habe den touch Aufruf daher wieder auskommentiert).
                                            Vielleicht könnt ihr nochmal drüber gucken ...

                                            Armilar E 2 Replies 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

                                            948
                                            Online

                                            31.9k
                                            Users

                                            80.2k
                                            Topics

                                            1.3m
                                            Posts

                                            11
                                            32
                                            1766
                                            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