Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Problem beim umstellen von request auf axios

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Problem beim umstellen von request auf axios

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

      Hi zusammen,
      ich würde gerne meine Scripte wo ich mit request arbeite auf axios umstellen.
      Leider habe ich da schon bei meinen Kameras die ersten Probleme.

      Hier ist die Scriptvariante mit request die funktioniert

      var logging = false;
      
      var source_url = 'http://admin:Leon%23060911@192.168.122.16/snap.jpg'; 
      var dest_path = '/mnt/NAS/Bilder/GartenLinks/';
      var dest_path_tmp = '/mnt/NAS/Bilder/GartenLinks/tmp/';
      	
      var request = require('request');
      var fs      = require('fs');
      
      function sendImage (pfad, nachricht, notificationsound) {
      		sendTo('telegram.0', {text: pfad, caption: nachricht, disable_notification: notificationsound}); // disable_notification true ist an false ist aus
              if (logging) log('Webcam Bild per telegram verschickt');
      }
      // Datum und Uhrzeit ermitteln
      function timeLastData() {
          return formatDate(new Date(), "JJJJ-DD-MM_hh-mm-ss");
      }
      function timeRecord() {
          return formatDate(new Date(), "DD.MM.YYYY hh:mm");
      }
      
      // Bild speichern
      function saveImage() {
      
          request.get({url: source_url, encoding: 'binary'}, function (err, response, body) {
              fs.writeFile(dest_path_tmp + 'GartenLinks.jpg', body, 'binary', function(err) {
      			fs.createReadStream(dest_path_tmp + 'GartenLinks-1.jpg').pipe(fs.createWriteStream(dest_path + timeLastData() +"_GartenLinks.jpg"));
      				if (err) {
      					if (logging) log('Fehler beim Bild speichern: ' + err, 'warn');
      				} else {
      					if (logging) log('Kamerabild gespeichert');
      					sendImage(dest_path_tmp + 'GartenLinks.jpg', getState('javascript.0.Kameraaufnahmen.EventMessage').val, true);
      				}
      		}); 
          });
      
      }
      
      // bei Skriptstart ausführen
      saveImage();
      
      // selbständig Skript wieder anhalten (nach 10s)
      setStateDelayed('javascript.0.scriptEnabled.Kameras.Kamera_Garten_links', false, 10*1000);
      

      Das Script wird von aussen aktiviert, löst einen snapshot aus und deaktiviert sich nach 10 Sekunden wieder.
      Das Script speichert dabei auch ein Bild auf dem NAS mit datum Uhrzeit ab.

      Wenn ich jetzt das Script wie folgt auf axios umbaue

      var logging = false;
      const fs      = require('fs');
      const axios   = require('axios');
      const bild = '/tmp/kamerabild-gartenlinks.jpg';
      const source_url = 'http://admin:Leon%23060911@192.168.122.16/snap.jpg'; 
      
      function sendImage (pfad, nachricht, notificationsound) {
      		sendTo('telegram.0', {text: pfad, caption: nachricht, disable_notification: notificationsound}); // disable_notification true ist an false ist aus
              if (logging) log('Webcam Bild per telegram verschickt');
      }
      
      async function saveImage() {
          const writer = fs.createWriteStream(bild);
          try {
              const response = await axios({
                  url: source_url,
                  method: 'get',        
                  responseType: 'stream'
              })
          
              response.data.pipe(writer);
       
              return new Promise((resolve, reject) => {
                  writer.on('finish', resolve => {
      				fs.createReadStream(bild).pipe(fs.createWriteStream(dest_path + timeLastData() +"_GatenLinks.jpg"));
      				sendImage(bild, getState('javascript.0.Kameraaufnahmen.EventMessage').val, true);
                  });        
              });   
          } catch (err) {
              console.log('Kamera hat ein problem', true);
          }
      }
      
      // bei Skriptstart ausführen
      saveImage();
      
      // selbständig Skript wieder anhalten (nach 10s)
      setStateDelayed('javascript.0.scriptEnabled.Kameras.Kamera_Garten_links', false, 10*1000);
      

      dann geht das Script nicht mehr.
      Im log kommt dann "Kamera hat ein Problem"
      Bei den anderen Kameras klappt die Umstellung, aber nur nicht bei der.
      Die Cam ist eine ieGeek 510.
      Die anderen sind Foscam und Reolink.
      Hat vielleicht jemand eine idee?

      Gruß
      Johnny

      1 Reply Last reply Reply Quote 0
      • First post
        Last post

      Support us

      ioBroker
      Community Adapters
      Donate

      757
      Online

      31.7k
      Users

      79.8k
      Topics

      1.3m
      Posts

      javascript
      1
      1
      162
      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