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. Hilfestellung Rückgabewert einer Funktion

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.4k

Hilfestellung Rückgabewert einer Funktion

Scheduled Pinned Locked Moved JavaScript
3 Posts 2 Posters 436 Views 1 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.
  • klausMK Offline
    klausMK Offline
    klausM
    wrote on last edited by
    #1

    Hallo,

    aktuell wird ein von der IP-Kamera ein Bild abgerufen, danach der benötigte Ausschnitt herausgeschnitten und über Pushover verschickt.
    Zur Vorbeugung von Zeitkonflikten sind zwischen den Schritten 2 bzw. 4 Sekunden Wartezeit eingebaut. Funktioniert so mit einem kleinen Blocky.

    Das ganze wollte ich nun eleganter lösen, scheitere aber an meiner zu geringen Spript-Kenntnis.

    1. Bild abrufen –> 2. periodisch prüfen ob Bild vorliegt -> 3. danach Ausschnitt erzeugen –> 4. periodisch prüfen ob Ausschnitt fertig –> zum Schluss Bild versenden,
      Wurde kein Bild erzeugt dann nur Textnachricht ohne Bild pushen.

    Nun habe ich diese Funktion soweit zusammen gelesen bzw. mittels per trial and error erzeugt.
    Leider bin ich zu blöd der Funktion beizubringen, einen Rückgabewert, in dem Fall true oder falsch zu liefern und benötige hierbei Hilfe !

    image = '/opt/iobroker/tmp/cam/klingelalarm.jpg';

    Ein log(ImageExist (image,500,10)); erzeugt undefined.

    /**
     * prüft "tries" mal in "t_interval" Zeitabständen auf vorhandensein der Datei "path"
     */
    function ImageExist(path,t_interval,tries){
    var fs = require('fs');
    var counter = 0;
    var exist;
    
        const o_interval = setInterval(function () { 
            if (fs.existsSync(path)) {
                exist = true;  // nur zum Test
                clearInterval(o_interval);
            } else {
                counter = counter + 1;
                if (counter > tries-1) {
                  exist = false; // nur zum Test
                clearInterval(o_interval);        
                }
            }
        }, t_interval); // setInterval
       // return o_interval.vorhanden; // nur zum Test
        return exist; // geht nicht ich gebe auf ;-(
    } //ImageExist
    

    Gruß Klaus

    MicM 1 Reply Last reply
    0
    • klausMK klausM

      Hallo,

      aktuell wird ein von der IP-Kamera ein Bild abgerufen, danach der benötigte Ausschnitt herausgeschnitten und über Pushover verschickt.
      Zur Vorbeugung von Zeitkonflikten sind zwischen den Schritten 2 bzw. 4 Sekunden Wartezeit eingebaut. Funktioniert so mit einem kleinen Blocky.

      Das ganze wollte ich nun eleganter lösen, scheitere aber an meiner zu geringen Spript-Kenntnis.

      1. Bild abrufen –> 2. periodisch prüfen ob Bild vorliegt -> 3. danach Ausschnitt erzeugen –> 4. periodisch prüfen ob Ausschnitt fertig –> zum Schluss Bild versenden,
        Wurde kein Bild erzeugt dann nur Textnachricht ohne Bild pushen.

      Nun habe ich diese Funktion soweit zusammen gelesen bzw. mittels per trial and error erzeugt.
      Leider bin ich zu blöd der Funktion beizubringen, einen Rückgabewert, in dem Fall true oder falsch zu liefern und benötige hierbei Hilfe !

      image = '/opt/iobroker/tmp/cam/klingelalarm.jpg';

      Ein log(ImageExist (image,500,10)); erzeugt undefined.

      /**
       * prüft "tries" mal in "t_interval" Zeitabständen auf vorhandensein der Datei "path"
       */
      function ImageExist(path,t_interval,tries){
      var fs = require('fs');
      var counter = 0;
      var exist;
      
          const o_interval = setInterval(function () { 
              if (fs.existsSync(path)) {
                  exist = true;  // nur zum Test
                  clearInterval(o_interval);
              } else {
                  counter = counter + 1;
                  if (counter > tries-1) {
                    exist = false; // nur zum Test
                  clearInterval(o_interval);        
                  }
              }
          }, t_interval); // setInterval
         // return o_interval.vorhanden; // nur zum Test
          return exist; // geht nicht ich gebe auf ;-(
      } //ImageExist
      

      Gruß Klaus

      MicM Offline
      MicM Offline
      Mic
      Developer
      wrote on last edited by
      #2

      @klausM
      fs.existsSync() ist asynchron, d.h. dein "return exist" wird normalerweise vorher schon zurückgegeben, bevor überhaupt die Variable exist gefüllt ist. Daher das "undefined".
      D.h. während fs.existsSync() immer noch im Filesystem prüft, ob das File existiert, ist längst das Script durchlaufen.
      Ich bin wahrlich kein async/await-Experte, aber mittels async/await kannst du das sicherlich lösen. Die Experten diesbezüglich hier im Forum können sicherlich besser helfen.

      klausMK 1 Reply Last reply
      0
      • MicM Mic

        @klausM
        fs.existsSync() ist asynchron, d.h. dein "return exist" wird normalerweise vorher schon zurückgegeben, bevor überhaupt die Variable exist gefüllt ist. Daher das "undefined".
        D.h. während fs.existsSync() immer noch im Filesystem prüft, ob das File existiert, ist längst das Script durchlaufen.
        Ich bin wahrlich kein async/await-Experte, aber mittels async/await kannst du das sicherlich lösen. Die Experten diesbezüglich hier im Forum können sicherlich besser helfen.

        klausMK Offline
        klausMK Offline
        klausM
        wrote on last edited by
        #3

        @Mic
        vielen Dank für Rückmeldung. Ähnliches hatte ich vermutet. Habe das nun hier nachgelesen, aber ob ich das jemals umsetzten kann ? ;-).
        LG Klaus

        1 Reply Last reply
        0
        Reply
        • Reply as topic
        Log in to reply
        • Oldest to Newest
        • Newest to Oldest
        • Most Votes


        Support us

        ioBroker
        Community Adapters
        Donate

        483

        Online

        32.7k

        Users

        82.3k

        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