Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Octoprint-script für thumbnail des aktuellen Drucks

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Octoprint-script für thumbnail des aktuellen Drucks

    This topic has been deleted. Only users with topic management privileges can see it.
    • da_Woody
      da_Woody @Jabba_the_Hutt last edited by

      @jabba_the_hutt sagte in Octoprint-script für thumbnail des aktuellen Drucks:

      Mir stellt sich immer wieder die Frage .... Wieso Cura und Octoprint?

      nunja, weils für einsteiger halt einfach ist... 😉 cura kann inzwischen auch viel. wenn man sich da mal eingeschossen hat...
      vor kurzem mal den prusa angeschaut. gleich mal gar nichts gefunden mit dem ich was anfangen könnte. in cura hab ich meine benutzerdefinierten einstellungen die für mich wichtig sind.
      eigentlich versuche ich seit einiger zeit meinen sapphire pro zu klippern, scheitere aber immer wieder an der config. 😞

      1 Reply Last reply Reply Quote 0
      • Latzi
        Latzi @SevenUp last edited by

        @sevenup sagte in Octoprint-script für thumbnail des aktuellen Drucks:

        Deshalb: wäre es möglich, dass im DP octoprint.0.files.*.name suchst? Dort muss es ja eine 100% Übereinstimmung geben.

        Hier die Version, bei der innerhalb octoprint.0.files.* nach dem DP name gesucht wird und der dort liegende DP thumbnail_url ausgelesen wird (falls er existiert und sofern er mit octoprint.0.printjob.file.name übereinstimmt).
        Bitte testen.

        // --- Konfiguration ---
        const path_octo = 'octoprint.0'; // Instanz zu octoprint
        const path_DP_thumbnail = 'javascript.0.3D-Drucker';  // Wo soll der DP liegen - dies muss angelegt sein/werden! Der DP selbst wird automatisch angelegt!
        var debug= true; // Log-Meldungen einschalten mit true, ausschalten mit false 
        
        //  -- nicht ändern ---
        //   Version mit Suche in Namen 1.0.0 2022-02-03
        var sel_thumb = path_octo + '.files.*.name';
        on({id: path_octo + '.printjob.file.name', change: "ne"}, async function (obj) {
          var octo_thumb='';
          var i = 0;
          var j = '';
          if (debug) console.log("Printjob-Name wurde auf >>" + obj.state.val + "<< geändert!");
          if ((obj.state.val)!== null) {
              $(sel_thumb).each(function(id) {
                  j = getState(id).val;
                  if (j == obj.state.val) {
                       var t_id = id.replace('.name','')+'.thumbnail_url';
                       if (!existsState(t_id)) {
                          console.log('Thumbnail-DP existiert nicht unter ' + id.replace('.name','') + ' !')
                       } else {
                          i++;
                          octo_thumb = getState(t_id).val; 
                          if (debug) console.log("Printjob-Name >>" + obj.state.val + "<< gefunden in " + t_id + " !");
                       };
                   };    
               });
              if (debug) {
                  console.log(i + " File(s) mit Printjob-Namen " + obj.state.val + " gefunden!");
                  if (i>1) console.log("ACHTUNG !!! Mehrere Fundstellen, Datenpunkt " + path_DP_thumbnail + ".thumbnail wurde mit letztem Fund befüllt");
              };    
          } else {
              if (debug) console.log("Printjob-Name ist (null)! Keinen File gefunden!!!");
          }; 
          // DP prüfen ob existent, sonst anlegen
          if (!existsState(path_DP_thumbnail + ".thumbnail")) {
              createState(path_DP_thumbnail + ".thumbnail", octo_thumb,  { name: 'thumbnail', desc: 'full path to thumbnail', type: 'string',   role: '',read: true, write: true });
              if (debug) console.log("Datenpunkt "+ path_DP_thumbnail + ".thumbnail wurde angelegt und mit >>"+ octo_thumb + "<< befüllt!");
          } else {
              setState(path_DP_thumbnail + ".thumbnail", octo_thumb, true);
              console.log("Datenpunkt " + path_DP_thumbnail + ".thumbnail wurde mit >>"+ octo_thumb + "<< befüllt!");
          };
          if (debug) console.log("Verarbeitung abgeschlossen!");
        }); 
        

        1 Reply Last reply Reply Quote 1
        • S
          SevenUp @Latzi last edited by SevenUp

          @latzi sagte in Octoprint-script für thumbnail des aktuellen Drucks:

          @sevenup sagte in Octoprint-script für thumbnail des aktuellen Drucks:

          Aber warum soll es nun ein Problem sein? Wenn, dann eher am Skript und nicht am Adapter?
          Adapter zeigt beide Namen eigentlich gleich an...
          Und auf Dateinamen zu achten ist nicht wirklich Smart(home)

          Wie du erkennen kannst werden die Sonderzeichen und Umlaute außerhalb des Scripts "übersetzt" und das führt zu Schwierigkeiten. Da meine hellseherischen Fähigkeiten noch ausbaufähig sind, kann ich nur "raten" - und das geht meist schief. Darum die Frage nach dem "Foldernamen". Ich baue die Übersetzung ins Script ein, grundsätzlich sollte jedoch auf Sonderzeichen und ähnliches im Allgemeinen verzichtet werden (und das ist kein Scriptforderung sondern systembedingt)!

          Ich verstehe nicht, warum du dich hier angegriffen füllst? Ich habe lediglich (aus meiner Sicht) eine bessere Umsetzung vorgeschlagen, bei der eben nicht auf Sonderzeichen oder ähnliches geachtet werden soll 🙂

          @latzi sagte in Octoprint-script für thumbnail des aktuellen Drucks:

          Hier die Version, bei der innerhalb octoprint.0.files.* nach dem DP name gesucht wird und der dort liegende DP thumbnail_url ausgelesen wird (falls er existiert und sofern er mit octoprint.0.printjob.file.name übereinstimmt).
          Bitte testen.

          Und das funktioniert nun prächtig. Vielen Dank!

          19:44:33.473	info	javascript.0 (11905) script.js.3D_Drucker.Thumbnail_festlegen: Printjob-Name wurde auf >>CE3_Hex_NoSocket_FullBack_Loose (3).gcode<< geändert!
          19:44:33.476	info	javascript.0 (11905) script.js.3D_Drucker.Thumbnail_festlegen: Printjob-Name >>CE3_Hex_NoSocket_FullBack_Loose (3).gcode<< gefunden in octoprint.0.files.local_CE3_Hex_NoSocket_FullBack_Loose_3.thumbnail_url !
          19:44:33.476	info	javascript.0 (11905) script.js.3D_Drucker.Thumbnail_festlegen: 1 File(s) mit Printjob-Namen CE3_Hex_NoSocket_FullBack_Loose (3).gcode gefunden!
          19:44:33.477	info	javascript.0 (11905) script.js.3D_Drucker.Thumbnail_festlegen: Datenpunkt userdata.0.3D-Drucker.thumbnail wurde mit >>http://192.168.1.37:80/plugin/prusaslicerthumbnails/thumbnail/CE3_Hex_NoSocket_FullBack_Loose (3).png?20220201192607<< befüllt!
          19:44:33.477	info	javascript.0 (11905) script.js.3D_Drucker.Thumbnail_festlegen: Verarbeitung abgeschlossen!
          

          Negalein Latzi 2 Replies Last reply Reply Quote 0
          • Negalein
            Negalein Global Moderator @SevenUp last edited by

            @sevenup sagte in Octoprint-script für thumbnail des aktuellen Drucks:

            du dich hier angegriffen füllst

            denke nicht dass sich @Latzi angegriffen fühlt!
            Wir Österreicher sind nicht so pingelig wie manche Nachbarn! 😉

            S 1 Reply Last reply Reply Quote 1
            • S
              SevenUp @Negalein last edited by

              @negalein okay, das kann ich nicht beurteilen 🙂
              Dann nehme ich meine Aussage zurück

              1 Reply Last reply Reply Quote 0
              • Latzi
                Latzi @SevenUp last edited by

                @sevenup sagte in Octoprint-script für thumbnail des aktuellen Drucks:

                Ich verstehe nicht, warum du dich hier angegriffen füllst?

                Keine Angst, hab´s in keinster Weise als Angriff empfunden - dein Vorschlag mit dem ".name" zu verwenden hat natürlich auch seinen Charme, drum hab ich´s ja auch umgesetzt. Egal wie man´s dreht und wendet, Probleme sind in beiden Varianten zu erwarten, ich würde mir die Funktionalität im Adapter wünschen und soweit ich das mitbekommen hab, ist Matthias ja auch dran.

                @sevenup sagte in Octoprint-script für thumbnail des aktuellen Drucks:

                Und das funktioniert nun prächtig. Vielen Dank!

                Sehr gut, freut mich - ich hab´s nicht sehr intensiv getestet.

                Frage an alle:
                Derzeit wird, sofern es mehrere Thumbnails mit gleichem Namen gibt, der zuletzt Gefundene in den DP geschrieben. Soll bei mehrfachem Fund ein JSON erzeugt werden, in dem alle Funde enthalten sind? Danach kann man nach eigenem Ermessen über die Visualisierung die Passende auswählen.

                Negalein 1 Reply Last reply Reply Quote 0
                • Negalein
                  Negalein Global Moderator @Latzi last edited by

                  @latzi sagte in Octoprint-script für thumbnail des aktuellen Drucks:

                  sofern es mehrere Thumbnails mit gleichem Namen gibt, der zuletzt Gefundene in den DP geschrieben

                  Das reicht vollkommen mMn.
                  Ich benenne zB alle Drucke eindeutig.

                  1 Reply Last reply Reply Quote 1
                  • Meistertr
                    Meistertr Developer last edited by

                    man kann es auch ganz schnell ohne script nur mit binding lösen

                    http://octopi/plugin/UltimakerFormatPackage/thumbnail/{d:octoprint.0.printjob.file.name; d.split('.')[0]}.png
                    

                    Ergebins:

                    2022-02-04_20h05_52.png

                    Latzi 1 Reply Last reply Reply Quote 1
                    • Latzi
                      Latzi @Meistertr last edited by

                      @meistertr
                      Das ist so richtig genial, vielen Dank! Darauf wäre ich niemals gekommen 👍

                      da_Woody 1 Reply Last reply Reply Quote 0
                      • da_Woody
                        da_Woody @Latzi last edited by

                        @latzi gestern wieder mal kein thumbnail bekommen, heute fehler entdeckt:
                        Shelly_Box_-Lid
                        öffensichtlich hat das script sich an **
                        -_** verschluckt.
                        nach umbenennen Shelly_Box_Lid wars da.

                        Latzi 1 Reply Last reply Reply Quote 0
                        • Latzi
                          Latzi @da_Woody last edited by Latzi

                          Guten Morgen @da_woody
                          bitte kannst du printjob.file.name und files.xxx posten in der Original-Version. Da spuckt möglicherweise die Übersetzung rein

                          Edit: Noch besser ist die Verwendung von @meistertr´s Ansatz

                          da_Woody 1 Reply Last reply Reply Quote 0
                          • da_Woody
                            da_Woody @Latzi last edited by

                            @latzi strange...
                            octoprint.0.printjob.file.name Shelly_Box_-_Lid.gcode
                            octoprint.0.files.local_Shelly_Box_Lid als Name steht dort Shelly_Box_-_Lid.gcode
                            kein .png in javascript.0.Octothumb.thumbnail

                            http://octopi/plugin/UltimakerFormatPackage/thumbnail/{d:octoprint.0.printjob.file.name; d.split('.')[0]}.png 
                            

                            hab ich probiert mit

                            http://192.168.2.59/plugin/UltimakerFormatPackage/thumbnail/{d:octoprint.0.printjob.file.name; d.split('.')[0]}.png 
                            

                            bekomm ich nur einen error 404...

                            Latzi 2 Replies Last reply Reply Quote 0
                            • Latzi
                              Latzi @da_Woody last edited by

                              @da_Woody
                              du musst aus einem bestehenden thumbnail den ersten Teil des Pfades rauskopieren, bei mir z.B.:

                              http://10.0.0.213:80/plugin/prusaslicerthumbnails/thumbnail/
                              

                              und dahinter das Binding

                              {d:octoprint.0.printjob.file.name; d.split('.')[0]}.png 
                              

                              einsetzen

                              da_Woody 1 Reply Last reply Reply Quote 0
                              • Latzi
                                Latzi @da_Woody last edited by Latzi

                                @da_woody sagte in Octoprint-script für thumbnail des aktuellen Drucks:

                                octoprint.0.printjob.file.name Shelly_Box_-Lid.gcode
                                octoprint.0.files.local_Shelly_Box_Lid als Name steht dort Shelly_Box
                                -_Lid.gcode

                                Da spuckt Zeile 18 des scripts rein, dort wird der "-" durch "_" ersetzt und daher wird nichts gefunden.
                                Möglichkeiten:

                                • Zeile 18 auskommentieren (wird sicher in einer anderen Konstellation Probleme machen)
                                • script durch jenes mit "Namen" ersetzen https://forum.iobroker.net/topic/51635/octoprint-script-für-thumbnail-des-aktuellen-drucks/64
                                • Mein Favorit: script deaktivieren und mit dem Binding arbeiten
                                da_Woody 1 Reply Last reply Reply Quote 0
                                • da_Woody
                                  da_Woody @Latzi last edited by da_Woody

                                  @latzi jap, jetzt tuts mit dem binding! 👍

                                  K 1 Reply Last reply Reply Quote 0
                                  • K
                                    Kuddel @da_Woody last edited by Kuddel

                                    @da_woody blöde Frage.. welches Widget muss ich für das Binding nehmen ?

                                    EDIT: iframe funzt

                                    da_Woody 1 Reply Last reply Reply Quote 0
                                    • da_Woody
                                      da_Woody @Kuddel last edited by

                                      @kuddel hmpf, ja. ich hab ein stinknormales basic-image genommen...

                                      K 1 Reply Last reply Reply Quote 0
                                      • K
                                        Kuddel @da_Woody last edited by

                                        @da_woody ich glaube das Widget ist dann doch eher zweitrangig.

                                        Wichtig ist, dass die Anzeige ohne Skript funktioniert 🙂

                                        da_Woody 1 Reply Last reply Reply Quote 0
                                        • da_Woody
                                          da_Woody @Latzi last edited by

                                          @latzi hmpf. gestern mal testweise js-controller 4 installiert. danach weder über script, noch über binding was bekommen.
                                          ec647b54-c9a4-44d8-b3d0-b320f039c495-grafik.png
                                          obwohl in den DP das richtige drinne steht.
                                          nochmal zurück auf js 3.3.22 und das script hat wieder funktioniert. mit der binding geschichte aber nicht mehr.
                                          weil ichs nicht ganz glauben wollte und andere berichten, daß diverse blocklys funktionieren, wieder update auf 4.0.4 gemacht, siehe oben. egal, was ich als background_url in iQontrol eintrage.
                                          der link, den ich vom script bekomme, funzt aber in vis und wenn ich über browser aufrufe...

                                          Latzi 1 Reply Last reply Reply Quote 0
                                          • da_Woody
                                            da_Woody @Kuddel last edited by

                                            @kuddel da haben wir gleichzeitig gesendet... 😄

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            900
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            javascript
                                            9
                                            100
                                            5937
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo