NEWS
Variablen in String einfügen
-
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
-
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
-
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!
-
@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';
-
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.
-
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.