NEWS
Gelöst: Snapshot beim Klingeln in Iobroker Speichern
-
Hallöchen
wie kann ich Kamera Snapshots so speichern, dass ich sie z.B. in einem Iframe im VIS darstellen kann?
Hier ein Auszug aus meinem Script:var source_url = 'http://192.168.178.xxx:88/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=hxxn&pwd=rxxxxng04', //Adresse der IpKamera dest_path = '/iobroker/iobroker-data/klingelbild/'; on({ id: idKlingel, val: "ding" }, function (obj) { var datenpunkt = obj.common.name; var geraetename = datenpunkt.substring(0, datenpunkt.indexOf(".Kind")); //.Kind abschneiden var ereignis_text = zeit_umwandeln(obj.newState.ts) + ' ' + geraetename; setState('Klingel.Ereignisprotokoll.Ereignis', ereignis_text.toString()); if (logging) log('Ereignisliste: Auslöser ' + zeit_umwandeln(obj.newState.ts) + ' ' + geraetename); request.get({ url: source_url, encoding: 'binary' }, function (err, response, body) { fs.writeFile(dest_path +'snapshot.jpg', body, 'binary', function (err) {Das ist die Fehlermeldung
13:01:48.145 error javascript.3 (744) script.js.Klingel.Klingel_Haustuer: {'errno':-4058,'code':'ENOENT','syscall':'open','path':'C:\\iobroker\\iobroker-data\\klingelbild\\snapshot.jpg'}Gruß Michael
Edit: Hier ist die Lösung
/*****Haustür Klingel***************** ** August 2020 ** RING, RING-Adapter, Kamera ** Grundlage ein Script von Pix ** ** geä:21.09.20 ******************************************************/ var logging = true; var idKlingel = "ring.0.doorbell_46904079.kind"; var anzahlbesucher var jetzt = new Date(); var request = require('request'); var fs = require('fs'); var Stunde = jetzt.getHours(); var Minute = jetzt.getMinutes(); createState('Klingel.HaustuerZaehler.Tag', 0, { read: true, write: true, type: 'number', name: "Haustuer" }); createState('Klingel.Ereignisprotokoll.Ereignisliste', { name: 'Ereignisprotokoll - Liste der Ereignisse', type: 'string' }); createState('Klingel.Ereignisprotokoll.Ereignis', { name: 'Ereignisprotokoll - Auslösendes Ereignis', type: 'string' }); var value = getState(idKlingel).val var request = require('request'); on({ id: idKlingel, val: "ding" }, function (obj) { var datenpunkt = obj.common.name; var geraetename = datenpunkt.substring(0, datenpunkt.indexOf(".Kind")); //.Kind abschneiden var ereignis_text = zeit_umwandeln(obj.newState.ts) + ' ' + geraetename; setState('Klingel.Ereignisprotokoll.Ereignis', ereignis_text.toString()); if (logging) log('Ereignisliste: Auslöser ' + zeit_umwandeln(obj.newState.ts) + ' ' + geraetename); request({url: "http://192.168.178.xxx:88/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=xxx&pwd=xxxxxxx", encoding: null, }, (error, response, body) => { if (!error && body) { writeFile("vis.0", "/klingelbild/Klingel.jpg", body); } } ); }); //Ereignisliste erstellen___________________________________________________________________________________________________ function ereignis(text) { // text = text.toString(); if (logging) log("Ereignisprotokoll " + text); var ereignisStr = getState('javascript.3.Klingel.Ereignisprotokoll.Ereignisliste').val; var ereignisArr; if (ereignisStr) { if (ereignisStr == "<ul><li></li></ul>") { ereignisArr = []; } else { ereignisArr = ereignisStr.replace(/<ul><li>/, "").replace(/<\/li><\/ul>/, "").split("</li><li>"); } } else { ereignisArr = []; } ereignisArr = ereignisArr.reverse(); ereignisArr.push(text); ereignisArr.reverse().splice(20); // Liste auf 20 Einträge beschränken var str = ereignisArr.join("</li><li>"); setState('javascript.3.Klingel.Ereignisprotokoll.Ereignisliste', "<ul><li>" + str + "</li></ul>"); } on("javascript.3.Klingel.Ereignisprotokoll.Ereignis", function (data) { if (logging) log('Ereignis ' + data.newState.val + ' übergeben'); ereignis(data.newState.val); }); function zeit_umwandeln(unix_zeit) { var nz = new Date(unix_zeit); var stunden = nz.getHours() < 10 ? '0' + nz.getHours() : nz.getHours(); var minuten = nz.getMinutes() < 10 ? '0' + nz.getMinutes() : nz.getMinutes(); var sekunden = nz.getSeconds() < 10 ? '0' + nz.getSeconds() : nz.getSeconds(); neue_zeit = stunden + ':' + minuten + ':' + sekunden + ' Uhr'; return (neue_zeit); } //Klingeln_____________________________________________________________________________________________________________________ on({ id: idKlingel }, (obj) => { let Haustuer = obj.state.val; let oldHaustuer = obj.oldState.val; let text = ''; if (Haustuer == 'ding') { text = '\ud83d\udd14 \ud83d\udd14 Ding Dong, es klingelt und es ist keiner zu Hause!'; console.log(text); anzahlbesucher = getState("Klingel.HaustuerZaehler.Tag").val; anzahlbesucher = anzahlbesucher + 1; log(anzahlbesucher); setState("javascript.3.Klingel.HaustuerZaehler.Tag", anzahlbesucher); var ereignis_text = zeit_umwandeln(obj.newState.ts); setState('javascript.3.Klingel.Ereignisprotokoll.Ereignis', ereignis_text.toString()); if (logging) log('Ereignisliste: Auslöser ' + zeit_umwandeln(obj.newState.ts)); } }); //Zähler zurücksetzen on({ time: { hour: 23, minute: 59 } }, function () { setState("Klingel.HaustuerZaehler.Tag", 0); setState("Klingel.Ereignisprotokoll.Ereignis", ""); setState("Klingel.Ereignisprotokoll.Ereignisliste", ""); anzahlbesucher = 0; log("*****Klingelereignisse gelöscht***** "); }); -
Hallöchen
wie kann ich Kamera Snapshots so speichern, dass ich sie z.B. in einem Iframe im VIS darstellen kann?
Hier ein Auszug aus meinem Script:var source_url = 'http://192.168.178.xxx:88/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=hxxn&pwd=rxxxxng04', //Adresse der IpKamera dest_path = '/iobroker/iobroker-data/klingelbild/'; on({ id: idKlingel, val: "ding" }, function (obj) { var datenpunkt = obj.common.name; var geraetename = datenpunkt.substring(0, datenpunkt.indexOf(".Kind")); //.Kind abschneiden var ereignis_text = zeit_umwandeln(obj.newState.ts) + ' ' + geraetename; setState('Klingel.Ereignisprotokoll.Ereignis', ereignis_text.toString()); if (logging) log('Ereignisliste: Auslöser ' + zeit_umwandeln(obj.newState.ts) + ' ' + geraetename); request.get({ url: source_url, encoding: 'binary' }, function (err, response, body) { fs.writeFile(dest_path +'snapshot.jpg', body, 'binary', function (err) {Das ist die Fehlermeldung
13:01:48.145 error javascript.3 (744) script.js.Klingel.Klingel_Haustuer: {'errno':-4058,'code':'ENOENT','syscall':'open','path':'C:\\iobroker\\iobroker-data\\klingelbild\\snapshot.jpg'}Gruß Michael
Edit: Hier ist die Lösung
/*****Haustür Klingel***************** ** August 2020 ** RING, RING-Adapter, Kamera ** Grundlage ein Script von Pix ** ** geä:21.09.20 ******************************************************/ var logging = true; var idKlingel = "ring.0.doorbell_46904079.kind"; var anzahlbesucher var jetzt = new Date(); var request = require('request'); var fs = require('fs'); var Stunde = jetzt.getHours(); var Minute = jetzt.getMinutes(); createState('Klingel.HaustuerZaehler.Tag', 0, { read: true, write: true, type: 'number', name: "Haustuer" }); createState('Klingel.Ereignisprotokoll.Ereignisliste', { name: 'Ereignisprotokoll - Liste der Ereignisse', type: 'string' }); createState('Klingel.Ereignisprotokoll.Ereignis', { name: 'Ereignisprotokoll - Auslösendes Ereignis', type: 'string' }); var value = getState(idKlingel).val var request = require('request'); on({ id: idKlingel, val: "ding" }, function (obj) { var datenpunkt = obj.common.name; var geraetename = datenpunkt.substring(0, datenpunkt.indexOf(".Kind")); //.Kind abschneiden var ereignis_text = zeit_umwandeln(obj.newState.ts) + ' ' + geraetename; setState('Klingel.Ereignisprotokoll.Ereignis', ereignis_text.toString()); if (logging) log('Ereignisliste: Auslöser ' + zeit_umwandeln(obj.newState.ts) + ' ' + geraetename); request({url: "http://192.168.178.xxx:88/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=xxx&pwd=xxxxxxx", encoding: null, }, (error, response, body) => { if (!error && body) { writeFile("vis.0", "/klingelbild/Klingel.jpg", body); } } ); }); //Ereignisliste erstellen___________________________________________________________________________________________________ function ereignis(text) { // text = text.toString(); if (logging) log("Ereignisprotokoll " + text); var ereignisStr = getState('javascript.3.Klingel.Ereignisprotokoll.Ereignisliste').val; var ereignisArr; if (ereignisStr) { if (ereignisStr == "<ul><li></li></ul>") { ereignisArr = []; } else { ereignisArr = ereignisStr.replace(/<ul><li>/, "").replace(/<\/li><\/ul>/, "").split("</li><li>"); } } else { ereignisArr = []; } ereignisArr = ereignisArr.reverse(); ereignisArr.push(text); ereignisArr.reverse().splice(20); // Liste auf 20 Einträge beschränken var str = ereignisArr.join("</li><li>"); setState('javascript.3.Klingel.Ereignisprotokoll.Ereignisliste', "<ul><li>" + str + "</li></ul>"); } on("javascript.3.Klingel.Ereignisprotokoll.Ereignis", function (data) { if (logging) log('Ereignis ' + data.newState.val + ' übergeben'); ereignis(data.newState.val); }); function zeit_umwandeln(unix_zeit) { var nz = new Date(unix_zeit); var stunden = nz.getHours() < 10 ? '0' + nz.getHours() : nz.getHours(); var minuten = nz.getMinutes() < 10 ? '0' + nz.getMinutes() : nz.getMinutes(); var sekunden = nz.getSeconds() < 10 ? '0' + nz.getSeconds() : nz.getSeconds(); neue_zeit = stunden + ':' + minuten + ':' + sekunden + ' Uhr'; return (neue_zeit); } //Klingeln_____________________________________________________________________________________________________________________ on({ id: idKlingel }, (obj) => { let Haustuer = obj.state.val; let oldHaustuer = obj.oldState.val; let text = ''; if (Haustuer == 'ding') { text = '\ud83d\udd14 \ud83d\udd14 Ding Dong, es klingelt und es ist keiner zu Hause!'; console.log(text); anzahlbesucher = getState("Klingel.HaustuerZaehler.Tag").val; anzahlbesucher = anzahlbesucher + 1; log(anzahlbesucher); setState("javascript.3.Klingel.HaustuerZaehler.Tag", anzahlbesucher); var ereignis_text = zeit_umwandeln(obj.newState.ts); setState('javascript.3.Klingel.Ereignisprotokoll.Ereignis', ereignis_text.toString()); if (logging) log('Ereignisliste: Auslöser ' + zeit_umwandeln(obj.newState.ts)); } }); //Zähler zurücksetzen on({ time: { hour: 23, minute: 59 } }, function () { setState("Klingel.HaustuerZaehler.Tag", 0); setState("Klingel.Ereignisprotokoll.Ereignis", ""); setState("Klingel.Ereignisprotokoll.Ereignisliste", ""); anzahlbesucher = 0; log("*****Klingelereignisse gelöscht***** "); });@michihorn
https://forum.iobroker.net/topic/35997/vis-fritzbox-anrufer-bild-mit-festem-namen-aktualisieren/6SPOILER Funktion Bildinhalt (Speicher_verzeichnis):
Da mal rein schauen.
-
Hallöchen
wie kann ich Kamera Snapshots so speichern, dass ich sie z.B. in einem Iframe im VIS darstellen kann?
Hier ein Auszug aus meinem Script:var source_url = 'http://192.168.178.xxx:88/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=hxxn&pwd=rxxxxng04', //Adresse der IpKamera dest_path = '/iobroker/iobroker-data/klingelbild/'; on({ id: idKlingel, val: "ding" }, function (obj) { var datenpunkt = obj.common.name; var geraetename = datenpunkt.substring(0, datenpunkt.indexOf(".Kind")); //.Kind abschneiden var ereignis_text = zeit_umwandeln(obj.newState.ts) + ' ' + geraetename; setState('Klingel.Ereignisprotokoll.Ereignis', ereignis_text.toString()); if (logging) log('Ereignisliste: Auslöser ' + zeit_umwandeln(obj.newState.ts) + ' ' + geraetename); request.get({ url: source_url, encoding: 'binary' }, function (err, response, body) { fs.writeFile(dest_path +'snapshot.jpg', body, 'binary', function (err) {Das ist die Fehlermeldung
13:01:48.145 error javascript.3 (744) script.js.Klingel.Klingel_Haustuer: {'errno':-4058,'code':'ENOENT','syscall':'open','path':'C:\\iobroker\\iobroker-data\\klingelbild\\snapshot.jpg'}Gruß Michael
Edit: Hier ist die Lösung
/*****Haustür Klingel***************** ** August 2020 ** RING, RING-Adapter, Kamera ** Grundlage ein Script von Pix ** ** geä:21.09.20 ******************************************************/ var logging = true; var idKlingel = "ring.0.doorbell_46904079.kind"; var anzahlbesucher var jetzt = new Date(); var request = require('request'); var fs = require('fs'); var Stunde = jetzt.getHours(); var Minute = jetzt.getMinutes(); createState('Klingel.HaustuerZaehler.Tag', 0, { read: true, write: true, type: 'number', name: "Haustuer" }); createState('Klingel.Ereignisprotokoll.Ereignisliste', { name: 'Ereignisprotokoll - Liste der Ereignisse', type: 'string' }); createState('Klingel.Ereignisprotokoll.Ereignis', { name: 'Ereignisprotokoll - Auslösendes Ereignis', type: 'string' }); var value = getState(idKlingel).val var request = require('request'); on({ id: idKlingel, val: "ding" }, function (obj) { var datenpunkt = obj.common.name; var geraetename = datenpunkt.substring(0, datenpunkt.indexOf(".Kind")); //.Kind abschneiden var ereignis_text = zeit_umwandeln(obj.newState.ts) + ' ' + geraetename; setState('Klingel.Ereignisprotokoll.Ereignis', ereignis_text.toString()); if (logging) log('Ereignisliste: Auslöser ' + zeit_umwandeln(obj.newState.ts) + ' ' + geraetename); request({url: "http://192.168.178.xxx:88/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=xxx&pwd=xxxxxxx", encoding: null, }, (error, response, body) => { if (!error && body) { writeFile("vis.0", "/klingelbild/Klingel.jpg", body); } } ); }); //Ereignisliste erstellen___________________________________________________________________________________________________ function ereignis(text) { // text = text.toString(); if (logging) log("Ereignisprotokoll " + text); var ereignisStr = getState('javascript.3.Klingel.Ereignisprotokoll.Ereignisliste').val; var ereignisArr; if (ereignisStr) { if (ereignisStr == "<ul><li></li></ul>") { ereignisArr = []; } else { ereignisArr = ereignisStr.replace(/<ul><li>/, "").replace(/<\/li><\/ul>/, "").split("</li><li>"); } } else { ereignisArr = []; } ereignisArr = ereignisArr.reverse(); ereignisArr.push(text); ereignisArr.reverse().splice(20); // Liste auf 20 Einträge beschränken var str = ereignisArr.join("</li><li>"); setState('javascript.3.Klingel.Ereignisprotokoll.Ereignisliste', "<ul><li>" + str + "</li></ul>"); } on("javascript.3.Klingel.Ereignisprotokoll.Ereignis", function (data) { if (logging) log('Ereignis ' + data.newState.val + ' übergeben'); ereignis(data.newState.val); }); function zeit_umwandeln(unix_zeit) { var nz = new Date(unix_zeit); var stunden = nz.getHours() < 10 ? '0' + nz.getHours() : nz.getHours(); var minuten = nz.getMinutes() < 10 ? '0' + nz.getMinutes() : nz.getMinutes(); var sekunden = nz.getSeconds() < 10 ? '0' + nz.getSeconds() : nz.getSeconds(); neue_zeit = stunden + ':' + minuten + ':' + sekunden + ' Uhr'; return (neue_zeit); } //Klingeln_____________________________________________________________________________________________________________________ on({ id: idKlingel }, (obj) => { let Haustuer = obj.state.val; let oldHaustuer = obj.oldState.val; let text = ''; if (Haustuer == 'ding') { text = '\ud83d\udd14 \ud83d\udd14 Ding Dong, es klingelt und es ist keiner zu Hause!'; console.log(text); anzahlbesucher = getState("Klingel.HaustuerZaehler.Tag").val; anzahlbesucher = anzahlbesucher + 1; log(anzahlbesucher); setState("javascript.3.Klingel.HaustuerZaehler.Tag", anzahlbesucher); var ereignis_text = zeit_umwandeln(obj.newState.ts); setState('javascript.3.Klingel.Ereignisprotokoll.Ereignis', ereignis_text.toString()); if (logging) log('Ereignisliste: Auslöser ' + zeit_umwandeln(obj.newState.ts)); } }); //Zähler zurücksetzen on({ time: { hour: 23, minute: 59 } }, function () { setState("Klingel.HaustuerZaehler.Tag", 0); setState("Klingel.Ereignisprotokoll.Ereignis", ""); setState("Klingel.Ereignisprotokoll.Ereignisliste", ""); anzahlbesucher = 0; log("*****Klingelereignisse gelöscht***** "); });
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden