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 @Dutchman last edited by

      @dutchman

      Ich natürlich auch 🙂

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

        @sushibomba @Hansi1234
        Super! Ich würde Dan auch gerne auf euch zurück kommen

        Ich bräuchte, am liebsten per VPN oder dedicaties port freigabe, Zugang zu einem laufenden System damit ich die Nachrichten sauber implementieren kan und verstehen wie bzw. in welchen Abständen Daten ankommen

        Ich glaube momentan ballert der Adapter auch extrem viele Daten schnell hintereinander was schwierig sein könnte für etwas schwächere Systeme.
        Wen das so ist müsste zb ein buffer eingebaut werden und solchen kleine Sachen halt

        Aktives testen + Feedback auch sehr wichtig um das Thema erfolgreich zu Ende bringen zu können 🤗

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

          @dutchman sagte in Adapter Klipper-Moonraker:

          dedicaties

          Weiß zwar nicht wie das geht aber bekommen wir bestimmt hin.
          Vielleicht weiß ja jemand anderes hier auch wie das mit den Dedicated Servern oder VPN läuft und ich kann was anderes testen.

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

            @sushibomba sagte in Adapter Klipper-Moonraker:

            @dutchman sagte in Adapter Klipper-Moonraker:

            dedicaties

            Weiß zwar nicht wie das geht aber bekommen wir bestimmt hin.
            Vielleicht weiß ja jemand anderes hier auch wie das mit den Dedicated Servern oder VPN läuft und ich kann was anderes testen.

            VPN einrichten oder Portofreigabe kriegen wir schon hin 🤜🤛

            Merlin123 1 Reply Last reply Reply Quote 1
            • Merlin123
              Merlin123 @Dutchman last edited by

              Beim Testen kann ich auch gerne helfen. Hab jetzt auch ne Klipper Installation

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

                @merlin123 Top 🙂

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

                  Bekomme ich aus dem aktuellen Adapter irgendwie Infos über den Fortschritt oder wann der Druck fertig ist? Finde aktuell nur die vergangene Druckzeit.

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

                    @merlin123
                    @Dutchman Muss ihn erst wieder zum laufen bringen. Dann bekommen wir hoffentlich wieder die Werte 🙂
                    Aktuell ist es so, dass wenn du einen Druck am laufen hast, du den Adapter erst neu starten musst und dann siehst du die Werte.
                    Da es so aber ziemlich bescheiden ist, würde ich dir empfehlen erst auf den FIX vom Adapter zu warten.

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

                      @sushibomba ich seh einige Werte aktuell. Nur keinen DP, der mir irgendwas über den Fortschritt erzählt...
                      Wenn es jetzt einen gibt wäre das genial, egal ob das bald geändert wird 🙂

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

                        @merlin123
                        Also bei mir wurde es unter progress angezeigt.

                        druck klipper werte.png

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

                          @sushibomba Also unter Display Status hatte ich glaub ich nicht geschaut.... Dachte, da wird der Status eines Displays angezeigt 😉
                          Danke für den Tipp. Schau ich mir beim nächsten Druck an. Danke 🙂

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

                            @sushibomba Grad mal geschaut. Print Status ist auf complete und der Fortschritt auf 1%..... Komisch....

                            EDIT: Ah OK... Das ist nicht Prozent sondern der Dezimalwert 1 = 100% 🙂

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

                              @merlin123 Ja genau.

                              Startest du jetzt allerdings nen neun druck aktualisiert er die Werte nicht mehr.
                              Erst nach einem Neustart des Adapters wieder.

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

                                @sushibomba Hab den auf autorestart alle 10 Minuten gesetzt 😛 Das ,löst das Problem 🙂

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

                                  @merlin123 kann aber nicht die lösung sein.
                                  leider hab ich meinen sapphire pro mit den 2209ern mit klipper noch nicht zum laufen bekommen. würde da gerne mit testen. irgendwas stimmt in der printer.cfg nicht... 😞
                                  den ender v2 werd ich nicht umfummeln, der tut im moment absolut perfekt.

                                  S Merlin123 2 Replies Last reply Reply Quote 0
                                  • S
                                    Sushibomba @Merlin123 last edited by

                                    @merlin123
                                    Sehe ich auch so wie @da_Woody
                                    Vorrübergehend geht das zwar so aber ich hoffe @Dutchman findet dafür schnell eine Lösung 🙂

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

                                      @da_woody

                                      Kann dir leider da nicht helfen. Aber schau auf jeden Fall beim CRYD Team auf dem Discord vorbei. Die lösen dein Problem auf jeden Fall. Da bin ich mir sicher.

                                      1 Reply Last reply Reply Quote 1
                                      • Merlin123
                                        Merlin123 @da_Woody last edited by

                                        @da_woody sagte in Adapter Klipper-Moonraker:

                                        @merlin123 kann aber nicht die lösung sein.

                                        Natürlich ist das keine Lösung. Aber zumindest bekomme ich damit erstmal die Werte, die ich brauche. Da ist mir ein Quick&Dirty Workaround lieber als nix zu haben 🙂

                                        S 1 Reply Last reply Reply Quote 1
                                        • 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
                                            • First post
                                              Last post

                                            Support us

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

                                            474
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

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