Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Ein script für x buttons. Welcher Button hat das Script aufgerufen?

    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

    Ein script für x buttons. Welcher Button hat das Script aufgerufen?

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

      Hallo zusammen,
      als totaler Anfänger habe ich im VIS 64 Buttons defiert und alle sollen das gleiche Script aufrufen: "Object ID = javascript.0.scriptEnabled.Garten.Beleuchtung.On". Wie kann ich herausfunden welcher Button das Script aufgerufen hat?
      Ich möchte nicht für jeden Button ein eigenes Script bauen.
      Das Script sieht so aus und funktioniert für ein Button:

      on({id: 'javascript.0.scriptEnabled.Garten.Beleuchtung.On'}, function(obj){
      getState("mqtt.0.Garten.Beleuchtung.Zeiten.on.so", (err, state) => {
      console.log("State.val: "+state.val+" neu: "+addHour(state.val));
      setState("mqtt.0.Garten.Beleuchtung.Zeiten.on.so",addHour(state.val));
      })
      });

      bahnuhr 1 Reply Last reply Reply Quote 0
      • htrecksler
        htrecksler Forum Testing last edited by

        ich befürchte, das wird nicht gehen.
        Aber vielleicht hat ja ein genialer Geist hier noch eine Idee.
        Interessehalber aber die Frage...
        Warum müssen 64 Button das gleiche tun? Was ist der Anwendungsfall?

        1 Reply Last reply Reply Quote 0
        • bahnuhr
          bahnuhr Forum Testing Most Active @Burgi last edited by

          @Burgi sagte in Ein script für x buttons. Welcher Button hat das Script aufgerufen?:

          VIS 64 Buttons defiert

          • Lege 64 boolean Objekte an. (also true und false)
          • Schreibe Script mit on (welches objekt geht auf true)
            damit weißt du dann genau welcher button gedrückt wurd.
          • Im o.g. Script dann dein script aufrufen.

          Nachteil:
          du musst 64 Objekte anlegen und diese dann deinen buttons zuordnen.

          P.S.
          das Anlegen geht auch per Script:
          createState('javascript.0.64_Buttons.Button_x', true, {type: 'boolean',name: 'Button x',read: true,write: true,role: 'per Script'});

          dies dann 64 mal nach unten kopieren und x mit der fortlaufenden zahl ersetzen; Script starten und dann hast du 64 Objekte

          AlCalzone 1 Reply Last reply Reply Quote 0
          • AlCalzone
            AlCalzone Developer @bahnuhr last edited by

            @bahnuhr sagte in Ein script für x buttons. Welcher Button hat das Script aufgerufen?:

            dies dann 64 mal nach unten kopieren und x mit der fortlaufenden zahl ersetzen; Script starten und dann hast du 64 Objekte

            Oder man nimmt das Konstrukt, das es in der Programmierung dafür gibt: Schleifen.

            // 64 States mit fortlaufender Nummerierung erstellen
            for (let i = 1; i <= 64; i++) {
                createState('javascript.0.64_Buttons.Button_' + i, true, {
                    type: 'boolean',
                    name: 'Button ' + i,
                    read: true,
                    write: true,
                    role: 'per Script'
                });
            }
            

            @Burgi sagte in Ein script für x buttons. Welcher Button hat das Script aufgerufen?:

            Object ID = javascript.0.scriptEnabled.Garten.Beleuchtung.On

            Eigene Datenpunkte sollten niemals unter scriptEnabled erstellt werden!

            bahnuhr 1 Reply Last reply Reply Quote 1
            • bahnuhr
              bahnuhr Forum Testing Most Active @AlCalzone last edited by

              @AlCalzone sagte in Ein script für x buttons. Welcher Button hat das Script aufgerufen?:

              Oder man nimmt das Konstrukt, das es in der Programmierung dafür gibt: Schleifen.

              Ja, so gehts einfacher.

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

              Support us

              ioBroker
              Community Adapters
              Donate

              528
              Online

              31.8k
              Users

              80.0k
              Topics

              1.3m
              Posts

              4
              5
              321
              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