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.
  • D Offline
    D Offline
    dulles
    schrieb am zuletzt editiert von dulles
    #1

    Hallo zusammen,

    ich versuche mir ein Bild per Telegram zu zusenden, wenn die Kamera eine Bewegung erkennt. Bei der Kamera handelt es ich um eine Netatmo Presence.
    Welchen Wert muss ich als Objekt ID auswählen, damit ich die Bewegungserkennung einbinden kann.

    dulles

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

      Hi,
      du musst den Datenpunkt 'netatmo.0.xxxxx.LastEventData.LastEventId' auf Änderung prüfen. Bei Änderung holst du mit
      var url = getState("netatmo.0.xxxx.yyyy.live.picture").val; die aktuelle URL für Bild. Von dieser URL dann das Bild holen und schicken

      Frank

      D 1 Antwort Letzte Antwort
      0
      • F frajop

        Hi,
        du musst den Datenpunkt 'netatmo.0.xxxxx.LastEventData.LastEventId' auf Änderung prüfen. Bei Änderung holst du mit
        var url = getState("netatmo.0.xxxx.yyyy.live.picture").val; die aktuelle URL für Bild. Von dieser URL dann das Bild holen und schicken

        Frank

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

        @frajop
        Danke für die Info.
        Wie kann ich feststellen, welche Kamera nun ausgelöst hat.
        Oder wie kann ich gezielt mir ein Bild von der ausgelösten Kamera ein Bild zuschicken lassen. Ich habe 3 Netatmo Presence installiert.

        dulles

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

          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 4 Antworten 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
            #5

            @frajop
            entweder stehe ich auf dem Schlauch, oder ich verstehe es noch nicht.
            Der Datenpunkt "netatmo.0.xxxx.yyyy.live.picture" ist für jede Kamera vorhanden. Aber den Datenpunkt "netatmo.0.xxxx.yyyy.live.picture" gibt es nur einmal.

            Bildschirmfoto 2019-05-13 um 21.09.51.png

            Deshalb stelle ich mir immer noch die Frage, wie dann die Abfrage für jede Kamera ausführen soll.

            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
              #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
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          582

                                          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