NEWS
Test Adapter OctoPrint
-
@da_woody
verwendest du iframe?
Bei mir läuft´s mit iframe und chrome (ff hab ich nicht getestet).@latzi nix iframe, das ist iQontrol...
ist aber anscheinend ein iframe. hrnz.Die "X-Frame-Options"-Direktive "sameorigin" verbietet das Laden von "http://192.168.2.59/plugin/prusaslicerthumbnails/thumbnail/D%C3%BCse-v1_r.png?20220120151807" in einem Frame. -
An alle und speziell @Negalein

Ich habe hier ein JS-Script zusammengeschustert, welches die Octoprint-Zeiten in HH:MM:SS umsetzt,
sowie die Gesamtdruckdauer und Fertigstellungszeit erstellt.
(Fertigstellungszeit enthält auch das Datum, weil der Druckjob ja z.B. erst am nächsten Tag fertig werden könnte).Sieht in meinem VIS z.B. so aus:

Dazu werden unter javascript.0.OctoPi insges. 4 Datenpunkte (EndeZeit, Gesamtzeit, Printzeit, Restzeit) beim ersten Start des Scriptes angelegt, deren Inhalte (Strings) im VIS eingebunden werden können

evtl. kann das ja außer @Negalein noch jemand gebrauchen?
//##################################################################### // Octoprint-Zeitberechnungen //##################################################################### // Variablen aus Octoprint-Adapter uebernehmen const anycubic_timedone = 'octoprint.0.printjob.progress.printtime' const anycubic_timeleft = 'octoprint.0.printjob.progress.printtime_left' const anycubic_completion = 'octoprint.0.printjob.progress.completion' // Eigene Datenpunkte unter "javascript.0.OctoPi." erzeugen createState('javascript.0.OctoPi.Printzeit', { name: 'Druckdauer', desc: 'Druckdauer', type: 'string' }); createState('javascript.0.OctoPi.Restzeit', { name: 'Restzeit', desc: 'Restzeit', type: 'string' }); createState('javascript.0.OctoPi.Gesamtzeit', { name: 'Gesamtzeit', desc: 'Gesamtdauer des Druckjobs', type: 'string', }); createState( 'javascript.0.OctoPi.EndeZeit', { name: 'EndeZeit', desc: 'Uhrzeit Fertigstellung des Druckes', type: 'string' }); //____________________________________________________________________________________________________ // Umrechnung der Druckzeiten von Sekunden in HH:MM:SS //##################################################### function umrechnung() { var time_left = getState("octoprint.0.printjob.progress.printtime_left").val; var job_time = getState('octoprint.0.printjob.progress.printtime').val; var duration = time_left + job_time; // Hours var hours_restzeit = Math.floor( time_left / 3600 ); var hours_printzeit = Math.floor( job_time / 3600 ); var hours_duration = Math.floor( duration / 3600 ); // Fuehrende 0 notwendig ? if ( hours_restzeit < 10 ){var std_restzeit = "0" + String(hours_restzeit);} else var std_restzeit = String(hours_restzeit) if ( hours_printzeit < 10 ){var std_printzeit= "0" + String(hours_printzeit); } else var std_printzeit = String(hours_printzeit) if ( hours_duration < 10 ){var std_duration= "0" + String(hours_duration); } else var std_duration = String(hours_duration) // Minutes var minutes_restzeit = Math.floor( (time_left%3600) / 60 ); var minutes_printzeit = Math.floor( (job_time%3600) / 60 ); var minutes_duration = Math.floor( (duration%3600) / 60 ); if ( minutes_restzeit < 10 ){var min_restzeit = "0" + String(minutes_restzeit);} else var min_restzeit = String(minutes_restzeit) if ( minutes_printzeit < 10 ){var min_printzeit= "0" + String(minutes_printzeit); } else var min_printzeit = String(minutes_printzeit) if ( minutes_duration < 10 ){var min_duration= "0" + String(minutes_duration); } else var min_duration = String(minutes_duration) // Seconds var seconds_restzeit = Math.floor( time_left%60 ); var seconds_printzeit = Math.floor( job_time%60 ); var seconds_duration = Math.floor( duration%60 ); if ( seconds_restzeit < 10 ){var sec_restzeit = "0" + String(seconds_restzeit);} else var sec_restzeit = String(seconds_restzeit) if ( seconds_printzeit < 10 ){var sec_printzeit= "0" + String(seconds_printzeit); } else var sec_printzeit = String(seconds_printzeit) if ( seconds_duration < 10 ){var sec_duration= "0" + String(seconds_duration); } else var sec_duration = String(seconds_duration) // Zeiten in HH:MM:SS format var restzeit = std_restzeit + ':' + min_restzeit + ':' + sec_restzeit; var printzeit = std_printzeit + ':' + min_printzeit + ':' + sec_printzeit; var dauer = std_duration + ':' + min_duration + ':' + sec_duration; //console.log("Restzeit:" + restzeit + "__" + " Printzeit:" + printzeit + "__" +" Dauer:" + dauer); if(time_left == null || time_left == 0 ){(setState("javascript.0.OctoPi.Restzeit", "--:--:--", true)) } else setState("javascript.0.OctoPi.Restzeit", restzeit, true); if(time_left == null || time_left == 0 ){(setState("javascript.0.OctoPi.Printzeit", "--:--:--", true)) } else setState("javascript.0.OctoPi.Printzeit", printzeit, true); if(time_left == null || time_left == 0 ){(setState("javascript.0.OctoPi.Gesamtzeit", "--:--:--", true)) } else setState("javascript.0.OctoPi.Gesamtzeit", dauer, true); } //____________________________________________________________________________________________________ // Druck-Ende Uhrzeit berechnen // //################################# function endezeit(){ var time_left = getState("octoprint.0.printjob.progress.printtime_left").val; var sekunden_restzeit = time_left; // Restzeit in Sekunden aus Octopi if(time_left == null || time_left == 0 ){ setState("javascript.0.OctoPi.EndeZeit", '---', true) }; var Zeit = new Date(); //log('jetzt: ' + Zeit); var z0_neu = Zeit.getSeconds()+ sekunden_restzeit; var z_neu = Zeit.setSeconds(z0_neu); var ZeitNeu = new Date(z_neu); //console.log('Endezeit: ' + ZeitNeu); var h_ende = ZeitNeu.getHours(); var m_ende = ZeitNeu.getMinutes(); var s_ende = ZeitNeu.getSeconds(); var tag_ende = ZeitNeu.getDate(); var months = ["Jan", "Feb", "Mrz", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"]; var monat_ende = months[ZeitNeu.getMonth()]; var EndeZeit = tag_ende + '.' + monat_ende + ' ' + h_ende + ':' + m_ende + ':' + s_ende; //console.log('EndeZeit: ' + EndeZeit); // Führende 0 hinzufügen und als String wandeln if ( tag_ende < 10 ){var endtag = "0" + String(tag_ende);} else var endtag = String(tag_ende) if ( h_ende < 10 ){var endstunde = "0" + String(h_ende);} else var endstunde = String(h_ende) if ( m_ende < 10 ){var endminute = "0" + String(m_ende);} else var endminute = String(m_ende) if ( s_ende < 10 ){var endsekunde = "0" + String(s_ende);} else var endsekunde = String(s_ende) var EndeZeit = endtag + '. ' + monat_ende + ' ' + endstunde + ':' + endminute + ':' + endsekunde; //console.log('EndeZeit: ' + EndeZeit); if(time_left == null || time_left == 0 ){(setState("javascript.0.OctoPi.EndeZeit", "--:--:--", true)) } else setState("javascript.0.OctoPi.EndeZeit", EndeZeit, true); } // end of function EndeZeit() //____________________________________________________________________________________________________ //Druckfortschritt abfragen on({id: anycubic_timeleft , change: 'lt'}, function() { umrechnung() endezeit() });Gruß
Jörg@joergeli sagte in Test Adapter OctoPrint:
sowie die Gesamtdruckdauer und Fertigstellungszeit erstellt.
funktioniert perfekt


