Rolf B: JavaScript

Beitrag lesen

Hallo ROGA,

an Code wie a = obj1.Dings.Bums.value sind automatisch mehrere Objekte beteiligt. In obj1 findest Du ein Objekt mit Eigenschaft Dings. In der Eigenschaft Dings findest Du ein weiteres Objekt, das die Eigenschaft Bums hat. Und in Bums steht ein Objekt mit der Eigenschaft value.

Um sowas zu erzeugen, kannst Du geschachtelte Objektliterale verwenden. Das könnte so aussehen (ich habe noch ein paar weitere Eigenschaften hinzugemixt):

const obj1 = {
   Dings: {
      Bums: {
         value: 8,
         name: 'Hugo'
      },
      Blub: 7
   },
   Bla: 3
};

Wenn Du sowas per Code Stück für Stück aufbaust, musst Du die Objekte Stück für Stück zusammensetzen. An Stelle von new Object() (was nicht falsch ist), kann man einfacher das leere Objektliteral {} verwenden, damit passiert das Gleiche.

const obj1 = {};
obj1.Dings = {};
obj1.Bla = 3;
obj1.Dings.Bums = {};
obj1.Dings.Blub = 7;
obj1.Dings.Bums.value = 8;
obj1.Dings.Bums.name = 'hugo';

Das Objekt, das so entsteht, ist das Gleiche - es ergibt nur keinen Sinn, es so zu tun, wenn die Zuweisungen wie hier direkt untereinander stehen. Aber wenn Du die Teile über mehrere Codestellen verteilt einsammelst, ergibt das mehr Sinn.

Generell - bevor Du zu viel baust, beschäftige Dich zunächst mal damit, was der Adapter für deine Solaranlage von sich aus anbietet. Es kann gut sein, dass der bereits eine Objekthierarchie bereitstellt.

Ich habe gerade nur etwas die Doku von IOBroker überflogen, und bin erstmal von der Komplexität erschlagen. Das ganze Ding basiert auf Node.js - was wichtig ist zu wissen. Das ist auch eine JavaScript-Umgebung, aber es ist kein Browser. D.h. es gibt dort ganz andere Programmierschnittstellen. Der JavaScript-Kern ist gleich, aber es gibt eine Menge drumherum, und das Drumherum ist im Browser und in Node sehr verschieden. Unser Wiki bezieht sich nur auf JavaScript im Browser. Der /JavaScript-Teil geht vor allem auf JavaScript ein, aber es kann auch sein, dass einige Beispiele Dinge tun, die nur im Browser funktionieren.

Möglicherweise - soweit habe ich die Doku nicht studiert - kann man im IOBroker auch Script bereitstellen, das auf den von IOBroker ausgelieferten HTML Seiten abläuft. Du musst also immer genau aufpassen, für welche Plattform Du programmierst.

Diese "getSate"-Funktion (die vermutlich getState heißt) - ist das etwas von Dir oder von IOBroker?

Rolf

--
sumpsi - posui - obstruxi