Skip to content
  • 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
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Frage zu Script [gelöst]

NEWS

  • Wartung am 15.11. – Forum ab 22:00 Uhr nicht erreichbar
    BluefoxB
    Bluefox
    11
    2
    209

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

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

Frage zu Script [gelöst]

Frage zu Script [gelöst]

Scheduled Pinned Locked Moved Skripten / Logik
6 Posts 3 Posters 647 Views
  • 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.
  • T Offline
    T Offline
    TOBO
    wrote on last edited by
    #1

    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
    0
    • T Offline
      T Offline
      TOBO
      wrote on last edited by
      #2

      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
      0
      • rantanplanR Offline
        rantanplanR Offline
        rantanplan
        wrote on last edited by
        #3

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

        Rantanplan

        CCU3 / MS Server 2019(VM) / Scripten mit Blockly

        1 Reply Last reply
        0
        • T Offline
          T Offline
          TOBO
          wrote on last edited by
          #4

          @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
          0
          • T Offline
            T Offline
            tempestas
            wrote on last edited by
            #5

            liegt imho am asynchronen arbeiten

            <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

            1 Reply Last reply
            0
            • T Offline
              T Offline
              TOBO
              wrote on last edited by
              #6

              @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
              0
              Reply
              • Reply as topic
              Log in to reply
              • Oldest to Newest
              • Newest to Oldest
              • Most Votes


              Support us

              ioBroker
              Community Adapters
              Donate

              99

              Online

              32.4k

              Users

              81.3k

              Topics

              1.3m

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

              • Don't have an account? Register

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