NEWS
Array von Struktur erzeugen
-
Hallo, ich habe bis dato im js mit
CreateStateStandard Typen erzeugt.
Ich würde jetzt gerne ein Array einer Struktur erzeugen.Struktur:
{active,power,controlable,Link}Array:
Device = [struct1,struct2…..]Wie bekommt man das hin?
@ben1983 oder kann man vielleicht mit createstate nur das Array an sich deklarieren und dann später „einfach“ so zuweisen?
mystruct = {enable,Description}; mystruct.enable = True; mystruct.Description = „Beschreibung“; Setstate(idArray,mystruct);Das wäre wünschenswert.
-
Hallo, ich habe bis dato im js mit
CreateStateStandard Typen erzeugt.
Ich würde jetzt gerne ein Array einer Struktur erzeugen.Struktur:
{active,power,controlable,Link}Array:
Device = [struct1,struct2…..]Wie bekommt man das hin?
const idArray = 'xyz'; createState(idArray, [], {type: 'array', name: 'Device', role: 'list'}); const sruct1 = { enable: true, description: 'Beschreibung' }; const arr = []; arr.push(struct1); arr.push(struct2); // usw. setState(idArray, arr); -
const idArray = 'xyz'; createState(idArray, [], {type: 'array', name: 'Device', role: 'list'}); const sruct1 = { enable: true, description: 'Beschreibung' }; const arr = []; arr.push(struct1); arr.push(struct2); // usw. setState(idArray, arr);@paul53 Danke.
Ich habe es nun so eingefügt:
const idArray = 'javascript.0.Test.Dummy1'; createState(idArray, [], {type: 'array', name: 'Device', role: 'list'}); let struct1 = { enable: true, description: 'Beschreibung', value: 100.0 }; const arr = []; arr.push(struct1); struct1.enable = false; struct1.value =50.5; arr.push(struct1); // usw. setState(idArray, arr);Allerdings sieht es dann in den Parametern so aus:

