Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Frage zu Script [gelöst]

    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

    Frage zu Script [gelöst]

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

      Hallo,

      ich habe folgendes gebastelt.

      var idPWD_Soll = "javascript.0.PasswortService"; //gespeichtertes Passwort - String
      var idPWD_Ist = "javascript.0.PasswortServiceEingabe"; //String
      var idTriggerKeyboard = "javascript.0.Trigger_Keyboard"; //Bool
      var idKeyboardEingabe = "javascript.0.KeyboardTaste"; // Zahl
      var idSternAnzeige = "javascript.0.SternAnzeige"; //Zahl
      
      on(idKeyboardEingabe, function(dp) { 
      
      if ((getState(idSternAnzeige).val === 0) && getState(idKeyboardEingabe).val !== 13){setState(idSternAnzeige, 1);}
      if ((getState(idSternAnzeige).val === 1) && getState(idKeyboardEingabe).val !== 13){setState(idSternAnzeige, 2);}    
      if ((getState(idSternAnzeige).val === 2) && getState(idKeyboardEingabe).val !== 13){setState(idSternAnzeige, 3);}    
      if ((getState(idSternAnzeige).val === 3) && getState(idKeyboardEingabe).val !== 13){setState(idSternAnzeige, 4);}
      if ((getState(idSternAnzeige).val === 4) && getState(idKeyboardEingabe).val !== 13){
          setState(idPWD_Ist, "");    
          setState(idKeyboardEingabe, 13);
          setState(idSternAnzeige, 0);
          }    
      
      switch (getState(idKeyboardEingabe).val) {
      
      case 0:
      setState(idPWD_Ist, getState(idPWD_Ist).val + "0");    
      setState(idKeyboardEingabe, 13);    
      log("Tste 0");
      break;
      
      case 1:
      setState(idKeyboardEingabe, 13);
      break;
      
      case 2:
      setState(idKeyboardEingabe, 13);    
      break;
      
      case 3:
      setState(idKeyboardEingabe, 13);    
      break;
      
      case 4:
      setState(idKeyboardEingabe, 13);    
      break;
      
      case 5:
      setState(idKeyboardEingabe, 13);    
      break;
      
      case 6:
      setState(idKeyboardEingabe, 13);    
      break;
      
      case 7:
      setState(idKeyboardEingabe, 13);    
      break;
      
      case 8:
      setState(idKeyboardEingabe, 13);    
      break;
      
      case 9:
      setState(idKeyboardEingabe, 13);    
      break;
      
      case 10:
      setState(idKeyboardEingabe, 13);    
      break;
      
      case 11:    
      setState(idPWD_Ist, "");
      setState(idTriggerKeyboard, false);
      setState(idKeyboardEingabe, 13);
      setState(idSternAnzeige, 0);
      break;
      
      case 12:
      setState(idPWD_Ist, "");    
      setState(idKeyboardEingabe, 13);
      setState(idSternAnzeige, 0);
      break;
      }    
      
      });
      // Script start
      setState(idPWD_Ist, "");
      setState(idTriggerKeyboard, false);
      setState(idKeyboardEingabe, 13);
      setState(idSternAnzeige, 0);
      
      

      Mein Problem ist dieser Teil

      if ((getState(idSternAnzeige).val === 4) && getState(idKeyboardEingabe).val !== 13){
          setState(idPWD_Ist, "");    
          setState(idKeyboardEingabe, 13);
          setState(idSternAnzeige, 0);
          }    
      
      

      Er führt das zwar aus, aber danach trotzdem den Case für idKeyboardEingabe, obwohl ich die Variable schon auf 13 gesetzt habe. Ist das vielleicht ein zeitliches Problem, weil ich die Variable idKeyboardEingabe nur ein Paar Zeilen vorher geändert habe und sie dann wieder abfrage ? Brauch er vielleicht mehr Zeit um die Variable erst zu schreiben ?

      Gruß.

      ToBo

      PS: Ich habe das Script im ein View mit einem Keypad einzublenden und die Tastenklicks auszuwerten.
      2287_keayboard.png

      1 Reply Last reply Reply Quote 0
      • T
        TOBO last edited by

        OK, hat sich schon erledigt. Habe die ganze Case Geschichte in ein SetTimeout von 400ms gesetzt. Nun gehts

        setTimeout(function() {
        
        switch (getState(idKeyboardEingabe).val) {
        
        case 0:
        setState(idPWD_Ist, getState(idPWD_Ist).val + "0");    
        setState(idKeyboardEingabe, 13);    
        log("Tste 0");
        break;
        
        case 1:
        setState(idPWD_Ist, getState(idPWD_Ist).val + "1");        
        setState(idKeyboardEingabe, 13);
        break;
        
        case 2:
        setState(idPWD_Ist, getState(idPWD_Ist).val + "2");        
        setState(idKeyboardEingabe, 13);    
        break;
        
        case 3:
        setState(idKeyboardEingabe, 13);    
        break;
        
        case 4:
        setState(idKeyboardEingabe, 13);    
        break;
        
        case 5:
        setState(idKeyboardEingabe, 13);    
        break;
        
        case 6:
        setState(idKeyboardEingabe, 13);    
        break;
        
        case 7:
        setState(idKeyboardEingabe, 13);    
        break;
        
        case 8:
        setState(idKeyboardEingabe, 13);    
        break;
        
        case 9:
        setState(idKeyboardEingabe, 13);    
        break;
        
        case 10:
        setState(idKeyboardEingabe, 13);    
        break;
        
        case 11:    
        setState(idPWD_Ist, "");
        setState(idTriggerKeyboard, false);
        setState(idKeyboardEingabe, 13);
        setState(idSternAnzeige, 0);
        break;
        
        case 12:
        setState(idPWD_Ist, "");    
        setState(idKeyboardEingabe, 13);
        setState(idSternAnzeige, 0);
        break;
        }    
        
        }, 400);
        

        Ich wusste nicht, das er noch Zeit braucht um die Variablen zu schreiben. Wenn nun nach dem 4. Stern eine Taste gedrückt wird, gehts wieder von vorn los und die Variable wird auch wirklich leer gemacht.
        2287_keab.png

        1 Reply Last reply Reply Quote 0
        • rantanplan
          rantanplan last edited by

          Und wenn Du jetzt noch ein [gelöst] in den Betreff schreiben könntest.

          1 Reply Last reply Reply Quote 0
          • T
            TOBO last edited by

            @rantanplan:

            Und wenn Du jetzt noch ein [gelöst] in den Betreff schreiben könntest. `
            Jawoll, das werde ich natürlich machen. Wüsste aber gern noch etwas von den Profis über diese zeitliche

            Verzögerung.

            Gruß.

            ToBo

            1 Reply Last reply Reply Quote 0
            • T
              tempestas last edited by

              liegt imho am asynchronen arbeiten

              1 Reply Last reply Reply Quote 0
              • T
                TOBO last edited by

                @tempestas:

                liegt imho am asynchronen arbeiten `

                Also ist ein Delay die einzige Möglichkeit eine Variable abzufragen, wenn man sie ein Paar Zeilen vorher geändert hat? Damit genug Zeit bleibt, dass die Variable auch wirklich geändert wurde.

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

                Support us

                ioBroker
                Community Adapters
                Donate

                826
                Online

                31.7k
                Users

                79.8k
                Topics

                1.3m
                Posts

                3
                6
                562
                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