Hallo ROGA,
die Doku von IOBroker verwirrt mich. Ich habe PV, demnächst auch eine Wärmepumpe, das Ding interessiert mich daher demnächst wohl auch.
Aber es gibt verschiedene Dokus:
-
https://www.iobroker.net/#de/documentation
Mit einem Verweis auf Github: github.com/ioBroker/ioBroker.javascript - javascript.md -
https://www.iobroker.net/docu/index.htm?lang=de
Die zweite Doku scheint die Altfassung zu sein, dafür enthält sie aber eine Seite "Einführung in JavaScript". Die getState()-Funktion finde ich hingegen nur in der ersten Doku beschrieben. Womit arbeitest Du?
Anyroad - mein Beispiel 2, wo das Objekt Stück für Stück zusammengesetzt wird, ist in dem Fall interessant, wenn Du die Information von verschiedenen Stellen zusammensuchen musst und dafür eventuell auch Funktionen aufrufst. In dem Fall kannst Du nicht ein einzelnes Objektliteral verwenden (oder müsstest die Daten erstmal in Variablen sammeln und die dann im Objektliteral benutzen, was Blödsinn wäre).
Man kann das aber auch mischen.
const pvData = {
produktion: liesProduktion(),
verbrauch: liesVerbrauch(),
speicher: {
batterien: [],
inverter: liesInverter(),
},
}
for (let i=0; i<=3; i++)
pvData.speicher.batterien[i] = liesBatterieStatus(i);
}
// ... anderswo
function liesVerbrauch() {
const verbrauch = {
haus: liesVerbrauchHaus(),
wallbox: 0,
};
if (dings != bums) {
verbrauch.wallbox = 4711;
}
}
und so weiter, das ist eine reine Phantasielösung, zeigt aber, was man tun kann. liesProduktion, liesVerbrauch etc sind Funktionen, die einen einfachen Wert oder ein Objekt mit weiteren Eigenschaften zurückgeben. In speicher.batterien wird erstmal nur ein leeres Array abgelegt und dieses dann in einer Schleife über alle Batterien befüllt. liesBatterieStatus kümmert sich dann nur um den Status der i-ten Batterie (ob Du die von 0-3 oder von 1-4 nummerierst, ist Deine Entscheidung).
liesVerbrauch ist eine beispielhafte Funktion, in der ein Teilobjekt für pvData zusammengebaut wird. Der Hausverbrauch kommt aus einer weiteren Funktion, und die Wallboxdaten hängen an irgendeiner Programmlogik. Hier sind dann Einzelzuweisungen nötig. Da ich dein Umfeld nicht kenne, kann ich natürlich nur solche Dummybeispiele machen und nichts aufschreiben, was für Dich spezifisch passt. Ich müsste erstmal den IOBroker an meinen SENEC-Speicher[1] anschließen, um darüber mehr zu lernen 😀
Da gibt's viele Möglichkeiten, wie man das mixen und rühren kann.
Rolf
sumpsi - posui - obstruxi
Yup, ich bin einer von denen, die das für eine gute Idee hielten und ein Jahr lang auf 70% limitiert wurden, aber die getauschten LiFeP-Akkus funktionieren jetzt störungsfrei. ↩︎