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. Blockly
  5. Netatmo Presence Objekt ID für Bewegung

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

Netatmo Presence Objekt ID für Bewegung

Geplant Angeheftet Gesperrt Verschoben Blockly
24 Beiträge 2 Kommentatoren 1.4k Aufrufe 5 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.
  • F frajop

    Hi,
    du musst jede deiner CAMs separat abfragen. Den o.g. Datenpunkt gibt es für jede Kamera. Einfach mal unter Objekte die Struktur unter netatmo.0 anschauen.

    Mein script sieht so aus:

    var timer;
    var request;  
    var message = 'CAM Bewegung erkannt'        
    
    on('netatmo.0.xxxx.LastEventData.LastEventId', function (obj) {
            sendImage(); });
    
    
    function sendImage() 
    {
        var fs = require('fs');
        var source_url;
    
        // Datum und Zeit
        var today = new Date();
        var day = today.toLocaleDateString();
        var timestamp = today.toLocaleTimeString().replace(/:/g,"-"); 
    
        // Zielpfad lokal + Dateiname
        var dest_path   = '/iobroker/iobroker-data/files/webcam/' + 'image-' + day + '-' + timestamp + '.jpg' ;
        //log(dest_path);
       
       // aktuelle URL 
        source_url = getState("netatmo.0.xxxxx.yyyyy.live.picture").val;
        log(source_url);
    
        request.get({url: source_url, encoding: 'binary'}, function (err, response, body) 
        {
    	   fs.writeFile(dest_path, body, 'binary', function(err) 
           {
                if (err) 
                {
                    log('Fehler beim Bild speichern: ' + err, 'warn');
                    setTimeout(function() { sendTelegram('Fehler beim Bild speichern!'); }, 2000); 
                }
                else
                {
                    setTimeout(function() { sendTelegram(dest_path); }, 2000); 
                }
    	});
        });
    }
    
    function sendTelegram (fname) { 
        try {
            sendTo('telegram.0', {
                text:                   fname,
                caption:                message, 
                disable_notification:   true
            });
        }
        catch(err) { if (err.code != "ENOENT") log(err); }  
        setTimeout(function() {  }, 3000); 
    }
    

    xxxx und yyyy musst du ändern, das sind die Namen deiner CAM.

    Bei Änderung von LastEventId wird die Bild-URL ermittelt, das Bild geladen und lokal mit Zeitstempel abgespeichert und an Telegram gesendet. (Achtung, Bild wird lokal nicht gelöscht!)

    Frank

    D Offline
    D Offline
    dulles
    schrieb am zuletzt editiert von
    #6

    @frajop

    Hey,
    ich noch einmal. Ich habe auf dem Schlauch gestanden.
    Habe den JS von Dir entsprechend angepasst und den für jede Kamera.
    Super Sache, läuft wunderbar.

    Jetzt muss ich nur zusehen, dass die Daten regelmässig oder gleich nach dem Versenden lokal gelöscht werden. Muss sie nicht gespeichert aufheben.

    Danke

    dulles

    1 Antwort Letzte Antwort
    0
    • F frajop

      Hi,
      du musst jede deiner CAMs separat abfragen. Den o.g. Datenpunkt gibt es für jede Kamera. Einfach mal unter Objekte die Struktur unter netatmo.0 anschauen.

      Mein script sieht so aus:

      var timer;
      var request;  
      var message = 'CAM Bewegung erkannt'        
      
      on('netatmo.0.xxxx.LastEventData.LastEventId', function (obj) {
              sendImage(); });
      
      
      function sendImage() 
      {
          var fs = require('fs');
          var source_url;
      
          // Datum und Zeit
          var today = new Date();
          var day = today.toLocaleDateString();
          var timestamp = today.toLocaleTimeString().replace(/:/g,"-"); 
      
          // Zielpfad lokal + Dateiname
          var dest_path   = '/iobroker/iobroker-data/files/webcam/' + 'image-' + day + '-' + timestamp + '.jpg' ;
          //log(dest_path);
         
         // aktuelle URL 
          source_url = getState("netatmo.0.xxxxx.yyyyy.live.picture").val;
          log(source_url);
      
          request.get({url: source_url, encoding: 'binary'}, function (err, response, body) 
          {
      	   fs.writeFile(dest_path, body, 'binary', function(err) 
             {
                  if (err) 
                  {
                      log('Fehler beim Bild speichern: ' + err, 'warn');
                      setTimeout(function() { sendTelegram('Fehler beim Bild speichern!'); }, 2000); 
                  }
                  else
                  {
                      setTimeout(function() { sendTelegram(dest_path); }, 2000); 
                  }
      	});
          });
      }
      
      function sendTelegram (fname) { 
          try {
              sendTo('telegram.0', {
                  text:                   fname,
                  caption:                message, 
                  disable_notification:   true
              });
          }
          catch(err) { if (err.code != "ENOENT") log(err); }  
          setTimeout(function() {  }, 3000); 
      }
      

      xxxx und yyyy musst du ändern, das sind die Namen deiner CAM.

      Bei Änderung von LastEventId wird die Bild-URL ermittelt, das Bild geladen und lokal mit Zeitstempel abgespeichert und an Telegram gesendet. (Achtung, Bild wird lokal nicht gelöscht!)

      Frank

      D Offline
      D Offline
      dulles
      schrieb am zuletzt editiert von
      #7

      @frajop

      Kannst Du mir noch helfen, wie ich die Nachricht bzw. das Bild nur an einen Benutzer/User schicken kann ?

      dulles

      F 1 Antwort Letzte Antwort
      0
      • F Offline
        F Offline
        frajop
        schrieb am zuletzt editiert von
        #8

        Moin,
        Löschen könnte so gehen, unlink nach einer Wartezeit:

        function sendImage (fname) { 
            try {
                sendTo('telegram.0', {
                    text:                   fname,
                    caption:                message, 
                    disable_notification:   true
                });
            }
            catch(err) { if (err.code != "ENOENT") log(err); }  
            setTimeout(function() { deleteImage(fname); }, 3000); 
        }
         
        
        function deleteImage(fname) {
            try {
                try { fs.unlinkSync(fname); }
                catch(err) { if (err.code != "ENOENT") log(err); }     
            }
        }
        

        Frank

        1 Antwort Letzte Antwort
        0
        • D dulles

          @frajop

          Kannst Du mir noch helfen, wie ich die Nachricht bzw. das Bild nur an einen Benutzer/User schicken kann ?

          dulles

          F Offline
          F Offline
          frajop
          schrieb am zuletzt editiert von
          #9

          @dulles
          Hi,
          schau mal hier:
          https://github.com/iobroker-community-adapters/ioBroker.telegram
          Dort steht eigentlich alles
          Frank

          D 2 Antworten Letzte Antwort
          0
          • F frajop

            @dulles
            Hi,
            schau mal hier:
            https://github.com/iobroker-community-adapters/ioBroker.telegram
            Dort steht eigentlich alles
            Frank

            D Offline
            D Offline
            dulles
            schrieb am zuletzt editiert von dulles
            #10

            @frajop

            Da ich nicht so der Profi für JS bin,
            würde das so passen ?

            var timer;
            var request;  
            var user = 'Name des Empfänger';
            var message = 'CAM Bewegung erkannt'        
            
            function sendImage (fname) { 
                try {
                    sendTo('telegram.0', {
                        user:                   user,
                        text:                   fname,
                        caption:                message, 
                        disable_notification:   true
                    });
                }
            

            Danke

            dulles

            1 Antwort Letzte Antwort
            0
            • F frajop

              @dulles
              Hi,
              schau mal hier:
              https://github.com/iobroker-community-adapters/ioBroker.telegram
              Dort steht eigentlich alles
              Frank

              D Offline
              D Offline
              dulles
              schrieb am zuletzt editiert von
              #11

              @frajop

              Habe es einfach mal getestet -> OK -> funktioniert, so wie ich es angeben habe.

              dulles

              1 Antwort Letzte Antwort
              0
              • F frajop

                Hi,
                du musst jede deiner CAMs separat abfragen. Den o.g. Datenpunkt gibt es für jede Kamera. Einfach mal unter Objekte die Struktur unter netatmo.0 anschauen.

                Mein script sieht so aus:

                var timer;
                var request;  
                var message = 'CAM Bewegung erkannt'        
                
                on('netatmo.0.xxxx.LastEventData.LastEventId', function (obj) {
                        sendImage(); });
                
                
                function sendImage() 
                {
                    var fs = require('fs');
                    var source_url;
                
                    // Datum und Zeit
                    var today = new Date();
                    var day = today.toLocaleDateString();
                    var timestamp = today.toLocaleTimeString().replace(/:/g,"-"); 
                
                    // Zielpfad lokal + Dateiname
                    var dest_path   = '/iobroker/iobroker-data/files/webcam/' + 'image-' + day + '-' + timestamp + '.jpg' ;
                    //log(dest_path);
                   
                   // aktuelle URL 
                    source_url = getState("netatmo.0.xxxxx.yyyyy.live.picture").val;
                    log(source_url);
                
                    request.get({url: source_url, encoding: 'binary'}, function (err, response, body) 
                    {
                	   fs.writeFile(dest_path, body, 'binary', function(err) 
                       {
                            if (err) 
                            {
                                log('Fehler beim Bild speichern: ' + err, 'warn');
                                setTimeout(function() { sendTelegram('Fehler beim Bild speichern!'); }, 2000); 
                            }
                            else
                            {
                                setTimeout(function() { sendTelegram(dest_path); }, 2000); 
                            }
                	});
                    });
                }
                
                function sendTelegram (fname) { 
                    try {
                        sendTo('telegram.0', {
                            text:                   fname,
                            caption:                message, 
                            disable_notification:   true
                        });
                    }
                    catch(err) { if (err.code != "ENOENT") log(err); }  
                    setTimeout(function() {  }, 3000); 
                }
                

                xxxx und yyyy musst du ändern, das sind die Namen deiner CAM.

                Bei Änderung von LastEventId wird die Bild-URL ermittelt, das Bild geladen und lokal mit Zeitstempel abgespeichert und an Telegram gesendet. (Achtung, Bild wird lokal nicht gelöscht!)

                Frank

                D Offline
                D Offline
                dulles
                schrieb am zuletzt editiert von
                #12

                @frajop

                Hey,
                ich bins wieder.

                Jetzt hat es die ganze Zeit so gut ausgesehen und jetzt ...?
                seit gestern bekomme ich, trotz abfrage der einzelnen Kameras, alle Bilder geschickt.

                Im Detail:
                Ich Kamera 1 erkennt eine Bewegung, Bilder von allen drei Kameras lokal abgespeichert und anschliessend per Telegram verschickt. Es solte aber nur ein Bild von der Kamera 1 verschickt werden.

                Hat jemand einen Vorschlag

                dulles

                F 1 Antwort Letzte Antwort
                0
                • D dulles

                  @frajop

                  Hey,
                  ich bins wieder.

                  Jetzt hat es die ganze Zeit so gut ausgesehen und jetzt ...?
                  seit gestern bekomme ich, trotz abfrage der einzelnen Kameras, alle Bilder geschickt.

                  Im Detail:
                  Ich Kamera 1 erkennt eine Bewegung, Bilder von allen drei Kameras lokal abgespeichert und anschliessend per Telegram verschickt. Es solte aber nur ein Bild von der Kamera 1 verschickt werden.

                  Hat jemand einen Vorschlag

                  dulles

                  F Offline
                  F Offline
                  frajop
                  schrieb am zuletzt editiert von
                  #13

                  @dulles
                  zeig doch mal dein script

                  Frank

                  D 1 Antwort Letzte Antwort
                  0
                  • F frajop

                    @dulles
                    zeig doch mal dein script

                    Frank

                    D Offline
                    D Offline
                    dulles
                    schrieb am zuletzt editiert von
                    #14

                    @frajop
                    Diesen Script habe ich dreimal angelegt. Für jede Kamera.

                    1. netatmo.0.xxxxxx.Netatmo-Garten.live.picture
                    2. netatmo.0.xxxxxx.Netatmo-Hof.live.picture
                    3. netatmo.0.xxxxxx.Netatmo-Carport.live.picture
                    var timer;
                    var request;
                    var user = 'dulles';  
                    var message = 'CAM-GARTEN Bewegung erkannt'        
                    
                    on('netatmo.0.xxxxxx.LastEventData.LastEventId', function (obj) {
                            sendImage(); });
                    
                    function sendImage() 
                    {
                        var fs = require('fs');
                        var source_url;
                    
                        // Datum und Zeit
                        var today = new Date();
                        var day = today.toLocaleDateString();
                        var timestamp = today.toLocaleTimeString().replace(/:/g,"-"); 
                    
                        // Zielpfad lokal + Dateiname
                        var dest_path   = '/opt/iobroker/kamera/' + 'garten-' + day + '-' + timestamp + '.jpg' ;
                        //log(dest_path);
                    
                       // aktuelle URL 
                        source_url = getState("netatmo.0.xxxxxx.Netatmo-Garten.live.picture").val;
                        log(source_url);
                    
                        request.get({url: source_url, encoding: 'binary'}, function (err, response, body) 
                        {
                    	   fs.writeFile(dest_path, body, 'binary', function(err) 
                           {
                                if (err) 
                                {
                                    log('Fehler beim Bild speichern: ' + err, 'warn');
                                    setTimeout(function() { sendTelegram('Fehler beim Bild speichern!'); }, 2000); 
                                }
                                else
                                {
                                    setTimeout(function() { sendTelegram(dest_path); }, 2000); 
                                }
                    	});
                    
                        });
                    }
                    
                    function sendTelegram (fname) { 
                        try {
                            sendTo('telegram.0', {
                                user:                   user,
                                text:                   fname,
                                caption:                message, 
                                disable_notification:   true
                            });
                        }
                        catch(err) { if (err.code != "ENOENT") log(err); }  
                        setTimeout(function() {  }, 3000); 
                    }
                    
                    D 1 Antwort Letzte Antwort
                    0
                    • D dulles

                      @frajop
                      Diesen Script habe ich dreimal angelegt. Für jede Kamera.

                      1. netatmo.0.xxxxxx.Netatmo-Garten.live.picture
                      2. netatmo.0.xxxxxx.Netatmo-Hof.live.picture
                      3. netatmo.0.xxxxxx.Netatmo-Carport.live.picture
                      var timer;
                      var request;
                      var user = 'dulles';  
                      var message = 'CAM-GARTEN Bewegung erkannt'        
                      
                      on('netatmo.0.xxxxxx.LastEventData.LastEventId', function (obj) {
                              sendImage(); });
                      
                      function sendImage() 
                      {
                          var fs = require('fs');
                          var source_url;
                      
                          // Datum und Zeit
                          var today = new Date();
                          var day = today.toLocaleDateString();
                          var timestamp = today.toLocaleTimeString().replace(/:/g,"-"); 
                      
                          // Zielpfad lokal + Dateiname
                          var dest_path   = '/opt/iobroker/kamera/' + 'garten-' + day + '-' + timestamp + '.jpg' ;
                          //log(dest_path);
                      
                         // aktuelle URL 
                          source_url = getState("netatmo.0.xxxxxx.Netatmo-Garten.live.picture").val;
                          log(source_url);
                      
                          request.get({url: source_url, encoding: 'binary'}, function (err, response, body) 
                          {
                      	   fs.writeFile(dest_path, body, 'binary', function(err) 
                             {
                                  if (err) 
                                  {
                                      log('Fehler beim Bild speichern: ' + err, 'warn');
                                      setTimeout(function() { sendTelegram('Fehler beim Bild speichern!'); }, 2000); 
                                  }
                                  else
                                  {
                                      setTimeout(function() { sendTelegram(dest_path); }, 2000); 
                                  }
                      	});
                      
                          });
                      }
                      
                      function sendTelegram (fname) { 
                          try {
                              sendTo('telegram.0', {
                                  user:                   user,
                                  text:                   fname,
                                  caption:                message, 
                                  disable_notification:   true
                              });
                          }
                          catch(err) { if (err.code != "ENOENT") log(err); }  
                          setTimeout(function() {  }, 3000); 
                      }
                      
                      D Offline
                      D Offline
                      dulles
                      schrieb am zuletzt editiert von
                      #15

                      @dulles sagte in Netatmo Presence Objekt ID für Bewegung:

                      @frajop
                      Diesen Script habe ich dreimal angelegt. Für jede Kamera.

                      1. netatmo.0.xxxxxx.Netatmo-Garten.live.picture
                      2. netatmo.0.xxxxxx.Netatmo-Hof.live.picture
                      3. netatmo.0.xxxxxx.Netatmo-Carport.live.picture
                      var timer;
                      var request;
                      var user = 'dulles';  
                      var message = 'CAM-GARTEN Bewegung erkannt'        
                      
                      on('netatmo.0.xxxxxx.LastEventData.LastEventId', function (obj) {
                              sendImage(); });
                      
                      function sendImage() 
                      {
                          var fs = require('fs');
                          var source_url;
                      
                          // Datum und Zeit
                          var today = new Date();
                          var day = today.toLocaleDateString();
                          var timestamp = today.toLocaleTimeString().replace(/:/g,"-"); 
                      
                          // Zielpfad lokal + Dateiname
                          var dest_path   = '/opt/iobroker/kamera/' + 'garten-' + day + '-' + timestamp + '.jpg' ;
                          //log(dest_path);
                      
                         // aktuelle URL 
                          source_url = getState("netatmo.0.xxxxxx.Netatmo-Garten.live.picture").val;
                          log(source_url);
                      
                          request.get({url: source_url, encoding: 'binary'}, function (err, response, body) 
                          {
                      	   fs.writeFile(dest_path, body, 'binary', function(err) 
                             {
                                  if (err) 
                                  {
                                      log('Fehler beim Bild speichern: ' + err, 'warn');
                                      setTimeout(function() { sendTelegram('Fehler beim Bild speichern!'); }, 2000); 
                                  }
                                  else
                                  {
                                      setTimeout(function() { sendTelegram(dest_path); }, 2000); 
                                  }
                      	});
                      
                          });
                      }
                      
                      function sendTelegram (fname) { 
                          try {
                              sendTo('telegram.0', {
                                  user:                   user,
                                  text:                   fname,
                                  caption:                message, 
                                  disable_notification:   true
                              });
                          }
                          catch(err) { if (err.code != "ENOENT") log(err); }  
                          setTimeout(function() {  }, 3000); 
                      }
                      

                      Hat keiner eine Idee, woran es liegen kann.

                      dulles

                      1 Antwort Letzte Antwort
                      0
                      • F Offline
                        F Offline
                        frajop
                        schrieb am zuletzt editiert von
                        #16

                        Hi,
                        da ich mittlerweile auch eine zweite Kamera habe, hatte ich das gleiche Problem. Man kann es wie folgt lösen:

                        Man benötigt das script nur einmal. Mit der EventId muss die Cam ID ermittelt werden, also welche Cam den Event ausgelöst hat. Dann kann man für diese CamId die Bild URL selektieren. Etwas umständlich, aber es funktioniert :-)

                        // LastEventId selektieren
                         var LastEventId = getState("netatmo.0.xxx.LastEventData.LastEventId").val;         
                            // Fuer Event CamId fuer LastEvendId selektieren 
                            var id_path   =   'netatmo.0.xxx.Events.' + LastEventId + '.camera_id';        
                            var CamId = getState(id_path).val;
                        
                            // vorhandene CAM IDs selektieren
                            var CAM1 = getState("netatmo.0.xxx.cam1.info.id").val;
                        
                            var CAM2 = getState("netatmo.0.xxx.cam2.info.id").val;
                        
                            // Welche CAM hat angeschlagen?  
                            if (CamId === CAM1)
                            {
                                source_url = getState("netatmo.0.xxx.cam1.live.picture").val;
                            }
                            else if (CamId === CAM2)
                            {
                                source_url = getState("netatmo.0.xxx.cam2.live.picture").val;
                            }
                            else
                            {
                                log('keine CAM erkannt');
                            }
                        
                            if (source_url)    { // Bild schicken  
                            }
                        
                        D 1 Antwort Letzte Antwort
                        0
                        • F frajop

                          Hi,
                          da ich mittlerweile auch eine zweite Kamera habe, hatte ich das gleiche Problem. Man kann es wie folgt lösen:

                          Man benötigt das script nur einmal. Mit der EventId muss die Cam ID ermittelt werden, also welche Cam den Event ausgelöst hat. Dann kann man für diese CamId die Bild URL selektieren. Etwas umständlich, aber es funktioniert :-)

                          // LastEventId selektieren
                           var LastEventId = getState("netatmo.0.xxx.LastEventData.LastEventId").val;         
                              // Fuer Event CamId fuer LastEvendId selektieren 
                              var id_path   =   'netatmo.0.xxx.Events.' + LastEventId + '.camera_id';        
                              var CamId = getState(id_path).val;
                          
                              // vorhandene CAM IDs selektieren
                              var CAM1 = getState("netatmo.0.xxx.cam1.info.id").val;
                          
                              var CAM2 = getState("netatmo.0.xxx.cam2.info.id").val;
                          
                              // Welche CAM hat angeschlagen?  
                              if (CamId === CAM1)
                              {
                                  source_url = getState("netatmo.0.xxx.cam1.live.picture").val;
                              }
                              else if (CamId === CAM2)
                              {
                                  source_url = getState("netatmo.0.xxx.cam2.live.picture").val;
                              }
                              else
                              {
                                  log('keine CAM erkannt');
                              }
                          
                              if (source_url)    { // Bild schicken  
                              }
                          
                          D Offline
                          D Offline
                          dulles
                          schrieb am zuletzt editiert von
                          #17

                          @frajop
                          Hey,
                          Da ich nicht der beste in JS bin, kannst Du einmal den kompletten Script einstellen.
                          Ich würde es gerne einmal testen. Bis jetzt sind meine Tests alle in die Hose gegangen.

                          dulles

                          1 Antwort Letzte Antwort
                          0
                          • F Offline
                            F Offline
                            frajop
                            schrieb am zuletzt editiert von
                            #18

                            Ich habe es wie folgt gelöst:

                            var timer;
                            var request;  
                            var message = 'CAM Aktion erkannt'             
                            
                            
                            // Netatmo Datenpunkt auf Änderung prüfen
                            on('netatmo.0.XXXX.LastEventData.LastEventId', function (obj) {
                                
                                // max. alle 30 sec
                                if (!timer) {
                                    timer = setTimeout(function () {
                                        timer = null;
                                    }, 30000);
                                }
                                
                            	saveImage();
                            });
                            
                            
                            function saveImage() 
                            {
                                var fs = require('fs');
                                var source_url; 
                            
                                // Datum und Zeit
                                var today = new Date();
                                var day = today.toLocaleDateString();
                                // Doppelpunkte im string druch - ersetzen
                                var timestamp = today.toLocaleTimeString().replace(/:/g,"-"); 
                            
                                // Zielpfad + Dateiname
                                var dest_path   = '/iobroker/iobroker-data/files/webcam/' + 'image-' + day + '-' + timestamp + '.jpg' ;
                                log(dest_path);
                               
                               //---- aktuelle URL für Bild holen.  --------------------------------------
                            
                                // LastEventId selektieren
                                var LastEventId = getState("netatmo.0.XXXX.LastEventData.LastEventId").val;         
                            
                                // Fuer Event CamId fuer LastEvendId selektieren 
                                var id_path   =   'netatmo.0.XXXX.Events.' + LastEventId + '.camera_id';        
                                var CamId = getState(id_path).val;
                            
                                // CAM IDs selektieren
                                var CAM1 = getState("netatmo.0.XXXX.Name1.info.id").val;
                                var CAM2 = getState("netatmo.0.XXXX.Name2.info.id").val;
                            
                                // Welche CAM hat angeschlagen 
                                if (CamId === CAM1)
                                {
                                    source_url = getState("netatmo.0.Home.Gelting Einfahrt.live.picture").val;
                                }
                                else if (CamId === CAM2)
                                {
                                    source_url = getState("netatmo.0.Home.Gelting Garten .live.picture").val;
                                }
                                else
                                {
                                    log('keine CAM erkannt');
                            		source_url = 0;
                                }
                            
                                if (source_url)
                                {
                                    request.get({url: source_url, encoding: 'binary'}, function (err, response, body) 
                                    {
                            			fs.writeFile(dest_path, body, 'binary', function(err)  {
                                            if (err) 
                                            {
                                                setTimeout(function() { sendTelegram('Fehler beim Bild speichern!'); }, 2000); 
                                            }
                                            else
                                            {
                                                setTimeout(function() { sendTelegram(dest_path); }, 2000); 
                                            }
                                        });
                                    });
                                }
                            }
                            
                            
                            // Bild oder Text über Telegram senden 
                            function sendTelegram (fname) { 
                                try {
                                    sendTo('telegram.0', {
                                        text:                   fname,
                                        caption:                message, 
                                        disable_notification:   true
                                    });
                                }
                                catch(err) { if (err.code != "ENOENT") log(err); }  
                                setTimeout(function() {  }, 3000); 
                            }
                            
                            D 1 Antwort Letzte Antwort
                            0
                            • F frajop

                              Ich habe es wie folgt gelöst:

                              var timer;
                              var request;  
                              var message = 'CAM Aktion erkannt'             
                              
                              
                              // Netatmo Datenpunkt auf Änderung prüfen
                              on('netatmo.0.XXXX.LastEventData.LastEventId', function (obj) {
                                  
                                  // max. alle 30 sec
                                  if (!timer) {
                                      timer = setTimeout(function () {
                                          timer = null;
                                      }, 30000);
                                  }
                                  
                              	saveImage();
                              });
                              
                              
                              function saveImage() 
                              {
                                  var fs = require('fs');
                                  var source_url; 
                              
                                  // Datum und Zeit
                                  var today = new Date();
                                  var day = today.toLocaleDateString();
                                  // Doppelpunkte im string druch - ersetzen
                                  var timestamp = today.toLocaleTimeString().replace(/:/g,"-"); 
                              
                                  // Zielpfad + Dateiname
                                  var dest_path   = '/iobroker/iobroker-data/files/webcam/' + 'image-' + day + '-' + timestamp + '.jpg' ;
                                  log(dest_path);
                                 
                                 //---- aktuelle URL für Bild holen.  --------------------------------------
                              
                                  // LastEventId selektieren
                                  var LastEventId = getState("netatmo.0.XXXX.LastEventData.LastEventId").val;         
                              
                                  // Fuer Event CamId fuer LastEvendId selektieren 
                                  var id_path   =   'netatmo.0.XXXX.Events.' + LastEventId + '.camera_id';        
                                  var CamId = getState(id_path).val;
                              
                                  // CAM IDs selektieren
                                  var CAM1 = getState("netatmo.0.XXXX.Name1.info.id").val;
                                  var CAM2 = getState("netatmo.0.XXXX.Name2.info.id").val;
                              
                                  // Welche CAM hat angeschlagen 
                                  if (CamId === CAM1)
                                  {
                                      source_url = getState("netatmo.0.Home.Gelting Einfahrt.live.picture").val;
                                  }
                                  else if (CamId === CAM2)
                                  {
                                      source_url = getState("netatmo.0.Home.Gelting Garten .live.picture").val;
                                  }
                                  else
                                  {
                                      log('keine CAM erkannt');
                              		source_url = 0;
                                  }
                              
                                  if (source_url)
                                  {
                                      request.get({url: source_url, encoding: 'binary'}, function (err, response, body) 
                                      {
                              			fs.writeFile(dest_path, body, 'binary', function(err)  {
                                              if (err) 
                                              {
                                                  setTimeout(function() { sendTelegram('Fehler beim Bild speichern!'); }, 2000); 
                                              }
                                              else
                                              {
                                                  setTimeout(function() { sendTelegram(dest_path); }, 2000); 
                                              }
                                          });
                                      });
                                  }
                              }
                              
                              
                              // Bild oder Text über Telegram senden 
                              function sendTelegram (fname) { 
                                  try {
                                      sendTo('telegram.0', {
                                          text:                   fname,
                                          caption:                message, 
                                          disable_notification:   true
                                      });
                                  }
                                  catch(err) { if (err.code != "ENOENT") log(err); }  
                                  setTimeout(function() {  }, 3000); 
                              }
                              
                              D Offline
                              D Offline
                              dulles
                              schrieb am zuletzt editiert von dulles
                              #19

                              @frajop
                              Danke schon einmal für den Script.
                              Bekomme aber noch einen Fehler
                              " Fehler beim Bild speichern"
                              habe schon versucht in verschiedene Verzeichnisse zu speichern,
                              hat aber nichts geholfen. Kannst Du mir einen Tipp geben.

                              dulles

                              1 Antwort Letzte Antwort
                              0
                              • F Offline
                                F Offline
                                frajop
                                schrieb am zuletzt editiert von
                                #20

                                Stimmt evtl. der Pfad/Dateinamen nicht? Mein Beispiel ist für Windows.

                                Frank

                                D 1 Antwort Letzte Antwort
                                0
                                • F frajop

                                  Stimmt evtl. der Pfad/Dateinamen nicht? Mein Beispiel ist für Windows.

                                  Frank

                                  D Offline
                                  D Offline
                                  dulles
                                  schrieb am zuletzt editiert von
                                  #21

                                  @frajop
                                  Also an der Pfadangabe ist nichts falsch, da ich es schon mit mehreren Verzeichnisse versucht habe.
                                  Bei mir ist es ein PI4 mit der aktuellen Linux Version.

                                  dulles

                                  1 Antwort Letzte Antwort
                                  0
                                  • F Offline
                                    F Offline
                                    frajop
                                    schrieb am zuletzt editiert von
                                    #22

                                    Gib doch mal ein paar logs aus (source, dest), vielleicht kannst du erkennen wo es klemmt.
                                    Du hast doch mit deinen scrpts schon Bilder geschickt, das hat doch funktioniert, oder!?

                                    D 2 Antworten Letzte Antwort
                                    0
                                    • F frajop

                                      Gib doch mal ein paar logs aus (source, dest), vielleicht kannst du erkennen wo es klemmt.
                                      Du hast doch mit deinen scrpts schon Bilder geschickt, das hat doch funktioniert, oder!?

                                      D Offline
                                      D Offline
                                      dulles
                                      schrieb am zuletzt editiert von
                                      #23

                                      @frajop
                                      mit den alten Scripts habe ich Bilder verschicken können. Sie wurden auch im entsprechenden Verzeichnis vorher abgelegt. Aber zu diesem Zeitpunkt lief alles noch auf einem anderen Client (Rock64).
                                      Auf dem PI4 hatte ich die alten Script nie am laufen. Ich vermute einal, dass es mit dem Betriebssystem (raspbian-buster-lite) zusammen hängt.
                                      Mit der Datensicherung habe ich auch so einen Effekt, wenn ich den erstellten Backupfile in ein anderes Verzeichnis kopieren möchte.

                                      dulles

                                      1 Antwort Letzte Antwort
                                      0
                                      • F frajop

                                        Gib doch mal ein paar logs aus (source, dest), vielleicht kannst du erkennen wo es klemmt.
                                        Du hast doch mit deinen scrpts schon Bilder geschickt, das hat doch funktioniert, oder!?

                                        D Offline
                                        D Offline
                                        dulles
                                        schrieb am zuletzt editiert von dulles
                                        #24

                                        @frajop
                                        Zur Info....
                                        Das Problem hat eine Ende. Es lag an dem Namen der gespeicherten Bilddatei. Genauer gesagt an der Variable "LokaleDate" . Hier wird ein Ergebnis "xx/xx/xx" ausgespuckt und mit den Slash "/" kommt Linux als Namen nicht zurecht. Gelöst habe ich folgendermaßen.

                                        1. diesen Eintrag löschen
                                        var day = today.toLocaleDateString();
                                        
                                        1. dafür diese Einträge einsetzen
                                        var d = new Date();
                                        var mm = d.getMonth() + 1;
                                        var dd = d.getDate();
                                        var yy = d.getFullYear();
                                        
                                        1. dann noch folgende Zeile (speichern des Dateinamen) anpassen
                                        var dest_path   = '/opt/iobroker/data/webcam/' + 'image-' + dd + '-' + mm + '-' + yy + '-' + timestamp + '.jpg' ;
                                        

                                        Nochmal danke für die Vorlage des Scriptes. Jetzt bekomme ich auch noch eine Benachrichtigung und nur ein Bild (Bild von der auslöstenden Kamera.

                                        dulles

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


                                        Support us

                                        ioBroker
                                        Community Adapters
                                        Donate

                                        684

                                        Online

                                        32.7k

                                        Benutzer

                                        82.4k

                                        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