-
@negalein
bitte sehr ... (geht sicher noch eleganter, bin für jede Anregung dankbar)
Die Datenpunkte unter javascript.0 händisch anlegen und los geht´s (ip vom octopi auch noch einfügen)!on({id: 'octoprint.0.printjob.file.name', change: "any"}, async function (obj) { var octo_thumb=''; var thumb_file=''; if ((obj.state.val)!== null) { thumb_file=getState("octoprint.0.printjob.file.origin").val +"_" + obj.state.val.replace(".gcode",""); if (existsState("octoprint.0.files." + thumb_file + ".thumbnail_url")) { octo_thumb= getState("octoprint.0.files." + thumb_file + ".thumbnail_url").val; }; }; setState("javascript.0.3D-Drucker.dir_thumb", thumb_file, true); setState("javascript.0.3D-Drucker.thumbnail", octo_thumb, true); });@latzi sagte in Test Adapter OctoPrint:
bitte sehr
funktioniert nicht ganz
0_userdata.0.3DDrucker.thumbnail

octoprint.0.files.local_Kinder_Gekko_einzeln.thumbnail_url

on({id: 'octoprint.0.printjob.file.name', change: "any"}, async function (obj) { var octo_thumb=''; var thumb_file=''; if ((obj.state.val)!== null) { thumb_file=getState("octoprint.0.printjob.file.origin").val +"_" + obj.state.val.replace(".gcode",""); octo_thumb= getState("octoprint.0.files." + thumb_file + ".thumbnail_url").val; } setState("0_userdata.0.3DDrucker.dir_thumb", thumb_file, true); setState("0_userdata.0.3DDrucker.thumbnail", octo_thumb, true); });08:19:01.641 warn javascript.0 (526697) at Object.<anonymous> (script.js.3D-Drucker.Slicerthumbnail:6:20) 08:19:01.642 warn javascript.0 (526697) at Object.<anonymous> (script.js.3D-Drucker.Slicerthumbnail:9:4) 08:19:06.649 warn javascript.0 (526697) at Object.<anonymous> (script.js.3D-Drucker.Slicerthumbnail:6:20) 08:19:06.650 warn javascript.0 (526697) at Object.<anonymous> (script.js.3D-Drucker.Slicerthumbnail:9:4) 08:19:11.626 warn javascript.0 (526697) at Object.<anonymous> (script.js.3D-Drucker.Slicerthumbnail:6:20) 08:19:11.627 warn javascript.0 (526697) at Object.<anonymous> (script.js.3D-Drucker.Slicerthumbnail:9:4) 08:19:16.955 warn javascript.0 (526697) at Object.<anonymous> (script.js.3D-Drucker.Slicerthumbnail:6:20) 08:19:16.956 warn javascript.0 (526697) at Object.<anonymous> (script.js.3D-Drucker.Slicerthumbnail:9:4) 08:19:21.639 warn javascript.0 (526697) at Object.<anonymous> (script.js.3D-Drucker.Slicerthumbnail:6:20) 08:19:21.639 warn javascript.0 (526697) at Object.<anonymous> (script.js.3D-Drucker.Slicerthumbnail:9:4) 08:19:26.655 warn javascript.0 (526697) at Object.<anonymous> (script.js.3D-Drucker.Slicerthumbnail:6:20) 08:19:26.656 warn javascript.0 (526697) at Object.<anonymous> (script.js.3D-Drucker.Slicerthumbnail:9:4) 08:19:31.653 warn javascript.0 (526697) at Object.<anonymous> (script.js.3D-Drucker.Slicerthumbnail:6:20) 08:19:31.654 warn javascript.0 (526697) at Object.<anonymous> (script.js.3D-Drucker.Slicerthumbnail:9:4) -
@latzi sagte in Test Adapter OctoPrint:
bitte sehr
funktioniert nicht ganz
0_userdata.0.3DDrucker.thumbnail

