NEWS
Gelöst: Bild von Motioneye nach VIS kopieren mit JavaScript
-
@digi-bit sagte in Bild von Motioneye nach VIS kopieren mit JavaScript:
Javascript aber mit einem Bild direkt von der Kamera.
dann hol es doch von motioneye
ich mach das z.b. so, allerdings ausserhalb des iobroker Ordners, wegen dem nicht mehr diekt hineinschreiben dürfen, dazu gibt es aber mehrere Threads dazuvar request = require('request'); var fs = require('fs'); function sendImage() { request.get({url: 'http://deinebildquelle', encoding: 'binary'}, function (err, response, body) { fs.writeFile("/opt/iobroker/ipcam/pi.jpg", body, 'binary', function(err) { if (err) { console.error(err); } else { //console.log('Snapshot sent'); sendTo('telegram.1', '/opt/iobroker/ipcam/pi.jpg'); //sendTo('telegram.0', {text: '/tmp/snap.jpg', caption: 'Snapshot'}); } }); }); }
-
@bahnuhr stimmt schon, du kannst dir ein Bild von der Cam holen, oder wenn motioneye etwas erkennt und ein Bild macht, vergleichst du dann beide, stellst man einen Versatz fest.
-
@crunchip sagte in Bild von Motioneye nach VIS kopieren mit JavaScript:
@bahnuhr stimmt schon, du kannst dir ein Bild von der Cam holen, oder wenn motioneye etwas erkennt und ein Bild macht, vergleichst du dann beide, stellst man einen Versatz fest.
ja, genau.
Aber sein Script war ja, direkt von der cam und dann speichern.
Dürfte kein Unterschied sein.Die Frage ist halt, was er will ?!?!
-
@bahnuhr sagte in Bild von Motioneye nach VIS kopieren mit JavaScript:
was er will
das Bild was motioneye selbst gemacht hat, soweit ich verstanden habe
-
@crunchip sagte in Bild von Motioneye nach VIS kopieren mit JavaScript:
@digi-bit sagte in Bild von Motioneye nach VIS kopieren mit JavaScript:
Javascript aber mit einem Bild direkt von der Kamera.
dann hol es doch von motioneye
ich mach das z.b. so, allerdings ausserhalb des iobroker Ordners, wegen dem nicht mehr diekt hineinschreiben dürfen, dazu gibt es aber mehrere Threads dazuvar request = require('request'); var fs = require('fs'); function sendImage() { request.get({url: 'http://deinebildquelle', encoding: 'binary'}, function (err, response, body) { fs.writeFile("/opt/iobroker/ipcam/pi.jpg", body, 'binary', function(err) { if (err) { console.error(err); } else { //console.log('Snapshot sent'); sendTo('telegram.1', '/opt/iobroker/ipcam/pi.jpg'); //sendTo('telegram.0', {text: '/tmp/snap.jpg', caption: 'Snapshot'}); } }); }); }
Hi,
Ja denke das kommt schon fast so hin in die richtung.
ich will ja keine URL sonder einen datenpunkt haben "0_userdata.0.10_VIS-TAB8.motioneye.takeSnapshot"
in diesen datenpunkt steht ja der Path zu dem letzten snapshot von M*Eye im meinem fall grade der " /var/snap/motioneye/common/media/Camera2/2022-11-20/18-05-30_04.jpg "/opt/iobroker/ipcam/pi.jpg
das müste nach meinem script ja dann " 'vis.0','/Samsung-Tab8/Meine_Icons/Sonstige/snapshot.png' " sein.....
nur wen ich das so in deinem script einsetze sieht das sehr komisch aus
var request = require('request'); var fs = require('fs'); function sendImage() { request.get({'0_userdata.0.10_VIS-TAB8.motioneye.takeSnapshot', encoding: 'binary'}, function (err, response, body) { fs.writeFile("vis.0','/Samsung-Tab8/Meine_Icons/Sonstige/snapshot.png", body, 'binary', function(err) { if (err) { console.error(err); } else { //console.log('Snapshot sent'); sendTo('telegram.1', '/opt/iobroker/ipcam/pi.jpg'); //sendTo('telegram.0', {text: '/tmp/snap.jpg', caption: 'Snapshot'}); } }); }); }
kann das noch einer richtig stellen in dem script das es geht ?
mfg
Digi-Bit
-
@crunchip sagte in Bild von Motioneye nach VIS kopieren mit JavaScript:
@bahnuhr sagte in Bild von Motioneye nach VIS kopieren mit JavaScript:
was er will
das Bild was motioneye selbst gemacht hat, soweit ich verstanden habe
Naja.... eigentlich nicht weil das das bild ja auch von HTTP kommt.
ich habe ein Bild..... nur ebent mit verschiedenen Endungen und Datums Merkmale was in verschiedenen dir's liegt von M*Eye
das einzige was ich konstant habe ist der "Lagerort" des Path's zum Bild nämlich "0_userdata.0.10_VIS-TAB8.motioneye.getLastPic"
mfg
-
Wie muss man den das Script ändern das es dann geht ?
var request = require('request'); var fs = require('fs'); function sendImage() { request.get({'0_userdata.0.10_VIS-TAB8.motioneye.takeSnapshot', encoding: 'binary'}, function (err, response, body) { [^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^] fs.writeFile("vis.0','/Samsung-Tab8/Meine_Icons/Sonstige/snapshot.png", body, 'binary', function(err) { if (err) { console.error(err); } else { //console.log('Snapshot sent'); sendTo('telegram.1', '/opt/iobroker/ipcam/pi.jpg'); //sendTo('telegram.0', {text: '/tmp/snap.jpg', caption: 'Snapshot'}); } }); }); }
kann mir da noch jemand Helfen ?
mfg
Digi-Bit
-
also eigentlich reicht ja das
var fs = require('fs'); var timeout1 timeout1 = setTimeout(function () { const picture= fs.readFileSync('/var/snap/motioneye/common/media/Camera2/2022-11-20/20-25-50_02.jpg'); writeFile('vis.0','/Samsung-Tab8/Meine_Icons/Sonstige/snapshot.png', picture, function (error) { }); }, 10000);
Also so funktioniert das ja.
nur ändert sich der Path ja immer da ich ja 3 Kammeras habe
der Aktuelle Path steht in 0_userdata.0.10_VIS-TAB8.motioneye.getLastPic drin.
wie bekomme ich das jetzt als variable ind die zele da rein.
irgend wie muss das ja so in der art sein
var fs = require('fs'); var timeout1 timeout1 = setTimeout(function () { phat+dateiname = ist wert aus datenpunkt = 0_userdata.0.10_VIS-TAB8.motioneye.getLastPic const picture= fs.readFileSync('/path+dateiname.jpg'); writeFile('vis.0','/Samsung-Tab8/Meine_Icons/Sonstige/snapshot.png', picture, function (error) { }); }, 10000);
kann mir das einer in Java Script übersetzen ?
mfg
Digi-Bit
-
@digi-bit sagte in Bild von Motioneye nach VIS kopieren mit JavaScript:
sonder einen datenpunkt haben
eigentlich willst du doch das direkt abgespeicherte Bild was durch motioneye abgelegt wurde?
@digi-bit sagte in Bild von Motioneye nach VIS kopieren mit JavaScript:
was in verschiedenen dir's liegt
ja und?
@digi-bit sagte in Bild von Motioneye nach VIS kopieren mit JavaScript:
nur ändert sich der Path ja immer da ich ja 3 Kammeras habe
ich blicks grad nicht, wo willst du ein Bild holen und woher kommt das bzw wie?
-
@crunchip
Ich glaube ich habe das jetzt kapiert.Unter dem Datenpunkt
0_userdata.0.10_VIS-TAB8.motioneye.getLastPic
steht der aktuelle Pfad zum Bild.Das soll dann von dem Pfad (der sich wegen der 3 Kameras ständig ändert) geholt werden und in dem Pfad
'vis.0','/Samsung-Tab8/Meine_Icons/Sonstige/snapshot.png'
umbenannt und gespeichert werden. -
@crunchip sagte in Bild von Motioneye nach VIS kopieren mit JavaScript:
@digi-bit sagte in Bild von Motioneye nach VIS kopieren mit JavaScript:
sonder einen datenpunkt haben
eigentlich willst du doch das direkt abgespeicherte Bild was durch motioneye abgelegt wurde?
Genau
@digi-bit sagte in Bild von Motioneye nach VIS kopieren mit JavaScript:
was in verschiedenen dir's liegt
ja und?
ahha
@digi-bit sagte in Bild von Motioneye nach VIS kopieren mit JavaScript:
nur ändert sich der Path ja immer da ich ja 3 Kammeras habe
ich blicks grad nicht, wo willst du ein Bild holen und woher kommt das bzw wie?
ich weiss nicht, drück ich mich so doof aus ?
das bild kommt von Motioneye wird in /var/snap/motioneye/common/media/Camerax/datum/ gespeichtert.
der speicherpunkt liegt in den userdaten "0_userdata.0.10_VIS-TAB8.motioneye.getLastPic"
steht aber eigentlich alles schon Paar mal da !
mfg
-
@chaot sagte in Bild von Motioneye nach VIS kopieren mit JavaScript:
@crunchip
Ich glaube ich habe das jetzt kapiert.Unter dem Datenpunkt
0_userdata.0.10_VIS-TAB8.motioneye.getLastPic
steht der aktuelle Pfad zum Bild.Das soll dann von dem Pfad (der sich wegen der 3 Kameras ständig ändert) geholt werden und in dem Pfad
'vis.0','/Samsung-Tab8/Meine_Icons/Sonstige/snapshot.png'
umbenannt und gespeichert werden.Treffer
mfg
-
Ich hab es es selber rausgefunden obwohl ich keine Ahnung von Java eigentlich habe
var fs = require('fs'); dest_path = getState("0_userdata.0.10_VIS-TAB8.motioneye.getLastPic").val; var timeout1 timeout1 = setTimeout(function () { const picture= fs.readFileSync(dest_path); writeFile('vis.0','/Samsung-Tab8/Meine_Icons/Sonstige/snapshot.png', picture, function (error) { }); }, 20000);
trotzdem danke ^^
mfg
Digi-Bit
-
@digi-bit Da war ich wohl zu langsam beim Schreiben.
Ich denke das das mit dem variablen Pfad keiner (auch ich) richtig verstanden hat am Anfang. -
@chaot sagte in Bild von Motioneye nach VIS kopieren mit JavaScript:
@digi-bit Da war ich wohl zu langsam beim Schreiben.
Ich denke das das mit dem variablen Pfad keiner (auch ich) richtig verstanden hat am Anfang.ja, so kommt mir das auch vor obwohl ich das oben geschrieben habe und mehrmals erwähnt habe.....
schade eigentlich aber nun geht es ja.....
ich weis nur nicht ob das so "sauber" geschrieben ist , vielleicht hat der eine oder andere ja noch Verbesserungen einzubringen ............
mfg
Digi-Bit
-
Moin,
ist zwar schon etwas her. aber ich stehe vor einem ähnlichen Problem und brauche das Bild welches Motioneye gemacht habe. Sprich den Pfad dorthin.
Hier sprecht ihr von einem DP " 0_userdata.0.10_VIS-TAB8.motioneye.getLastPic " . wie bekommt ihr den Pfad in diesen DP?
Also bei mir sieht der Pfad so aus.
http://192.168.+++.+++:8765/picture/1/preview/2023-01-20/08-03-15.jpg?_username=++++&_signature=**************************************Grüße
-
@intruder7 etwa so, am Beispiel einer Reolink Kamera, siehe Zeile 6:
request({ url: "http://192.168.178.xxx/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=wudddUCeI9WG7C&user=admin&password=rxxxx", encoding: null, }, (error, response, body) => { if (!error && body) { writeFile("vis.0", "/klingelbild/Klingel.jpg", body); } }
-
@michihorn das verstehe ich schon. nur ich brauche den Pfad von Motioneye zum zuletzt aufgenommen Bild