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.