octoprint.0.files.local_Kinder_Gekko_einzeln.thumbnail_url

on({id: 'octoprint.0.printjob.file.name', change: "any"}, async function (obj) { var octo_thumb=''; var thumb_file=''; if ((obj.state.val)!== null) { thumb_file=getState("octoprint.0.printjob.file.origin").val +"_" + obj.state.val.replace(".gcode",""); octo_thumb= getState("octoprint.0.files." + thumb_file + ".thumbnail_url").val; } setState("0_userdata.0.3DDrucker.dir_thumb", thumb_file, true); setState("0_userdata.0.3DDrucker.thumbnail", octo_thumb, true); });08:19:01.641 warn javascript.0 (526697) at Object.<anonymous> (script.js.3D-Drucker.Slicerthumbnail:6:20) 08:19:01.642 warn javascript.0 (526697) at Object.<anonymous> (script.js.3D-Drucker.Slicerthumbnail:9:4) 08:19:06.649 warn javascript.0 (526697) at Object.<anonymous> (script.js.3D-Drucker.Slicerthumbnail:6:20) 08:19:06.650 warn javascript.0 (526697) at Object.<anonymous> (script.js.3D-Drucker.Slicerthumbnail:9:4) 08:19:11.626 warn javascript.0 (526697) at Object.<anonymous> (script.js.3D-Drucker.Slicerthumbnail:6:20) 08:19:11.627 warn javascript.0 (526697) at Object.<anonymous> (script.js.3D-Drucker.Slicerthumbnail:9:4) 08:19:16.955 warn javascript.0 (526697) at Object.<anonymous> (script.js.3D-Drucker.Slicerthumbnail:6:20) 08:19:16.956 warn javascript.0 (526697) at Object.<anonymous> (script.js.3D-Drucker.Slicerthumbnail:9:4) 08:19:21.639 warn javascript.0 (526697) at Object.<anonymous> (script.js.3D-Drucker.Slicerthumbnail:6:20) 08:19:21.639 warn javascript.0 (526697) at Object.<anonymous> (script.js.3D-Drucker.Slicerthumbnail:9:4) 08:19:26.655 warn javascript.0 (526697) at Object.<anonymous> (script.js.3D-Drucker.Slicerthumbnail:6:20) 08:19:26.656 warn javascript.0 (526697) at Object.<anonymous> (script.js.3D-Drucker.Slicerthumbnail:9:4) 08:19:31.653 warn javascript.0 (526697) at Object.<anonymous> (script.js.3D-Drucker.Slicerthumbnail:6:20) 08:19:31.654 warn javascript.0 (526697) at Object.<anonymous> (script.js.3D-Drucker.Slicerthumbnail:9:4) -
@negalein du hast da noch eine alte version! inzwischen sinds 13 zeilen...
https://forum.iobroker.net/topic/36210/test-adapter-octoprint/229 -
@latzi sagte in Test Adapter OctoPrint:
auch das neue script wird nicht funktionieren, da wird ein Verzeichnis "Kinder" verwendet
stimmt
0_userdata.0.3DDrucker.dir_thumbwird befüllt
0_userdata.0.3DDrucker.thumbnailbleibt leer
-
-
@latzi sagte in Test Adapter OctoPrint:
auch das neue script wird nicht funktionieren, da wird ein Verzeichnis "Kinder" verwendet
stimmt
0_userdata.0.3DDrucker.dir_thumbwird befüllt
0_userdata.0.3DDrucker.thumbnailbleibt leer
-
@latzi das ist kein verzeichniss, das ist der filename des druckteils...

