Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Variablen in String einfügen

    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

    Variablen in String einfügen

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

      Hallo,

      ich bin neu bei iobroker und auch mit JavaScript hatte ich bis jetzt eher nichs zu tun.

      Ich habe folgendes Problem:

      Ich habe in der Vis einen ColorPicker der gibt die einzelnen Farbwerte (Rot, Grün und Blau) an drei Datenpunkte (mqtt.0....rot, mqtt.0....gruen, mqtt.0....blau) aus.
      Das funktioniert soweit.

      Das ganze soll an einen ESP8266 gesendet werden, das Senden funktioniert auch. Ich brauche aber die Werte rot, gruen und blau in einem String zusammengefasst welcher folgenden Aufbau haben muss:

      "rgb(rot,gruen,blau)"

      Das ganze soll jedes mal gemacht werden wenn sich einer der Werte ändert.

      Ich hoffe ich konnte mein Problem genau genug beschreiben, dass mir jemand helfen kann bei der Umsetzung.

      Besten Dank

      danny_v1

      T 1 Reply Last reply Reply Quote 0
      • T
        ticaki Developer @danny_v1 last edited by ticaki

        @danny_v1

        Keine Garantie auf Tippfehler 🙂

        var rDevice = 'da.sind.die.datenR';
        var gDevice = 'da.sind.die.datenG';
        var bDevice = 'da.sind.die.datenB';
        var tDevice = 'da.sollen.sie.hin';
        
        var rot = getState(rDevise).val;
        var gruen = getState(gDevise).val;
        var blau = getState(bDevise).val;
        
        var timeout = null;
        
        setRGB();
        
        function setRGB() {
          // Setze Datenpunkt wenn keiner der Punkte innerhalb von 300ms geändert wird
          if (timeout) clearTimeout(timeout);
          timeout = setTimeout(function(){
            setState(tDevice,'rgb('+rot+','+gruen+','+blau+')');
          },300);
        
          // für Timeout 300ms nach der ersten Änderung aus.
          //if (timeout) return;
          //timeout = setTimeout(function(){
          //  setState(tDevice,'rgb('+rot+','+gruen+','+blau+')');
          //  timeout = null;
          //},300);
        }
        
        
        on ({id:rDevice}, function(obj) {
          rot=obj.state.val;
          setRGB();
        });
        
        on ({id:gDevice}, function(obj) {
          gruen=obj.state.val;
          setRGB();
        });
        
        on ({id:bDevice}, function(obj) {
          blau=obj.state.val;
          setRGB();
        });
        

        Wenn das nicht geht ändere bitte folgendes:

        on ({id:rDevice, change:"any", ack:true}, function(obj) {
        

        an allen 3 Stellen.

        Hab das heftig editiert. g

        1 Reply Last reply Reply Quote 0
        • D
          danny_v1 last edited by

          Super danke!!!

          Werde ich heute gleich mal testen.

          rDevice = 'da.sind.die.datenR';
          gDevice = 'da.sind.die.datenG';
          bDevice = 'da.sind.die.datenB';
          tDevice = 'da.sollen.sie.hin';

          da müssen dann meine dementsprechenden Datenpunkt rein?

          zb.: rDevice = mqtt0.Licht.rot;

          ist das richtig?

          Vielen dank schon mal!

          T 1 Reply Last reply Reply Quote 0
          • T
            ticaki Developer @danny_v1 last edited by ticaki

            @danny_v1 said in Variablen in String einfügen:

            rDevice = mqtt0.Licht.rot;

            Fast :), ich hab das "var" und du die '' vergessen. Das muß nachher so aussehen:

            var rDevice = 'mqtt.0.Licht.rot';
            
            1 Reply Last reply Reply Quote 0
            • T
              ticaki Developer last edited by ticaki

              Noch eine Anmerkung mit der du dir in der Zukunft Arbeit ersparst. Verwende informative Topics

              anstatt:

              mqtt0.Licht.rot
              

              z.B.

              mqtt.0.Haus.OG.Wohnzimmer.Licht.rot
              mqtt.0.Licht.Haus.OG.Wohnzimmer.0.rot
              

              Ich hab im Moment einen Topic: /iobroker/display/show/# und wen ich den ändere muß ich zig scripts anpassen... hätte ich nur gleich /Statusdisplay/0/Values/# genommen.

              Ach und ich habe anfangs auch gesagt, dass verwende ich nur zum Testen. 😄

              1 Reply Last reply Reply Quote 0
              • D
                danny_v1 last edited by

                Super ich danke Dir für die ausführliche Hilfe, werde es heute Abend gleich mal testen.

                Auch immer schön, wenn man hilfreiche Ratschläge von erfahrenen Nutzern bekommt so als kompletter Neueinsteiger.

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

                Support us

                ioBroker
                Community Adapters
                Donate

                782
                Online

                31.8k
                Users

                80.0k
                Topics

                1.3m
                Posts

                blockly javascript node-red
                2
                6
                460
                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