Super, funktioniert prima.
Vielen Dank
NEWS
Latest posts made by dondento
-
RE: [gelöst] Bilder nach Vis.0 uploaden
-
RE: [gelöst] Bilder nach Vis.0 uploaden
Hallo, hier das Skript:
fs.readdir('/home/smarthome/Musik', (err, files) => { if (err) { console.error(err); return; } html ="<table width=100% border=0>"; for (i=0;i<files.length;i++) { let imagename='/home/smarthome/Musik/'+ files[i]+"/cover.jpg"; let destinationName ='/opt/iobroker/iobroker-data/files/vis.0/main/Musik/cover' + i + '.jpg'; // fs.copyFile(imagename, destinationName, (err) => { // if (err) {} // else console.log(imagename + ' wurde kopiert'); // }); fs.readFile(imagename, (err, data)=>{ if(err) { } else { console.log("Schreibe nach: " + destinationName); fs.writeFile(destinationName, data, (err) => { if (err) console.log(err); else { console.log("File written successfully\n"); } }); } }) if (i%4 == 0) html+= "<tr>"; html+= "<td align=center style=\"padding:15px\"><div onclick='playAlbum(" + i + ")'><img src= '/vis.0/main/Sonstige/schallplatte.png' style=\"height: 50px; width: 50px;\"></div>" + files[i] + "</td>"; if (i%4 == 3 ) html+="</tr>\r\n"; } if (files.length %4 !=3) html+="</tr>\r\n"; html += "</table>\r\n"; html += "<script>function playAlbum(id){\r\n"; html += "console.log('Spiele Album ' + id);\r\n"; html += "this.servConn._socket.emit('setState', '0_userdata.0.Musikverzeichnis.Album', id);\r\n"; html += " }\r\n"; html += "</script>"; setState('0_userdata.0.Musikverzeichnis.HTML-Alben'/*HTML-Alben*/,html); });
}
Jetzt mal mit readfile und writefile. Kopieren funktioniert, laut Terminal sind die Files vorhanden, jedoch keine Anzeige im Vis-Dateimanager.
-
[gelöst] Bilder nach Vis.0 uploaden
Ich möchte Bilder(jpg) über ein Skript in den Ordner /opt/iobroker/iobroker-data/files/vis.0/main/...... kopieren.
Dies funktioniert, jedoch sind die Bilder im Vis-Dateimanager nicht sichtbar und sie können auch in der View nicht dargestellt werden('File not found').Nach langem Suchen bin ich auf den Hinweis 'falsches Format' gestossen und habe es dann über eine fetch-Funktion versucht (URL: IP-Addresse:8082/vis.0/main/........)
Dies funktioniert leider nicht, da fetch nur absolute URLs akzeptiert.Weiss jemand einen Rat?
Danke
-
RE: Script auf Ende einer Funktion warten lassen
@alcalzone
Das habe ich mir schon gedacht.Vielen Dank
-
RE: Script auf Ende einer Funktion warten lassen
Sollte eigentlich so funktionieren:
Script:
....
setState('0_userdata.0.MessageBox.cmdString','Fehler;Bitte Menge oder Stückzahl eingeben;OK;Cancel');
result = Messagebox(); Hier sollte das Script auf 'result' warten.
....Globale Funktion:
var result;
async function MessageBox()
{
var cmdString = getState('0_userdata.0.MessageBox.cmdString').val;
var cmdArray = cmdString.split(';');if (cmdArray.length<3) return; setState('0_userdata.0.MessageBox.Titel', cmdArray[0],true); setState('0_userdata.0.MessageBox.Text',cmdArray[1],true); setState('0_userdata.0.MessageBox.Button1.Text', cmdArray[2],true); result='NaN'; setState('0_userdata.0.MessageBox.Button1.Sichtbar',true); setState('0_userdata.0.MessageBox.Button1.Clicked',false); if (cmdArray.length==3) { setState('0_userdata.0.MessageBox.Button1.PositionX',215,false); setState('0_userdata.0.MessageBox.Button1.PositionY',170,false); setState('0_userdata.0.MessageBox.Button2.Sichtbar',false,false); } if (cmdArray.length==4) { setState('0_userdata.0.MessageBox.Button1.PositionX',70,false); setState('0_userdata.0.MessageBox.Button1.PositionY',170,false); setState('0_userdata.0.MessageBox.Button2.Text',cmdArray[3],true); setState('0_userdata.0.MessageBox.Button2.Sichtbar',true,false); setState('0_userdata.0.MessageBox.Button2.Clicked',false,false); setState('0_userdata.0.MessageBox.Button2.PositionX',320,false); setState('0_userdata.0.MessageBox.Button2.PositionY',170,false); } setStateDelayed('0_userdata.0.MessageBox.Sichtbar',true,500) await schleife(); setState('0_userdata.0.MessageBox.Result'/*Result*/,result,true); setState('0_userdata.0.MessageBox.Sichtbar'/*Sichtbar*/,false,true); return result;
}
function schleife()
{
while(result == 'NaN') {}
}// Button 1 wurde geklicked
on ({id:'0_userdata.0.MessageBox.Button1.Clicked',val:true}, async function(obj){
obj.state.val=false;
setState('0_userdata.0.MessageBox.Result',getState('0_userdata.0.MessageBox.Button1.Text').val);
result=getState('0_userdata.0.MessageBox.Button1.Text'/Text/).val;
});// Button 2 wurde geklicked
on ({id:'0_userdata.0.MessageBox.Button2.Clicked',val:true}, async function(obj){
obj.state.val=false;
setState('0_userdata.0.MessageBox.Result',getState('0_userdata.0.MessageBox.Button2.Text').val);
result=getState('0_userdata.0.MessageBox.Button2.Text'/Text/).val;
}); -
Script auf Ende einer Funktion warten lassen
Hallo,
ich möchte ein Script erstellen, das eine globale Funktion aufruft.
Die globale Funktion soll auf einen bestimmten Zustand eines Datenpunktes warten und den Wert an das Script zurückgeben. Das Script soll dabei warten, bis die globale Funktion beendet ist.
Leider deaktiviert sich sich die Javascript-Instanz jedesmal. Ich habe auch schon alles mögliche mit 'async' und 'await' getestet.
Weiss jemand eine Möglichkeit, dies zu realisieren?