Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Ich hänge fest, while Schleife [gelöst]

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    717

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

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

Ich hänge fest, while Schleife [gelöst]

Scheduled Pinned Locked Moved Skripten / Logik
6 Posts 3 Posters 575 Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • F Offline
    F Offline
    flyer99
    wrote on last edited by flyer99
    #1

    Abend Community,

    Nach 8 Stunden Probieren und immer noch keine Idee an was es hackt wende ich mich an Euch.

    Hintergrund zu dem Script:
    Da ich PV auf dem Dach habe steuer ich meine Hauptverbraucher, funzt auch alles jedoch wollte ich ein BlocklyScript opimieren welches mir den Status z.B. der Spülmaschine ausliest. Da die Spülmaschine noch nicht Smart ist und somit nur über einen Shelly gesteuert wird kann ich bei Stromaufnahme ein Einschalten feststellen, jedoch das ENDE der Spülmaschine gestaltet sich ein wenig schwierig da sie zwischendurch mal Phasen hat in denen sie kein Strom braucht, das Programm ist aber noch nicht beendet. Um meine Visualisierung richtig zu Versorgen bzgl. "Spülmaschine läuft" oder eben fertig hab ich über Blockly ein Script gebaut das auch funktioniert, wenn der Strom weniger 1 Watt ist dann warte 3 Minuten, wenn imer noch nochmals 3 Minuten ....... bis nach 30 Minuten das Bit Spülmaschine abgelöscht wird. Fängt sie zwischen den 30 Minuten nochmals an was zu machen fängt das Skript von vorne an, wie gesagt das funktioniert.
    Jetzt dachte ich ich probiere das mal über Java direkt mit einer Funktion. Solange der Strom ("2power") bei null ist funktioniert die Schleife, also beendet sich nach 10 mS. Wenn ich aber "2power" auf 3 setze und anschließend wieder zurück hängt die Schleife, Raspberry geht auf 100% ........ Warum hängt die ????? Wenn der "2power" wieder auf 0 ist sollte doch "StartZeit" auf aktuelles Datum gesetzt werden und nach 10 mS sich die Schleife beenden ??
    Ich bin mir auch nicht Sicher ob das der richtige Ansatz ist für meine "Optimierung" des Blocklys, trotzdem würde mich interessieren warum das nicht läuft ??

    Vielen Dank im voraus ......

    function verstrZeit(t0,t1) {
        var differenz = (t1.getTime() - t0.getTime());
        return differenz;
    }
    
    var StartZeit = new Date();
    console.error("1");
    while (verstrZeit(StartZeit,new Date()) < 10) {
        console.error("2");
        if (getState("javascript.0.Solar.2power").val > 1) {
            console.error("3");
            StartZeit = new Date();
        }
        Ansonsten setze Variable XY zurück ......
    }
    
    setState("javascript.0.scriptEnabled.Solar.y01_Status-Spuelm", false);

    Raspberry 4, Bullseye, mit dem Raspi 7" Touchdisplay was ioBroker betrifft ...

    liv-in-skyL ArmilarA 3 Replies Last reply
    0
    • F flyer99

      Abend Community,

      Nach 8 Stunden Probieren und immer noch keine Idee an was es hackt wende ich mich an Euch.

      Hintergrund zu dem Script:
      Da ich PV auf dem Dach habe steuer ich meine Hauptverbraucher, funzt auch alles jedoch wollte ich ein BlocklyScript opimieren welches mir den Status z.B. der Spülmaschine ausliest. Da die Spülmaschine noch nicht Smart ist und somit nur über einen Shelly gesteuert wird kann ich bei Stromaufnahme ein Einschalten feststellen, jedoch das ENDE der Spülmaschine gestaltet sich ein wenig schwierig da sie zwischendurch mal Phasen hat in denen sie kein Strom braucht, das Programm ist aber noch nicht beendet. Um meine Visualisierung richtig zu Versorgen bzgl. "Spülmaschine läuft" oder eben fertig hab ich über Blockly ein Script gebaut das auch funktioniert, wenn der Strom weniger 1 Watt ist dann warte 3 Minuten, wenn imer noch nochmals 3 Minuten ....... bis nach 30 Minuten das Bit Spülmaschine abgelöscht wird. Fängt sie zwischen den 30 Minuten nochmals an was zu machen fängt das Skript von vorne an, wie gesagt das funktioniert.
      Jetzt dachte ich ich probiere das mal über Java direkt mit einer Funktion. Solange der Strom ("2power") bei null ist funktioniert die Schleife, also beendet sich nach 10 mS. Wenn ich aber "2power" auf 3 setze und anschließend wieder zurück hängt die Schleife, Raspberry geht auf 100% ........ Warum hängt die ????? Wenn der "2power" wieder auf 0 ist sollte doch "StartZeit" auf aktuelles Datum gesetzt werden und nach 10 mS sich die Schleife beenden ??
      Ich bin mir auch nicht Sicher ob das der richtige Ansatz ist für meine "Optimierung" des Blocklys, trotzdem würde mich interessieren warum das nicht läuft ??

      Vielen Dank im voraus ......

      function verstrZeit(t0,t1) {
          var differenz = (t1.getTime() - t0.getTime());
          return differenz;
      }
      
      var StartZeit = new Date();
      console.error("1");
      while (verstrZeit(StartZeit,new Date()) < 10) {
          console.error("2");
          if (getState("javascript.0.Solar.2power").val > 1) {
              console.error("3");
              StartZeit = new Date();
          }
          Ansonsten setze Variable XY zurück ......
      }
      
      setState("javascript.0.scriptEnabled.Solar.y01_Status-Spuelm", false);
      liv-in-skyL Offline
      liv-in-skyL Offline
      liv-in-sky
      wrote on last edited by
      #2

      @flyer99 anstatt while eher setInterval nutzen und mit stopInterval beenden

      die while schleife macht richtig stress, weil sie dauernd arbeitet - habe ich noch nie in meiner skripte gebraucht

      bei setinterval kannst du definieren, wie oft es pro zeiteinheit durchläuft und innen im setinterval alles checken und steuern

      nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

      1 Reply Last reply
      1
      • F flyer99

        Abend Community,

        Nach 8 Stunden Probieren und immer noch keine Idee an was es hackt wende ich mich an Euch.

        Hintergrund zu dem Script:
        Da ich PV auf dem Dach habe steuer ich meine Hauptverbraucher, funzt auch alles jedoch wollte ich ein BlocklyScript opimieren welches mir den Status z.B. der Spülmaschine ausliest. Da die Spülmaschine noch nicht Smart ist und somit nur über einen Shelly gesteuert wird kann ich bei Stromaufnahme ein Einschalten feststellen, jedoch das ENDE der Spülmaschine gestaltet sich ein wenig schwierig da sie zwischendurch mal Phasen hat in denen sie kein Strom braucht, das Programm ist aber noch nicht beendet. Um meine Visualisierung richtig zu Versorgen bzgl. "Spülmaschine läuft" oder eben fertig hab ich über Blockly ein Script gebaut das auch funktioniert, wenn der Strom weniger 1 Watt ist dann warte 3 Minuten, wenn imer noch nochmals 3 Minuten ....... bis nach 30 Minuten das Bit Spülmaschine abgelöscht wird. Fängt sie zwischen den 30 Minuten nochmals an was zu machen fängt das Skript von vorne an, wie gesagt das funktioniert.
        Jetzt dachte ich ich probiere das mal über Java direkt mit einer Funktion. Solange der Strom ("2power") bei null ist funktioniert die Schleife, also beendet sich nach 10 mS. Wenn ich aber "2power" auf 3 setze und anschließend wieder zurück hängt die Schleife, Raspberry geht auf 100% ........ Warum hängt die ????? Wenn der "2power" wieder auf 0 ist sollte doch "StartZeit" auf aktuelles Datum gesetzt werden und nach 10 mS sich die Schleife beenden ??
        Ich bin mir auch nicht Sicher ob das der richtige Ansatz ist für meine "Optimierung" des Blocklys, trotzdem würde mich interessieren warum das nicht läuft ??

        Vielen Dank im voraus ......

        function verstrZeit(t0,t1) {
            var differenz = (t1.getTime() - t0.getTime());
            return differenz;
        }
        
        var StartZeit = new Date();
        console.error("1");
        while (verstrZeit(StartZeit,new Date()) < 10) {
            console.error("2");
            if (getState("javascript.0.Solar.2power").val > 1) {
                console.error("3");
                StartZeit = new Date();
            }
            Ansonsten setze Variable XY zurück ......
        }
        
        setState("javascript.0.scriptEnabled.Solar.y01_Status-Spuelm", false);
        liv-in-skyL Offline
        liv-in-skyL Offline
        liv-in-sky
        wrote on last edited by
        #3

        ps das ist javascript und nicht java :-)

        @flyer99 sagte in Ich hänge fest, while Schleife:

        dachte ich ich probiere das mal über Java direkt mit einer Funktion.

        nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

        1 Reply Last reply
        1
        • F flyer99

          Abend Community,

          Nach 8 Stunden Probieren und immer noch keine Idee an was es hackt wende ich mich an Euch.

          Hintergrund zu dem Script:
          Da ich PV auf dem Dach habe steuer ich meine Hauptverbraucher, funzt auch alles jedoch wollte ich ein BlocklyScript opimieren welches mir den Status z.B. der Spülmaschine ausliest. Da die Spülmaschine noch nicht Smart ist und somit nur über einen Shelly gesteuert wird kann ich bei Stromaufnahme ein Einschalten feststellen, jedoch das ENDE der Spülmaschine gestaltet sich ein wenig schwierig da sie zwischendurch mal Phasen hat in denen sie kein Strom braucht, das Programm ist aber noch nicht beendet. Um meine Visualisierung richtig zu Versorgen bzgl. "Spülmaschine läuft" oder eben fertig hab ich über Blockly ein Script gebaut das auch funktioniert, wenn der Strom weniger 1 Watt ist dann warte 3 Minuten, wenn imer noch nochmals 3 Minuten ....... bis nach 30 Minuten das Bit Spülmaschine abgelöscht wird. Fängt sie zwischen den 30 Minuten nochmals an was zu machen fängt das Skript von vorne an, wie gesagt das funktioniert.
          Jetzt dachte ich ich probiere das mal über Java direkt mit einer Funktion. Solange der Strom ("2power") bei null ist funktioniert die Schleife, also beendet sich nach 10 mS. Wenn ich aber "2power" auf 3 setze und anschließend wieder zurück hängt die Schleife, Raspberry geht auf 100% ........ Warum hängt die ????? Wenn der "2power" wieder auf 0 ist sollte doch "StartZeit" auf aktuelles Datum gesetzt werden und nach 10 mS sich die Schleife beenden ??
          Ich bin mir auch nicht Sicher ob das der richtige Ansatz ist für meine "Optimierung" des Blocklys, trotzdem würde mich interessieren warum das nicht läuft ??

          Vielen Dank im voraus ......

          function verstrZeit(t0,t1) {
              var differenz = (t1.getTime() - t0.getTime());
              return differenz;
          }
          
          var StartZeit = new Date();
          console.error("1");
          while (verstrZeit(StartZeit,new Date()) < 10) {
              console.error("2");
              if (getState("javascript.0.Solar.2power").val > 1) {
                  console.error("3");
                  StartZeit = new Date();
              }
              Ansonsten setze Variable XY zurück ......
          }
          
          setState("javascript.0.scriptEnabled.Solar.y01_Status-Spuelm", false);
          ArmilarA Offline
          ArmilarA Offline
          Armilar
          Most Active Forum Testing
          wrote on last edited by Armilar
          #4

          @flyer99

          var timeoutSpuelmaschine;
          
          // Trigger auf Objekt ID für Leistungsmessung
          on({id: 'javascript.0.Solar.2power', change: "ne"}, async function (obj) {
            if (obj.state.val > 1) {
              // Wenn weiteres Event von Trigger, erneut 3 Min
              (function () {if (timeoutSpuelmaschine) {clearTimeout(timeoutSpuelmaschine); timeoutSpuelmaschine = null;}})();
              timeoutSpuelmaschine = setTimeout(async function () {
                // Wenn 3 Min. kein (>1)-Event mehr vom Trigger , abschalten
                setState("javascript.0.scriptEnabled.Solar.y01_Status-Spuelm", false);
              }, 180000);
            }
          });
          

          würde ich ebenfalls wie @liv-in-sky lösen.

          Eine While-Schleife läuft sich einen Wolf, wenn keine Abbruchbedingung existiert oder entsprechende Pausen eingebaut werden. Ist völlig normal, dass dann bei einer Endlosschleife der Prozessor auf 100% geht. Besser mit Trigger und setTimeout

          Installationsanleitung, Tipps, Alias-Definitionen, FAQ für das Sonoff NSPanel mit lovelace UI unter ioBroker
          https://github.com/joBr99/nspanel-lovelace-ui/wiki

          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

          1 Reply Last reply
          0
          • F Offline
            F Offline
            flyer99
            wrote on last edited by
            #5

            Vielen Dank für die Antworten, dann werde ich mal diesen Weg probieren .....

            Raspberry 4, Bullseye, mit dem Raspi 7" Touchdisplay was ioBroker betrifft ...

            1 Reply Last reply
            0
            • F Offline
              F Offline
              flyer99
              wrote on last edited by
              #6

              Abend, habs nun so für mich am laufen und funzt.
              Vielleicht hilft es ja jemandem, Logik: Innerhalb von 15 Minuten darf kein Stromverbrauch auftauchen ....

              setState("javascript.0.Solar.Script_Spuelmaschine_Status_laeuft", true);
              let vergangenezeit_spuelm = 1;
              let sekundenzaehler_spuelm = setInterval(Zeit, 1000);  //1000 für Interval 1 Sekunde
              function Zeit() {
              	vergangenezeit_spuelm++;
                      if (getState("shelly.0.SHPLG2-1#283A90#1.Relay0.Power").val > 1) {
                      vergangenezeit_spuelm = 0;
                      }
                      if (vergangenezeit_spuelm > 900 ) {   //900 gleich 15 Minuten da Intervall = 1 Sekunde
                      clearInterval(sekundenzaehler_spuelm);
                      setState("javascript.0.Solar.Spuelm_gestartet",false);
                      setState("javascript.0.Solar.Script_Spuelmaschine_Status_laeuft", false);
                      setState("javascript.0.scriptEnabled.Solar.Spuelmaschine_Status", false);
              	}
              }
              

              Raspberry 4, Bullseye, mit dem Raspi 7" Touchdisplay was ioBroker betrifft ...

              1 Reply Last reply
              1

              Hello! It looks like you're interested in this conversation, but you don't have an account yet.

              Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

              With your input, this post could be even better 💗

              Register Login
              Reply
              • Reply as topic
              Log in to reply
              • Oldest to Newest
              • Newest to Oldest
              • Most Votes


              Support us

              ioBroker
              Community Adapters
              Donate

              360

              Online

              32.7k

              Users

              82.6k

              Topics

              1.3m

              Posts
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
              ioBroker Community 2014-2025
              logo
              • Login

              • Don't have an account? Register

              • Login or register to search.
              • First post
                Last post
              0
              • Home
              • Recent
              • Tags
              • Unread 0
              • Categories
              • Unreplied
              • Popular
              • GitHub
              • Docu
              • Hilfe