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. JavaScript
  5. [Q] Email- Attachment als Variable ?

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.5k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.1k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    2.7k

[Q] Email- Attachment als Variable ?

Geplant Angeheftet Gesperrt Verschoben JavaScript
17 Beiträge 3 Kommentatoren 830 Aufrufe 3 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.
  • wcag22W Online
    wcag22W Online
    wcag22
    schrieb am zuletzt editiert von
    #1

    Mittels

    var pfad;
    pfad = '/media/Cam/' + '`date +%Y_%m%d-%H.%M.%S`.jpg';
    

    generiere ich mir ein Bild plus timestamp. - Funktioniert.

    Auch das kopieren des onvif-snapshots nach /media/Cam/ klappt.

    // snapshot (onvif / Tapo Cam) nach /media/Cam mit timestamp kopieren
    exec('wget --output-document /media/Cam/`date +%Y_%m%d-%H.%M.%S`.jpg \'http://192.168.178.80:8095/192_168_178_59_2020\' ');
    

    Ausgehend von

    sendTo("email.0", "send", {
    
         text: result,
    
         to: 'ich@domain.de',
    
         subject: 'Bewegung erkannt',
    
         attachments:[
    
            {path: '/media/bewegung.jpg', cid: "file1"},
    
          ]
    
          });
    

    wollte ich das Script so anpassen, dass es mir das kopierte Bild zusendet.
    Mit einem fixen Dateinamen (der natürlich jeweils überschrieben wird) funktioniert der Dateiversand.

    Was mir nicht gelingen will ist, die Variable pfad im Script zu nutzen, um das jeweilige Image zu senden.

    Wie also mus der path definiert werden?
    Ich habe schon zig Varianten durchprobiert, bin aber nun mit meinem JS-Latein am Ende.
    Danke vorab für Anregung oder Hilfe .

    Wenns nicht geht, wie man will - muss mans tun, wie man kann.
    OliverIOO 1 Antwort Letzte Antwort
    0
    • wcag22W wcag22

      Mittels

      var pfad;
      pfad = '/media/Cam/' + '`date +%Y_%m%d-%H.%M.%S`.jpg';
      

      generiere ich mir ein Bild plus timestamp. - Funktioniert.

      Auch das kopieren des onvif-snapshots nach /media/Cam/ klappt.

      // snapshot (onvif / Tapo Cam) nach /media/Cam mit timestamp kopieren
      exec('wget --output-document /media/Cam/`date +%Y_%m%d-%H.%M.%S`.jpg \'http://192.168.178.80:8095/192_168_178_59_2020\' ');
      

      Ausgehend von

      sendTo("email.0", "send", {
      
           text: result,
      
           to: 'ich@domain.de',
      
           subject: 'Bewegung erkannt',
      
           attachments:[
      
              {path: '/media/bewegung.jpg', cid: "file1"},
      
            ]
      
            });
      

      wollte ich das Script so anpassen, dass es mir das kopierte Bild zusendet.
      Mit einem fixen Dateinamen (der natürlich jeweils überschrieben wird) funktioniert der Dateiversand.

      Was mir nicht gelingen will ist, die Variable pfad im Script zu nutzen, um das jeweilige Image zu senden.

      Wie also mus der path definiert werden?
      Ich habe schon zig Varianten durchprobiert, bin aber nun mit meinem JS-Latein am Ende.
      Danke vorab für Anregung oder Hilfe .

      OliverIOO Offline
      OliverIOO Offline
      OliverIO
      schrieb am zuletzt editiert von OliverIO
      #2

      @wcag22

      so ?

      let meinpfad = '/media/bewegung.jpg';
      sendTo("email.0", "send", {
           text: result,
           to: 'ich@domain.de',
           subject: 'Bewegung erkannt',
           attachments:[
              {path: `${meinpfad}`, cid: "file1"},
            ]
            });
      

      https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals

      Meine Adapter und Widgets
      TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
      Links im Profil

      wcag22W OliverIOO 2 Antworten Letzte Antwort
      0
      • OliverIOO OliverIO

        @wcag22

        so ?

        let meinpfad = '/media/bewegung.jpg';
        sendTo("email.0", "send", {
             text: result,
             to: 'ich@domain.de',
             subject: 'Bewegung erkannt',
             attachments:[
                {path: `${meinpfad}`, cid: "file1"},
              ]
              });
        

        https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals

        wcag22W Online
        wcag22W Online
        wcag22
        schrieb am zuletzt editiert von
        #3

        @oliverio
        Danke zunächst.

        Also mit einem fixen Bildnamen funktioniert das ja alles.
        Die Frage war, wie bekomme ich die Variable pfad in das email script?

        Konkret:

               {path: '...........', cid: "file1"},
        

        Der path müsste also so etwa wie

        {path: 'pfad' , "file1"}
        

        aussehen.
        Um bei Deinem Vorschlag zu bleiben:

        let meinpfad = '/media/Cam/`date +%Y_%m%d-%H.%M.%S`.jpg';
        sendTo("email.0", "send", {
             text: '',
             to: 'ich@meinedomain.de',
             subject: 'Bewegung erkannt',
             attachments:[
                { path: '${meinpfad}', cid: "file1"},
                     ]
              });
        

        Das funktioniert nicht, da schon die erste Zeile - die Zuweisung zu meinpfad - falsch ist. Sicher Syntaxfehler.
        Ausserdem würde das wahrscheinlich auch nicht viel bringen, da zwischen dem kopieren des Image und absenden der Zeitstempel verändert ist.

        Aber ich habe da keine Ideen für die zigste Variante mehr. :-)

        Wenns nicht geht, wie man will - muss mans tun, wie man kann.
        OliverIOO 1 Antwort Letzte Antwort
        0
        • wcag22W wcag22

          @oliverio
          Danke zunächst.

          Also mit einem fixen Bildnamen funktioniert das ja alles.
          Die Frage war, wie bekomme ich die Variable pfad in das email script?

          Konkret:

                 {path: '...........', cid: "file1"},
          

          Der path müsste also so etwa wie

          {path: 'pfad' , "file1"}
          

          aussehen.
          Um bei Deinem Vorschlag zu bleiben:

          let meinpfad = '/media/Cam/`date +%Y_%m%d-%H.%M.%S`.jpg';
          sendTo("email.0", "send", {
               text: '',
               to: 'ich@meinedomain.de',
               subject: 'Bewegung erkannt',
               attachments:[
                  { path: '${meinpfad}', cid: "file1"},
                       ]
                });
          

          Das funktioniert nicht, da schon die erste Zeile - die Zuweisung zu meinpfad - falsch ist. Sicher Syntaxfehler.
          Ausserdem würde das wahrscheinlich auch nicht viel bringen, da zwischen dem kopieren des Image und absenden der Zeitstempel verändert ist.

          Aber ich habe da keine Ideen für die zigste Variante mehr. :-)

          OliverIOO Offline
          OliverIOO Offline
          OliverIO
          schrieb am zuletzt editiert von OliverIO
          #4

          @wcag22

          Das Problem ist, das du meine Vorgabe geändert hast und die Doku nicht gelesen hast.
          Template strings benötigen einen backtick als Anführungsstrich.
          Ansonsten wird es als normaler String interpretiert.
          Auch stimmt irgendwas nicht in deinem String um das Datum zu notieren.
          Das dürfte so nicht funktionieren.

          let meinpfad = `/media/Cam/${new Date().toISOString().substr(0,19)}.jpg`
          

          Meine Adapter und Widgets
          TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
          Links im Profil

          1 Antwort Letzte Antwort
          0
          • wcag22W Online
            wcag22W Online
            wcag22
            schrieb am zuletzt editiert von
            #5

            @oliverio

            Hm...?

            Wo sehe ich in Deiner Vorgabe einen Hinweis auf eine Pfadangabe / Timestamp, o.ä.
            Denn war ja eigentliche Problem.

            let meinpfad = '/media/bewegung.jpg';
            sendTo("email.0", "send", {
                 text: result,
                 to: 'ich@domain.de',
                 subject: 'Bewegung erkannt',
                 attachments:[
                    {path: `${meinpfad}`, cid: "file1"},
                  ]
                  });
            

            Ich hatte geschrieben, dass es mit einem fixen Dateinamen funktioniert.
            Und zwar so:

            // snapshut aus dem onvif Adapter nach /media/kopieren
            exec('wget --output-document /media/bewegung.jpg \'http://192.168.178.80:8095/192_168_178_59_2020\' ');
            
            sendTo("email.0", "send", {
                 text: result,
                 to: 'ich@domain.de',
                 subject: 'Bewegung erkannt',
                 attachments:[
                    {path: '/media/bewegung.jpg', cid: "file1"},
                  ]
                  });
            

            Aber da ich offenbar nicht in der Lage bin, das Problem verständlich darzulegen oder die Frage verständlich zu formulieren lassen wir es gut sein. Ich habe keine Lust alles doppelt und dreifach zu schreiben.

            Schönen Abend Euch da draußen...

            Wenns nicht geht, wie man will - muss mans tun, wie man kann.
            OliverIOO 1 Antwort Letzte Antwort
            0
            • OliverIOO OliverIO

              @wcag22

              so ?

              let meinpfad = '/media/bewegung.jpg';
              sendTo("email.0", "send", {
                   text: result,
                   to: 'ich@domain.de',
                   subject: 'Bewegung erkannt',
                   attachments:[
                      {path: `${meinpfad}`, cid: "file1"},
                    ]
                    });
              

              https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals

              OliverIOO Offline
              OliverIOO Offline
              OliverIO
              schrieb am zuletzt editiert von OliverIO
              #6

              Meine Vorgabe, man beachte das Zeichen vor dem $, es ist ein Apostroph und kein Backtick

                  {path: `${meinpfad}`, cid: "file1"},
              

              Deine Interpretation

                  { path: '${meinpfad}', cid: "file1"},
              

              Meine Adapter und Widgets
              TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
              Links im Profil

              1 Antwort Letzte Antwort
              0
              • wcag22W wcag22

                @oliverio

                Hm...?

                Wo sehe ich in Deiner Vorgabe einen Hinweis auf eine Pfadangabe / Timestamp, o.ä.
                Denn war ja eigentliche Problem.

                let meinpfad = '/media/bewegung.jpg';
                sendTo("email.0", "send", {
                     text: result,
                     to: 'ich@domain.de',
                     subject: 'Bewegung erkannt',
                     attachments:[
                        {path: `${meinpfad}`, cid: "file1"},
                      ]
                      });
                

                Ich hatte geschrieben, dass es mit einem fixen Dateinamen funktioniert.
                Und zwar so:

                // snapshut aus dem onvif Adapter nach /media/kopieren
                exec('wget --output-document /media/bewegung.jpg \'http://192.168.178.80:8095/192_168_178_59_2020\' ');
                
                sendTo("email.0", "send", {
                     text: result,
                     to: 'ich@domain.de',
                     subject: 'Bewegung erkannt',
                     attachments:[
                        {path: '/media/bewegung.jpg', cid: "file1"},
                      ]
                      });
                

                Aber da ich offenbar nicht in der Lage bin, das Problem verständlich darzulegen oder die Frage verständlich zu formulieren lassen wir es gut sein. Ich habe keine Lust alles doppelt und dreifach zu schreiben.

                Schönen Abend Euch da draußen...

                OliverIOO Offline
                OliverIOO Offline
                OliverIO
                schrieb am zuletzt editiert von OliverIO
                #7

                @wcag22 sagte in [Q] Email- Attachment als Variable ?:

                Wo sehe ich in Deiner Vorgabe einen Hinweis auf eine Pfadangabe / Timestamp, o.ä.

                Sorry, wenn ich das falsch verstanden habe. Du wolltest die 100% Lösung schon haben und nicht nur Hilfe in die richtige Richtung?
                Ich ging davon aus, das ein String zusammen zu setzen kein Problem darstellt.

                Meine Adapter und Widgets
                TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                Links im Profil

                wcag22W 1 Antwort Letzte Antwort
                0
                • OliverIOO OliverIO

                  @wcag22 sagte in [Q] Email- Attachment als Variable ?:

                  Wo sehe ich in Deiner Vorgabe einen Hinweis auf eine Pfadangabe / Timestamp, o.ä.

                  Sorry, wenn ich das falsch verstanden habe. Du wolltest die 100% Lösung schon haben und nicht nur Hilfe in die richtige Richtung?
                  Ich ging davon aus, das ein String zusammen zu setzen kein Problem darstellt.

                  wcag22W Online
                  wcag22W Online
                  wcag22
                  schrieb am zuletzt editiert von
                  #8

                  @oliverio sagte in [Q] Email- Attachment als Variable ?:

                  Du hattest auch keine Vorgaben gemacht, wie der Dateiname aussehen sollte

                  Achso?

                  // snapshot (onvif / Tapo Cam) nach /media/Cam mit timestamp kopieren
                  
                  exec('wget --output-document /media/Cam/`date +%Y_%m%d-%H.%M.%S`.jpg \'http://192.168.178.80:8095/192_168_178_59_2020\' ');
                  

                  :-)

                  Wenns nicht geht, wie man will - muss mans tun, wie man kann.
                  OliverIOO 1 Antwort Letzte Antwort
                  0
                  • wcag22W wcag22

                    @oliverio sagte in [Q] Email- Attachment als Variable ?:

                    Du hattest auch keine Vorgaben gemacht, wie der Dateiname aussehen sollte

                    Achso?

                    // snapshot (onvif / Tapo Cam) nach /media/Cam mit timestamp kopieren
                    
                    exec('wget --output-document /media/Cam/`date +%Y_%m%d-%H.%M.%S`.jpg \'http://192.168.178.80:8095/192_168_178_59_2020\' ');
                    

                    :-)

                    OliverIOO Offline
                    OliverIOO Offline
                    OliverIO
                    schrieb am zuletzt editiert von
                    #9

                    @wcag22

                    ja hatte ich mittlerweile entfernt.

                    Aber du hast recht lassen wir es gut sein.
                    Ist schwierig mit dir.
                    Viel Glück

                    Meine Adapter und Widgets
                    TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                    Links im Profil

                    wcag22W 1 Antwort Letzte Antwort
                    0
                    • OliverIOO OliverIO

                      @wcag22

                      ja hatte ich mittlerweile entfernt.

                      Aber du hast recht lassen wir es gut sein.
                      Ist schwierig mit dir.
                      Viel Glück

                      wcag22W Online
                      wcag22W Online
                      wcag22
                      schrieb am zuletzt editiert von
                      #10

                      @oliverio

                      Ist schwierig mit dir.

                      Nur der Vollständigkeit halber, weil ich das nicht auf mir sitzen lasse:

                      Du entfernst für die "Antwort" entscheidende JS-Zeilen aus meinem Posting:

                      ja hatte ich mittlerweile entfernt.
                      [...]
                      Du hattest auch keine Vorgaben gemacht, wie der Dateiname aussehen sollte

                      Obwohl es sehr wohl Wünsche für den Datenamen gab, wie aus den ersten Post zu ersehen ist.

                      Du wolltest die 100% Lösung schon haben und nicht nur Hilfe in die richtige Richtung?

                      Du unterstellst mir, die Lösung auf dem Silbertablet haben zu wollen und die Doku nicht zu lesen (was Du gar nicht wissen kannst) und hast offenbar meine Frage nur oberflächlich überflogen, was aus Deinen Antworten zumindest zu erahnen ist.

                      Und Du meinst dann, ich wäre schwierig? - Sportlich...

                      Schwierig finde ich Diskussionen, bei denen am Thema vorbei geredet wird und die mit Vorwürfen und Unterstellungen daher kommen.
                      Gebe das Kompliment hiermit gern zurück.
                      Damit ist das Thema dann für mich endgültig erledigt.

                      Wenns nicht geht, wie man will - muss mans tun, wie man kann.
                      1 Antwort Letzte Antwort
                      0
                      • CodierknechtC Offline
                        CodierknechtC Offline
                        Codierknecht
                        Developer Most Active
                        schrieb am zuletzt editiert von Codierknecht
                        #11

                        @wcag22 @OliverIO
                        So, jetzt beruhigen wir uns wieder und kommen zurück zum Problem:

                        @wcag22
                        So wie ich das bis hierhin verstanden habe, hast Du Hochkommas ' mit Backticks ` verwechselt.

                        Ich hab' mal folgendes zusammengeklöppelt (ungetestet):

                        const filename = '/media/Cam/' + formatDate(new Date(), 'YYYY_MM_TT_hh_mm_ss') + '.jpg'; // /media/Cam/2025_01_15_12_30_18.jpg
                        const url = 'http://192.168.178.80:8095/192_168_178_59_2020';
                        const wget = `wget --output-document ${filename} ${url}`;
                        
                        exec(wget, function(error) {
                            if (!error) {
                                sendTo("email.0", "send", {
                                    text: 'Hallo Welt!',
                                    to: 'ich@domain.de',
                                    subject: 'Bewegung erkannt',
                                    attachments:[
                                        {path: filename, cid: "file1"},
                                    ]
                                });
                            } else {
                                console.log(error);
                            }
                        });
                        

                        Bitte auch hier wieder Hochkommas und Backticks beachten. Letztere werden benötigt, wenn im String Platzhalter ${} verwendet werden.

                        Nagel mit bitte nicht darauf fest, dass das Ganze auch funktioniert.
                        Im Zweifelsfall kann man ja an den interessanten Stellen noch Logausgaben einbauen.

                        Beim Dateinamen habe ich ein etwas anderes Format gewählt, damit das einfacher zu formatieren ist.

                        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                        Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                        HmIP|ZigBee|Tasmota|Unifi
                        Zabbix Certified Specialist
                        Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                        wcag22W 3 Antworten Letzte Antwort
                        1
                        • CodierknechtC Codierknecht

                          @wcag22 @OliverIO
                          So, jetzt beruhigen wir uns wieder und kommen zurück zum Problem:

                          @wcag22
                          So wie ich das bis hierhin verstanden habe, hast Du Hochkommas ' mit Backticks ` verwechselt.

                          Ich hab' mal folgendes zusammengeklöppelt (ungetestet):

                          const filename = '/media/Cam/' + formatDate(new Date(), 'YYYY_MM_TT_hh_mm_ss') + '.jpg'; // /media/Cam/2025_01_15_12_30_18.jpg
                          const url = 'http://192.168.178.80:8095/192_168_178_59_2020';
                          const wget = `wget --output-document ${filename} ${url}`;
                          
                          exec(wget, function(error) {
                              if (!error) {
                                  sendTo("email.0", "send", {
                                      text: 'Hallo Welt!',
                                      to: 'ich@domain.de',
                                      subject: 'Bewegung erkannt',
                                      attachments:[
                                          {path: filename, cid: "file1"},
                                      ]
                                  });
                              } else {
                                  console.log(error);
                              }
                          });
                          

                          Bitte auch hier wieder Hochkommas und Backticks beachten. Letztere werden benötigt, wenn im String Platzhalter ${} verwendet werden.

                          Nagel mit bitte nicht darauf fest, dass das Ganze auch funktioniert.
                          Im Zweifelsfall kann man ja an den interessanten Stellen noch Logausgaben einbauen.

                          Beim Dateinamen habe ich ein etwas anderes Format gewählt, damit das einfacher zu formatieren ist.

                          wcag22W Online
                          wcag22W Online
                          wcag22
                          schrieb am zuletzt editiert von
                          #12

                          @codierknecht
                          Hallo Codierknecht,

                          eigentlich wollte ich mich ja aus dem Thread verabschieden. Da Du aber die Situation ganz unaufgeregt neutralisierst hast, wäre es unfair Dir gegenüber, nicht mehr zu reagieren. Danke schon mal dafür.

                          Das Ganze hat derzeit auch eher experimentellen Charakter, heißt: Schauen was geht, lernen und Erfahrungen sammeln. Ohne Zeitdruck.

                          Soweit ich das jetzt kurz überflogen habe, hilft mir das gut weiter. Nach vielen Jahren perl und php hadere ich immer noch mit JS, besonders was die Arbeit mit Variablen angeht. Konkret hier Datumsformatierung, Zuweisung zu einer Variablen und Verwendung dieser im eMail-Script.

                          Auf der Grundlage Deines code snippet werde ich nochmal umbauen:

                          Nach erfolgreicher Erstellung des snapshot im onvif DP Generierung eines Zeitstempels und Zuweisung zu einer Variablen, diese bei der Formatierung des Dateinamens verwenden und den snapshot nach '/media/Cam/neuer Dateiname' kopieren.
                          Diese Variable dann auch für den eMail-Versand nutzen.

                          Mein Problem bestand offenbar darin, dass ich den neuen Dateinamen zwar zum Zweck des kopierens richtig erstellen konnte (also als Datum und Zeit), ihn aber in dieser Form nicht verwenden konnte, um ihn im Mail Script zu nutzen. Da ich selbst schon mit diversen Hochkomma, Backticks und Anführungszeichen probiert hat, vermute ich, dass es schlicht und ergreifend eine unzweckmäßige Formatierung war. Ich hatte sie in einem anderen Thread hier im Forum gefunden. Allein für den Kopiervorgang hätte sie ja gereicht, aber muss ja noch unbedingt eine Mail versenden - my fault. :-)

                          Also Danke für Deine Hilfe und Anregung.
                          Beste Grüße Peter

                          Wenns nicht geht, wie man will - muss mans tun, wie man kann.
                          1 Antwort Letzte Antwort
                          0
                          • CodierknechtC Offline
                            CodierknechtC Offline
                            Codierknecht
                            Developer Most Active
                            schrieb am zuletzt editiert von
                            #13

                            @wcag22 sagte in [Q] Email- Attachment als Variable ?:

                            Nach vielen Jahren perl und php hadere ich immer noch mit JS

                            Ist nach 25 Jahren Delphi nicht anders :grinning:

                            "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                            Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                            HmIP|ZigBee|Tasmota|Unifi
                            Zabbix Certified Specialist
                            Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                            1 Antwort Letzte Antwort
                            0
                            • CodierknechtC Codierknecht

                              @wcag22 @OliverIO
                              So, jetzt beruhigen wir uns wieder und kommen zurück zum Problem:

                              @wcag22
                              So wie ich das bis hierhin verstanden habe, hast Du Hochkommas ' mit Backticks ` verwechselt.

                              Ich hab' mal folgendes zusammengeklöppelt (ungetestet):

                              const filename = '/media/Cam/' + formatDate(new Date(), 'YYYY_MM_TT_hh_mm_ss') + '.jpg'; // /media/Cam/2025_01_15_12_30_18.jpg
                              const url = 'http://192.168.178.80:8095/192_168_178_59_2020';
                              const wget = `wget --output-document ${filename} ${url}`;
                              
                              exec(wget, function(error) {
                                  if (!error) {
                                      sendTo("email.0", "send", {
                                          text: 'Hallo Welt!',
                                          to: 'ich@domain.de',
                                          subject: 'Bewegung erkannt',
                                          attachments:[
                                              {path: filename, cid: "file1"},
                                          ]
                                      });
                                  } else {
                                      console.log(error);
                                  }
                              });
                              

                              Bitte auch hier wieder Hochkommas und Backticks beachten. Letztere werden benötigt, wenn im String Platzhalter ${} verwendet werden.

                              Nagel mit bitte nicht darauf fest, dass das Ganze auch funktioniert.
                              Im Zweifelsfall kann man ja an den interessanten Stellen noch Logausgaben einbauen.

                              Beim Dateinamen habe ich ein etwas anderes Format gewählt, damit das einfacher zu formatieren ist.

                              wcag22W Online
                              wcag22W Online
                              wcag22
                              schrieb am zuletzt editiert von
                              #14

                              @codierknecht
                              Moin,

                              kurzer Zwischenbericht: )*

                              function Info()
                              begin:
                              result := "Komme gut voran, erste Anpassungen schon erfolgt, melde mich dann mit Endergebnis";
                              end;
                              

                              )* naja, habe nur mal gaaaanz kurz nach Delphi gegoogelt, Syntax stimmt natürlich nicht, aber neugierig war ich schon. :-)

                              Wenns nicht geht, wie man will - muss mans tun, wie man kann.
                              1 Antwort Letzte Antwort
                              0
                              • CodierknechtC Codierknecht

                                @wcag22 @OliverIO
                                So, jetzt beruhigen wir uns wieder und kommen zurück zum Problem:

                                @wcag22
                                So wie ich das bis hierhin verstanden habe, hast Du Hochkommas ' mit Backticks ` verwechselt.

                                Ich hab' mal folgendes zusammengeklöppelt (ungetestet):

                                const filename = '/media/Cam/' + formatDate(new Date(), 'YYYY_MM_TT_hh_mm_ss') + '.jpg'; // /media/Cam/2025_01_15_12_30_18.jpg
                                const url = 'http://192.168.178.80:8095/192_168_178_59_2020';
                                const wget = `wget --output-document ${filename} ${url}`;
                                
                                exec(wget, function(error) {
                                    if (!error) {
                                        sendTo("email.0", "send", {
                                            text: 'Hallo Welt!',
                                            to: 'ich@domain.de',
                                            subject: 'Bewegung erkannt',
                                            attachments:[
                                                {path: filename, cid: "file1"},
                                            ]
                                        });
                                    } else {
                                        console.log(error);
                                    }
                                });
                                

                                Bitte auch hier wieder Hochkommas und Backticks beachten. Letztere werden benötigt, wenn im String Platzhalter ${} verwendet werden.

                                Nagel mit bitte nicht darauf fest, dass das Ganze auch funktioniert.
                                Im Zweifelsfall kann man ja an den interessanten Stellen noch Logausgaben einbauen.

                                Beim Dateinamen habe ich ein etwas anderes Format gewählt, damit das einfacher zu formatieren ist.

                                wcag22W Online
                                wcag22W Online
                                wcag22
                                schrieb am zuletzt editiert von
                                #15

                                @codierknecht

                                Einen schönen Sonntag,

                                dann will ich Dich mal nicht weiter auf die Folter spannen und feed back geben.

                                Ich habe Deinen Vorschlag umgesetzt und - eigensinnig wie ich bin ;-) - gleich ein wenig angepasst.

                                Die Verzögerung von 200ms sind der Tatsache geschuldet, dass die Camera bereits an den "Blickfeldgrenzen" Bewegung detektiert und damit das sich bewegende Objekt (meist Nachbars Katze, Fuchs, Waschbär oder Dachs) nicht vollständig im Bild ist. Mit diesem Wert erscheinen sie i.d.R in der Bildmitte.

                                Das Datumsformat bastele ich mir dann nach eigenem Gustus zusammen - ist für mich übersichtlicher.

                                Die 1 Sekunde Verzögerung vor dem Kopieren reicht aktuell aus. Mit den Zeiten kann ich aber insgesamt noch etwas herumspielen.

                                Das Ganze läuft als Testversion zum spielen auf einen 4er Raspi mit 4GB.

                                onvif 2025-01-19 at 11-37-09 javascript - raspi4GB.png

                                Soweit also Aufgabe erledigt.

                                Parallel dazu habe ich mich mal mit gotify beschäftigt, den Server installiert und auch das funktioniert vom Grundsatz schon mal. Eine Mail mit snapshot würde mich im schlechtesten Fall erst nach 15min (Abrufintervall) auf dem Handy erreichen. Da wäre gotify im Vorteil.

                                gotify 2025-01-19 at 11-44-36 javascript - raspi4GB.png

                                Ob irgend etwas davon dann mal produktiv genutzt wird, werde ich sehen. Im Moment sind es nur Fingerübungen.
                                Ich will auch sehen, inwieweit ich die Tapo-Cams via onvif aus den "Tapo-Klauen" befreien kann, sprich: Internet kappen oder nur wichtige Zielserver zulassen. Mal schauen...

                                Ich danke Dir jedenfalls, dass Du mich auf den Pfad der Tugend :-) geführt hast. Hilfe war also nicht erfolglos.

                                Wenns nicht geht, wie man will - muss mans tun, wie man kann.
                                CodierknechtC 1 Antwort Letzte Antwort
                                0
                                • wcag22W wcag22

                                  @codierknecht

                                  Einen schönen Sonntag,

                                  dann will ich Dich mal nicht weiter auf die Folter spannen und feed back geben.

                                  Ich habe Deinen Vorschlag umgesetzt und - eigensinnig wie ich bin ;-) - gleich ein wenig angepasst.

                                  Die Verzögerung von 200ms sind der Tatsache geschuldet, dass die Camera bereits an den "Blickfeldgrenzen" Bewegung detektiert und damit das sich bewegende Objekt (meist Nachbars Katze, Fuchs, Waschbär oder Dachs) nicht vollständig im Bild ist. Mit diesem Wert erscheinen sie i.d.R in der Bildmitte.

                                  Das Datumsformat bastele ich mir dann nach eigenem Gustus zusammen - ist für mich übersichtlicher.

                                  Die 1 Sekunde Verzögerung vor dem Kopieren reicht aktuell aus. Mit den Zeiten kann ich aber insgesamt noch etwas herumspielen.

                                  Das Ganze läuft als Testversion zum spielen auf einen 4er Raspi mit 4GB.

                                  onvif 2025-01-19 at 11-37-09 javascript - raspi4GB.png

                                  Soweit also Aufgabe erledigt.

                                  Parallel dazu habe ich mich mal mit gotify beschäftigt, den Server installiert und auch das funktioniert vom Grundsatz schon mal. Eine Mail mit snapshot würde mich im schlechtesten Fall erst nach 15min (Abrufintervall) auf dem Handy erreichen. Da wäre gotify im Vorteil.

                                  gotify 2025-01-19 at 11-44-36 javascript - raspi4GB.png

                                  Ob irgend etwas davon dann mal produktiv genutzt wird, werde ich sehen. Im Moment sind es nur Fingerübungen.
                                  Ich will auch sehen, inwieweit ich die Tapo-Cams via onvif aus den "Tapo-Klauen" befreien kann, sprich: Internet kappen oder nur wichtige Zielserver zulassen. Mal schauen...

                                  Ich danke Dir jedenfalls, dass Du mich auf den Pfad der Tugend :-) geführt hast. Hilfe war also nicht erfolglos.

                                  CodierknechtC Offline
                                  CodierknechtC Offline
                                  Codierknecht
                                  Developer Most Active
                                  schrieb am zuletzt editiert von
                                  #16

                                  @wcag22 sagte in [Q] Email- Attachment als Variable ?:

                                  Die 1 Sekunde Verzögerung vor dem Kopieren reicht aktuell aus. Mit den Zeiten kann ich aber insgesamt noch etwas herumspielen.

                                  Darum läuft das in meinem Beispiel erst, wenn des exec ein Ergebnis gemeldet hat.
                                  Das kann dann auch mal länger dauern, ohne dass es Probleme mit einem "timeout" o.ä gibt.

                                  Aber egal - Hauptsache es funktioniert bei Dir und Du bis damit zufrieden ;-)

                                  "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                                  Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                                  HmIP|ZigBee|Tasmota|Unifi
                                  Zabbix Certified Specialist
                                  Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                                  wcag22W 1 Antwort Letzte Antwort
                                  0
                                  • CodierknechtC Codierknecht

                                    @wcag22 sagte in [Q] Email- Attachment als Variable ?:

                                    Die 1 Sekunde Verzögerung vor dem Kopieren reicht aktuell aus. Mit den Zeiten kann ich aber insgesamt noch etwas herumspielen.

                                    Darum läuft das in meinem Beispiel erst, wenn des exec ein Ergebnis gemeldet hat.
                                    Das kann dann auch mal länger dauern, ohne dass es Probleme mit einem "timeout" o.ä gibt.

                                    Aber egal - Hauptsache es funktioniert bei Dir und Du bis damit zufrieden ;-)

                                    wcag22W Online
                                    wcag22W Online
                                    wcag22
                                    schrieb am zuletzt editiert von wcag22
                                    #17

                                    @codierknecht sagte in [Q] Email- Attachment als Variable ?:

                                    Darum läuft das in meinem Beispiel erst, wenn des exec ein Ergebnis gemeldet hat.

                                    Ah...ok. Dann muss ich mir DAS nochmal genauer ansehen. Tnx für den Hinweis.

                                    PS: Du meinst den function (error) - Zweig?

                                    PPS: Habe nochmal umgebastelt und Deine exec Version übernommenn. Lediglich das Zusammenbasteln des Dateinamens habe ich ausgelagert / beibehalten.

                                    Wenns nicht geht, wie man will - muss mans tun, wie man kann.
                                    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

                                    814

                                    Online

                                    32.4k

                                    Benutzer

                                    81.5k

                                    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