local_Kinder_Gekko_einzeln@da_woody sagte in Test Adapter OctoPrint:
das ist kein verzeichniss
Verzeichnis und Filename
File:
http://10.0.1.182:80/plugin/prusaslicerthumbnails/thumbnail/Kinder/Gekko_einzeln.png?20220120081343
Verzeichnis:octoprint.0.files.local_Kinder_Gekko_einzeln

-
@latzi sagte in Test Adapter OctoPrint:
kannst du bitte die DP unter octoprint.0.printjob.file zeigen?

-
@latzi sagte in Test Adapter OctoPrint:
kannst du bitte die DP unter octoprint.0.printjob.file zeigen?

-
@latzi sagte in Test Adapter OctoPrint:
kannst du bitte die DP unter octoprint.0.printjob.file zeigen?

-
@negalein
jetzt gibt es ein Problem, hier tauch nirgends das "Kinder" auf, ich hab keine Ahnung woher das kommt! -
@negalein
jetzt gibt es ein Problem, hier tauch nirgends das "Kinder" auf, ich hab keine Ahnung woher das kommt!@latzi sagte in Test Adapter OctoPrint:
jetzt gibt es ein Problem, hier tauch nirgends das "Kinder" auf, ich hab keine Ahnung woher das kommt!
dh., weil ich es in Octoprint bin Ordner ablege?
Kinderist der Ordner.

-
@latzi sagte in Test Adapter OctoPrint:
jetzt gibt es ein Problem, hier tauch nirgends das "Kinder" auf, ich hab keine Ahnung woher das kommt!
dh., weil ich es in Octoprint bin Ordner ablege?
Kinderist der Ordner.

-
@negalein 0_userdata.0.3DDrucker.thumbnail ist bei mir auch leer, 0_userdata.0.3DDrucker.thumbnail_url wird befüllt.
octoprint.0.printjob.file sollte das nicht octoprint.0.printjob.files sein?@da_woody sagte in Test Adapter OctoPrint:
0_userdata.0.3DDrucker.thumbnail_url wird befüllt.
das hab ich nicht

sollte das nicht octoprint.0.printjob.files sein?
Nö
octoprint.0.printjob.file -
@latzi sagte in Test Adapter OctoPrint:
jetzt gibt es ein Problem, hier tauch nirgends das "Kinder" auf, ich hab keine Ahnung woher das kommt!
dh., weil ich es in Octoprint bin Ordner ablege?
Kinderist der Ordner.

-
@negalein
ja, vermutlich ist das das "Problem".
Würde das Verzeichnis beim printjob enthalten sein, hätte ich kein Problem damit. So kann ich nicht herausfinden, wo ich suchen soll
@latzi sagte in Test Adapter OctoPrint:
So kann ich nicht herausfinden, wo ich suchen soll
Schei.....benkleister

-
@haus-automatisierung
Hallo Matthias,besteht die Möglichkeit, den DP path aus octorint.x.files.yyy in octoprint.x.printjob.file zu übertragen, damit ich "Verzeichnisse" mitbekomme, die weder in name noch origin zum printjob enthalten sind?

-
@haus-automatisierung
Hallo Matthias,besteht die Möglichkeit, den DP path aus octorint.x.files.yyy in octoprint.x.printjob.file zu übertragen, damit ich "Verzeichnisse" mitbekomme, die weder in name noch origin zum printjob enthalten sind?

@latzi wollte ich gerade schreiben, gerade getestet, im path wirds richtig angezeigt...
kannst du nicht mit dem path arbeiten? da steht der komplette pfad, mit .gcode drinnen...
name: assortment_box_2x3_v3.gcode
path: local/Sortimo/assortment_box_2x3_v3.gcode