NEWS

[gelöst] Klingelscript Problem mit Phantom JS


  • 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); 
      }  
    });
    

  • 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.


  • :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); 
    

    }
    });

Suggested Topics

1.6k
Online

38.3k
Users

43.8k
Topics

611.8k
Posts