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
-
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!
-
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.rotz.B.
mqtt.0.Haus.OG.Wohnzimmer.Licht.rot mqtt.0.Licht.Haus.OG.Wohnzimmer.0.rotIch 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. :D