Kann man die Struktur im Array nicht auch anzeigen?
Ps. Kann man so auf der Visu damit zugreifen?Edit:
Muss die Structs einzeln erzeugen, sonst nimmt er es nicht. (Sonst steht nachher überall das gleiche drin.
Habe es jetzt so: (Allerdings in den Objekten immer noch das Problem).const idArray = 'javascript.0.Test.Dummy1'; createState(idArray, [], {type: 'array', name: 'Device', role: 'list'}); let Device = []; let i = 0; Device[i] = { enable: true, description: 'Beschreibung', value: 100.0 }; i = i +1; Device[i] = { enable: false, description: 'Beschreibung', value: 50.5 }; setState(idArray, Device); -
@paul53 Danke.
Ich habe es nun so eingefügt:
const idArray = 'javascript.0.Test.Dummy1'; createState(idArray, [], {type: 'array', name: 'Device', role: 'list'}); let struct1 = { enable: true, description: 'Beschreibung', value: 100.0 }; const arr = []; arr.push(struct1); struct1.enable = false; struct1.value =50.5; arr.push(struct1); // usw. setState(idArray, arr);Allerdings sieht es dann in den Parametern so aus:

Kann man die Struktur im Array nicht auch anzeigen?
Ps. Kann man so auf der Visu damit zugreifen?Edit:
Muss die Structs einzeln erzeugen, sonst nimmt er es nicht. (Sonst steht nachher überall das gleiche drin.
Habe es jetzt so: (Allerdings in den Objekten immer noch das Problem).const idArray = 'javascript.0.Test.Dummy1'; createState(idArray, [], {type: 'array', name: 'Device', role: 'list'}); let Device = []; let i = 0; Device[i] = { enable: true, description: 'Beschreibung', value: 100.0 }; i = i +1; Device[i] = { enable: false, description: 'Beschreibung', value: 50.5 }; setState(idArray, Device);@ben1983
Habe das Skript kopiert und gestartet. Beim 2. Start wird der Datenpunkt geschrieben (beim 1. Start ist createState() noch nicht fertig).
Besser createState() am Ende ausführen:
if(existsState(idArray)) setState(idArray, Device, true); else createState(idArray, Device, {type: 'array', name: 'Device', role: 'list'}); -
@ben1983
Habe das Skript kopiert und gestartet. Beim 2. Start wird der Datenpunkt geschrieben (beim 1. Start ist createState() noch nicht fertig).
Besser createState() am Ende ausführen:
if(existsState(idArray)) setState(idArray, Device, true); else createState(idArray, Device, {type: 'array', name: 'Device', role: 'list'});@paul53 OK, aber kann den dann doch trotzdem nicht zuweisen, oder?
Also wenn ich creatState ans ende setze, dann kann ich ihn doch vorher nicht zuweisen. ???Ist es schlimm, wenn ein createSTate ohne deine if abfrage bei jedem Scriptstart aufgerufen wird?
Ich hab nämlich einscript, welches nur createstate Befehle beinhaltet.
Das wird bei jedem iobrokerstart einmal aufgerufen.Habe das auch nur hier so rein kopiert.
Die Werte kommen in Wirklichkeit aus einem anderen Skript.Ps. Die Übersicht in den Objekten bekommt man nicht als Array hin?
-
@paul53 OK, aber kann den dann doch trotzdem nicht zuweisen, oder?
Also wenn ich creatState ans ende setze, dann kann ich ihn doch vorher nicht zuweisen. ???Ist es schlimm, wenn ein createSTate ohne deine if abfrage bei jedem Scriptstart aufgerufen wird?
Ich hab nämlich einscript, welches nur createstate Befehle beinhaltet.
Das wird bei jedem iobrokerstart einmal aufgerufen.Habe das auch nur hier so rein kopiert.
Die Werte kommen in Wirklichkeit aus einem anderen Skript.Ps. Die Übersicht in den Objekten bekommt man nicht als Array hin?
@ben1983 sagte: Also wenn ich creatState ans ende setze, dann kann ich ihn doch vorher nicht zuweisen. ???
Wenn der Datenpunkt bereits existiert, wird er geschrieben, andernfalls wird er erstellt.
@ben1983 sagte in Array von Struktur erzeugen:
Ist es schlimm, wenn ein createSTate ohne deine if abfrage bei jedem Scriptstart aufgerufen wird?
Ich hab nämlich einscript, welches nur createstate Befehle beinhaltet.Nein, createState() überschreibt in der Form keine existierenden Datenpunkte. Nur wenn dem createState() ein setState() folgt, muss das Skript zweimal gestartet werden, da setState() beim ersten Start noch nicht funktioniert.
@ben1983 sagte in Array von Struktur erzeugen:
Die Übersicht in den Objekten bekommt man nicht als Array hin?
Ein Array / Objekt wird als JSON in den Datenpunkt geschrieben.
-
@ben1983 sagte: Also wenn ich creatState ans ende setze, dann kann ich ihn doch vorher nicht zuweisen. ???
Wenn der Datenpunkt bereits existiert, wird er geschrieben, andernfalls wird er erstellt.
@ben1983 sagte in Array von Struktur erzeugen:
Ist es schlimm, wenn ein createSTate ohne deine if abfrage bei jedem Scriptstart aufgerufen wird?
Ich hab nämlich einscript, welches nur createstate Befehle beinhaltet.Nein, createState() überschreibt in der Form keine existierenden Datenpunkte. Nur wenn dem createState() ein setState() folgt, muss das Skript zweimal gestartet werden, da setState() beim ersten Start noch nicht funktioniert.
@ben1983 sagte in Array von Struktur erzeugen:
Die Übersicht in den Objekten bekommt man nicht als Array hin?
Ein Array / Objekt wird als JSON in den Datenpunkt geschrieben.
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