Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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

  • Der neue Monatsrückblick für Mai und Juni 2026 ist online!
    BluefoxB
    Bluefox
    8
    1
    970

  • wichtiges UPDATE für controller 7.2.2 im stable
    HomoranH
    Homoran
    10
    1
    3.5k

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    16
    1
    6.0k

Frage zu Script [gelöst]

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
6 Beiträge 3 Kommentatoren 821 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

              Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

              Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

              Mit deinem Input könnte dieser Beitrag noch besser werden 💗

              Registrieren Anmelden
              Antworten
              • In einem neuen Thema antworten
              Anmelden zum Antworten
              • Älteste zuerst
              • Neuste zuerst
              • Meiste Stimmen


              Support us

              ioBroker
              Community Adapters
              Donate

              257

              Online

              33.0k

              Benutzer

              83.6k

              Themen

              1.3m

              Beiträge
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
              ioBroker Community 2014-2026
              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