Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [gelöst] Klingelscript Problem mit Phantom JS

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst] Klingelscript Problem mit Phantom JS

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

      Ich nutze seit einiger Zeit ein Script für meine Türklingel.

      Das Ding ist mittlerweile erstaunlich gewachsen, aber jetzt habe ich ein Problem.

      Das Orignalscript sieht so aus:

      ! ````
      var sperre = false;
      ! on({id: 'sonoff.0.Eingang.POWER2', change: "any"}, function (obj) {
      if(!sperre) {
      sperre = true;
      setState("vis.0.control.command", '{"instance": "FFFFFFFF", "command": "changeView", "data": "Neu/Tuer"}');
      // oder
      //setState("vis.0.control.instance", 'FFFFFFFF');
      //setState("vis.0.control.data", 'DemoView');
      //setState("vis.0.control.command", 'changeView'); // muss immer letzte sein
      // Nach 10 Sekunden, zeige wieder Start View
      setTimeout(function () {
      setState("vis.0.control.command", '{"instance": "FFFFFFFF", "command": "changeView", "data": "Neu/Info"}');
      }, 60000);
      setState("tr-064.0.states.ring"/ring/, '**611, 15');
      sendTo("pushover", "send", {
      message: 'Klingel',
      sound: ""
      });
      timeout = setTimeout(function () {
      setState("alexa2.0.Echo-Devices.G2A0P3XXXXX60LLE.Player.volume"/volume/, 90, true);
      }, 500);
      timeout = setTimeout(function () {
      setState("alexa2.0.Echo-Devices.G2A0P3XXXXX60LLE.Commands.speak"/speak/, 'Es ist jemand an der Tür');
      }, 1000);
      timeout = setTimeout(function () {
      setState("alexa2.0.Echo-Devices.G2A0P3XXXXX060LLE.Player.volume"/volume/, 50, true);
      }, 1500);
      setTimeout(function() {
      sperre = false;
      }, 5000);
      }
      });

      
      Und funktioniert einwandfrei.
      
      Jetzt möchte ich gerne einen Screenshot der Kamera per pushover versenden.
      
      Ich kann aus der Kamera nicht so direkt einen Screenshot ziehen sondern muss den Umweg über EyeMotion gehen. Aber das sollte nachdem was ich gelesen habe ja über den Phantom.JS Adapter funktionieren.
      
      Wenn ich das Script alleine laufen lasse wird das Bild erstellt und ich kann das über den Link in irfan View öffnen.
      
      Wenn ich allerdings jetzt den Code in mein Script schreibe wird mir das Bild nicht zugesendet.
      
      Wo liegt mein Fehler?
      
      >! ````
      var sperre = false;
      >! on({id: 'sonoff.0.Eingang.POWER2', change: "any"}, function (obj) {
        if(!sperre) {
          sperre = true;
           sendTo('phantomjs.0', 'send', {
          url:                    'http://192.168.8.95:8765/picture/2/current/?_username=admin&_signature=52634d7b92e34c0b5c865eeb8e3d5935741934ad',
          output:                 'picture.png',  // default value
          width:                  800,            // default value
          height:                 600,            // default value
          timeout:                2000,           // default value
          zoom:                   1,              // default value
      >!     'clip-top':             0,              // default value
          'clip-left':            0,              // default value
          'clip-width':           800,            // default value is equal to width
          'clip-height':          600,            // default value is equal to height
          'scroll-top':           0,              // default value
          'scroll-left':          0,              // default value
      >!     online:                 false           // default value
      }, function (result) {
          if (result.error) {
              console.error(JSON.stringify(result.error));
          }
          if (result.stderr) {
              console.error(result.stderr);
          }
          if (result.stdout) {
              console.log(result.stdout);
          }
          console.log(result.output);
      });
      
           setState("vis.0.control.command", '{"instance": "FFFFFFFF", "command": "changeView", "data": "Neu/Tuer"}');
                 // oder
                 //setState("vis.0.control.instance", 'FFFFFFFF');
                 //setState("vis.0.control.data",     'DemoView');
                 //setState("vis.0.control.command",  'changeView'); // muss immer letzte sein
                 // Nach 10 Sekunden, zeige wieder Start View
                 setTimeout(function () {
                            setState("vis.0.control.command", '{"instance": "FFFFFFFF", "command": "changeView", "data": "Neu/Info"}');
                 }, 60000); 
          setState("tr-064.0.states.ring"/*ring*/, '**611, 15');
          sendTo("pushover", "send", {
             message: 'Klingel',
                file: "/opt/iobroker/node_modules/iobroker.phantomjs/picture.png",   
                sound: ""
          });
          timeout = setTimeout(function () {
          setState("alexa2.0.Echo-Devices.G2A0PXXXXX060LLE.Player.volume"/*volume*/, 90, true);
          }, 500);
          timeout = setTimeout(function () {
          setState("alexa2.0.Echo-Devices.G2A0PXXXXX060LLE.Commands.speak"/*speak*/, 'Es ist jemand an der Tür');
          }, 1000);
          timeout = setTimeout(function () {
          setState("alexa2.0.Echo-Devices.G2A0PXXXXX060LLE.Player.volume"/*volume*/, 50, true);
          }, 1500);
          setTimeout(function() {
             sperre = false;
          }, 5000); 
        }  
      });
      
      1 Reply Last reply Reply Quote 0
      • Chaot
        Chaot last edited by

        Soweit ich das sehe scheint kein Versand per Pushover zu funktionieren.

        Ich habe das jetzt mal geändert und versende das per mail.

        Allerdings habe ich jetzt ein Problem mit dem Anhang.

        Es wird ein Bild versendet das keine Dateiendung hat:

        sendTo('phantomjs.0', 'send', {
            url:                    'http://192.168.8.95:8765/picture/2/current/?_username=admin&_signature=52634d7b92e34c0b5c865eeb8e3d5935741934ad',
            output:                 'picture.png',  // default value
            width:                  800,            // default value
            height:                 600,            // default value
            timeout:                2000,           // default value
            zoom:                   1,              // default value
        
            'clip-top':             0,              // default value
            'clip-left':            0,              // default value
            'clip-width':           800,            // default value is equal to width
            'clip-height':          600,            // default value is equal to height
            'scroll-top':           0,              // default value
            'scroll-left':          0,              // default value
        
            online:                 true           // default value
        }, function (result) {
            if (result.error) {
                console.error(JSON.stringify(result.error));
            }
            if (result.stderr) {
                console.error(result.stderr);
            }
            if (result.stdout) {
                console.log(result.stdout);
            }
            console.log(result.output);
        
        });
        timeout = setTimeout(function () {
        sendTo("email", "send", {
             text: '',
             to: 'XXXXXXX@gmail.com',
             subject: 'Klingel',
             attachments:[
                {path: 'http://192.168.XXX.XXX:8082/state/phantomjs.0.pictures.picture_png', cid: "file1"},
              ]
        
         });
         }, 5000);
         });
        

        Ich kann das

        "picture_png"

        zwar am PC öffnen und am Smartphone über den Deateiexplorer.

        Aber ich kann das nicht direkt öffnen.

        @Bluefox: Gibt es die Möglichkeit das das Bild als "picture.png" versendet wird?

        Wenn ich den Link entsprechend ändere wird das nicht mehr gesendet obwohl es so auf der Platte liegt.

        1 Reply Last reply Reply Quote 0
        • Chaot
          Chaot last edited by

          :oops: :oops:

          Ich bin manchmal einfach blind.

          Mit dem richtigen Pfad

          /opt/iobroker/node_modules/iobroker.phantomjs/picture.png
          

          klappt das auch.

          Zur Vollständigkeit das komplette Klingelscript:

          ! ````
          var sperre = false;
          ! on({id: 'sonoff.0.Eingang.POWER2', change: "any"}, function (obj) {
          if(!sperre) {
          sperre = true;
          sendTo('phantomjs.0', 'send', {
          url: 'http://192.168.XXX.XXX:8765/picture/2/current/?_username=admin&_signature=5xxxxxxxxxx65eeb8e3d5935741934ad',
          output: 'picture.png', // default value
          width: 800, // default value
          height: 600, // default value
          timeout: 2000, // default value
          zoom: 1, // default value
          ! 'clip-top': 0, // default value
          'clip-left': 0, // default value
          'clip-width': 800, // default value is equal to width
          'clip-height': 600, // default value is equal to height
          'scroll-top': 0, // default value
          'scroll-left': 0, // default value
          ! online: true // default value
          }, function (result) {
          if (result.error) {
          console.error(JSON.stringify(result.error));
          }
          if (result.stderr) {
          console.error(result.stderr);
          }
          if (result.stdout) {
          console.log(result.stdout);
          }
          console.log(result.output);

          });
          timeout = setTimeout(function () {
          sendTo("email", "send", {
          text: '',
          to: 'XXXXXX@gmail.com',
          subject: 'Klingel',
          attachments:[
          {path: '/opt/iobroker/node_modules/iobroker.phantomjs/picture.png', cid: "file1"},
          ]

          });
          }, 5000);

           setState("vis.0.control.command", '{"instance": "FFFFFFFF", "command": "changeView", "data": "Neu/Tuer"}');
                 // oder
                 //setState("vis.0.control.instance", 'FFFFFFFF');
                 //setState("vis.0.control.data",     'DemoView');
                 //setState("vis.0.control.command",  'changeView'); // muss immer letzte sein
                 // Nach 10 Sekunden, zeige wieder Start View
                 setTimeout(function () {
                            setState("vis.0.control.command", '{"instance": "FFFFFFFF", "command": "changeView", "data": "Neu/Info"}');
                 }, 60000); 
          setState("tr-064.0.states.ring"/*ring*/, '**611, 15');
          sendTo("pushover", "send", {
             message: 'Klingel',
                file: "/opt/iobroker/node_modules/iobroker.phantomjs/picture.png",   
                sound: ""
          });
          timeout = setTimeout(function () {
          setState("alexa2.0.Echo-Devices.G2A0P30774060LLE.Player.volume"/*volume*/, 90, true);
          }, 500);
          timeout = setTimeout(function () {
          setState("alexa2.0.Echo-Devices.G2A0P30774060LLE.Commands.speak"/*speak*/, 'Es ist jemand an der Tür');
          }, 1000);
          timeout = setTimeout(function () {
          setState("alexa2.0.Echo-Devices.G2A0P30774060LLE.Player.volume"/*volume*/, 50, true);
          }, 1500);
          setTimeout(function() {
             sperre = false;
          }, 5000); 
          

          }
          });

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

          Support us

          ioBroker
          Community Adapters
          Donate

          879
          Online

          31.8k
          Users

          79.9k
          Topics

          1.3m
          Posts

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