NEWS
setStateAsync in externem js-file evtl mit require??
-
Hallo zusammen!
Ich habe eine JS-Funktion, die eine ausgelagerte Funktion aufruft:// Beschreibe diese Funktion … async function mywrite(cmd) { my = require('../../../iobroker-data/modules/mod1.js'); result = await my.mywrite(cmd); // weiteres return result; }
die Datei mod1.js lautet
async function mywrite(cmd) { // do some stuff // hier soll der iobroker-State 0_userdata.0.errstate auf true gesetzt werden, nur wie geht das???? return myresult; }
Wie setzt man in dieser augelagerten Datei einen iobroker-state
0_userdata.0.errstate
??
Die FunktionensetState und setStateAsync
sind in der ausgelagerten Datei nicht verfügbar!
Ich vermute, man muss am Anfang der ausgelagerten Datei einrequire
einfügen. Nur welches Module und wie genau mache ich das?
Ich habe im Netz mir einen Wolf gesucht, daher wäre ich dankbar über- Eine Lösung
- Einen Hinweis nach welchen Stichworten ich hätte suchen müssen, um die Lösung selbst herauszufinden.
Danke!
Warum die ausgelagerte Datei? Weil die Funktion dort sehr lange ist und immer mal wieder geändert werden muss und in vielen Skripten Verwendung findet. Mir ist bekannt, dass ich den javascript-Adapter nach jeder Änderung dieser ausgelagerten Datei neu starten muss. Und bisher möchte ich mich nicht in die Adapter-Entwicklung einarbeiten, außer es geht nicht anders.
-
@axel21 ich würde das so lösen:
async function mywrite(cmd, setStateFunc) { // do some stuff if (typeof setStateFunc === "function") await setStateFunc('0_userdata.0.errstate', true) // hier soll der iobroker-State 0_userdata.0.errstate auf true gesetzt werden, nur wie geht das???? return myresult; }
Aufruf mit
await mywrite(cmd, setStateAsync);
A.
-
wenn man globalThis mit übergibt, bekommt man einen zeiger auf den aktuellen kontext in dem dann alle befehle verfübar sind
function test(iob) { console.log(iob); iob.setStateAsync(...... } test(globalThis);
-
@oliverio
ist das neue? letztes oder vorletztes Jahr ging das noch mitthis
-
@ticaki
Habe jetzt erst danach geschaut.
Weiß nicht wann das eingeführt wurde.this könnte schwierig sein, wenn du dich in einem objekt kontext befindest. da ist dann this uU nicht identisch.