Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Hilfestellung Rückgabewert einer Funktion

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Hilfestellung Rückgabewert einer Funktion

    This topic has been deleted. Only users with topic management privileges can see it.
    • klausM
      klausM last edited by

      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

      Mic 1 Reply Last reply Reply Quote 0
      • Mic
        Mic Developer @klausM last edited by

        @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.

        klausM 1 Reply Last reply Reply Quote 0
        • klausM
          klausM @Mic last edited by

          @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 Reply Quote 0
          • First post
            Last post

          Support us

          ioBroker
          Community Adapters
          Donate

          646
          Online

          31.9k
          Users

          80.2k
          Topics

          1.3m
          Posts

          2
          3
          364
          Loading More Posts
          • Oldest to Newest
          • Newest to Oldest
          • Most Votes
          Reply
          • Reply as topic
          Log in to reply
          Community
          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
          The ioBroker Community 2014-2023
          logo