Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
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

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.8k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    895

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

Überführung funktionierendes node.js Script

Scheduled Pinned Locked Moved JavaScript
javascript
12 Posts 3 Posters 787 Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • U Offline
    U Offline
    uwe72
    wrote on last edited by uwe72
    #1

    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!

    AlCalzoneA Thomas BraunT 2 Replies Last reply
    0
    • 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!

      AlCalzoneA Offline
      AlCalzoneA Offline
      AlCalzone
      Developer
      wrote on last edited by AlCalzone
      #2

      @uwe72 Zwei unterschiedliche Node-Versionen installiert?
      fs.promises gibt es seit Node 10

      @Thomas-Braun kann sicher helfen

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

      1 Reply Last reply
      0
      • 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
        wrote on last edited by 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 Reply Last reply
        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
          wrote on last edited by 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 Reply Last reply
          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
            wrote on last edited by
            #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 Reply Last reply
            0
            • AlCalzoneA Offline
              AlCalzoneA Offline
              AlCalzone
              Developer
              wrote on last edited by
              #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 Reply Last reply
              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
                wrote on last edited by 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 Reply Last reply
                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
                  wrote on last edited by 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 Reply Last reply
                  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
                    wrote on last edited by
                    #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 Reply Last reply
                    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
                      wrote on last edited by
                      #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 Reply Last reply
                      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
                        wrote on last edited by 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 Reply Last reply
                        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
                          wrote on last edited by
                          #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 Reply Last reply
                          1
                          Reply
                          • Reply as topic
                          Log in to reply
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes


                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          446

                          Online

                          32.6k

                          Users

                          82.1k

                          Topics

                          1.3m

                          Posts
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                          ioBroker Community 2014-2025
                          logo
                          • Login

                          • Don't have an account? Register

                          • Login or register to search.
                          • First post
                            Last post
                          0
                          • Home
                          • Recent
                          • Tags
                          • Unread 0
                          • Categories
                          • Unreplied
                          • Popular
                          • GitHub
                          • Docu
                          • Hilfe