Hallo Paul,
anbei mal ein Bild mit der View wo das script aktiv ist:
5104_wetter.png
Danke nochmal für die Hilfe.
Gruß,
Tom
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/6
SPOILER Funktion Bildinhalt (Speicher_verzeichnis):
Da mal rein schauen.