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