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***** "); });
-
@michihorn
https://forum.iobroker.net/topic/35997/vis-fritzbox-anrufer-bild-mit-festem-namen-aktualisieren/6SPOILER Funktion Bildinhalt (Speicher_verzeichnis):
Da mal rein schauen.
-