NEWS
Hilfe setState und getState Kommando mit Variablen
-
Hallo zusammen,
ich baue gerade einen Teil meiner Scripte und Homematic Programme um.
Hierfür wäre es sinnvoll wenn ich teilweise bei setState oder getState keine feste ID oder Namen verwende sondern diesen aus Variablen zusammenbaue.
z.B.
setState("idCount" + VdM + "E", (getState("javascript.0.Manuell.Systemvariable.Strom." + dJ + ".eCount" + VdM + dJ + "E").val));
Die Variablen sind alle vorhanden zumindest werden mir Sie über log(VdM + dJ) ausgegeben.
z.B.
VdM (Langname des Vormonats im Moment also September)
dJ (Jahr in Langform im Moment also 2018)
das setState soll so aussehen:
setState(idCountSeptemberE)
das getState soll so aussehen:
getState("javascript.0.Manuell.Systemvariable.Strom.2018.eCountSeptember2018E").val
Vermute ist ein Problem mit den Anführungszeichen, aber ich sehe den Fehler nicht.
Habe auch keine Ahnung wie ich mir das mal anzeigen lassen kann mit aufgelösten Variablen.
Hoffe Ihr könnt mir helfen.
Danke
Gruß Zippolighter
-
Auf den ersten Blick sehe ich den Fehler auch nicht.
So kannst du dir die Zeichenketten mit den Variablen aufgelöst anzeigen lassen.
console.log("idCount" + VdM + "E"); console.log("javascript.0.Manuell.Systemvariable.Strom." + dJ + ".eCount" + VdM + dJ + "E");
-
Du kannst variablen namen (ich nehme an idCountSeptemberE soll einer sein) nicht so dynamisch bauen und dann direkt benutzen. Wenn Du es so baust ist es eine Zeichenkette
-
Was ist das idCountSeptemberE? Eine Variable?
Möchtest Du quasi "doppelt indirekt" den Namen der Variablen aus Strings zusammenbauen?
Das wüsste ich jetzt auch ned, wie man das macht… würd ich glaub ich auch eher mit nem Array lösen.
So, wie Du's schreibst versucht er die Daten nach "javascript.0.idCountSeptemberE" zu schreiben (den es vmtl. nicht gibt).
-
Ja das ist korrekt, das sind variablen.
Also schon mal verstanden das es als String verwendet. Jemand eine Idee wie ich einen Variablen Namen dynamisch bauen kann.
-
Hallo,
wie es apollon77 schon sagt, wird beim Zusammenbau eine Zeichenkette daraus. Deshalb kannst du keinen Variablen Namen zusammenbauen. Dukannst aber den Objektnamen mit Adapter.Instanz.Objektname dynamisch so zusammenbauen. Beim getState() hast du das ja gemacht. Genauso musst du es beim setState() machen.
Pix