Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Tester
  4. Test Adapter OctoPrint

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.1k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.8k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.1k

Test Adapter OctoPrint

Scheduled Pinned Locked Moved Tester
adapter entwicklungadatper updatesdevelopertesten
461 Posts 49 Posters 97.4k Views 44 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • LatziL Latzi

    @da_woody
    hast den DP octoprint.0.files.local_Düse.thumbnail_url?
    Scheint, als ob der nicht existiert oder nichts Vernünftiges darin enthalten ist

    da_WoodyD Online
    da_WoodyD Online
    da_Woody
    wrote on last edited by
    #190

    @latzi nope, der ist nicht vorhanden...
    in octo seh ich das thumb aber... generiert wirds also. in cura ja auch aktiviert.
    92162cc2-d83f-4c4d-b824-e829461739a0-grafik.png a795acc5-309e-4b6d-8147-846225c2abc8-grafik.png

    gruß vom Woody
    HAPPINESS is not a DESTINATION, it's a WAY of LIFE!

    LatziL 1 Reply Last reply
    0
    • da_WoodyD da_Woody

      @latzi nope, der ist nicht vorhanden...
      in octo seh ich das thumb aber... generiert wirds also. in cura ja auch aktiviert.
      92162cc2-d83f-4c4d-b824-e829461739a0-grafik.png a795acc5-309e-4b6d-8147-846225c2abc8-grafik.png

      LatziL Online
      LatziL Online
      Latzi
      wrote on last edited by
      #191

      @da_woody
      sehr seltsam!
      Ich traue mich fast nicht zu fragen - im Adapter hast du das Plugin angehakt?

      @da_woody sagte in Test Adapter OctoPrint:

      @latzi nope, der ist nicht vorhanden...

      Das erklärt, warum nach der IP "null" kommt - er findet den Inhalt des nicht vorhanden DP´s nicht.

      da_WoodyD 1 Reply Last reply
      0
      • LatziL Latzi

        @da_woody
        sehr seltsam!
        Ich traue mich fast nicht zu fragen - im Adapter hast du das Plugin angehakt?

        @da_woody sagte in Test Adapter OctoPrint:

        @latzi nope, der ist nicht vorhanden...

        Das erklärt, warum nach der IP "null" kommt - er findet den Inhalt des nicht vorhanden DP´s nicht.

        da_WoodyD Online
        da_WoodyD Online
        da_Woody
        wrote on last edited by
        #192

        @latzi sagte in Test Adapter OctoPrint:

        Ich traue mich fast nicht zu fragen

        bei mir depp musst du sowas fragen! 😄
        auf die idea wär ich nicht gekommen...
        allerdings ist das mit dem plugin auch seltsam. mit dem cura thumbnails gehts nicht. musste slicer thumbnails insten, dann hab ich den DP.

        gruß vom Woody
        HAPPINESS is not a DESTINATION, it's a WAY of LIFE!

        NegaleinN LatziL 2 Replies Last reply
        0
        • da_WoodyD da_Woody

          @latzi sagte in Test Adapter OctoPrint:

          Ich traue mich fast nicht zu fragen

          bei mir depp musst du sowas fragen! 😄
          auf die idea wär ich nicht gekommen...
          allerdings ist das mit dem plugin auch seltsam. mit dem cura thumbnails gehts nicht. musste slicer thumbnails insten, dann hab ich den DP.

          NegaleinN Offline
          NegaleinN Offline
          Negalein
          Global Moderator
          wrote on last edited by
          #193

          @da_woody sagte in Test Adapter OctoPrint:

          cura thumbnails gehts nicht

          Ja, weil Slicer Thumbnail im Adapter ist 😉
          War ja mein Wunsch 😝

          ° Node.js: 20.17.0 NPM: 10.8.2
          ° Proxmox, Ubuntu 22.04.3 LTS
          ° Fixer ---> iob fix

          da_WoodyD 1 Reply Last reply
          0
          • da_WoodyD da_Woody

            @latzi sagte in Test Adapter OctoPrint:

            Ich traue mich fast nicht zu fragen

            bei mir depp musst du sowas fragen! 😄
            auf die idea wär ich nicht gekommen...
            allerdings ist das mit dem plugin auch seltsam. mit dem cura thumbnails gehts nicht. musste slicer thumbnails insten, dann hab ich den DP.

            LatziL Online
            LatziL Online
            Latzi
            wrote on last edited by
            #194

            @da_woody
            👍
            steht auch so in der Adpater-Beschreibung:
            bab11a6b-89d6-426e-83dc-83873fb3a1fb-image.png

            da_WoodyD 1 Reply Last reply
            1
            • NegaleinN Negalein

              @haus-automatisierung sagte in Test Adapter OctoPrint:

              Ich bekomme im Printjob keine Angaben über das Thumbnail

              Das ist schade, dass das nicht möglich ist.

              joergeliJ Online
              joergeliJ Online
              joergeli
              wrote on last edited by
              #195

              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:
              octo-zeiten.jpg

              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

              octo-datenpunkte.jpg

              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

              da_WoodyD NegaleinN 3 Replies Last reply
              3
              • NegaleinN Negalein

                @da_woody sagte in Test Adapter OctoPrint:

                cura thumbnails gehts nicht

                Ja, weil Slicer Thumbnail im Adapter ist 😉
                War ja mein Wunsch 😝

                da_WoodyD Online
                da_WoodyD Online
                da_Woody
                wrote on last edited by
                #196

                @negalein sagte in Test Adapter OctoPrint:

                War ja mein Wunsch

                kloa, nur weil du jetzt mitm prusa werkelst... 😄 cura rulez!

                gruß vom Woody
                HAPPINESS is not a DESTINATION, it's a WAY of LIFE!

                joergeliJ 1 Reply Last reply
                1
                • joergeliJ joergeli

                  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:
                  octo-zeiten.jpg

                  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

                  octo-datenpunkte.jpg

                  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

                  da_WoodyD Online
                  da_WoodyD Online
                  da_Woody
                  wrote on last edited by
                  #197

                  @joergeli oi! kaum eins zum laufen gebracht, kommst du um die ecke! 😄
                  thnx auch dafür!
                  wobei die letzten beiden ja eh vorhanden sind...

                  gruß vom Woody
                  HAPPINESS is not a DESTINATION, it's a WAY of LIFE!

                  joergeliJ 1 Reply Last reply
                  0
                  • da_WoodyD da_Woody

                    @negalein sagte in Test Adapter OctoPrint:

                    War ja mein Wunsch

                    kloa, nur weil du jetzt mitm prusa werkelst... 😄 cura rulez!

                    joergeliJ Online
                    joergeliJ Online
                    joergeli
                    wrote on last edited by
                    #198

                    @da_woody sagte in Test Adapter OctoPrint:

                    kloa, nur weil du jetzt mitm prusa werkelst... cura rulez!

                    eieieiei - und ich Blödel habe im obigen script ein paar mal den Begiff "anycubic" verwendet .....
                    Asche auf mein Haupt 😜

                    1 Reply Last reply
                    0
                    • joergeliJ joergeli

                      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:
                      octo-zeiten.jpg

                      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

                      octo-datenpunkte.jpg

                      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

                      NegaleinN Offline
                      NegaleinN Offline
                      Negalein
                      Global Moderator
                      wrote on last edited by
                      #199

                      @joergeli sagte in Test Adapter OctoPrint:

                      Ich habe hier ein JS-Script zusammengeschustert, welches die Octoprint-Zeiten in HH:MM:SS umsetzt,

                      Merci!!!

                      PS: statt javascript.0 hätt ich es gerne in 0_userdate.0
                      Reicht es, wenn ich die createState auf 0_userdata ändere?

                      ° Node.js: 20.17.0 NPM: 10.8.2
                      ° Proxmox, Ubuntu 22.04.3 LTS
                      ° Fixer ---> iob fix

                      joergeliJ 2 Replies Last reply
                      0
                      • da_WoodyD da_Woody

                        @joergeli oi! kaum eins zum laufen gebracht, kommst du um die ecke! 😄
                        thnx auch dafür!
                        wobei die letzten beiden ja eh vorhanden sind...

                        joergeliJ Online
                        joergeliJ Online
                        joergeli
                        wrote on last edited by
                        #200

                        @da_woody sagte in Test Adapter OctoPrint:

                        wobei die letzten beiden ja eh vorhanden sind...

                        Ich dachte, die Zeiten würden immer noch nur in Sekunden und nicht in HH:MM:SS ausgegeben?

                        da_WoodyD NegaleinN 2 Replies Last reply
                        0
                        • joergeliJ joergeli

                          @da_woody sagte in Test Adapter OctoPrint:

                          wobei die letzten beiden ja eh vorhanden sind...

                          Ich dachte, die Zeiten würden immer noch nur in Sekunden und nicht in HH:MM:SS ausgegeben?

                          da_WoodyD Online
                          da_WoodyD Online
                          da_Woody
                          wrote on last edited by
                          #201

                          @joergeli jo, aber ich hab das im iQontrol umgerechnet... 😉

                          gruß vom Woody
                          HAPPINESS is not a DESTINATION, it's a WAY of LIFE!

                          1 Reply Last reply
                          0
                          • NegaleinN Negalein

                            @joergeli sagte in Test Adapter OctoPrint:

                            Ich habe hier ein JS-Script zusammengeschustert, welches die Octoprint-Zeiten in HH:MM:SS umsetzt,

                            Merci!!!

                            PS: statt javascript.0 hätt ich es gerne in 0_userdate.0
                            Reicht es, wenn ich die createState auf 0_userdata ändere?

                            joergeliJ Online
                            joergeliJ Online
                            joergeli
                            wrote on last edited by
                            #202

                            @negalein sagte in Test Adapter OctoPrint:

                            PS: statt javascript.0 hätt ich es gerne in 0_userdate.0
                            Reicht es, wenn ich die createState auf 0_userdata ändere?

                            Sollte theoretisch funktionieren ... bin mir aber nicht sicher.

                            1 Reply Last reply
                            1
                            • joergeliJ joergeli

                              @da_woody sagte in Test Adapter OctoPrint:

                              wobei die letzten beiden ja eh vorhanden sind...

                              Ich dachte, die Zeiten würden immer noch nur in Sekunden und nicht in HH:MM:SS ausgegeben?

                              NegaleinN Offline
                              NegaleinN Offline
                              Negalein
                              Global Moderator
                              wrote on last edited by
                              #203

                              @joergeli sagte in Test Adapter OctoPrint:

                              Ich dachte, die Zeiten würden immer noch nur in Sekunden und nicht in HH:MM:SS ausgegeben?

                              Ja, sind noch in Sekunden.
                              Manche Widgets könnens direkt umrechnen.

                              ° Node.js: 20.17.0 NPM: 10.8.2
                              ° Proxmox, Ubuntu 22.04.3 LTS
                              ° Fixer ---> iob fix

                              1 Reply Last reply
                              0
                              • NegaleinN Negalein

                                @joergeli sagte in Test Adapter OctoPrint:

                                Ich habe hier ein JS-Script zusammengeschustert, welches die Octoprint-Zeiten in HH:MM:SS umsetzt,

                                Merci!!!

                                PS: statt javascript.0 hätt ich es gerne in 0_userdate.0
                                Reicht es, wenn ich die createState auf 0_userdata ändere?

                                joergeliJ Online
                                joergeliJ Online
                                joergeli
                                wrote on last edited by
                                #204

                                @negalein
                                Ich habe das Script eben noch mal überflogen:
                                Es reicht leider doch nicht! aus, nur die createState auf 0_userdata zu ändern.
                                Im Script selbst kommt javascript.0 auch noch diverse Male vor.

                                Kannst ja mal mit z.B. Notepad++ probieren, alle auf einen Schlag mit "suchen und ersetzen" umzubiegen

                                da_WoodyD NegaleinN 2 Replies Last reply
                                0
                                • LatziL Latzi

                                  @da_woody
                                  👍
                                  steht auch so in der Adpater-Beschreibung:
                                  bab11a6b-89d6-426e-83dc-83873fb3a1fb-image.png

                                  da_WoodyD Online
                                  da_WoodyD Online
                                  da_Woody
                                  wrote on last edited by
                                  #205

                                  @latzi aaarrg! ich krieg die krise...
                                  in der thumbnail_url steht ja die komplette adresse drinnen mit http.
                                  in deiner zeile 6 wird nochmal http... + pfad + DP aufgerufen. führt bei mir dazu, daß mein DP

                                  http://192.168.2.59/http://192.168.2.59:80/plugin/prusaslicerthumbnails/thumbnail/Düse.png?20220120133146
                                  

                                  anzeigt... bin ich echt schon so verblödet?
                                  db66a989-0289-493a-b5e8-fd144ef2097d-grafik.png

                                  gruß vom Woody
                                  HAPPINESS is not a DESTINATION, it's a WAY of LIFE!

                                  NegaleinN LatziL 2 Replies Last reply
                                  0
                                  • joergeliJ joergeli

                                    @negalein
                                    Ich habe das Script eben noch mal überflogen:
                                    Es reicht leider doch nicht! aus, nur die createState auf 0_userdata zu ändern.
                                    Im Script selbst kommt javascript.0 auch noch diverse Male vor.

                                    Kannst ja mal mit z.B. Notepad++ probieren, alle auf einen Schlag mit "suchen und ersetzen" umzubiegen

                                    da_WoodyD Online
                                    da_WoodyD Online
                                    da_Woody
                                    wrote on last edited by
                                    #206

                                    @joergeli sagte in Test Adapter OctoPrint:

                                    Notepad++

                                    so hab ich anycubic auf ender3v2 umgeschnitzt... 🙂

                                    gruß vom Woody
                                    HAPPINESS is not a DESTINATION, it's a WAY of LIFE!

                                    joergeliJ 1 Reply Last reply
                                    0
                                    • joergeliJ joergeli

                                      @negalein
                                      Ich habe das Script eben noch mal überflogen:
                                      Es reicht leider doch nicht! aus, nur die createState auf 0_userdata zu ändern.
                                      Im Script selbst kommt javascript.0 auch noch diverse Male vor.

                                      Kannst ja mal mit z.B. Notepad++ probieren, alle auf einen Schlag mit "suchen und ersetzen" umzubiegen

                                      NegaleinN Offline
                                      NegaleinN Offline
                                      Negalein
                                      Global Moderator
                                      wrote on last edited by
                                      #207

                                      @joergeli sagte in Test Adapter OctoPrint:

                                      Im Script selbst kommt javascript.0 auch noch diverse Male vor.

                                      habs gesehn und gleich mit dem createstate geändert. 🙂

                                      ° Node.js: 20.17.0 NPM: 10.8.2
                                      ° Proxmox, Ubuntu 22.04.3 LTS
                                      ° Fixer ---> iob fix

                                      1 Reply Last reply
                                      0
                                      • da_WoodyD da_Woody

                                        @latzi aaarrg! ich krieg die krise...
                                        in der thumbnail_url steht ja die komplette adresse drinnen mit http.
                                        in deiner zeile 6 wird nochmal http... + pfad + DP aufgerufen. führt bei mir dazu, daß mein DP

                                        http://192.168.2.59/http://192.168.2.59:80/plugin/prusaslicerthumbnails/thumbnail/Düse.png?20220120133146
                                        

                                        anzeigt... bin ich echt schon so verblödet?
                                        db66a989-0289-493a-b5e8-fd144ef2097d-grafik.png

                                        NegaleinN Offline
                                        NegaleinN Offline
                                        Negalein
                                        Global Moderator
                                        wrote on last edited by
                                        #208

                                        @da_woody sagte in Test Adapter OctoPrint:

                                        in deiner zeile 6 wird nochmal http... + pfad + DP aufgerufen. führt bei mir dazu, daß mein DP

                                        stimmt, war glaube ich wegen meinem Issue

                                        So schaut der Pfad in thumbnail_url aus
                                        http://10.0.1.182:80/plugin/prusaslicerthumbnails/thumbnail/Kinder/Gekko_einzeln.png?20220120081343

                                        ° Node.js: 20.17.0 NPM: 10.8.2
                                        ° Proxmox, Ubuntu 22.04.3 LTS
                                        ° Fixer ---> iob fix

                                        1 Reply Last reply
                                        0
                                        • da_WoodyD da_Woody

                                          @joergeli sagte in Test Adapter OctoPrint:

                                          Notepad++

                                          so hab ich anycubic auf ender3v2 umgeschnitzt... 🙂

                                          joergeliJ Online
                                          joergeliJ Online
                                          joergeli
                                          wrote on last edited by
                                          #209

                                          @da_woody sagte in Test Adapter OctoPrint:

                                          so hab ich anycubic auf ender3v2 umgeschnitzt...

                                          ... du Böser du ......
                                          Nee, im Ernst:
                                          Letztendlich unterscheiden sich m.E. alle günstigen Filament-Brater nicht sonderlich.
                                          OK, der eine ist etwas lauter, der andere läßt sich leichter nivellieren, wieder ein anderer hat 'nen besseren Extruder, oder was weiß ich was sonst noch.
                                          Kann man im Hobby-Bereich doch durchaus mit Leben, oder?

                                          Das einzige was ich erfahren mußte, daß billiges Filament meistens nix taucht:
                                          Da hatte ich schon Rollen, wo der Filament-Durchmesser schwankte, wie ein Boa, die gerade ein Schwein vertilgt hat 😉

                                          Ich will jetzt hier aber bitte keine! Diskussion lostreten, welches Fabrikat besser/schlechter ist.

                                          da_WoodyD 1 Reply Last reply
                                          1
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          726

                                          Online

                                          32.4k

                                          Users

                                          81.4k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe