Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Adapter Klipper-Moonraker

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Adapter Klipper-Moonraker

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      Sushibomba @Merlin123 last edited by

      @merlin123

      Ja das stimmt 😉
      Hoffentlich kommt @Dutchman bald dazu.
      Schönes WE euch allen.

      N 1 Reply Last reply Reply Quote 1
      • N
        Netcrusher @Sushibomba last edited by

        Moin zusammen, ich habe mir ein Script geschrieben, welches periodisch die moonraker api nach den wichtigsten Infos abfragt und in iobroker Javascript States schreibt. Das wäre mit Hilfe der moonraker API-Dokumentation auch recht einfach erweiterbar.
        Falls es jemand gebrauchen kann (ohne Gewähr):

        const printerName = 'VORON'; // Replace with your actual printer name
        const printerBaseUrl = 'http://192.168.2.32'; // Replace with your actual moonraker ip
        const updateInterval = 20000; // 20 seconds
        
        // Function to make an HTTP request and return a promise
        function getPrinterStatus(url) {
            return new Promise((resolve, reject) => {
                const request = require('request');
                request(url, { json: true }, (err, res, body) => {
                    if (err) {
                        reject(err);
                    } else {
                        resolve(body);
                    }
                });
            });
        }
        
        // Function to get metadata for the given filename
        function getFileMetadata(filename) {
            const metadataUrl = printerBaseUrl + `/server/files/metadata?filename=${encodeURIComponent(filename)}`;
            return getPrinterStatus(metadataUrl); // Reusing the HTTP request function
        }
        
        // Function to convert seconds to HH:MM:SS
        function toHHMMSS(seconds) {
            const hours = Math.floor(seconds / 3600);
            const minutes = Math.floor((seconds % 3600) / 60);
            const sec = Math.floor(seconds % 60);
            return [hours, minutes, sec]
                .map(v => v < 10 ? "0" + v : v)
                .join(":");
        }
        
        // Function to update the online status of the printer
        function updatePrinterOnlineStatus(isOnline) {
            const onlineStateName = `${printerName}.onlineStatus`;
            createOrUpdateState(onlineStateName, isOnline);
        }
        
        // Function to create or update ioBroker states
        function createOrUpdateState(fullStateName, value, key='') {
        
            // Check if the key contains 'duration' and format it if it does
            if (key.includes('duration')) {
                value = toHHMMSS(value);
            }
        
            // Check if the key contains 'progress' and multiply by 100 and round it if it does
            if (key.includes('progress')) {
                value = Math.round(value * 100); // Converts to percentage and rounds to the nearest integer
            }
        
            if (!existsState(fullStateName)) {
                createState(fullStateName, {
                    type: typeof value,
                    read: true,
                    write: false,
                    desc: 'Printer status value'
                }, () => {
                    setState(fullStateName, value, true);
                });
            } else {
                setState(fullStateName, value, true);
            }
        }
        
        // Function to process the printer status and update the ioBroker states
        function processPrinterStatus(printerData, parentKey = '') {
            Object.keys(printerData).forEach(key => {
                const value = printerData[key];
                let fullStateName = `${printerName}`;
                if (parentKey) {
                    fullStateName += `.${parentKey}`;
                }
                fullStateName += `.${key}`;
        
                if (value !== null && typeof value === 'object' && !(value instanceof Array)) {
                    // It's a nested object, so we need to recurse
                    processPrinterStatus(value, key);
                } else {
                    // It's a value, so we create or update the state
                    createOrUpdateState(fullStateName, value, key);
                }
            });
        }
        
        // Function to nullify file metadata states in ioBroker
        function nullifyFileMetadataStates() {
        
            var states = $(`*.${printerName}.file_metadata.*`/*Printer file metadata*/);
         
            states.each(function(id, i){
                setState(id, {val: null, ack: true});
            });
        }
        
        // Polling function
        function startPolling() {
            setInterval(() => {
                getPrinterStatus(printerBaseUrl + '/printer/objects/query?display_status&print_stats&extruder&heater_bed&system_stats')
                    .then(response => {
                        if (response && response.result) {
                            
                            const printStats = response.result.status.print_stats || {};
                            const filename = printStats.filename;
                            
                            // Update printer status
                            processPrinterStatus(response.result);
        
                            // If there is a filename, get and process the file metadata
                            if (filename) {
                                getFileMetadata(filename).then(metadataResponse => {
                                    if (metadataResponse && metadataResponse.result) {
                                        processPrinterStatus(metadataResponse.result, 'file_metadata');
                                    }
                                }).catch(error => {
                                    console.error('Error fetching file metadata:', error);
                                });
                            } else {
                                // If filename is empty, nullify all file_metadata states
                                nullifyFileMetadataStates();
                            }
                            
                            updatePrinterOnlineStatus(true); // Printer is online
                        }
                    })
                    .catch(error => {
                        console.log('Error fetching printer status... setting Printer offline');
                        updatePrinterOnlineStatus(false); // Printer is offline
                    });
            }, updateInterval);
        }
        
        // Start the polling process
        startPolling();
        

        b083f8f8-1b4c-4307-9d56-b21237644d11-image.png

        Merlin123 C 2 Replies Last reply Reply Quote 0
        • Merlin123
          Merlin123 @Netcrusher last edited by Merlin123

          @netcrusher

          Erstmal Danke für das Script! Das ist ja klasse! 🙂
          Beim ersten Versuch kam nix. Hab dann aber gemerkt, dass beim Creatlity K1 Moonraker auf Port 7125 läuft. Zum Glück schluckt Dein Script auch nen Port hinter der IP 😄

          Mal schauen, was ich damit alles machen kann. Auch jeden Fall ne tolle Arbeit!

          Wie man Man die voraussichtliche Zeit oder den Fortschritt rausbekommt, weißt Du nicht zufällig? Das fehlt mir hier leider auch noch.

          Vielleicht kannst Du ja mit @Dutchman zusammenarbeiten, damit das wieder ein lauffähiger Adapter wird.

          Dutchman 1 Reply Last reply Reply Quote 0
          • Dutchman
            Dutchman Developer Most Active Administrators @Merlin123 last edited by

            @merlin123 sagte in Adapter Klipper-Moonraker:

            @netcrusher

            Erstmal Danke für das Script! Das ist ja klasse! 🙂
            Beim ersten Versuch kam nix. Hab dann aber gemerkt, dass beim Creatlity K1 Moonraker auf Port 7125 läuft. Zum Glück schluckt Dein Script auch nen Port hinter der IP 😄

            Mal schauen, was ich damit alles machen kann. Auch jeden Fall ne tolle Arbeit!

            Wie man Man die voraussichtliche Zeit oder den Fortschritt rausbekommt, weißt Du nicht zufällig? Das fehlt mir hier leider auch noch.

            Vielleicht kannst Du ja mit @Dutchman zusammenarbeiten, damit das wieder ein lauffähiger Adapter wird.

            Würde da gerne den Adapter weitermachen, das Problem ist das ich keine Klipper Installation haben

            Der Adapter arbeitet bereits über websocket was effizienter ist aber ich kan nur schwierig blind programmieren

            Also wen jemand Zeit/bock hat da zusammen drüber zu schauen oder mir einen Zugang geben kann kümmere ich mich sehr gerne darum!

            H 1 Reply Last reply Reply Quote 0
            • H
              Hansi1234 @Dutchman last edited by

              @dutchman gebe ich dir. Muss nur schauen, wie es zeitlich passt. Wireguard ist vorhanden

              Dutchman 1 Reply Last reply Reply Quote 0
              • Dutchman
                Dutchman Developer Most Active Administrators @Hansi1234 last edited by

                @hansi1234 sagte in Adapter Klipper-Moonraker:

                @dutchman gebe ich dir. Muss nur schauen, wie es zeitlich passt. Wireguard ist vorhanden

                cool mit wireguard sollte es klappen, kein stress ich bin gerade noch dabei ESPHome zu Finalisten, WLED ein update zu geben, e-message implementieren, solar manager die basis auf zu bauen und sourceanalytiX ein major update zu geben

                aber glaube die KlipperMoonraker Sachen sind ziemlich easy und meister teil bereits vorhanden. die Entwicklung hat damals aufgehört da ich keine daten mehr hatte um mit zu arbeiten

                1 Reply Last reply Reply Quote 0
                • Dutchman
                  Dutchman Developer Most Active Administrators @gerald123 last edited by Dutchman

                  @gerald123 sagte in Adapter Klipper-Moonraker:

                  Kann mir hier wer von euch weiterhelfen wie ich diese Meldung beseitigen kann?

                  ich benötige dazu Informationen, fuer jeden Datenpunkt ist hier beschrieben was fuer einen typen er hat.
                  Diese Fehler bedeuten entweder das der wert noch nicht in der liste steht oder den falschen typen hat

                  https://github.com/DrozmotiX/ioBroker.klipper-moonraker/blob/main/lib/stateAttr.js

                  z.b.

                  	'endstop_pin': {
                  		name: 'Endstop Pin', 
                  		type: 'number',
                  		read: true,
                  		write: false,
                  		role: 'state',
                  	},
                  

                  hier steht es als number, wen es aber ein string sein soll muss hier der typ korrigiert werden

                  ALgemein: sorry Leute ich war die letzte zeit, sagen wir 1,5 Jahre, nicht so aktiv im forum und habe einiges verpasst worunter auch dieses Thema dank @Hansi1234 der mich retagged hatte und die Meldung ganz oben stand bin ich erst ich erst wach geworden ...

                  schande ueber mein Haupt !

                  H S 2 Replies Last reply Reply Quote 1
                  • H
                    Hansi1234 @Dutchman last edited by

                    @dutchman rechtfertigen musst du dich nicht 😊 ich schreib dir eine PM wegen Zugang

                    Dutchman 1 Reply Last reply Reply Quote 0
                    • Dutchman
                      Dutchman Developer Most Active Administrators @Hansi1234 last edited by

                      @hansi1234 sagte in Adapter Klipper-Moonraker:

                      @dutchman rechtfertigen musst du dich nicht 😊 ich schreib dir eine PM wegen Zugang

                      Vielen Dank!!!

                      Segway 1 Reply Last reply Reply Quote 1
                      • Segway
                        Segway last edited by Segway

                        @dutchman

                        Hatte gerade ein Issue aufgemacht auf Guthub um nachzufragen ob der Adapter ein Upgrade erhält.
                        Leider erst jetzt gelesen dass du schon dran bist 🙂

                        Wo kann ich helfen ? Soll ich was testen ?

                        1 Reply Last reply Reply Quote 0
                        • S
                          Sushibomba @Dutchman last edited by

                          @dutchman

                          Das mit deiner Liste verstehe ich noch nicht so ganz würde aber auch gerne helfen.
                          Was kann ich tun um die Entwicklung voran zu treiben? 🙂

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

                            Wenn sich hier wer finden würde der mir bei der config von meinem sapphire pro helfen könnte, würde ich auch mitmachen...
                            Alle Treiber auf 2209 umgebaut, teilweise funktioniert er, aber halt nicht alles. Steht seit mehr als nem halben Jahr.
                            Zum Glück tut's der Ender 3v2 original top.

                            1 Reply Last reply Reply Quote 0
                            • Segway
                              Segway @Dutchman last edited by Segway

                              @dutchman
                              Gibts bei dem Adapter schon einen Fortschritt ?

                              @da_woody sagte in Adapter Klipper-Moonraker:

                              Wenn sich hier wer finden würde der mir bei der config von meinem sapphire pro helfen könnte, würde ich auch mitmachen...
                              Alle Treiber auf 2209 umgebaut, teilweise funktioniert er, aber halt nicht alles. Steht seit mehr als nem halben Jahr.
                              Zum Glück tut's der Ender 3v2 original top.

                              Welche Hilfe brauchste bei dem Sapphire pro ?

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

                                @segway hat sich mehr oder weniger erledigt. hab mir zum geburtstag und weihnachten einen creality K1 gegönnt. der ist grad im anflug.

                                Welche Hilfe brauchste bei dem Sapphire pro ?

                                nunja, meine config werkelt nicht so, wie sie sollte. x y tut zwar, bei den stops bin ich mir nicht ganz sicher. z fährt allerdings maximal 1/3mehr mag das teil nicht.
                                die treiber hab ich auf 2209uart umgebaut.
                                schon monatelang nicht mehr aufgedreht.
                                🙄 jetzt initialisiert sich das ding nichtmal mehr. war kurz da, hab was aktualisiert, nix mehr...
                                müsste ich wohl neu insten... per SSH bin ich aber noch auf den raspi gekommen, die printer.conf runterkopiert.
                                printer.cfg
                                wenn du laune hast, kannst ja mal reinschauen...

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

                                  @da_woody sagte in Adapter Klipper-Moonraker:

                                  müsste ich wohl neu insten... per SSH bin ich aber noch auf den raspi gekommen, die printer.conf runterkopiert.
                                  printer.cfg
                                  wenn du laune hast, kannst ja mal reinschauen...

                                  Wenn ich mir das so anschauen stimmt die config nicht.....welchen Spahire hast du genau ?

                                  pro SP3 2020
                                  plus SP5 v1
                                  plus SP5 v1.1

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

                                    @segway sapphire pro im November 2019 gekauft.
                                    Umgebaut ( 2209uart und bltoutch) und mit Klipper hab ich damals versucht nach den Videos von Stonetime.
                                    Auf YouTube nach "stonetime klipper sapphire" suchen...

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

                                      @da_woody
                                      Lass uns das per Discord machen wenn Zeit hast ok ?

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

                                        @segway können wir machen tun am sein.
                                        musste grad neu insten, update hat nach der langen zeit nich geklappt. schon ewig nicht mehr auf discord gewesen...
                                        k, den ioB server hab ich drinnen, auch iobrokerklipper-moonraker chan gefunden. find dich allerdings nicht. gerade gesichtet...
                                        na egal, heut wird das eh nichts mehr. hunger, müde und keinen kopf dazu.
                                        auch keine ahnung wie und wann du zeit und lust hast. gibt ja auch den chat um sich abzustimmen. 🙂
                                        btw: heut ist der creality K1 aufgeschlagen. nach öffnen der schachtel ist mich aber erstmal ein polnischer eisbär angesprungen. werd den noch ~2 tage aklimatisieren lassen. ob der wohl auch mit dem adapter funktioniert?

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

                                          @da_woody
                                          der K1 ? Sollte auch gehen denke ich.
                                          Aber eins nach dem anderen ... Hab dich angeschrieben - dann sehen wir weiter

                                          1 Reply Last reply Reply Quote 0
                                          • S
                                            Sushibomba last edited by

                                            Erstmal ein frohes neues Jahr an alle 🙂
                                            Wann geht's hier weiter @Dutchman ? Gibt's schon nen Plan?
                                            Du brauchst ja immer mal wieder ne Erinnerung wie du selber sagst 😉

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            915
                                            Online

                                            31.6k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            adapter update klipper moonraker
                                            22
                                            120
                                            10285
                                            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