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. Frage zu Script [gelöst]

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

Frage zu Script [gelöst]

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
6 Beiträge 3 Kommentatoren 671 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.
  • T Offline
    T Offline
    TOBO
    schrieb am zuletzt editiert von
    #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 Antwort Letzte Antwort
    0
    • T Offline
      T Offline
      TOBO
      schrieb am zuletzt editiert von
      #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 Antwort Letzte Antwort
      0
      • rantanplanR Offline
        rantanplanR Offline
        rantanplan
        schrieb am zuletzt editiert von
        #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 Antwort Letzte Antwort
        0
        • T Offline
          T Offline
          TOBO
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          0
          • T Offline
            T Offline
            tempestas
            schrieb am zuletzt editiert von
            #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 Antwort Letzte Antwort
            0
            • T Offline
              T Offline
              TOBO
              schrieb am zuletzt editiert von
              #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 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

              652

              Online

              32.6k

              Benutzer

              82.1k

              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