NEWS
Tür Kamera bei Klingel
-
Hallo ,
hoffe es kann mir einer helfen..habe schon Tage/Wochen voller Verzweiflung verbracht. :roll:
Mein Wunsch wäre es in der VIS meine IP Kamera (Instar) beim Klingelzeichen anzeigen zu lassen.(z.B. jpg alle 5 Sekunden -kein Livevideo)
Toll wäre es auch wenn das Tablet automatisch aufwacht.
Benütze zum Aufwachen meines Tablet den Fully Kiosk .
Im Fritzphone klappt es prima..lasse JPG in ca 5 Sek Rytmus anzeigen.
Vielen Dank
Gerhard
-
sowas hier?: https://www.youtube.com/watch?v=0r6QgCjZMd8
-
danke für die Info -werd es gleich mal versuchen.
Mein grösseres Problem ist das meine Aussen-Kamera per JPG zwar im VIS am PC angezeigt wird aber nicht am Tablet ….
Vielleicht hat einer eine Lösung ?
Danke
-
Am elegantesten wird es wenn du die Kamera als View in VIS einbindest.
Bei meinem Klingelscript wird das alles automatisch abgearbeitet.
var sperre = false; //verhindert das doppeltes Drücken das Script stoppt 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=xxxxxx&_signature=xxxxxxx', 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: 'xxxxx@gxxx.com', subject: 'Klingel', attachments:[ {path: '/opt/iobroker/node_modules/iobroker.phantomjs/picture.png', cid: "file1"}, ] }); //Mail mit Bild Empfänger 1 sendTo("email", "send", { text: '', to: 'xxxxxxxx@gxxxxx.com', subject: 'Klingel', attachments:[ {path: '/opt/iobroker/node_modules/iobroker.phantomjs/picture.png', cid: "file1"}, ] }); //Mail mit Bild Empfänger 2 }, 5000); // Verzögert den Mailversand bis das Bild gespeichert ist 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 // Setze View auf Kamerabild setTimeout(function () { setState("vis.0.control.command", '{"instance": "FFFFFFFF", "command": "changeView", "data": "Neu/Info"}'); }, 60000); // Nach 60 Sekunden, zeige wieder Start View setState("tr-064.0.states.ring"/*ring*/, '**611, 15'); //Klingelt 15 Sekunden auf dem Telefon sendTo("pushover", "send", { message: 'Klingel', file: "/opt/iobroker/node_modules/iobroker.phantomjs/picture.png", sound: "" }); //Klingelinfo über Pushover timeout = setTimeout(function () { setState("alexa2.0.Echo-Devices.G2AxxxxxLLE.Player.volume"/*volume*/, 90, true); }, 500); // Setzt Alexa auf 90% timeout = setTimeout(function () { setState("alexa2.0.Echo-Devices.G2AxxxxxLLE.Commands.speak"/*speak*/, 'Es ist jemand an der Tür'); }, 1000); // Sprachansage timeout = setTimeout(function () { setState("alexa2.0.Echo-Devices.G2AxxxxxLLE.Player.volume"/*volume*/, 50, true); }, 1500); // Setzt Alexa auf 50% setTimeout(function() { sperre = false; }, 5000); //Zeit für Klingelsperre 1.Zeile } });
Beim Drücken des Klingelknopfes passiert folgendes:
-
Es wird ein Snapshot erstellt
-
dieser wird an zwei Mailadressen versendet
-
über die Fritzbox wird das Dect Telefon angerufen (als Klingelsignal)
-
Alexa äußert sich
-
die View am Tablet wird für 60 Sekunden auf das Kamerabild geschaltet.
Zusätzlich wird der Klingelknopf für 5000 ms gesperrt um zu verhindern das das Script durch schnelles Drücken gestoppt wird.
Meine Kamera hat nur einen rstp Stream der auch so nicht verwendbar ist. Deshalb läuft nebenher noch Motineye das mir den Stream umsetzt.
-
-
Dankeschön- ist ja echt toll !
Für einen Anfänger wie mich sehr umfangreich -werde es versuchen - nur ohne Mail.
Was für Adapter für Video benötige ich noch ?
-
Hallo,
super Umsetzung, könntest du die auch als Blockly Ausgeben und/oder per Telgramm das Bild verschicken?
Vielen Dank
-
Das Versenden per Telegramm ist sicher möglich. Aber da ich Telegramm nicht nutze kann ich das auf die Schnelle so nicht erklären was da zu machen wäre.
Als Blockly umsetzen?
Ich wüsste nicht wie man das konvertieren könnte. Umgekehrt geht, aber von JS nach Blockly :?:
Die Viedoausgabe hängt von deiner Kamera ab.
In meinem Fall liefert die billige Chinesenkamera nur einen RSTP-Stream den ich direkt im ioBroker nicht nutzen konnte. So musste ich auf dem Server noch motionEye installieren und den Stream umwandeln.
Manche Kameras liefern auch ein mjpg-Stream. Den kannst du direkt in VIS verwenden. Dann brauchst du auch keinen zusätzlichen Adapter im ioBroker
Für das Bild benötige ich noch den "phantom.js" Adapter. Aber wenn du das Bild direkt vorliegen hast musst du nur den Speicerort beim Mailversand anpassen und kannst dir den Umweg vermutlich auch sparen.
Wenn du den Mailversand auch nicht brauchst kannst du den Bereich:
sperre = true; sendTo('phantomjs.0', 'send', { url: 'http://192.168.8.95:8765/picture/2/current/?_username=xxxxxx&_signature=xxxxxxx', 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: 'xxxxx@gxxx.com', subject: 'Klingel', attachments:[ {path: '/opt/iobroker/node_modules/iobroker.phantomjs/picture.png', cid: "file1"}, ] }); //Mail mit Bild Empfänger 1 sendTo("email", "send", { text: '', to: 'xxxxxxxx@gxxxxx.com', subject: 'Klingel', attachments:[ {path: '/opt/iobroker/node_modules/iobroker.phantomjs/picture.png', cid: "file1"}, ] }); //Mail mit Bild Empfänger 2 }, 5000); // Verzögert den Mailversand bis das Bild gespeichert ist
weglassen.
-
Hallo,
super Umsetzung, könntest du die auch als Blockly Ausgeben und/oder per Telgramm das Bild verschicken?
Vielen Dank `
Ich habe auch eine Instar und nutze diese javascript hier aus dem Forum.
Der Trigger ist ein Zigbee Kontakt und die Bilder werden nur gesendet wenn niemand zuhause ist (Unifi Adapter).
// Telegram Bild senden durch Klingel oder Text to command var source_url = 'http://192.168.xx.xx:80/tmpfs/auto.jpg?usr=xxx&pwd=xxx', //IP Adresse der Instar mit user und password dest_path = 'G:/Kam/'; //Speicherort für das Bild var Nachricht = "Es hat an der Haustüre geklingelt"; // Nachricht, welche mit dem Bild gesendet wird var request = require('request'); var fs = require('fs'); //var timer = null; var count = 0; // Bild an telegram schicken function sendImage (pfad) { sendTo('telegram.0', pfad); //log('Webcam Bild per telegram verschickt'); //sendTo("telegram.0", Nachricht); // <-- nach der Timeout funktion ausführen } // Bild speichern function saveImage() { request.get({url: source_url, encoding: 'binary'}, function (err, response, body) { fs.writeFile(dest_path + 'image2.jpg', body, 'binary', function(err) { if (err) { //log('Fehler beim Bild speichern: ' + err, 'warn'); } else { //log('Webcam Bild gespeichert'); sendImage(dest_path + 'image2.jpg'); } }); }); } //Trigger // 3 Bilder senden wenn Bewegung erkannt und keiner zu Hause ist on({id: "zigbee.0.xxxx.isopen"/*Is open*/, val: true}, function () { // if (getState("javascript.0.Unifi.Anwesenheit.UAP.Chef"/*WLAN Anwesenheit (UAP) - Chef*/).val === false) { count = 3; counter(); timer = setInterval(counter, 3000); } ); function counter() { saveImage(); count--; if(count === 0 && timer) clearInterval(timer); }
-
In meinem Fall liefert die billige Chinesenkamera nur einen RSTP-Stream den ich direkt im ioBroker nicht nutzen konnte. So musste ich auf dem Server noch motionEye installieren und den Stream umwandeln. `
Schau dir mal ONVIF (https://en.wikipedia.org/wiki/ONVIF + https://github.com/futomi/node-onvif) an.
-
@danw Aber dann muss ich den Stream doch trotzdem umwandeln um ihn in VIS darzustellen.
Deshalb habe ich mich für motionEye entschieden. ONVIF kann zwar mehr, aber das sind überwiegend Funktionen die ich benötige.
-
Hi,
ich versuche mir auch ein Script zurecht zu basteln, klappt leider nicht.
Kann da mal jemand rüber schauen?var sperre = false; //verhindert das doppeltes Drücken das Script stoppt on({id: "hm-rpc.0.OEQ0124924.1.STATE"/*Is open*/, val: true}, function () { if (getState("javascript.0.Unifi.Anwesenheit.UAP.Chef"/*WLAN Anwesenheit (UAP) - Chef*/).val === false) { sendTo('phantomjs.0', 'send', { url: 'http://192.168.1.XX:XXX/picture/1/current/', output: 'picture.png', // default value width: 800, // default value height: 600, // default value timeout: 2000, // default value zoom: 1, // 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); }), // Bild an telegram schicken function sendImage (pfad) { sendTo('telegram.0', '/opt/iobroker/node_modules/iobroker.phantomjs/test.png'); log('Webcam Bild per telegram verschickt'); //sendTo("telegram.0", Nachricht); // <-- nach der Timeout funktion ausführen }, sendTo("pushover", "send", { message: 'Klingel', file: "/opt/iobroker/node_modules/iobroker.phantomjs/test.png", sound: "" }, //Klingelinfo über Pushover setTimeout(function() { sperre = false; }, 5000); //Zeit für Klingelsperre 1.Zeile } });
Zeile 44 meckert er immer.
danke.
-
@jensus11 Was mir auffällt ist, das du für das Speichern des Bildes keinen Timeout gesetzt hast. Also versuchst du zu versenden solange er noch das Bild speichert. Das hat bei mir nicht funktioniert.
Ob das jetzt dein Problem ist kann ich aber nicht erkennen. -
Das kommt wenn ich speichern drücke.
Ich denke etwas stimmt mit den Klammern nicht.2.3.2019, 08:21:51.712 [info ]: javascript.0 Stop script script.js.Meldungen_Alarme.Klingel 2.3.2019, 08:21:51.715 [info ]: javascript.1 Stop script script.js.Meldungen_Alarme.Klingel 2.3.2019, 08:21:51.725 [info ]: javascript.0 Start javascript script.js.Meldungen_Alarme.Klingel 2.3.2019, 08:21:51.725 [error]: javascript.0 script.js.Meldungen_Alarme.Klingel compile failed: at script.js.Meldungen_Alarme.Klingel:44