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. JavaScript
  5. [gelöst]Problem bei Übergabe per Script !Anfänger!

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    15
    1
    839

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    1.9k

[gelöst]Problem bei Übergabe per Script !Anfänger!

Geplant Angeheftet Gesperrt Verschoben JavaScript
17 Beiträge 4 Kommentatoren 664 Aufrufe 3 Watching
  • Ä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
    Torsten_MG
    schrieb am zuletzt editiert von Torsten_MG
    #1

    Hallo Leute,

    ich versuche mich gerade ein bischen im Script schreiben, aber leider klappt es nicht so wie ich es mir vorgestellt habe.

    Vorab was geplant ist:
    Ich übergebe an einen Datenpunkt (javascript.0.Wohnzimmer.Couch_Links) z.B. den Wert: 201006500

    Nun soll das Script daraus die letzten 4 Ziffern (im Beispiel 6500) in eine Variable (ct) packen und die Ziffern 3-5 (im Beispiel 100) in eine weitere Variable (level).
    Das funktioniert auch so soweit.

    Dann übergebe ich die Variablen an 2 States einer Lampe die ich über deconz eingebunden habe.
    Das scheint auch zu funktionieren, aber nur augenscheinlich. Da nämlich, wenn der Wert level sich ändert sollte sich auch der Wert bri ändern.
    Wenn ich den level Wert händisch ändere klappt es, wenn ich es aus dem Script heraus mache nicht. Leider weiss ich nicht warum!

    Hier das Script:

    
    on({id: 'javascript.0.Wohnzimmer.Couch_Links', change: "ne"}, function (obj){
       var value = obj.state.val;
       var oldvalue = obj.oldState.val;
       var Lichtwert = String(getState("javascript.0.Wohnzimmer.Couch_Links").val);
       var ct = Math.round(1000000/Lichtwert.substr(5));
       var Helligkeit = Lichtwert.substr(2,3);
       
    
       if (Helligkeit === 0)
       {
           setState("deconz.0.Lights.4.on",false);
       }
       else
       {
           setState("deconz.0.Lights.4.level",Helligkeit);
           setState("deconz.0.Lights.4.ct",ct);
           setState("deconz.0.Lights.4.on",true);
       }
    });
    
    F 1 Antwort Letzte Antwort
    0
    • T Torsten_MG

      Hallo Leute,

      ich versuche mich gerade ein bischen im Script schreiben, aber leider klappt es nicht so wie ich es mir vorgestellt habe.

      Vorab was geplant ist:
      Ich übergebe an einen Datenpunkt (javascript.0.Wohnzimmer.Couch_Links) z.B. den Wert: 201006500

      Nun soll das Script daraus die letzten 4 Ziffern (im Beispiel 6500) in eine Variable (ct) packen und die Ziffern 3-5 (im Beispiel 100) in eine weitere Variable (level).
      Das funktioniert auch so soweit.

      Dann übergebe ich die Variablen an 2 States einer Lampe die ich über deconz eingebunden habe.
      Das scheint auch zu funktionieren, aber nur augenscheinlich. Da nämlich, wenn der Wert level sich ändert sollte sich auch der Wert bri ändern.
      Wenn ich den level Wert händisch ändere klappt es, wenn ich es aus dem Script heraus mache nicht. Leider weiss ich nicht warum!

      Hier das Script:

      
      on({id: 'javascript.0.Wohnzimmer.Couch_Links', change: "ne"}, function (obj){
         var value = obj.state.val;
         var oldvalue = obj.oldState.val;
         var Lichtwert = String(getState("javascript.0.Wohnzimmer.Couch_Links").val);
         var ct = Math.round(1000000/Lichtwert.substr(5));
         var Helligkeit = Lichtwert.substr(2,3);
         
      
         if (Helligkeit === 0)
         {
             setState("deconz.0.Lights.4.on",false);
         }
         else
         {
             setState("deconz.0.Lights.4.level",Helligkeit);
             setState("deconz.0.Lights.4.ct",ct);
             setState("deconz.0.Lights.4.on",true);
         }
      });
      
      F Offline
      F Offline
      fastfoot
      schrieb am zuletzt editiert von
      #2

      @torsten_mg Deine Variable Helligkeit ist ein String, evtl. musst du den noch in eine Zahl umwandeln

      iobroker läuft unter Docker auf QNAP TS-451+
      SkriptRecovery: https://forum.iobroker.net/post/930558

      paul53P T 2 Antworten Letzte Antwort
      0
      • F fastfoot

        @torsten_mg Deine Variable Helligkeit ist ein String, evtl. musst du den noch in eine Zahl umwandeln

        paul53P Offline
        paul53P Offline
        paul53
        schrieb am zuletzt editiert von paul53
        #3

        @fastfoot sagte: Deine Variable Helligkeit ist ein String

        ... ebenfalls die Variable Lichtwert.

           var ct = Math.round(1000000/parseInt(Lichtwert.substr(5)));
           var Helligkeit = parseInt(Lichtwert.substr(2,3));
        

        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

        F 1 Antwort Letzte Antwort
        0
        • paul53P paul53

          @fastfoot sagte: Deine Variable Helligkeit ist ein String

          ... ebenfalls die Variable Lichtwert.

             var ct = Math.round(1000000/parseInt(Lichtwert.substr(5)));
             var Helligkeit = parseInt(Lichtwert.substr(2,3));
          
          F Offline
          F Offline
          fastfoot
          schrieb am zuletzt editiert von
          #4

          @paul53 sagte in Problem bei Übergabe per Script !Anfänger!:

          ... ebenfalls die Variable Lichtwert.

          die muss ja ein String sein. Für die Berechnung von ct braucht es mE die Konvertierung mit parseInt() nicht. Eine Lösung hatte ich nicht angegeben weil ich irgendwie denke dass der TE Blockly verwendet :-)

          iobroker läuft unter Docker auf QNAP TS-451+
          SkriptRecovery: https://forum.iobroker.net/post/930558

          paul53P T 2 Antworten Letzte Antwort
          0
          • F fastfoot

            @paul53 sagte in Problem bei Übergabe per Script !Anfänger!:

            ... ebenfalls die Variable Lichtwert.

            die muss ja ein String sein. Für die Berechnung von ct braucht es mE die Konvertierung mit parseInt() nicht. Eine Lösung hatte ich nicht angegeben weil ich irgendwie denke dass der TE Blockly verwendet :-)

            paul53P Offline
            paul53P Offline
            paul53
            schrieb am zuletzt editiert von paul53
            #5

            @fastfoot sagte: Für die Berechnung von ct braucht es mE die Konvertierung mit parseInt() nicht.

            Stimmt, Javascript macht eine implizite Typwandlung nach Zahl.

            Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
            Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

            1 Antwort Letzte Antwort
            0
            • F fastfoot

              @torsten_mg Deine Variable Helligkeit ist ein String, evtl. musst du den noch in eine Zahl umwandeln

              T Offline
              T Offline
              Torsten_MG
              schrieb am zuletzt editiert von
              #6

              @fastfoot

              Danke, das wars!!

              Habe die Zeile

              var Helligkeit = parseInt(Lichtwert.substr(2,3));
              

              angepasst, jetzt klappts

              1 Antwort Letzte Antwort
              0
              • F fastfoot

                @paul53 sagte in Problem bei Übergabe per Script !Anfänger!:

                ... ebenfalls die Variable Lichtwert.

                die muss ja ein String sein. Für die Berechnung von ct braucht es mE die Konvertierung mit parseInt() nicht. Eine Lösung hatte ich nicht angegeben weil ich irgendwie denke dass der TE Blockly verwendet :-)

                T Offline
                T Offline
                Torsten_MG
                schrieb am zuletzt editiert von
                #7

                @fastfoot sagte in Problem bei Übergabe per Script !Anfänger!:

                @paul53 sagte in Problem bei Übergabe per Script !Anfänger!:

                ... ebenfalls die Variable Lichtwert.

                die muss ja ein String sein. Für die Berechnung von ct braucht es mE die Konvertierung mit parseInt() nicht. Eine Lösung hatte ich nicht angegeben weil ich irgendwie denke dass der TE Blockly verwendet :-)

                Nein, kein Blockly!
                Javascript. Bin aber noch im Anfängerstadium!

                paul53P F 2 Antworten Letzte Antwort
                0
                • T Torsten_MG

                  @fastfoot sagte in Problem bei Übergabe per Script !Anfänger!:

                  @paul53 sagte in Problem bei Übergabe per Script !Anfänger!:

                  ... ebenfalls die Variable Lichtwert.

                  die muss ja ein String sein. Für die Berechnung von ct braucht es mE die Konvertierung mit parseInt() nicht. Eine Lösung hatte ich nicht angegeben weil ich irgendwie denke dass der TE Blockly verwendet :-)

                  Nein, kein Blockly!
                  Javascript. Bin aber noch im Anfängerstadium!

                  paul53P Offline
                  paul53P Offline
                  paul53
                  schrieb am zuletzt editiert von
                  #8

                  @torsten_mg sagte: Nein, kein Blockly!

                  Du hattest aber mit Blockly begonnen, wie man an den Zeilen 2 bis 4 sieht.

                  Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                  Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                  1 Antwort Letzte Antwort
                  0
                  • T Torsten_MG

                    @fastfoot sagte in Problem bei Übergabe per Script !Anfänger!:

                    @paul53 sagte in Problem bei Übergabe per Script !Anfänger!:

                    ... ebenfalls die Variable Lichtwert.

                    die muss ja ein String sein. Für die Berechnung von ct braucht es mE die Konvertierung mit parseInt() nicht. Eine Lösung hatte ich nicht angegeben weil ich irgendwie denke dass der TE Blockly verwendet :-)

                    Nein, kein Blockly!
                    Javascript. Bin aber noch im Anfängerstadium!

                    F Offline
                    F Offline
                    fastfoot
                    schrieb am zuletzt editiert von
                    #9

                    @torsten_mg sagte in Problem bei Übergabe per Script !Anfänger!:

                    Nein, kein Blockly!
                    Javascript. Bin aber noch im Anfängerstadium!

                    das sieht man, aber ich habe auch mal so angefangen. Noch ein Tipp: Du musst den Wert nicht noch einmal holen, da er bereits im Trigger mit übergeben wird.

                    • schmeiss Zeile 3 und 4 weg
                    • Ändere Zeile 5 zu var Lichtwert = String(obj.state.val);

                    Ändere bitte noch deinen Betreff im ersten Beitrag mit [Gelöst]....

                    iobroker läuft unter Docker auf QNAP TS-451+
                    SkriptRecovery: https://forum.iobroker.net/post/930558

                    A 1 Antwort Letzte Antwort
                    0
                    • F fastfoot

                      @torsten_mg sagte in Problem bei Übergabe per Script !Anfänger!:

                      Nein, kein Blockly!
                      Javascript. Bin aber noch im Anfängerstadium!

                      das sieht man, aber ich habe auch mal so angefangen. Noch ein Tipp: Du musst den Wert nicht noch einmal holen, da er bereits im Trigger mit übergeben wird.

                      • schmeiss Zeile 3 und 4 weg
                      • Ändere Zeile 5 zu var Lichtwert = String(obj.state.val);

                      Ändere bitte noch deinen Betreff im ersten Beitrag mit [Gelöst]....

                      A Online
                      A Online
                      Ahnungsbefreit
                      schrieb am zuletzt editiert von
                      #10

                      @fastfoot @paul53 ...wo Ihr gerade über JS Optimierung redet: Bin ich eigentlich der Einzige, immer mit "use strict" arbeitet und VAR vermeidet und lieber mit LET und CONST arbeitet?

                      Wenn meine Antwort hilfreich war, dürft Ihr das gerne durch einen "Upvote" (der kleine "^" unten rechts) zum Ausdruck bringen.

                      paul53P F 2 Antworten Letzte Antwort
                      0
                      • A Ahnungsbefreit

                        @fastfoot @paul53 ...wo Ihr gerade über JS Optimierung redet: Bin ich eigentlich der Einzige, immer mit "use strict" arbeitet und VAR vermeidet und lieber mit LET und CONST arbeitet?

                        paul53P Offline
                        paul53P Offline
                        paul53
                        schrieb am zuletzt editiert von
                        #11

                        @ahnungsbefreit sagte: Bin ich eigentlich der Einzige, immer mit "use strict" arbeitet und VAR vermeidet und lieber mit LET und CONST arbeitet?

                        Nein.

                        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                        A 1 Antwort Letzte Antwort
                        0
                        • paul53P paul53

                          @ahnungsbefreit sagte: Bin ich eigentlich der Einzige, immer mit "use strict" arbeitet und VAR vermeidet und lieber mit LET und CONST arbeitet?

                          Nein.

                          A Online
                          A Online
                          Ahnungsbefreit
                          schrieb am zuletzt editiert von
                          #12

                          @paul53 Danke für die ausführliche Antwort :-)

                          Was würdest Du als der Script-Guru hier im Forum denn empfehlen?

                          Wenn meine Antwort hilfreich war, dürft Ihr das gerne durch einen "Upvote" (der kleine "^" unten rechts) zum Ausdruck bringen.

                          1 Antwort Letzte Antwort
                          0
                          • A Ahnungsbefreit

                            @fastfoot @paul53 ...wo Ihr gerade über JS Optimierung redet: Bin ich eigentlich der Einzige, immer mit "use strict" arbeitet und VAR vermeidet und lieber mit LET und CONST arbeitet?

                            F Offline
                            F Offline
                            fastfoot
                            schrieb am zuletzt editiert von
                            #13

                            @ahnungsbefreit sagte in [gelöst]Problem bei Übergabe per Script !Anfänger!:

                            @fastfoot @paul53 ...wo Ihr gerade über JS Optimierung redet: Bin ich eigentlich der Einzige, immer mit "use strict" arbeitet und VAR vermeidet und lieber mit LET und CONST arbeitet?

                            'use strict' sehe ich hier ganz selten, habe auch noch nicht ganz verstanden wozu es gut ist und verwende es fast nie. schäm....

                            var meide ich gewöhnlich wie der Teufel das Weihwasser, allerdings habe ich mir mit JS angewöhnt meine Variablen auch oft mitten im Code zu deklarieren anstatt zu Beginn einer Funktion. Da streite ich mich immer noch mit mir selbst ob das gut oder böse ist :cold_sweat:

                            iobroker läuft unter Docker auf QNAP TS-451+
                            SkriptRecovery: https://forum.iobroker.net/post/930558

                            A paul53P 2 Antworten Letzte Antwort
                            0
                            • F fastfoot

                              @ahnungsbefreit sagte in [gelöst]Problem bei Übergabe per Script !Anfänger!:

                              @fastfoot @paul53 ...wo Ihr gerade über JS Optimierung redet: Bin ich eigentlich der Einzige, immer mit "use strict" arbeitet und VAR vermeidet und lieber mit LET und CONST arbeitet?

                              'use strict' sehe ich hier ganz selten, habe auch noch nicht ganz verstanden wozu es gut ist und verwende es fast nie. schäm....

                              var meide ich gewöhnlich wie der Teufel das Weihwasser, allerdings habe ich mir mit JS angewöhnt meine Variablen auch oft mitten im Code zu deklarieren anstatt zu Beginn einer Funktion. Da streite ich mich immer noch mit mir selbst ob das gut oder böse ist :cold_sweat:

                              A Online
                              A Online
                              Ahnungsbefreit
                              schrieb am zuletzt editiert von Ahnungsbefreit
                              #14

                              @fastfoot Naja es zwingt Dich, Variablen immer vor der Benutzung zu deklarieren und das hilft ungemein, um Tippfehler zu finden. Und bei const/let ist der Scope (Gültigkeitsbereich) auf den Block limitiert, in der sie deklariert werden und ist daher gerade für Variablen hilfreich, die Du nur in einem kleinen Teilbereich wie z.B. innerhalb einer Schleife oder eines if...else... Statements brauchst. Mit Var ist der Scope nicht beschränkt.

                              Wenn meine Antwort hilfreich war, dürft Ihr das gerne durch einen "Upvote" (der kleine "^" unten rechts) zum Ausdruck bringen.

                              paul53P 1 Antwort Letzte Antwort
                              0
                              • F fastfoot

                                @ahnungsbefreit sagte in [gelöst]Problem bei Übergabe per Script !Anfänger!:

                                @fastfoot @paul53 ...wo Ihr gerade über JS Optimierung redet: Bin ich eigentlich der Einzige, immer mit "use strict" arbeitet und VAR vermeidet und lieber mit LET und CONST arbeitet?

                                'use strict' sehe ich hier ganz selten, habe auch noch nicht ganz verstanden wozu es gut ist und verwende es fast nie. schäm....

                                var meide ich gewöhnlich wie der Teufel das Weihwasser, allerdings habe ich mir mit JS angewöhnt meine Variablen auch oft mitten im Code zu deklarieren anstatt zu Beginn einer Funktion. Da streite ich mich immer noch mit mir selbst ob das gut oder böse ist :cold_sweat:

                                paul53P Offline
                                paul53P Offline
                                paul53
                                schrieb am zuletzt editiert von paul53
                                #15

                                @fastfoot sagte: 'use strict' sehe ich hier ganz selten... und verwende es fast nie.

                                Geht mir ebenfalls so, wobei "use strict" hilft, Fehler nicht erst zur Laufzeit des Skripts zu erkennen.
                                Wenn möglich, verwende ich const. Für lokale Variablen verwende ich let, für globale Variablen var, wobei es an der Stelle eher eine Kommentarfunktion, als ein Unterschied zu let ist.

                                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                1 Antwort Letzte Antwort
                                0
                                • A Ahnungsbefreit

                                  @fastfoot Naja es zwingt Dich, Variablen immer vor der Benutzung zu deklarieren und das hilft ungemein, um Tippfehler zu finden. Und bei const/let ist der Scope (Gültigkeitsbereich) auf den Block limitiert, in der sie deklariert werden und ist daher gerade für Variablen hilfreich, die Du nur in einem kleinen Teilbereich wie z.B. innerhalb einer Schleife oder eines if...else... Statements brauchst. Mit Var ist der Scope nicht beschränkt.

                                  paul53P Offline
                                  paul53P Offline
                                  paul53
                                  schrieb am zuletzt editiert von paul53
                                  #16

                                  @ahnungsbefreit sagte: Mit Var ist der Scope nicht beschränkt.

                                  Das stimmt so nicht: Eine innerhalb einer Funktion mit var deklarierte Variable ist nur innerhalb der Funktion gültig.
                                  Wichtiger Unterschied zu const / let: Die Deklaration mit var kann auch nach Verwendung der Variablen erfolgen, was man aber generell vermeiden sollte.

                                  Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                  Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                  A 1 Antwort Letzte Antwort
                                  0
                                  • paul53P paul53

                                    @ahnungsbefreit sagte: Mit Var ist der Scope nicht beschränkt.

                                    Das stimmt so nicht: Eine innerhalb einer Funktion mit var deklarierte Variable ist nur innerhalb der Funktion gültig.
                                    Wichtiger Unterschied zu const / let: Die Deklaration mit var kann auch nach Verwendung der Variablen erfolgen, was man aber generell vermeiden sollte.

                                    A Online
                                    A Online
                                    Ahnungsbefreit
                                    schrieb am zuletzt editiert von
                                    #17

                                    @paul53 said in [gelöst]Problem bei Übergabe per Script !Anfänger!:

                                    Eine innerhalb einer Funktion mit var deklarierte Variable ist nur innerhalb der Funktion gültig.

                                    Ja, das schon. Aber Beschränkung der Gültigkeit auf untergeordnete Blöcke wie Schleifen oder sonst alles, was in {Klammern} steht, geht mit var überhaupt nicht.

                                    Ok, um diese Off-Topic Diskussion nicht zu lange werden zu lassen: Danke für Eure Antworten, Ihr habt mich eigentlich in meiner Haltung bestätigt, weiterhin 'use strict' zu verwenden und 'var' zu vermeiden.

                                    Wenn meine Antwort hilfreich war, dürft Ihr das gerne durch einen "Upvote" (der kleine "^" unten rechts) zum Ausdruck bringen.

                                    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

                                    865

                                    Online

                                    32.6k

                                    Benutzer

                                    82.0k

                                    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