NEWS
Omlet Hühnerstall webhook API
-
Vielen Dank für deine Rückmeldung. Was ist mir wichtig:
Ich möchte übers smarthome den Status in Echtzeit verändern können (Licht an/aus, Tür auf/zu). Den Status z.B. ob die Tür auf/ zu benötige ich nicht in Echtzeit.
Dyndns etc. ist mir zu umständlich (auch, weil mir dazu das Fachwissen fehlt). Das Pollen auf z.B. alle 5 Minuten reicht mir um den Status zu erhalten. Der Befehl, den ich ja lossende, erfolg ja in Echtzeit. Ich denke, das wäre die "einfachste" Umsetzung? -
Vielen Dank für deine Rückmeldung. Was ist mir wichtig:
Ich möchte übers smarthome den Status in Echtzeit verändern können (Licht an/aus, Tür auf/zu). Den Status z.B. ob die Tür auf/ zu benötige ich nicht in Echtzeit.
Dyndns etc. ist mir zu umständlich (auch, weil mir dazu das Fachwissen fehlt). Das Pollen auf z.B. alle 5 Minuten reicht mir um den Status zu erhalten. Der Befehl, den ich ja lossende, erfolg ja in Echtzeit. Ich denke, das wäre die "einfachste" Umsetzung?ja, das wäre dann die api
https://smart.omlet.de/developers/js-sdk
dazu musst du dir ein token generieren, wie im link beschrieben.
Mit den token kannst du dann mittels javascript eine omlet instanz erzeugen.Über die omlet instanz kannst du dann alle befehle ausführen
- alle devices auflisten
- auf ein bestimmtes device zugreifen
- die möglichen aktionen abfragen (in der doku sehe ich auf die schnelle nur door und light)
- den status eines devices abfragen
- aktionen an einem device ausführen
die anderen management funktionen wie user zu gruppen add/del/list wirst du nicht brauchen.
im einfachsten fall wird so ein skript zum öffnen einer tür so aussehen
apitoken und deviceid stehen da natürlich jetzt platzhalter drinimport { createOmlet } from 'smartcoop-sdk'; const omlet = createOmlet('apitoken'); const device = await omlet.getDeviceById('deviceid123456'); const openAction = device.getActions().find((action) -> action.name === 'open'); if (openAction) { await device.action(openAction) } -
Wenn ich "npm install smartcoop-sdk" ausführe bekomme ich folgenden Fehler:
node_modules/oauth2-server/node_modules/lodash oauth2-server <=3.1.1 Depends on vulnerable versions of lodash node_modules/oauth2-server @iobroker/webserver >=1.1.0 Depends on vulnerable versions of oauth2-server node_modules/@iobroker/webserver iobroker.admin >=7.5.0 Depends on vulnerable versions of @iobroker/webserver node_modules/iobroker.admin 6 high severity vulnerabilities To address all issues, run: npm audit fixIch habe die npm version 10.X und ich denke, dass ich die Version 11 benötige, oder woran könnte das liegen?
-
Wenn ich "npm install smartcoop-sdk" ausführe bekomme ich folgenden Fehler:
node_modules/oauth2-server/node_modules/lodash oauth2-server <=3.1.1 Depends on vulnerable versions of lodash node_modules/oauth2-server @iobroker/webserver >=1.1.0 Depends on vulnerable versions of oauth2-server node_modules/@iobroker/webserver iobroker.admin >=7.5.0 Depends on vulnerable versions of @iobroker/webserver node_modules/iobroker.admin 6 high severity vulnerabilities To address all issues, run: npm audit fixIch habe die npm version 10.X und ich denke, dass ich die Version 11 benötige, oder woran könnte das liegen?
Zusätzliche Bibliotheken im JavaScript Adapter musst du in den JavaScript Einstellungen unter
Additional modules eintragen
Evtl musst du im Script den Import mot require umstellenconst inlet = require(„smartcoop-sdk“)Diemeldung ist nur eine Warnung
Kann aktuellnix selbst ausprobieren
Da wir unterwegs sind -
javascript.0 22:08:36.346 error compile failed at: script.js.Aussenanlage_Omlet:2 javascript.0 22:08:36.347 error import { createOmlet } from 'smartcoop-sdk'; javascript.0 22:08:36.348 error ^^^^^^ javascript.0 22:08:36.348 error SyntaxError: Cannot use import statement outside a module javascript.0 22:08:36.349 error at new Script (node:vm:117:7) javascript.0 22:08:36.349 error at JavaScript.createVM (/opt/iobroker/node_modules/iobroker.javascript/build/main.js:1829:25) javascript.0 22:08:36.349 error at JavaScript.prepareScript (/opt/iobroker/node_modules/iobroker.javascript/build/main.js:2096:44) javascript.0 22:08:36.349 error at process.processTicksAndRejections (node:internal/process/task_queues:103:5) javascript.0 22:09:11.622 info Stopping script javascript.0 22:09:11.630 info start JavaScript (Javascript/js) javascript.0 22:09:11.630 error compile failed at: script.js.Aussenanlage_Omlet:2 javascript.0 22:09:11.631 error const inlet = require(„smartcoop-sdk“) javascript.0 22:09:11.631 error javascript.0 22:09:11.631 error SyntaxError: Invalid or unexpected token javascript.0 22:09:11.631 error at new Script (node:vm:117:7) javascript.0 22:09:11.631 error at JavaScript.createVM (/opt/iobroker/node_modules/iobroker.javascript/build/main.js:1829:25) javascript.0 22:09:11.631 error at JavaScript.prepareScript (/opt/iobroker/node_modules/iobroker.javascript/build/main.js:2096:44) javascript.0 22:09:11.631 error at process.processTicksAndRejections (node:internal/process/task_queues:103:5) javascript.0 22:09:30.791 info Stopping script javascript.0 22:09:30.798 info start JavaScript (Javascript/js) javascript.0 22:09:30.798 error compile failed at: script.js.Aussenanlage_Omlet:2 javascript.0 22:09:30.798 error const inlet = require(„smartcoop-sdk“) javascript.0 22:09:30.798 error javascript.0 22:09:30.799 error SyntaxError: Invalid or unexpected token javascript.0 22:09:30.799 error at new Script (node:vm:117:7) javascript.0 22:09:30.799 error at JavaScript.createVM (/opt/iobroker/node_modules/iobroker.javascript/build/main.js:1829:25) javascript.0 22:09:30.799 error at JavaScript.prepareScript (/opt/iobroker/node_modules/iobroker.javascript/build/main.js:2096:44) javascript.0 22:09:30.799 error at process.processTicksAndRejections (node:internal/process/task_queues:103:5)Geht leider beides nicht. smartcoop-sdk ist als Modul in der javainstanz eingetragen
-
javascript.0 22:08:36.346 error compile failed at: script.js.Aussenanlage_Omlet:2 javascript.0 22:08:36.347 error import { createOmlet } from 'smartcoop-sdk'; javascript.0 22:08:36.348 error ^^^^^^ javascript.0 22:08:36.348 error SyntaxError: Cannot use import statement outside a module javascript.0 22:08:36.349 error at new Script (node:vm:117:7) javascript.0 22:08:36.349 error at JavaScript.createVM (/opt/iobroker/node_modules/iobroker.javascript/build/main.js:1829:25) javascript.0 22:08:36.349 error at JavaScript.prepareScript (/opt/iobroker/node_modules/iobroker.javascript/build/main.js:2096:44) javascript.0 22:08:36.349 error at process.processTicksAndRejections (node:internal/process/task_queues:103:5) javascript.0 22:09:11.622 info Stopping script javascript.0 22:09:11.630 info start JavaScript (Javascript/js) javascript.0 22:09:11.630 error compile failed at: script.js.Aussenanlage_Omlet:2 javascript.0 22:09:11.631 error const inlet = require(„smartcoop-sdk“) javascript.0 22:09:11.631 error javascript.0 22:09:11.631 error SyntaxError: Invalid or unexpected token javascript.0 22:09:11.631 error at new Script (node:vm:117:7) javascript.0 22:09:11.631 error at JavaScript.createVM (/opt/iobroker/node_modules/iobroker.javascript/build/main.js:1829:25) javascript.0 22:09:11.631 error at JavaScript.prepareScript (/opt/iobroker/node_modules/iobroker.javascript/build/main.js:2096:44) javascript.0 22:09:11.631 error at process.processTicksAndRejections (node:internal/process/task_queues:103:5) javascript.0 22:09:30.791 info Stopping script javascript.0 22:09:30.798 info start JavaScript (Javascript/js) javascript.0 22:09:30.798 error compile failed at: script.js.Aussenanlage_Omlet:2 javascript.0 22:09:30.798 error const inlet = require(„smartcoop-sdk“) javascript.0 22:09:30.798 error javascript.0 22:09:30.799 error SyntaxError: Invalid or unexpected token javascript.0 22:09:30.799 error at new Script (node:vm:117:7) javascript.0 22:09:30.799 error at JavaScript.createVM (/opt/iobroker/node_modules/iobroker.javascript/build/main.js:1829:25) javascript.0 22:09:30.799 error at JavaScript.prepareScript (/opt/iobroker/node_modules/iobroker.javascript/build/main.js:2096:44) javascript.0 22:09:30.799 error at process.processTicksAndRejections (node:internal/process/task_queues:103:5)Geht leider beides nicht. smartcoop-sdk ist als Modul in der javainstanz eingetragen
-
so hier mal noch eine bessere version
bitte prüfe nochmal Zeile 4 ob du dort auch das apitoken aus dem omlet portal eingetragen hast.
wenn die Anmeldung mit dem skript funktioniert, sollte es auf der konsole einmal die liste aller devices ausgeben
wenn wir daraus die id der tür ablesen können, können wir die in zeile 8
eintragen und nach einem erneuten start sollte sich die tür öffnen. (zeile11)const { createOmlet } = require('smartcoop-sdk'); async function main() { const omlet = await createOmlet('apitoken'); //hier den api token aus dem omlet portal eintragen const devices = await omlet.getDevices(); console.log("Devices:"); console.log(devices); // gibt alle devices aus const device = await omlet.getDeviceById('deviceid123456'); // hier ist aktuell auch noch ein dummy drin, den müssen wir dann aktualisieren wenn wir die liste der devices haben. const openAction = device.getActions().find((action) => action.name === 'open'); //sucht die open aktion im device if (openAction) { // falls die gefunden wurde await device.action(openAction) //wird die aktion dann hier ausgeführt } } main(); -

Ist eingetragen.
Fehler:avascript.0 2026-03-08 09:34:30.509 error TypeError: Cannot read properties of undefined (reading 'state') at createOmletType (/opt/iobroker/node_modules/@iobroker-javascript.0/smartcoop-sdk/dist/factories/type.factory.js:129:29) at createOmletType (/opt/iobroker/node_modules/@iobroker-javascript.0/smartcoop-sdk/dist/factories/type.factory.js:96:25) at createOmletType (/opt/iobroker/node_modules/@iobroker-javascript.0/smartcoop-sdk/dist/factories/type.factory.js:148:24) at /opt/iobroker/node_modules/@iobroker-javascript.0/smartcoop-sdk/dist/omlet.js:24:136 at Array.map (<anonymous>) at Object.<anonymous> (/opt/iobroker/node_modules/@iobroker-javascript.0/smartcoop-sdk/dist/omlet.js:24:34) at Generator.next (<anonymous>) at fulfilled (/opt/iobroker/node_modules/@iobroker-javascript.0/smartcoop-sdk/dist/omlet.js:5:58) at process.processTicksAndRejections (node:internal/process/task_queues:103:5) javascript.0 2026-03-08 09:34:30.508 error Error: Cannot read properties of undefined (reading 'state') javascript.0 2026-03-08 09:34:30.508 error An error happened which is most likely from one of your scripts, but the originating script could not be detected. -

Ist eingetragen.
Fehler:avascript.0 2026-03-08 09:34:30.509 error TypeError: Cannot read properties of undefined (reading 'state') at createOmletType (/opt/iobroker/node_modules/@iobroker-javascript.0/smartcoop-sdk/dist/factories/type.factory.js:129:29) at createOmletType (/opt/iobroker/node_modules/@iobroker-javascript.0/smartcoop-sdk/dist/factories/type.factory.js:96:25) at createOmletType (/opt/iobroker/node_modules/@iobroker-javascript.0/smartcoop-sdk/dist/factories/type.factory.js:148:24) at /opt/iobroker/node_modules/@iobroker-javascript.0/smartcoop-sdk/dist/omlet.js:24:136 at Array.map (<anonymous>) at Object.<anonymous> (/opt/iobroker/node_modules/@iobroker-javascript.0/smartcoop-sdk/dist/omlet.js:24:34) at Generator.next (<anonymous>) at fulfilled (/opt/iobroker/node_modules/@iobroker-javascript.0/smartcoop-sdk/dist/omlet.js:5:58) at process.processTicksAndRejections (node:internal/process/task_queues:103:5) javascript.0 2026-03-08 09:34:30.508 error Error: Cannot read properties of undefined (reading 'state') javascript.0 2026-03-08 09:34:30.508 error An error happened which is most likely from one of your scripts, but the originating script could not be detected.hast du alles kopiert?
Das ist eine Fehlermeldung die beim ersten Lauf auch zu erwarten wäre, da wir ja die konkrete Device ID noch nicht wissen.
Davor hätte es eigentlich eine Liste der vorhandenen Devices (door, light) ausgeben müssen. Habe ich aber eigentlich oben schon geschriebenhier mal das gleiche Skript ergänzt mit ein paar logausgaben, das man sieht wie weit das skript gekommen ist
const { createOmlet } = require('smartcoop-sdk'); async function main() { console.log("start main"); const omlet = await createOmlet('apitoken'); console.log("get devices"); const devices = await omlet.getDevices(); console.log("Devices:"); console.log(devices); const device = await omlet.getDeviceById('deviceid123456'); console.log("get actions"); const openAction = device.getActions().find((action) => action.name === 'open'); console.log("check action"); if (openAction) { console.log("do action"); await device.action(openAction) } } main();und nur nochmal zur Sicherheit weil ich hatte im vorletzten Post nach der API gefragt und du hast mir ein bild der bibliothek im javascript adapter gezeigt.
Du musst dir im omlet portal einen api token generieren.
diesen token entspricht sozusagen deinem userid/passwort. damit weiß omelt um welches konto es sich handelt.
in der dokumentation ist das unter Javascript SDK beschrieben
https://smart.omlet.de/developers/js-sdk
-

Auch mit dem erweiterten Skript von dir funktioniert es leider nicht:
javascript.0 2026-03-08 21:07:59.264 error TypeError: Cannot read properties of undefined (reading 'state') at createOmletType (/opt/iobroker/node_modules/@iobroker-javascript.0/smartcoop-sdk/dist/factories/type.factory.js:129:29) at createOmletType (/opt/iobroker/node_modules/@iobroker-javascript.0/smartcoop-sdk/dist/factories/type.factory.js:96:25) at createOmletType (/opt/iobroker/node_modules/@iobroker-javascript.0/smartcoop-sdk/dist/factories/type.factory.js:148:24) at /opt/iobroker/node_modules/@iobroker-javascript.0/smartcoop-sdk/dist/omlet.js:24:136 at Array.map (<anonymous>) at Object.<anonymous> (/opt/iobroker/node_modules/@iobroker-javascript.0/smartcoop-sdk/dist/omlet.js:24:34) at Generator.next (<anonymous>) at fulfilled (/opt/iobroker/node_modules/@iobroker-javascript.0/smartcoop-sdk/dist/omlet.js:5:58) at process.processTicksAndRejections (node:internal/process/task_queues:103:5) javascript.0 2026-03-08 21:07:59.264 error Error: Cannot read properties of undefined (reading 'state') javascript.0 2026-03-08 21:07:59.264 error An error happened which is most likely from one of your scripts, but the originating script could not be detected. -

Auch mit dem erweiterten Skript von dir funktioniert es leider nicht:
javascript.0 2026-03-08 21:07:59.264 error TypeError: Cannot read properties of undefined (reading 'state') at createOmletType (/opt/iobroker/node_modules/@iobroker-javascript.0/smartcoop-sdk/dist/factories/type.factory.js:129:29) at createOmletType (/opt/iobroker/node_modules/@iobroker-javascript.0/smartcoop-sdk/dist/factories/type.factory.js:96:25) at createOmletType (/opt/iobroker/node_modules/@iobroker-javascript.0/smartcoop-sdk/dist/factories/type.factory.js:148:24) at /opt/iobroker/node_modules/@iobroker-javascript.0/smartcoop-sdk/dist/omlet.js:24:136 at Array.map (<anonymous>) at Object.<anonymous> (/opt/iobroker/node_modules/@iobroker-javascript.0/smartcoop-sdk/dist/omlet.js:24:34) at Generator.next (<anonymous>) at fulfilled (/opt/iobroker/node_modules/@iobroker-javascript.0/smartcoop-sdk/dist/omlet.js:5:58) at process.processTicksAndRejections (node:internal/process/task_queues:103:5) javascript.0 2026-03-08 21:07:59.264 error Error: Cannot read properties of undefined (reading 'state') javascript.0 2026-03-08 21:07:59.264 error An error happened which is most likely from one of your scripts, but the originating script could not be detected.Aber wo sind den die Ausgaben?
Zumindest die ersten paar Inhalte von console.log sollten dort auftauchen.
Wie schon geschrieben. Der Fehler wäre erklärbar. Aber wir brauchen die Ausgaben.hier die logausgabe im scriptfenster.
aus irgendeinem grund kommt der fehler nicht wie früher auch in diesem fenster, sondern im iobroker logso sieht das bei mir im script fenster aus

du siehst die beiden zeilen
start main und
get devices
und das was theoretisch bei dir nach
Devices:
kommt benötigen wirso sieht das bei mir im iobroker log aus

bei mir kommt der fehler 401, was schlich Not Authorized bedeutet, da ich ja keinen api key habe
evtl stellst du mal den log level des javascript adapters auf debug. evtl werden deswegen die ausgaben ausgefiltert -
hast du alles kopiert?
Das ist eine Fehlermeldung die beim ersten Lauf auch zu erwarten wäre, da wir ja die konkrete Device ID noch nicht wissen.
Davor hätte es eigentlich eine Liste der vorhandenen Devices (door, light) ausgeben müssen. Habe ich aber eigentlich oben schon geschriebenhier mal das gleiche Skript ergänzt mit ein paar logausgaben, das man sieht wie weit das skript gekommen ist
const { createOmlet } = require('smartcoop-sdk'); async function main() { console.log("start main"); const omlet = await createOmlet('apitoken'); console.log("get devices"); const devices = await omlet.getDevices(); console.log("Devices:"); console.log(devices); const device = await omlet.getDeviceById('deviceid123456'); console.log("get actions"); const openAction = device.getActions().find((action) => action.name === 'open'); console.log("check action"); if (openAction) { console.log("do action"); await device.action(openAction) } } main();und nur nochmal zur Sicherheit weil ich hatte im vorletzten Post nach der API gefragt und du hast mir ein bild der bibliothek im javascript adapter gezeigt.
Du musst dir im omlet portal einen api token generieren.
diesen token entspricht sozusagen deinem userid/passwort. damit weiß omelt um welches konto es sich handelt.
in der dokumentation ist das unter Javascript SDK beschrieben
https://smart.omlet.de/developers/js-sdk
@jwerlsdf
Hast du in Zeile 5@OliverIO sagte in Omlet Hühnerstall webhook API:
const omlet = await createOmlet('apitoken');
deinen apitoken korrekt eingetragen?
-
@jwerlsdf
Hast du in Zeile 5@OliverIO sagte in Omlet Hühnerstall webhook API:
const omlet = await createOmlet('apitoken');
deinen apitoken korrekt eingetragen?
@Homoran sagte in Omlet Hühnerstall webhook API:
deinen apitoken korrekt eingetragen?
das habe ich bereits sehr oft gefragt.
wenn es an dem lag geb ich sowieso auf.
mein deal ist:
ich bin sorgfältig
DU/ER ist sorgfältig.
wenn es einseitig ist,
dann macht es kein spass -
@Homoran sagte in Omlet Hühnerstall webhook API:
deinen apitoken korrekt eingetragen?
das habe ich bereits sehr oft gefragt.
wenn es an dem lag geb ich sowieso auf.
mein deal ist:
ich bin sorgfältig
DU/ER ist sorgfältig.
wenn es einseitig ist,
dann macht es kein spass@OliverIO ich muss ehrlich sagen, ich wüsste jetzt nicht ob der zwischen die Anführungszeichen kommen müsste, oder ohne, und wenn ja, ob er die richtigen genommen hat. also keine Backticks o.ä.
-
@homoran
natürlich habe ich den token dort zwischen die Anführungszeichen eingetragen. Alternativ würde ich auch den token per pn schicken um definitiv das Problem von meiner Seite auszuschließen. Der Token ist von der Seite 1zu1 kopiert, kann also am "abschreiben" nicht liegen ;)

