NEWS
Texte von mehreren SV in eine SV schreiben
-
@hanan Texte fügt man nicht mit erzeuge Liste mit, sondern mit erstelle Text aus zusammen.
-
Hallo Paul
Das habe ich auch versucht, leider ohne Erfolg.Habe gesehen, dass eine SV nicht vom Typ Zeichenkette ist sondern Werteliste. Daher habe ich gedacht, dass das der Fehler ist, leider nicht.
Was möchte ich tun:
Ich habe eine SV Typ Zeichenkette in die ich folgendes schreiben möchte.
SV1 leer = auslassen, SV1 mit Text = Text in SV mit einem ;
SV2 leer = auslassen, SV2 mit Text = Text in SV mit einem ;
SV3 leer = auslassen, SV3 mit Text = Text in SV
(im Moment ist SV1 noch mit Typ Werteliste und SV2 und SV3 sind mit Typ Zeichenkette)Dieses muss nicht zwingend mit Blockly sein, doch mit der Skript-Sprache bin ich nicht so der Anton...
-
@hanan sagte in Texte von mehreren SV in eine SV schreiben:
Das habe ich auch versucht, leider ohne Erfolg.
Kannst du das mal zeigen, das muss auch mit deinen Wünschen gehen, auch wenn es dann wüst aussieht
-
Hallo Homoran
Hier mal mein Blockly:
schedule("* * * * *", function () { setState("hm-rega.0.2633"/*Heute ist*/, ([getState("hm-rega.0.25018").val,getState("hm-rega.0.3365").val,getState("hm-rega.0.39794").val].join(''))); });
(freier Tag = SV1; Ist-XTAG-Heute-Name = SV2;IST-Feiertag-Heute-Name = SV3)
Hier die Fehlermeldung:
javascript.0 2019-06-07 13:41:00.010 warn at Timer.listOnTimeout (timers.js:290:5)
javascript.0 2019-06-07 13:41:00.010 warn at tryOnTimeout (timers.js:323:5)
javascript.0 2019-06-07 13:41:00.010 warn at ontimeout (timers.js:498:11)
javascript.0 2019-06-07 13:41:00.010 warn at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:501:7)
javascript.0 2019-06-07 13:41:00.006 warn at /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:543:11
javascript.0 2019-06-07 13:41:00.006 warn at Job.invoke (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:173:10)
javascript.0 2019-06-07 13:41:00.006 warn at Job.nodeSchedule.scheduleJob [as job] (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1181:34)
javascript.0 2019-06-07 13:41:00.006 warn at Object.<anonymous> (script.js.common.Programme_ioBroker.Heute_ist:2:3)
javascript.0 2019-06-07 13:41:00.005 warn at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1258:20)
javascript.0 2019-06-07 13:41:00.004 warn State "hm-rega.0.2633" not found -
Ich fürchte da reden wir aneinander vorbei.
Das sieht für mich aus, als ob er eine Werteliste ausliest.
Dort wird üblicherweise nur eine Zahl gespeichert und die Wird in der Rega übersetzt.ioBroker bekommt aber nur die Info über die Zahlen
EDIT:
Da stand doch eben noch ganz was anderes?????!!!! -
@hanan sagte:
javascript.0 2019-06-07 13:41:00.004 warn State "hm-rega.0.2633" not found
Das hat nichts mit der Textverknüpfung zu tun. Offenbar gibt es Probleme mit dem Datenpunkt "Heute ist". Welche Eigenschaften hat er (bitte RAW in code tags) ?
-
Aus dem Kopf:
Eben stand da noch was von Heute ist: 1,3 -
Hallo paul53, hallo Homoran
Jep, habe die SV "Heite ist" in ioBroker neu eingelesen und es funzt.
Leider wird, wie bereits festgestellt, die SV1-Werteliste nur als Zahl dargestellt.Frage, wie kann ich es machen, dass wenn kein Text in der SV ist diese nicht mit einem ; getrennt wird?
schedule("* * * * *", function () { setState("hm-rega.0.2633"/*Heute ist*/, ([getState("hm-rega.0.25018").val,'; ',getState("hm-rega.0.3365").val,'; ',getState("hm-rega.0.39794").val].join(''))); });
-
@hanan sagte in Texte von mehreren SV in eine SV schreiben:
Leider wird, wie bereits festgestellt, die SV1-Werteliste nur als Zahl dargestellt.
Du musst vorher eine Ersetzung der Ziffern durch den gewünschten Text machen.
@hanan sagte in Texte von mehreren SV in eine SV schreiben:
wie kann ich es machen, dass wenn kein Text in der SV ist diese nicht mit einem ; getrennt wird?
Beim Erzeugen der jeweiligen Werte aus den Ziffern bereits dort ein Semikolon dranhängen, oder eben nicht.
Dazu musst du mit Variablen arbeiten
-
Hallo Homoran
Ist vielleicht nicht das sauberste, aber könnte funktionieren...
var freier_Tag_Name; schedule("* * * * *", function () { if (getState("hm-rega.0.25018").val == 0) { freier_Tag_Name = 'unbekannt'; } else if (getState("hm-rega.0.25018").val == 1) { freier_Tag_Name = 'Arbeit'; } else if (getState("hm-rega.0.25018").val == 2) { freier_Tag_Name = 'Wochenende'; } else if (getState("hm-rega.0.25018").val == 3) { freier_Tag_Name = 'Frei'; } else if (getState("hm-rega.0.25018").val == 4) { freier_Tag_Name = 'Ferien'; } else if (getState("hm-rega.0.25018").val == 5) { freier_Tag_Name = 'Urlaub'; } setStateDelayed("hm-rega.0.2633"/*Heute ist*/, (String(freier_Tag_Name)), 1000, false); if (getState("hm-rega.0.3365").val == '' && getState("hm-rega.0.39794").val == '') { setStateDelayed("hm-rega.0.2633"/*Heute ist*/, (String(freier_Tag_Name)), 1000, false); } else if (getState("hm-rega.0.3365").val != '' && getState("hm-rega.0.39794").val == '') { setStateDelayed("hm-rega.0.2633"/*Heute ist*/, ([freier_Tag_Name,'; ',getState("hm-rega.0.3365").val].join('')), 1000, false); } else if (getState("hm-rega.0.3365").val == '' && getState("hm-rega.0.39794").val != '') { setStateDelayed("hm-rega.0.2633"/*Heute ist*/, ([freier_Tag_Name,'; ',getState("hm-rega.0.39794").val].join('')), 1000, false); } else if (getState("hm-rega.0.3365").val != '' && getState("hm-rega.0.39794").val != '') { setStateDelayed("hm-rega.0.2633"/*Heute ist*/, ([freier_Tag_Name,'; ',getState("hm-rega.0.39794").val,'; ',getState("hm-rega.0.3365").val].join('')), 1000, false); } });