NEWS
Wert von DP in Javascript auslesen
-
Ich möchte in Javascript Werte von ioBroker Datenpunkten auslesen.
Wenn ich mir die Javascript-Version eines entsprechenden Blockly-Skripts ansehe sieht das so aus:


Wenn ich das dann in eine Javascript Klasse packe,

und über ein Blockly-Javascript aufrufe,

kennt er die Funktion "getState()" nicht.
Was muss ich tun, damit ich auch in der Klasse den Wert auslesen kann? -
Du musst der Klasse den ioBroker „mitgeben“
Als Beispiel:
class Test{ #iob; constructor(iob) { this.#iob = iob || null; } //Aufruf eines Datenpunktes mit: this.#iob.getState(„Dein Datenpunkt“).val } module.exports = { Test };Hier habe ich mit „iob“ im constructor der Klasse die ioBrokerfunktionen „mitgegeben“. So kannst du dann jede ioBroker-Funktion auch in der Klasse nutzen.
In deinem Skript musst du dann nur wie folgt aufrufen:
const { Test } = require(pathToModule); const test = new Test(this);Mit dem „this“ gibst du, vereinfacht gesprochen, die Befehle mit.
Edit: typo
-
Du musst der Klasse den ioBroker „mitgeben“
Als Beispiel:
class Test{ #iob; constructor(iob) { this.#iob = iob || null; } //Aufruf eines Datenpunktes mit: this.#iob.getState(„Dein Datenpunkt“).val } module.exports = { Test };Hier habe ich mit „iob“ im constructor der Klasse die ioBrokerfunktionen „mitgegeben“. So kannst du dann jede ioBroker-Funktion auch in der Klasse nutzen.
In deinem Skript musst du dann nur wie folgt aufrufen:
const { Test } = require(pathToModule); const test = new Test(this);Mit dem „this“ gibst du, vereinfacht gesprochen, die Befehle mit.
Edit: typo
@ofri2607 Vielen Dank. Das hat mir weiter geholfen.
Ich musste die Klasse aber etwas umbauen. Das Eingekreiste funktioniert so nicht.

Die Klasse läßt sich dann gar nicht kompilieren und wird im aufrufenden Skript nicht gefunden.
Ich hab's in eine Funktion verpackt.

und rufe die dann auf

Dann funktioniert es.
Nochmals Danke @ofri2607 und guten Rutsch.
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