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. IF Schleife vorzeitig abbrechen

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.3k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    958

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

IF Schleife vorzeitig abbrechen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
15 Beiträge 4 Kommentatoren 2.4k 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.
  • arteckA Offline
    arteckA Offline
    arteck
    Developer Most Active
    schrieb am zuletzt editiert von
    #2

    öhm….

    ich kenne ca. 15 Sprachen die ich mal hier und da Programmiert habe aber

    WAS IST EINE IF SCHLEIFE :shock: :shock: :? :?

    wenn du dein "if" meinst dann ist das eine Bedienung

    mach das wenn was anderes zutrifft

    was möchtest du erreichen ..fragen wir mal so ???

    zigbee hab ich, zwave auch, nuc's genauso und HA auch

    1 Antwort Letzte Antwort
    0
    • S Offline
      S Offline
      samsungfreak
      schrieb am zuletzt editiert von
      #3

      @arteck:

      öhm….

      ich kenne ca. 15 Sprachen die ich mal hier und da Programmiert habe aber

      WAS IST EINE IF SCHLEIFE :shock: :shock: :? :?

      wenn du dein "if" meinst dann ist das eine Bedienung

      mach das wenn was anderes zutrifft

      was möchtest du erreichen ..fragen wir mal so ??? `

      Ah mist das war mein altes Skript!

      Hier jetzt mein aktuelles!

      ` > on({id: "ping.0.Broker.192_168_0_2" ,change:'any'}, function (obj) {

      current_state = getState("ping.0.Broker.192_168_0_2").val;

      if (current_state === false)

      var wol = require('wake_on_lan');

      var HTPC = "MEINEMAC";

      wol.wake(HTPC);

      log("WOL für HTPC ausgefuehrt", "info");

      }

      else

      {

      return false;

      }

      }); `

      Allerdings gibt es hier noch einen Fehler:

      expected `)`and saw else missing semicolon
      

      Den Fehler kann ich nicht nachvollziehen.

      1 Antwort Letzte Antwort
      0
      • bahnuhrB Online
        bahnuhrB Online
        bahnuhr
        Forum Testing Most Active
        schrieb am zuletzt editiert von
        #4

        Für mich sieht das so aus, als ob du etwas ausführen möchtest, wenn der Wert false ist.

        Warum dann nicht einfach so :

        on({id: "ping.0.Broker.192_168_0_2" , val: false}, function () {
        	var wol = require('wake_on_lan');
        	var HTPC = "MEINEMAC";
        	wol.wake(HTPC);
        	log("WOL für HTPC ausgefuehrt", "info");
        });
        
        

        mfg


        Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
        Danke.
        gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
        ScreenToGif :https://www.screentogif.com/downloads.html

        1 Antwort Letzte Antwort
        0
        • paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von
          #5

          require() sollte nur einmal bei Skriptstart ausgeführt werden, nicht innerhalb einer Funktion.

          var wol = require('wake_on_lan');
          
          on({id: "ping.0.Broker.192_168_0_2", val: false}, function() {
             var HTPC = "MEINEMAC";
             wol.wake(HTPC);
             log("WOL für HTPC ausgefuehrt", "info");
          });
          

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          1 Antwort Letzte Antwort
          0
          • S Offline
            S Offline
            samsungfreak
            schrieb am zuletzt editiert von
            #6

            @arteck:

            öhm….

            ich kenne ca. 15 Sprachen die ich mal hier und da Programmiert habe aber

            WAS IST EINE IF SCHLEIFE :shock: :shock: :? :?

            wenn du dein "if" meinst dann ist das eine Bedienung

            mach das wenn was anderes zutrifft

            was möchtest du erreichen ..fragen wir mal so ??? `

            Skripten ist leider nicht meins aber du hast recht. IF Schleife ist/war falsche sorry.

            Ich möchte erreichen, dass ich meinen PC an bzw. ausschalten kann mit einer Szene. Das funktioniert auch, nur wurde mir das Log immer vollgeschrieben weil die Befehl (WOL oder Shutdown) endlos ausgeführt wurde. Das ganze habe ich bisher im folgenden Thread erarbeitet mit hilfreichen Usern. (http://forum.iobroker.net/viewtopic.php?f=21&t=7295).

            Durch eure Vorschläge die "if" Bedingung wegzulassen funktioniert dies nun zu 98%. Allerdings werden die Skripte (WOL oder Shutdown) jetzt so lange ausgeführt bis sich der Werte vom HTPC Ping Status auf "true" bzw. "false" ändert.

            Es ist also nur eine Kleinigkeit:) Kann ich im Skript einen Befehl hinterlegen, dass er nachdem einmaligen ausführen ein weiteres Durchlaufen vom Skript abbricht? Mit "return false;" hat es leider nicht geklappt.

            1 Antwort Letzte Antwort
            0
            • paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von
              #7

              @samsungfreak:

              Kann ich im Skript einen Befehl hinterlegen, dass er nachdem einmaligen ausführen ein weiteres Durchlaufen vom Skript abbricht? `
              Mit change: 'ne' wird es nur einmal (bei Wechsel von true auf false) ausgeführt.

              var wol = require('wake_on_lan');
              
              on({id: "ping.0.Broker.192_168_0_2", change: 'ne', val: false}, function() {
                 var HTPC = "MEINEMAC";
                 wol.wake(HTPC);
                 log("WOL für HTPC ausgefuehrt", "info");
              });
              

              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

              1 Antwort Letzte Antwort
              0
              • bahnuhrB Online
                bahnuhrB Online
                bahnuhr
                Forum Testing Most Active
                schrieb am zuletzt editiert von
                #8

                oder so:

                var wol = require('wake_on_lan');
                on({id: "ping.0.Broker.192_168_0_2", change: 'ne'}, function(obj) {
                	if (obj.state.val === true) {
                		.....  // Befehle wenn true
                	} else if (obj.state.val === false) {
                		.....  // Befehle wenn false	
                	}
                });
                
                

                So wird bei Änderung der ping ausgeführt.

                Also wenn true auf false geht; und umgekehrt.

                Und dann wird geprüft welcher Zustand es ist, und dann entsprechend ausgeführt.

                mfg


                Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
                Danke.
                gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
                ScreenToGif :https://www.screentogif.com/downloads.html

                1 Antwort Letzte Antwort
                0
                • S Offline
                  S Offline
                  samsungfreak
                  schrieb am zuletzt editiert von
                  #9

                  @bahnuhr:

                  oder so:

                  var wol = require('wake_on_lan');
                  on({id: "ping.0.Broker.192_168_0_2", change: 'ne'}, function(obj) {
                  	if (obj.state.val === true) {
                  		.....  // Befehle wenn true
                  	} else if (obj.state.val === false) {
                  		.....  // Befehle wenn false	
                  	}
                  });
                  
                  

                  So wird bei Änderung der ping ausgeführt.

                  Also wenn true auf false geht; und umgekehrt.

                  Und dann wird geprüft welcher Zustand es ist, und dann entsprechend ausgeführt.

                  mfg `

                  Das Skript gefällt mir ganz gut da ich nur eins benötige für eine Szene und nicht zwei. Allerdings führt er bei mir nur den Befehl bei "true" aus aber nicht den WOL Befehl bei "false:

                  var wol = require('wake_on_lan');
                  var HTPC = "MEINEMAC";         
                  on({id: "ping.0.Broker.192_168_0_2", change: 'ne'}, function(obj) {
                     if (obj.state.val === false) {
                      wol.wake(HTPC);
                      log("WOL für HTPC ausgefuehrt", "info")
                     } else if (obj.state.val === true) {
                        exec('net rpc shutdown -s -t 0-f -C "Der HTPC wird ausgeschaltet" -I 192.168.0.2 -U USER%PW')
                        log("HTPC wurde ausgeschaltet", "info")   
                     }
                  });
                  
                  
                  1 Antwort Letzte Antwort
                  0
                  • bahnuhrB Online
                    bahnuhrB Online
                    bahnuhr
                    Forum Testing Most Active
                    schrieb am zuletzt editiert von
                    #10

                    kommen denn die log Befehle richtig an?

                    Also wird bei true als auch bei false der log ausgeführt?

                    Ich vermute mal ja!

                    Dann kann es nur noch an dem Befehl liegen, den du ausführen möchtest.

                    Den musst du überprüfen.

                    mfg

                    P.S.

                    Am besten mal den Befehl in ein leeres Script schreiben und dann starten.

                    Dann siehts du sofort ob dieser ausgeführt wird.


                    Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
                    Danke.
                    gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
                    ScreenToGif :https://www.screentogif.com/downloads.html

                    1 Antwort Letzte Antwort
                    0
                    • S Offline
                      S Offline
                      samsungfreak
                      schrieb am zuletzt editiert von
                      #11

                      Beim Shutdown wird es geloggt beim WOL nicht. Die Befehle sind aber korrekt bzw. getestet.

                      1 Antwort Letzte Antwort
                      0
                      • S Offline
                        S Offline
                        samsungfreak
                        schrieb am zuletzt editiert von
                        #12

                        Hat jemand ggf. noch eine Idee/Tipp?

                        1 Antwort Letzte Antwort
                        0
                        • bahnuhrB Online
                          bahnuhrB Online
                          bahnuhr
                          Forum Testing Most Active
                          schrieb am zuletzt editiert von
                          #13

                          du hast teilweise ; vergessen (gabs da keinen Hinweis ?)

                          Hast du die Einzelteile in einem Extra Script getestet ?

                          Also dies

                          	var wol = require('wake_on_lan');
                          	var HTPC = "MEINEMAC";         
                          	wol.wake(HTPC);
                              	log("WOL für HTPC ausgefuehrt");  // Info brauchst du nicht
                          
                          

                          und dann das

                          
                          	exec('net rpc shutdown -s -t 0-f -C "Der HTPC wird ausgeschaltet" -I 192.168.0.2 -U USER%PW');
                                	log("HTPC wurde ausgeschaltet");
                          
                          

                          Wenn beides läuft, dann gut!

                          Jetzt das ganze mit dem on Befehl !

                          on({id: 'ping.0.Broker.192_168_0_2', change: 'ne'}, function(obj) {
                          	if (obj.state.val === false) {
                          		var wol = require('wake_on_lan');
                          		var HTPC = "MEINEMAC";         
                          		wol.wake(HTPC);
                          	    	log("WOL für HTPC ausgefuehrt");  // Info brauchst du nicht
                          	} else if (obj.state.val === true) {
                          		exec('net rpc shutdown -s -t 0-f -C "Der HTPC wird ausgeschaltet" -I 192.168.0.2 -U USER%PW');
                          	      	log("HTPC wurde ausgeschaltet");
                          	}
                          });
                          
                          

                          Fazit:

                          Wenn die Einzelteile separat gehen; dann geht es auch bei der on-Anweisung.

                          Semikolon nicht vergessen.

                          mfg


                          Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
                          Danke.
                          gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
                          ScreenToGif :https://www.screentogif.com/downloads.html

                          1 Antwort Letzte Antwort
                          0
                          • S Offline
                            S Offline
                            samsungfreak
                            schrieb am zuletzt editiert von
                            #14

                            Danke für deinen Tipp. Die Befehle gehen einzeln aber er führt mit diesem Skript den WOL nicht aus. Was er aber macht ist, wenn ich den HTPC selber anschalte wird dieser automatisch (durch else) wieder heruntergefahren da der Ping Wert auf true geht…und das obwohl ich das Skript nicht ausgeführt habe.

                            1 Antwort Letzte Antwort
                            0
                            • bahnuhrB Online
                              bahnuhrB Online
                              bahnuhr
                              Forum Testing Most Active
                              schrieb am zuletzt editiert von
                              #15

                              Ist eigentlich logisch, dass der PC dann wieder runter fährt, denn der Ping wechselt ja auf true.

                              Ich glaube ich weiß langsam wo dein Problem liegt.

                              Du willst doch den HTPC ein- und ausschalten, richtig ?

                              Und das willst du doch per Script erreichen.

                              Nun musst du noch einen Auslöser basteln der dann von ein auf aus, etc. wechselt.

                              Dies kann aber nicht der Ping für den PC sein !!!!!

                              Denn (wie du oben ja schreibst) läuft das script (true) ja wenn du manuell den pc einschaltest. Ist ja auch richtig denn der ping wechsel ja dann auf true.

                              Du brauchst eine unabhängige Variable !

                              Folgende Vorgehensweise:

                              1. Erstelle bei objekte eine Variable, z.B.

                              "javascript.0.Status.HTPC"

                              von Typ boolean (also true und false).

                              2. In vis legst du dann ein widget z.B. vom Typ "basic-bulb on/off" an.

                              Dieses widget zeigt dir dann den Zustand true und false an.

                              Und dieses kannst du dann in vis per Maus umschalten.

                              3. o.g. Script ändern bei on

                              Und zwar in Zeile 1 nicht der ping sondern die neue Variable.

                              on({id: 'javascript.0.Status.HTPC', change: 'ne'}, function(obj) {

                              …

                              Dann gehts.

                              mfg


                              Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
                              Danke.
                              gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
                              ScreenToGif :https://www.screentogif.com/downloads.html

                              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

                              731

                              Online

                              32.6k

                              Benutzer

                              82.2k

                              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