Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Script für shutdown nach Zeit x bei Stromausfall mit Rücksetzung bei Netzwiderkehr

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.8k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.3k

Script für shutdown nach Zeit x bei Stromausfall mit Rücksetzung bei Netzwiderkehr

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
6 Beiträge 1 Kommentatoren 1.0k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • smartboartS Offline
    smartboartS Offline
    smartboart
    schrieb am zuletzt editiert von
    #1

    Hallo Leute, ich habe ein Script geschrieben für automatischen shutdown bei Stromausfall.

    Netzüberwachung über Relais und gpio.

    Shutdown der Hosts für Raspi und Tinker über sendToHost.

    Log Eintrag und send to telegram

    Script setzt natürlich voraus, das die Netzwerverbindung und die Hosts Batterie oder USV gepuffert sind..

    Das send to Host funktioniert nicht…

    Habe das mit einem State gelöst auf welches mit der javascript instanz der entsprechenden Hosts reagiert werden kann.

    Ist bestimmt auch für den einen oder anderen Interessant...

    // Linux shutdown für Tinker und Raspy bei Netzausfall
    
    var forceCreation   = true;
    
    var pfad = 'Netzausfall.';
    
    var datenpunkte = {
       'shutdown_stromausfall':        {"init": false, "common": {type: 'boolean',  name: 'Einleitung shutdown bei Stromausfall',unit: ''}},
       };       
    
    //=========================================================================
    // Trigger 
    //=========================================================================
    
    on({id: 'rpi2.1.gpio.22.state', change: "ne"}, function (obj) {
      var Netz = getState('rpi2.1.gpio.22.state').val;
      if (Netz === false ) {
          log('Phasenausfall L1 oder Stromausfall allgemein');
          sendTo("telegram.0", "send", {
             text: ('Phasenausfall L1 oder Stromausfall allgemein')
          });
          setStateDelayed ('javascript.1.Netzausfall.shutdown_stromausfall', true ,10*1000);
    	   }else{
    	    if (Netz === true ) {
    			clearStateDelayed ('javascript.1.Netzausfall.shutdown_stromausfall');
    			log ('Timer für shutdown bei Stromausfall wegen Netzwiderkehr zurück gesetzt');
                 sendTo("telegram.0", "send", {
                 text: ('Timer für shutdown bei Stromausfall wegen Netzwiderkehr zurück gesetzt')
    			  });
    		}
    	} 
     });
    
    	on({id: 'javascript.1.Netzausfall.shutdown_stromausfall', change: "ne"}, function (obj) {  
    	var Stromausfall = getState('javascript.1.Netzausfall.shutdown_stromausfall').val;
           if (Stromausfall === true) {
           log('Iobroker Raspi wird wegen Stromausfall herunter gefahren');       
           sendTo("telegram.0", "send", {
             text: ('Iobroker Raspi wird wegen Stromausfall herunter gefahren')
          });
    	  sendToHost('tinkerboard', cmdExec, 'sudo shutdown -h 0', function (res) {
    	});
          exec ('sudo shutdown -h 0'); 
        }
    });
    
    // -----------------------------------------------------------------------------------------------------------------------------------------
    // Erzeuge Datenpunkte
    // -----------------------------------------------------------------------------------------------------------------------------------------
    function createDp() 
    {
    	var name;
    	var init;
    	var common;
    
    	for (var dp in datenpunkte) 
    	{
    		name = pfad + dp;
    		init = datenpunkte[dp].init;
    		common = datenpunkte[dp].common;
    		createState(name, init , forceCreation, common);
    	}
    }
    
    // -----------------------------------------------
    // Start Skript:
    // Initialisierung
    // -----------------------------------------------
    createDp();
    
    
    1 Antwort Letzte Antwort
    0
    • smartboartS Offline
      smartboartS Offline
      smartboart
      schrieb am zuletzt editiert von
      #2

      Da unterumständen 1 Signal nicht durch kam und nur der Host runter fuhr, welcher das Script verarbeitete, habe ich es nochmal umgebaut.

      So funktioniert es jetzt….Wichtig ist das der Timer für den Host auf welchem das Hauptscript läuft später den Trigger für die exec Funktion auf true setzt.

      Es ist nun 1 Script für den Master und 1 Script für den Slave Host nötig..

      Wer nur einen Host hat, benötigt nur das 1. Script...

      1.Script für Master bei Multihost oder single Host

      // Linux shutdown für Tinker und Raspy bei Netzausfall
      //Script für den Master bei Multihost. Bei Single System ist nicht mehr nötig.
      
      createState('javascript.0.Netzausfall.shutdown.stromausfallRaspi', {def: 'false', type: 'boolean', name: 'Einleitung shutdown Raspi'});
      //wer kein Multihost System laufen hat benötigt den oberen nicht
      createState('javascript.0.Netzausfall.shutdown.stromausfallTinker', {def: 'false', type: 'boolean', name: 'Einleitung shutdown Tinker'});
      
      on({id: 'rpi2.1.gpio.22.state', change: "ne"}, function (obj) {
        var Netz = getState('rpi2.1.gpio.22.state').val;
        if (Netz === false ) {
            log('Phasenausfall L1 ');
            sendTo("telegram.0", "send", {
               text: ('Phasenausfall L1')
            });
            setStateDelayed ('javascript.0.Netzausfall.shutdown.stromausfallRaspi', true ,10*1000);//Autonomiezeit entsprechend einstellen
            //bei Multihost Trigger für Hilfsscript oben , Timer mus < sein als der untere, damit das Signal sauber durch geht
            //wer kein Multihost System laufen hat benötigt diesen nicht
            setStateDelayed ('javascript.0.Netzausfall.shutdown.stromausfallTinker', true ,20*1000);//Autonomiezeit entsprechend einstellen
      	   }else{
      	    if (Netz === true ) {
      			clearStateDelayed ('javascript.0.Netzausfall.shutdown.stromausfallTinker');
      			clearStateDelayed ('javascript.0.Netzausfall.shutdown.stromausfallRaspi');
      			setState('javascript.0.Netzausfall.shutdown.stromausfallRaspi',false );
      			setState('javascript.0.Netzausfall.shutdown.stromausfallTinker',false );
      			//wer kein Multihost System laufen hat benötigt diesen nicht
      			log ('Timer für shutdown bei Stromausfall wegen Netzwiderkehr zurück gesetzt');
                   sendTo("telegram.0", "send", {
                   text: ('Timer für shutdown bei Stromausfall wegen Netzwiderkehr zurück gesetzt')
      			  });
      		}
      	} 
       });
      
      on({id: 'javascript.0.Netzausfall.shutdown.stromausfallTinker', change: "any"}, function (obj) {  
      	var StromausfallTinker = getState('javascript.0.Netzausfall.shutdown.stromausfallTinker').val;
             if (StromausfallTinker === true) {
             log('Iobroker Tinker wird wegen Stromausfall herunter gefahren');       
             sendTo("telegram.0", "send", {
               text: ('Iobroker Tinker wird wegen Stromausfall herunter gefahren')
            });
            exec ('sudo shutdown -h 0'); 
          }
      });
      
      

      2. Script für Multihost System für den Slave

      //Hilfsscript für Multihost Slave 
      on({id: 'javascript.0.Netzausfall.shutdown.stromausfallRaspi', change: "any"}, function (obj) {  
      	var StromausfallRaspi = getState('javascript.0.Netzausfall.shutdown.stromausfallRaspi').val;
             if (StromausfallRaspi === true) {
             log('Iobroker Raspi wird wegen Stromausfall herunter gefahren');       
             sendTo("telegram.0", "send", {
               text: ('Iobroker Raspi wird wegen Stromausfall herunter gefahren')
            });
            exec ('sudo shutdown -h 0'); 
          }
      });
      
      1 Antwort Letzte Antwort
      0
      • smartboartS Offline
        smartboartS Offline
        smartboart
        schrieb am zuletzt editiert von
        #3

        Hallo Gemeinde,

        mir ist aufgefallen, das ja nach einem Reboot das speichern der States der Objekte was ja normalerweise erwünscht ist, in diesem Fall zu Problemen führt.

        Und zwar werden die Trigger für die exec Funktion zum Herunterfahren auf True gesetzt. Dort verharren sie dann natürlich nach dem nächsten Einschalten, so das bei einem erneuten Stromausfall der Befehl für das herunterfahren nicht durchkommt.

        Deshal ist der Trigger auf change any zu änderen..

        on({id: 'javascript.0.Netzausfall.shutdown.stromausfallRaspi', change: "any"}, function (obj) {

        on({id: 'javascript.0.Netzausfall.shutdown.stromausfallTinker', change: "any"}, function (obj) {

        1 Antwort Letzte Antwort
        0
        • smartboartS Offline
          smartboartS Offline
          smartboart
          schrieb am zuletzt editiert von
          #4

          Hier die technik dazu…super DC 12V USV phoenix contact...

          Versorgt mein raspi, den wifi wz, meine rgbw briefkasten und 2 fritten sowie die klingel...autonomiezeit 90min...

          Mein tinker hängt an einem teknet powerpack locker 180min autonomiezeit.

          Alarmanlage und weatherman werden über eine insel solar lösung mit 12V batterie versorgt..somit das wichtigste alles gepuffert...~~![](</s><URL url=)<link_text text="https://uploads.tapatalk-cdn.com/201809 ... 99cc95.jpg">https://uploads.tapatalk-cdn.com/20180902/58e7de6a250ea401e5b4264e9d99cc95.jpg</link_text>" />

          Gesendet von meinem SM-G800F mit Tapatalk~~

          1 Antwort Letzte Antwort
          0
          • smartboartS Offline
            smartboartS Offline
            smartboart
            schrieb am zuletzt editiert von
            #5

            Um das ganze abzuschliessen, gibt es eine möglichkeit nach dem herunterfahren der naschinen diese über wake on lan wieder hochzufahren? Also den raspi und den stinker?

            Geben die boards das her?

            Gesendet von meinem SM-G800F mit Tapatalk

            1 Antwort Letzte Antwort
            0
            • smartboartS Offline
              smartboartS Offline
              smartboart
              schrieb am zuletzt editiert von
              #6

              Ok nicht möglich…Schade...

              Die Idee war nach einem Stromausfall mit shutdown die dinger bei Netzwiderkehr wieder hochzufahren zu können .

              Da die Boards ja Batterie gepuffert sind, würden bei Restkapazität der Batterien die Geräte ja nicht wieder neu starten bzw. erst wenn die Batterien leer wären... Ist das Netz vorher wieder da, bleiben die Maschinen ja aus.

              Deshalb wäre ein Möglichkeit schön, z.B Aus dem Urlaub heraus die Dinger wieder starten zu können. WOL ist leider nicht di Lösung...

              Müsste wohl eine kleine Schaltung bauen um das zu relaisieren.

              Oder ein geflashter Schaltaktor mit Tasmota Firmware in die Versorgungsleitung..Dieser könnte über die eigene Web Url ferngesteuert werden... Da muss ich mir noch was überlegen...

              Schade das es mit WOL nicht geht...

              WOL relies on having a BIOS that is listening for the magic packet on the network interface.

              Raspberry Pis do not have a BIOS that can do that, so WOL is impossible.

              You can use a Pi to generate magic packets to wake other machines. http://search.cpan.org/~clintdw/Net-Wak ... et/Wake.pm

              1 Antwort Letzte Antwort
              0
              Antworten
              • In einem neuen Thema antworten
              Anmelden zum Antworten
              • Älteste zuerst
              • Neuste zuerst
              • Meiste Stimmen


              Support us

              ioBroker
              Community Adapters
              Donate

              836

              Online

              32.4k

              Benutzer

              81.5k

              Themen

              1.3m

              Beiträge
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
              ioBroker Community 2014-2025
              logo
              • Anmelden

              • Du hast noch kein Konto? Registrieren

              • Anmelden oder registrieren, um zu suchen
              • Erster Beitrag
                Letzter Beitrag
              0
              • Home
              • Aktuell
              • Tags
              • Ungelesen 0
              • Kategorien
              • Unreplied
              • Beliebt
              • GitHub
              • Docu
              • Hilfe