Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Überführung funktionierendes node.js Script

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    15
    1
    467

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.0k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.3k

Überführung funktionierendes node.js Script

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascript
12 Beiträge 3 Kommentatoren 707 Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • U uwe72

    Ich habe ein Script, welches ich erfolgreich auch der Konsole ausführen kann:
    ab4479c0-71e5-4da8-8324-ede7c581d2a1-image.png

    Erfolgreiche Auführung:
    dc2a8aca-6c85-4885-9f03-890608ac55ea-image.png

    Mache ich das gleiche in ioBroker:
    f504c373-7a6a-43c7-936a-d80a28c28b98-image.png

    Bekomme ich eine Fehlermeldung:
    7d451bea-54c8-42e9-a431-9f748a860c83-image.png

    Kann mir hier jemand weiterhelfen. Das wäre super klasse!

    Thomas BraunT Online
    Thomas BraunT Online
    Thomas Braun
    Most Active
    schrieb am zuletzt editiert von Thomas Braun
    #3

    @uwe72
    Bitte KonsolenTEXT in CodeTags posten.

    Die Ausgabe von

    which nodejs && nodejs -v && which node && node -v && which npm && npm -v && apt policy nodejs
    

    schaut wie aus?
    Und als root hampelt man auch nicht herum.

    Linux-Werkzeugkasten:
    https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
    NodeJS Fixer Skript:
    https://forum.iobroker.net/topic/68035/iob-node-fix-skript
    iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

    U 1 Antwort Letzte Antwort
    0
    • Thomas BraunT Thomas Braun

      @uwe72
      Bitte KonsolenTEXT in CodeTags posten.

      Die Ausgabe von

      which nodejs && nodejs -v && which node && node -v && which npm && npm -v && apt policy nodejs
      

      schaut wie aus?
      Und als root hampelt man auch nicht herum.

      U Offline
      U Offline
      uwe72
      schrieb am zuletzt editiert von uwe72
      #4

      @thomas-braun

      Auf der Konsole ausgeführt:

      /usr/bin/nodejs
      v10.19.0
      /usr/bin/node
      v10.19.0
      /usr/bin/npm
      6.14.4
      nodejs:
        Installed: 10.19.0~dfsg-3ubuntu1
        Candidate: 10.19.0~dfsg-3ubuntu1
        Version table:
       *** 10.19.0~dfsg-3ubuntu1 500
              500 http://de.archive.ubuntu.com/ubuntu focal/universe amd64 Packages
              100 /var/lib/dpkg/status
      
      
      Thomas BraunT 1 Antwort Letzte Antwort
      0
      • U uwe72

        @thomas-braun

        Auf der Konsole ausgeführt:

        /usr/bin/nodejs
        v10.19.0
        /usr/bin/node
        v10.19.0
        /usr/bin/npm
        6.14.4
        nodejs:
          Installed: 10.19.0~dfsg-3ubuntu1
          Candidate: 10.19.0~dfsg-3ubuntu1
          Version table:
         *** 10.19.0~dfsg-3ubuntu1 500
                500 http://de.archive.ubuntu.com/ubuntu focal/universe amd64 Packages
                100 /var/lib/dpkg/status
        
        
        Thomas BraunT Online
        Thomas BraunT Online
        Thomas Braun
        Most Active
        schrieb am zuletzt editiert von
        #5

        @uwe72
        Zwar sauber installiert, allerdings die 'falsche' Version.
        Du willst die von nodesource gepackte Variante haben:

        https://forum.iobroker.net/topic/35090/howto-nodejs-installation-und-upgrades-unter-debian

        Linux-Werkzeugkasten:
        https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
        NodeJS Fixer Skript:
        https://forum.iobroker.net/topic/68035/iob-node-fix-skript
        iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

        U 1 Antwort Letzte Antwort
        0
        • AlCalzoneA Offline
          AlCalzoneA Offline
          AlCalzone
          Developer
          schrieb am zuletzt editiert von
          #6

          Kommando zurück... Ich weiß woran es liegt.
          Der Skript-Adapter sandboxed das fs-Modul, damit da bestimmte Dinge nicht gemacht werden.

          Daher existiert fs.promises dort nicht. Ein Workaround wäre, die synchrone FS API zu nutzen.

          Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

          U 1 Antwort Letzte Antwort
          1
          • Thomas BraunT Thomas Braun

            @uwe72
            Zwar sauber installiert, allerdings die 'falsche' Version.
            Du willst die von nodesource gepackte Variante haben:

            https://forum.iobroker.net/topic/35090/howto-nodejs-installation-und-upgrades-unter-debian

            U Offline
            U Offline
            uwe72
            schrieb am zuletzt editiert von uwe72
            #7

            @thomas-braun

            Ich muss mich leider korrigieren. Ich hatte einen Denkfehler. Bei mir läuft iobroker ja in einem Docker-Container. Die vorherige Logausgabe war von meinem NUC, und nicht vom ioBroker Docker Container.

            Diese ist die Ausgabe vom Container:

            
            /usr/bin/nodejs
            v12.20.1
            /usr/bin/node
            v12.20.1
            /usr/bin/npm
            6.14.10
            nodejs:
              Installiert:           12.20.1-1nodesource1
              Installationskandidat: 12.21.0-1nodesource1
              Versionstabelle:
                 12.21.0-1nodesource1 500
                    500 https://deb.nodesource.com/node_12.x buster/main amd64 Packages
             *** 12.20.1-1nodesource1 100
                    100 /var/lib/dpkg/status
                 10.24.0~dfsg-1~deb10u1 500
                    500 http://security.debian.org/debian-security buster/updates/main amd64 Packages
                 10.21.0~dfsg-1~deb10u1 500
                    500 http://deb.debian.org/debian buster/main amd64 Packages
            
            

            Aber auch auf der Konsole des ioBroker Docker containers läuft das Script auf der Konsole.

            1 Antwort Letzte Antwort
            0
            • AlCalzoneA AlCalzone

              Kommando zurück... Ich weiß woran es liegt.
              Der Skript-Adapter sandboxed das fs-Modul, damit da bestimmte Dinge nicht gemacht werden.

              Daher existiert fs.promises dort nicht. Ein Workaround wäre, die synchrone FS API zu nutzen.

              U Offline
              U Offline
              uwe72
              schrieb am zuletzt editiert von uwe72
              #8

              @alcalzone Versuche ich mal umzubauen

              Wobei ich vermutlich daran scheitere:

              Das ist ja der Ausgangszustand:

               const cocoSsd = require('@tensorflow-models/coco-ssd');
               const tf = require('@tensorflow/tfjs-node');
               const fs2 = require('fs').promises;
              
               // Load the Coco SSD model and image.
               Promise.all([cocoSsd.load(), fs2.readFile('/home/iobroker/12-14-2020-tout.jpg')])
               .then((results) => {
                 // First result is the COCO-SSD model object.
                 const model = results[0];
                 // Second result is image buffer.
                 const imgTensor = tf.node.decodeImage(new Uint8Array(results[1]), 3);
                 // Call detect() to run inference.
                 return model.detect(imgTensor);
               })
               .then((predictions) => {
                 console.log(JSON.stringify(predictions, null, 2));
               });
              

              Das ist mein erster Versuch, funktioniert aber noch nicht:

               const cocoSsd = require('@tensorflow-models/coco-ssd');
               const tf = require('@tensorflow/tfjs-node');
               const fs = require('fs');
              
              fs.readFile('/home/iobroker/12-14-2020-tout.jpg', function read(err, data) {
                  if (err) {
                      throw err;
                  }
                  
                  Promise.all([cocoSsd.load()])
                      .then((results) => {
                      const model = results[0];
                      const imgTensor = tf.node.decodeImage(new Uint8Array(data), 3);
                      return model.detect(imgTensor);
                  })
                  .then((predictions) => {
                      console.log(JSON.stringify(predictions, null, 2));
                  });
                  
              });
              
              

              Fehler:

              javascript.0	2021-02-25 11:41:39.008	error	(343176) at processTicksAndRejections (internal/process/task_queues.js:97:5)
              javascript.0	2021-02-25 11:41:39.008	error	(343176) at runMicrotasks (<anonymous>)
              javascript.0	2021-02-25 11:41:39.008	error	(343176) at script.js.common.000_Test6:14:35
              javascript.0	2021-02-25 11:41:39.008	error	(343176) at Object.decodeImage (/opt/iobroker/node_modules/iobroker.javascript/node_modules/@tensorflow/tfjs-node/dist/image.js:204:20)
              javascript.0	2021-02-25 11:41:39.008	error	(343176) at decodeJpeg (/opt/iobroker/node_modules/iobroker.javascript/node_modules/@tensorflow/tfjs-node/dist/image.js:100:19)
              javascript.0	2021-02-25 11:41:39.008	error	(343176) at Object.tidy (/opt/iobroker/node_modules/iobroker.javascript/node_modules/@tensorflow/tfjs-core/src/globals.ts:192:17)
              javascript.0	2021-02-25 11:41:39.007	error	(343176) at Engine.tidy (/opt/iobroker/node_modules/iobroker.javascript/node_modules/@tensorflow/tfjs-core/src/engine.ts:440:17)
              javascript.0	2021-02-25 11:41:39.007	error	(343176) at Engine.scopedRun (/opt/iobroker/node_modules/iobroker.javascript/node_modules/@tensorflow/tfjs-core/src/engine.ts:453:19)
              javascript.0	2021-02-25 11:41:39.007	error	(343176) at /opt/iobroker/node_modules/iobroker.javascript/node_modules/@tensorflow/tfjs-core/src/engine.ts:442:20
              javascript.0	2021-02-25 11:41:39.007	error	(343176) at /opt/iobroker/node_modules/iobroker.javascript/node_modules/@tensorflow/tfjs-node/dist/image.js:102:14
              javascript.0	2021-02-25 11:41:39.007	error	(343176) at NodeJSKernelBackend.decodeJpeg (/opt/iobroker/node_modules/iobroker.javascript/node_modules/@tensorflow/tfjs-node/dist/nodejs_kernel_backend.js:333:33)
              javascript.0	2021-02-25 11:41:39.007	error	(343176) at Object.scalar (/opt/iobroker/node_modules/iobroker.javascript/node_modules/@tensorflow/tfjs-core/src/ops/scalar.ts:54:10)
              javascript.0	2021-02-25 11:41:39.007	error	(343176) at makeTensor (/opt/iobroker/node_modules/iobroker.javascript/node_modules/@tensorflow/tfjs-core/src/ops/tensor_ops_util.ts:39:11)
              javascript.0	2021-02-25 11:41:39.007	error	(343176) script.js.common.000_Test6: Error: values passed to tensor(values) must be a number/boolean/string or an array of numbers/booleans/strings, or a TypedArray
              
              U 1 Antwort Letzte Antwort
              0
              • U uwe72

                @alcalzone Versuche ich mal umzubauen

                Wobei ich vermutlich daran scheitere:

                Das ist ja der Ausgangszustand:

                 const cocoSsd = require('@tensorflow-models/coco-ssd');
                 const tf = require('@tensorflow/tfjs-node');
                 const fs2 = require('fs').promises;
                
                 // Load the Coco SSD model and image.
                 Promise.all([cocoSsd.load(), fs2.readFile('/home/iobroker/12-14-2020-tout.jpg')])
                 .then((results) => {
                   // First result is the COCO-SSD model object.
                   const model = results[0];
                   // Second result is image buffer.
                   const imgTensor = tf.node.decodeImage(new Uint8Array(results[1]), 3);
                   // Call detect() to run inference.
                   return model.detect(imgTensor);
                 })
                 .then((predictions) => {
                   console.log(JSON.stringify(predictions, null, 2));
                 });
                

                Das ist mein erster Versuch, funktioniert aber noch nicht:

                 const cocoSsd = require('@tensorflow-models/coco-ssd');
                 const tf = require('@tensorflow/tfjs-node');
                 const fs = require('fs');
                
                fs.readFile('/home/iobroker/12-14-2020-tout.jpg', function read(err, data) {
                    if (err) {
                        throw err;
                    }
                    
                    Promise.all([cocoSsd.load()])
                        .then((results) => {
                        const model = results[0];
                        const imgTensor = tf.node.decodeImage(new Uint8Array(data), 3);
                        return model.detect(imgTensor);
                    })
                    .then((predictions) => {
                        console.log(JSON.stringify(predictions, null, 2));
                    });
                    
                });
                
                

                Fehler:

                javascript.0	2021-02-25 11:41:39.008	error	(343176) at processTicksAndRejections (internal/process/task_queues.js:97:5)
                javascript.0	2021-02-25 11:41:39.008	error	(343176) at runMicrotasks (<anonymous>)
                javascript.0	2021-02-25 11:41:39.008	error	(343176) at script.js.common.000_Test6:14:35
                javascript.0	2021-02-25 11:41:39.008	error	(343176) at Object.decodeImage (/opt/iobroker/node_modules/iobroker.javascript/node_modules/@tensorflow/tfjs-node/dist/image.js:204:20)
                javascript.0	2021-02-25 11:41:39.008	error	(343176) at decodeJpeg (/opt/iobroker/node_modules/iobroker.javascript/node_modules/@tensorflow/tfjs-node/dist/image.js:100:19)
                javascript.0	2021-02-25 11:41:39.008	error	(343176) at Object.tidy (/opt/iobroker/node_modules/iobroker.javascript/node_modules/@tensorflow/tfjs-core/src/globals.ts:192:17)
                javascript.0	2021-02-25 11:41:39.007	error	(343176) at Engine.tidy (/opt/iobroker/node_modules/iobroker.javascript/node_modules/@tensorflow/tfjs-core/src/engine.ts:440:17)
                javascript.0	2021-02-25 11:41:39.007	error	(343176) at Engine.scopedRun (/opt/iobroker/node_modules/iobroker.javascript/node_modules/@tensorflow/tfjs-core/src/engine.ts:453:19)
                javascript.0	2021-02-25 11:41:39.007	error	(343176) at /opt/iobroker/node_modules/iobroker.javascript/node_modules/@tensorflow/tfjs-core/src/engine.ts:442:20
                javascript.0	2021-02-25 11:41:39.007	error	(343176) at /opt/iobroker/node_modules/iobroker.javascript/node_modules/@tensorflow/tfjs-node/dist/image.js:102:14
                javascript.0	2021-02-25 11:41:39.007	error	(343176) at NodeJSKernelBackend.decodeJpeg (/opt/iobroker/node_modules/iobroker.javascript/node_modules/@tensorflow/tfjs-node/dist/nodejs_kernel_backend.js:333:33)
                javascript.0	2021-02-25 11:41:39.007	error	(343176) at Object.scalar (/opt/iobroker/node_modules/iobroker.javascript/node_modules/@tensorflow/tfjs-core/src/ops/scalar.ts:54:10)
                javascript.0	2021-02-25 11:41:39.007	error	(343176) at makeTensor (/opt/iobroker/node_modules/iobroker.javascript/node_modules/@tensorflow/tfjs-core/src/ops/tensor_ops_util.ts:39:11)
                javascript.0	2021-02-25 11:41:39.007	error	(343176) script.js.common.000_Test6: Error: values passed to tensor(values) must be a number/boolean/string or an array of numbers/booleans/strings, or a TypedArray
                
                U Offline
                U Offline
                uwe72
                schrieb am zuletzt editiert von
                #9

                @AlCalzone

                Danke Dir!

                Habe es nun hinbekommen, musste noch das Uint8Array elimieren.

                Das ist der funktionierende Umbau:

                 const cocoSsd = require('@tensorflow-models/coco-ssd');
                 const tf = require('@tensorflow/tfjs-node');
                
                fs.readFile('/home/clement/tfjs-project/826869587.jpg', function read(err, data) {
                    if (err) {
                        throw err;
                    }
                
                    Promise.all([cocoSsd.load()])
                        .then((results) => {
                        const model = results[0];
                        const imgTensor = tf.node.decodeImage(data, 3);
                        return model.detect(imgTensor);
                    })
                    .then((predictions) => {
                        console.log(JSON.stringify(predictions, null, 2));
                    });
                    
                });
                
                AlCalzoneA 1 Antwort Letzte Antwort
                0
                • U uwe72

                  @AlCalzone

                  Danke Dir!

                  Habe es nun hinbekommen, musste noch das Uint8Array elimieren.

                  Das ist der funktionierende Umbau:

                   const cocoSsd = require('@tensorflow-models/coco-ssd');
                   const tf = require('@tensorflow/tfjs-node');
                  
                  fs.readFile('/home/clement/tfjs-project/826869587.jpg', function read(err, data) {
                      if (err) {
                          throw err;
                      }
                  
                      Promise.all([cocoSsd.load()])
                          .then((results) => {
                          const model = results[0];
                          const imgTensor = tf.node.decodeImage(data, 3);
                          return model.detect(imgTensor);
                      })
                      .then((predictions) => {
                          console.log(JSON.stringify(predictions, null, 2));
                      });
                      
                  });
                  
                  AlCalzoneA Offline
                  AlCalzoneA Offline
                  AlCalzone
                  Developer
                  schrieb am zuletzt editiert von
                  #10

                  @uwe72 Zeilen 9-11 kannst du noch ein bisschen vereinfachen, da du ja jetzt nicht auf mehrere Promises wartest.

                  cocoSsd.load().then(model => {
                      const imgTensor = ...
                  

                  Evtl kannst du das hässliche .then Gedöns auch gegen async/await ersetzen:

                  const cocoSsd = require("@tensorflow-models/coco-ssd");
                  const tf = require("@tensorflow/tfjs-node");
                  
                  fs.readFile(
                    "/home/clement/tfjs-project/826869587.jpg",
                    async function read(err, data) {
                      if (err) {
                        throw err;
                      }
                  
                      const model = await cocoSsd.load();
                      const imgTensor = tf.node.decodeImage(data, 3);
                      const predictions = await model.detect(imgTensor); // ggf. ohne await (?)
                  
                      console.log(JSON.stringify(predictions, null, 2));
                    }
                  );
                  

                  Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                  U 1 Antwort Letzte Antwort
                  0
                  • AlCalzoneA AlCalzone

                    @uwe72 Zeilen 9-11 kannst du noch ein bisschen vereinfachen, da du ja jetzt nicht auf mehrere Promises wartest.

                    cocoSsd.load().then(model => {
                        const imgTensor = ...
                    

                    Evtl kannst du das hässliche .then Gedöns auch gegen async/await ersetzen:

                    const cocoSsd = require("@tensorflow-models/coco-ssd");
                    const tf = require("@tensorflow/tfjs-node");
                    
                    fs.readFile(
                      "/home/clement/tfjs-project/826869587.jpg",
                      async function read(err, data) {
                        if (err) {
                          throw err;
                        }
                    
                        const model = await cocoSsd.load();
                        const imgTensor = tf.node.decodeImage(data, 3);
                        const predictions = await model.detect(imgTensor); // ggf. ohne await (?)
                    
                        console.log(JSON.stringify(predictions, null, 2));
                      }
                    );
                    
                    U Offline
                    U Offline
                    uwe72
                    schrieb am zuletzt editiert von uwe72
                    #11

                    @alcalzone Perfekt, danke! Code funktioniert, aber das untere await muss noch sein.

                    Off-Topic Frage: Weißt Du warum bei diesem Script nie beim Script das Log erscheint, sondern immer nur "im Hauptlog" im Reiter Log? Bei anderen Scripten zeigt es mir das Log auch unter dem Script an.

                    6e10be3f-84ff-49ee-98f0-0dbd5e5ffa03-image.png

                    AlCalzoneA 1 Antwort Letzte Antwort
                    0
                    • U uwe72

                      @alcalzone Perfekt, danke! Code funktioniert, aber das untere await muss noch sein.

                      Off-Topic Frage: Weißt Du warum bei diesem Script nie beim Script das Log erscheint, sondern immer nur "im Hauptlog" im Reiter Log? Bei anderen Scripten zeigt es mir das Log auch unter dem Script an.

                      6e10be3f-84ff-49ee-98f0-0dbd5e5ffa03-image.png

                      AlCalzoneA Offline
                      AlCalzoneA Offline
                      AlCalzone
                      Developer
                      schrieb am zuletzt editiert von
                      #12

                      @uwe72 Keine Ahnung - hab ich auch manchmal, konnte es aber nie gezielt reproduzieren.

                      Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                      1 Antwort Letzte Antwort
                      1
                      Antworten
                      • In einem neuen Thema antworten
                      Anmelden zum Antworten
                      • Älteste zuerst
                      • Neuste zuerst
                      • Meiste Stimmen


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      773

                      Online

                      32.5k

                      Benutzer

                      81.6k

                      Themen

                      1.3m

                      Beiträge
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2025
                      logo
                      • Anmelden

                      • Du hast noch kein Konto? Registrieren

                      • Anmelden oder registrieren, um zu suchen
                      • Erster Beitrag
                        Letzter Beitrag
                      0
                      • Home
                      • Aktuell
                      • Tags
                      • Ungelesen 0
                      • Kategorien
                      • Unreplied
                      • Beliebt
                      • GitHub
                      • Docu
                      • Hilfe