NEWS
Datenpunkt als Datei speichern
-
wenn dein Schnappschuss Link in einem Datenpunkt steht kannst du es so machen:
wget --output-document /opt/iobroker/meinverzeichnis/meinbild.jpg '
-
@cinimod sagte in Datenpunkt als Datei speichern:
wenn dein Schnappschuss Link in einem Datenpunkt steht
nee, da liegt der Schnappschuss selber.
Er hat keine Datei.
Die würde er gerne erzeugen un sie zu verschicken. -
-
@cinimod Der Schnappschuss ist in dem Datenpunkt (nicht als Link). Deshalb möchte ich den Inhalt des Datenpunktes als Datei speichern.
-
Hat niemand eine Idee bzw. gibt es hier keine Möglichkeit?
-
-
@crunchip Danke, das hatte ich schon gelesen. Die anderen Nutzer haben es so gemacht, dass sie das Bild bei Auslösen des Events frisch von der Kamera oder Frigate ziehen. Das könnte ich auch machen, aber ist halt irgendwie unsinnig, wenn ich das Bild schon als Datenpunkt in iobroker drin habe. Ich kann es halt nur nicht speichern um es dann zu versenden.
-
ich mache sowas mit einem png file - ob das miteinem jfif auch geht, weiß ich nicht
mein dp sieht so aus:
das script sichert letztlich diesen code in ein bild im vis-folder zur anzeige in der vis - du müßtest es halt versenden
teil script:
const fs = require('fs'); let myArrFiles=[] let counter=0 ; let myPather='/opt/iobroker/iobroker-data/files/vis.0/armin/img' log("schreibe file mit " + nameOfPic) //log(Buffer.from(x)) var data = x.replace(/^data:image\/\w+;base64,/, ""); //var buf = new Buffer(data, 'base64'); //writeFile('vis.0',"/PicFromBrowserUpload/"+nameOfPic,Buffer.from(x), function (){ writeFile('vis.0','/armin/img/'+nameOfPic,Buffer.from(data,'base64'), function (){ //fs.readdir('/opt/iobroker/iobroker-data/files/vis.0/PicFromBrowserUpload', (err, files) => { fs.readdir(myPather, (err, files) => { if (err) console.log(err); else { // console.log("\nCurrent directory filenames:"); files.forEach(file => { //console.log(fs.read()); counter++; let sizer=fs.statSync(myPather+'/'+file).size; myArrFiles.push({"Anzahl":counter,"Filename":file,"Größe":sizer}) }) } //log(JSON.stringify(files)) setState('0_userdata.0.UPLOADinVIS.VerzeichnisUploads',JSON.stringify(myArrFiles)) }) } )
-
@liv-in-sky Ich bekomme das einfach nicht ans laufen. Wo genau im Skript definiere ich denn den Datenpunkt, dessen Inhalt ich speichern möchte?
-
@chrisbgl das ist hier im script auch nicht drin - das ist kein laufendes script, sondern sollte nur ein paar befehle zeigen
in dieser zeile wird die datei, die im datenpunkt ist verändert - ohne ging es nicht - x wäre dann der inhalt des datenpunktes
var data = x.replace(/^data:image\/\w+;base64,/, "");
diese zeile schreibt das file ins fiesystem, damit es von iobroker aus als file existiert
writeFile('vis.0','/armin/img/'+nameOfPic,Buffer.from(data,'base64'), function (){...