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
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden