NEWS
Listen: Aus Objekt erstellen oder auf Objekt arbeiten?
-
Moin,
vielleicht ist es eine "dumme" Frage, aber ich habe bisher keine Lösung gefunden und auch im Netz nichts passendes gefunden.
Welche Möglichkeit gibt es eine Liste als Objekt zu speichern bzw. dann mit dem Objekt zu arbeiten? Genau genommen geht es mir darum, eine Liste aus einem Objekt einzulesen.
Generell habe ich schon mit Listen gearbeitet und diese auch als Objekt gespeichert. Das funktioniert. Nun möchte ich aber meine Listen im Objekt speichern und beim nächsten Aufruf die selbe Liste aus dem Objekt wieder auslesen.
Als Beispiel:
Ich habe eine Liste erzeugt und in einem Objekt gespeichert:[ Ventil1, Ventil2, Ventil3 ]
Beim nächsten Aufruf soll die Liste aus dem Objekt ausgelesen werden und geändert (z.B. 4 hinzugefügt werden). Dann soll diese wieder in dem Objekt gespeichert werden.
[ Ventil1, Ventil2, Ventil3, Ventil4 ]
Ich hab schon ein bisschen was getestet, aber irgendwie bekomme ich es nicht hin, aus einem Objekt die Liste vernünftig einzulesen:
Vielleicht gibt es ja auch eine andere Lösung.... ich will für meine Gartenbewässerung in einem Objekt speichern, welche Kreise ich bewässern will. In meinem Fall als Liste. D.h. wenn die Witterung eine Bewässerung empfiehlt, will ich aus der Liste auslesen, welche Ventile bewässert werden sollen - z.B. muss das Gemüsebeet nicht bewässert werden, wenn kein Gemüse angepflanzt ist.
Vielen Dank!
-
@ckassiopaia
Zu Beginn enthält "Test" einen String, zum Schluss wird eine Liste in den gleichen Datenpunkt geschrieben. Das kann nicht funktionieren. In einem Datenpunkt vom Typ "array" werden Listen als JSON gespeichert.
Was soll der Datenpunkt enthalten?@ckassiopaia sagte in Listen: Aus Objekt erstellen oder auf Objekt arbeiten?:
z.B. muss das Gemüsebeet nicht bewässert werden, wenn kein Gemüse angepflanzt ist.
Wie soll diese Bedingung erfasst (eingegeben) werden?
-
@ckassiopaia sagte: ich will für meine Gartenbewässerung in einem Objekt speichern, welche Kreise ich bewässern will.
Nimm einen String-Datenpunkt und trage z.B. ein Beet3,Beet1. Dann wird mit dem folgenden Blockly erst Beet3 und dann Beet1 für jeweils 30 Minuten bewässert:
Die beiden Listen Beete und ids müssen korrespondieren.
-
@ckassiopaia sagte: Ich habe eine Liste erzeugt und in einem Objekt gespeichert:
In einem DP vom Typ "array" sieht die Liste so aus (JSON):
["Ventil1","Ventil2","Ventil3"]
Wenn der DP vom Typ "array" ist, muss er ohne jegliche Wandlung eingelesen werden, denn die Wandlung von JSON in ein Array erledigt dann der Javascript-Adapter.
-
Danke für die vielen Antworten...
@paul53
Genau so hatte ich das, da ich auch bisher davon ausgegangen war. Ich habe mir eine Liste erzeugt und das als Objekt gespeichert. Das Ergebnis war wie von dir geschrieben ein Typ "array" und sah genau so aus, wie bei dir.Allerdings wurde beim Einlesen in die Variable "Liste" eben keine Liste erzeugt. Ich hatte genau den selben Test, wie du gepostet hattest, und das "füge als letzte ein" hat einen Fehler geworfen, da "Liste" keine Liste war. Bist du dir sicher, dass dein Beispiel funktioniert? Bei mir hat es nicht funktioniert... oder ich hatte irgendeinen anderen Konten im Script....
Dann hatte ich auch mit Strings ausprobiert, aber das führte nicht zum Erfolg, da ich davon ausgegangen war (gehofft hatte), dass die "Listen"-Funktionen direkt mit Objekten arbeiten können.
Ich hab es jetzt auch über einen String (also Objekt) gelöst und wie in dem ersten Beispiel von dir hat es funktioniert... Mit einem String finde ich es unleserlicher als mit einem Array, daher hatte ich gehofft, das ein Array ausreicht. -
@paul53 sagte in Listen: Aus Objekt erstellen oder auf Objekt arbeiten?:
Was soll der Datenpunkt enthalten?
@ckassiopaia sagte in Listen: Aus Objekt erstellen oder auf Objekt arbeiten?:
z.B. muss das Gemüsebeet nicht bewässert werden, wenn kein Gemüse angepflanzt ist.
Wie soll diese Bedingung erfasst (eingegeben) werden?
Ich wollte dort "einfach" eine Liste mit den "Beeten" bzw. "Ventilen" anlegen. Wie du in einem letzten Beispiel auch gepostet hattest. Das hatte bei mir nicht funktioniert.
Jetzt hab ich es wie in deinem 2. Beispiel. Allerdings direkt die Datenobjekte zu den Ventilen in den String eingetragen... vielleicht ändere ich das noch mal, so wie du es gepostet hast mir den Namen
-
@ckassiopaia sagte: oder ich hatte irgendeinen anderen Konten im Script....
In deinem gezeigten Skript hast du Text in Liste gewandelt. Es darf nicht gewandelt werden, wenn eine Liste eingelesen wird.
@paul53 sagte in Listen: Aus Objekt erstellen oder auf Objekt arbeiten?:
Wenn der DP vom Typ "array" ist, muss er ohne jegliche Wandlung eingelesen werden, denn die Wandlung von JSON in ein Array erledigt dann der Javascript-Adapter.