NEWS
Adapter Klipper-Moonraker
-
@Negalein
Filename ist string.
Inhalt aktuell{"eventtime":101.473435832,"value":"Stand_0.15mm_PLA_Generic Klipper Printer_26m47s.gcode"}Ich hol das aber über die mqtt Schnittstelle
Das Bild hol ich mir direkt vom Drucker@Merlin123 sagte in Adapter Klipper-Moonraker:
Ich hol das aber über die mqtt Schnittstelle
Das Bild hol ich mir direkt vom Druckerwie machst du das?
Hast du ein kurzes How-To? :) -
@Merlin123 sagte in Adapter Klipper-Moonraker:
Ich hol das aber über die mqtt Schnittstelle
Das Bild hol ich mir direkt vom Druckerwie machst du das?
Hast du ein kurzes How-To? :) -
@Negalein Kurzfassung:
mqtt Server in ioBroker einrichten, dann Moonraker konfigurieren:
Moonraker mqtt@Merlin123 sagte in Adapter Klipper-Moonraker:
Moonraker mqtt
Danke, das hab ich vorher gefunden.
Ich finde nichts, was ich dort eintragen muss, um den Link zum Thumb zu bekommen.
Alles andere bekomm ich vom Klipper-Adapter.
-
@Merlin123 sagte in Adapter Klipper-Moonraker:
Moonraker mqtt
Danke, das hab ich vorher gefunden.
Ich finde nichts, was ich dort eintragen muss, um den Link zum Thumb zu bekommen.
Alles andere bekomm ich vom Klipper-Adapter.
@Negalein Das ist mein Blockly dazu:
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="BXYL{xhaLkN~v2Ldl!%!">text</variable> </variables> <block type="on" id="/Z2O}ZB#,a]kn33Dz4F$" x="116" y="2253"> <field name="OID">mqtt.0.printer.V2.660.klipper.state.print_stats.filename</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="variables_set" id="y[Oc#E_92,_2BKo4(5~["> <field name="VAR" id="BXYL{xhaLkN~v2Ldl!%!">text</field> <value name="VALUE"> <block type="get_attr" id="XXR]WqWt.=HMLUr3gR}@"> <value name="PATH"> <shadow type="text" id="rrx*$IEHd@w{;*~Z+8`n"> <field name="TEXT">value</field> </shadow> </value> <value name="OBJECT"> <shadow type="get_object" id="^cMzi*_aj{`Pl0P725m~"> <field name="OID">Object ID</field> </shadow> <block type="on_source" id="pgo{+7GzQz;]qj)e34}A"> <field name="ATTR">state.val</field> </block> </value> </block> </value> <next> <block type="update" id="bIOV@RC*Q+u,j_l+cDZ,"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.3D_Drucker_K1_Filename</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text_getSubstring" id=";P~^,bl^VhcaeFBrn4B7"> <mutation at1="false" at2="true"></mutation> <field name="WHERE1">FIRST</field> <field name="WHERE2">FROM_START</field> <value name="STRING"> <block type="variables_get" id=".)~:q(Mh|eeSdPJRu*2!"> <field name="VAR" id="BXYL{xhaLkN~v2Ldl!%!">text</field> </block> </value> <value name="AT2"> <block type="math_arithmetic" id="~]oa3qPRWU)spG%YB1]]"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="PqrA)w7#cW-.+R7[s$Ut"> <field name="NUM">1</field> </shadow> <block type="text_indexOf" id="r51`DlwiN)v*}8k4q}5p"> <field name="END">FIRST</field> <value name="VALUE"> <block type="variables_get" id="sqPwTzw6?t1]F1dwmj|P"> <field name="VAR" id="BXYL{xhaLkN~v2Ldl!%!">text</field> </block> </value> <value name="FIND"> <shadow type="text" id="NN88q$[rF?qy3R1S,=Fk"> <field name="TEXT">.gcode</field> </shadow> </value> </block> </value> <value name="B"> <shadow type="math_number" id="Gp.#K1A?Y{{b4u]f,mK_"> <field name="NUM">1</field> </shadow> </value> </block> </value> </block> </value> <next> <block type="update" id="v~`h#IPc]?2X#3=M{X[a"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.3D_Drucker_K1_Thumbnail</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text_join" id="=uC)c{XD(`=yL3+qnM$/"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="+hu6Z]DDV49vxZEG3^KI"> <field name="TEXT">http://192.168.0.252:4409/server/files/gcodes/.thumbs/</field> </block> </value> <value name="ADD1"> <block type="text_getSubstring" id=".jX}L{b`]tqX[lP+wIR2"> <mutation at1="false" at2="true"></mutation> <field name="WHERE1">FIRST</field> <field name="WHERE2">FROM_START</field> <value name="STRING"> <block type="variables_get" id="ZUXf!~C]B[?oTqjrU3mF"> <field name="VAR" id="BXYL{xhaLkN~v2Ldl!%!">text</field> </block> </value> <value name="AT2"> <block type="math_arithmetic" id="rArUrH5JD`!U0PI6`=Lt"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="PqrA)w7#cW-.+R7[s$Ut"> <field name="NUM">1</field> </shadow> <block type="text_indexOf" id="Gji4dA%oP(rS[%9W%X(m"> <field name="END">FIRST</field> <value name="VALUE"> <block type="variables_get" id="i=BXKzmS]z$x=!47DA!B"> <field name="VAR" id="BXYL{xhaLkN~v2Ldl!%!">text</field> </block> </value> <value name="FIND"> <shadow type="text" id="nTgAoKx?A/?1e#g9JTXQ"> <field name="TEXT">.gcode</field> </shadow> </value> </block> </value> <value name="B"> <shadow type="math_number" id="u3_-Ii7/U+4%YQw8Az@I"> <field name="NUM">1</field> </shadow> </value> </block> </value> </block> </value> <value name="ADD2"> <block type="text" id="sn3+k)T(}R(KvqNhQ6;v"> <field name="TEXT">-320x320.png</field> </block> </value> </block> </value> </block> </next> </block> </next> </block> </statement> </block> </xml> -
@Negalein Das ist mein Blockly dazu:
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="BXYL{xhaLkN~v2Ldl!%!">text</variable> </variables> <block type="on" id="/Z2O}ZB#,a]kn33Dz4F$" x="116" y="2253"> <field name="OID">mqtt.0.printer.V2.660.klipper.state.print_stats.filename</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="variables_set" id="y[Oc#E_92,_2BKo4(5~["> <field name="VAR" id="BXYL{xhaLkN~v2Ldl!%!">text</field> <value name="VALUE"> <block type="get_attr" id="XXR]WqWt.=HMLUr3gR}@"> <value name="PATH"> <shadow type="text" id="rrx*$IEHd@w{;*~Z+8`n"> <field name="TEXT">value</field> </shadow> </value> <value name="OBJECT"> <shadow type="get_object" id="^cMzi*_aj{`Pl0P725m~"> <field name="OID">Object ID</field> </shadow> <block type="on_source" id="pgo{+7GzQz;]qj)e34}A"> <field name="ATTR">state.val</field> </block> </value> </block> </value> <next> <block type="update" id="bIOV@RC*Q+u,j_l+cDZ,"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.3D_Drucker_K1_Filename</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text_getSubstring" id=";P~^,bl^VhcaeFBrn4B7"> <mutation at1="false" at2="true"></mutation> <field name="WHERE1">FIRST</field> <field name="WHERE2">FROM_START</field> <value name="STRING"> <block type="variables_get" id=".)~:q(Mh|eeSdPJRu*2!"> <field name="VAR" id="BXYL{xhaLkN~v2Ldl!%!">text</field> </block> </value> <value name="AT2"> <block type="math_arithmetic" id="~]oa3qPRWU)spG%YB1]]"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="PqrA)w7#cW-.+R7[s$Ut"> <field name="NUM">1</field> </shadow> <block type="text_indexOf" id="r51`DlwiN)v*}8k4q}5p"> <field name="END">FIRST</field> <value name="VALUE"> <block type="variables_get" id="sqPwTzw6?t1]F1dwmj|P"> <field name="VAR" id="BXYL{xhaLkN~v2Ldl!%!">text</field> </block> </value> <value name="FIND"> <shadow type="text" id="NN88q$[rF?qy3R1S,=Fk"> <field name="TEXT">.gcode</field> </shadow> </value> </block> </value> <value name="B"> <shadow type="math_number" id="Gp.#K1A?Y{{b4u]f,mK_"> <field name="NUM">1</field> </shadow> </value> </block> </value> </block> </value> <next> <block type="update" id="v~`h#IPc]?2X#3=M{X[a"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.3D_Drucker_K1_Thumbnail</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text_join" id="=uC)c{XD(`=yL3+qnM$/"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="+hu6Z]DDV49vxZEG3^KI"> <field name="TEXT">http://192.168.0.252:4409/server/files/gcodes/.thumbs/</field> </block> </value> <value name="ADD1"> <block type="text_getSubstring" id=".jX}L{b`]tqX[lP+wIR2"> <mutation at1="false" at2="true"></mutation> <field name="WHERE1">FIRST</field> <field name="WHERE2">FROM_START</field> <value name="STRING"> <block type="variables_get" id="ZUXf!~C]B[?oTqjrU3mF"> <field name="VAR" id="BXYL{xhaLkN~v2Ldl!%!">text</field> </block> </value> <value name="AT2"> <block type="math_arithmetic" id="rArUrH5JD`!U0PI6`=Lt"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="PqrA)w7#cW-.+R7[s$Ut"> <field name="NUM">1</field> </shadow> <block type="text_indexOf" id="Gji4dA%oP(rS[%9W%X(m"> <field name="END">FIRST</field> <value name="VALUE"> <block type="variables_get" id="i=BXKzmS]z$x=!47DA!B"> <field name="VAR" id="BXYL{xhaLkN~v2Ldl!%!">text</field> </block> </value> <value name="FIND"> <shadow type="text" id="nTgAoKx?A/?1e#g9JTXQ"> <field name="TEXT">.gcode</field> </shadow> </value> </block> </value> <value name="B"> <shadow type="math_number" id="u3_-Ii7/U+4%YQw8Az@I"> <field name="NUM">1</field> </shadow> </value> </block> </value> </block> </value> <value name="ADD2"> <block type="text" id="sn3+k)T(}R(KvqNhQ6;v"> <field name="TEXT">-320x320.png</field> </block> </value> </block> </value> </block> </next> </block> </next> </block> </statement> </block> </xml>@Merlin123 sagte in Adapter Klipper-Moonraker:
Das ist mein Blockly dazu:
ist eigentlich ident zu meinem.
komisch, dass es bei mir nicht funktioniert.
-
@Merlin123 sagte in Adapter Klipper-Moonraker:
Das ist mein Blockly dazu:
ist eigentlich ident zu meinem.
komisch, dass es bei mir nicht funktioniert.
-
@Merlin123 sagte in Adapter Klipper-Moonraker:
hmmm... dann hab ich spontan keine idee :(
ich bekomm diese Fehler
javascript.0 2025-12-27 14:23:54.082 error script.js.3D-Drucker.Klipper_Thumb: at processImmediate (node:internal/timers:483:21) javascript.0 2025-12-27 14:23:54.082 error script.js.3D-Drucker.Klipper_Thumb: at Immediate.<anonymous> (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.ts:11138:53) javascript.0 2025-12-27 14:23:54.082 error script.js.3D-Drucker.Klipper_Thumb: at JavaScript.emit (node:domain:489:12) javascript.0 2025-12-27 14:23:54.082 error script.js.3D-Drucker.Klipper_Thumb: at JavaScript.emit (node:events:524:28) javascript.0 2025-12-27 14:23:54.082 error script.js.3D-Drucker.Klipper_Thumb: at JavaScript.onStateChange (/opt/iobrokr/node_modules/iobroker.javascript/src/main.ts:752:25) javascript.0 2025-12-27 14:23:54.082 error script.js.3D-Drucker.Klipper_Thumb: at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/src/lib/sandbox.ts:1772:38) javascript.0 2025-12-27 14:23:54.082 error script.js.3D-Drucker.Klipper_Thumb: at Object.<anonymous> (script.js.3D-Drucker.Klipper_Thumb:9:81) javascript.0 2025-12-27 14:23:54.082 error script.js.3D-Drucker.Klipper_Thumb: Error: TypeError: Cannot read properties of null (reading 'slice') javascript.0 2025-12-27 14:23:54.081 error script.js.3D-Drucker.Klipper_Thumb: Cannot parse "Emely_2.gcode": SyntaxError: Unexpected token 'E', "Emely_2.gcode" is not valid JSON -
@Merlin123 sagte in Adapter Klipper-Moonraker:
hmmm... dann hab ich spontan keine idee :(
ich bekomm diese Fehler
javascript.0 2025-12-27 14:23:54.082 error script.js.3D-Drucker.Klipper_Thumb: at processImmediate (node:internal/timers:483:21) javascript.0 2025-12-27 14:23:54.082 error script.js.3D-Drucker.Klipper_Thumb: at Immediate.<anonymous> (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.ts:11138:53) javascript.0 2025-12-27 14:23:54.082 error script.js.3D-Drucker.Klipper_Thumb: at JavaScript.emit (node:domain:489:12) javascript.0 2025-12-27 14:23:54.082 error script.js.3D-Drucker.Klipper_Thumb: at JavaScript.emit (node:events:524:28) javascript.0 2025-12-27 14:23:54.082 error script.js.3D-Drucker.Klipper_Thumb: at JavaScript.onStateChange (/opt/iobrokr/node_modules/iobroker.javascript/src/main.ts:752:25) javascript.0 2025-12-27 14:23:54.082 error script.js.3D-Drucker.Klipper_Thumb: at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/src/lib/sandbox.ts:1772:38) javascript.0 2025-12-27 14:23:54.082 error script.js.3D-Drucker.Klipper_Thumb: at Object.<anonymous> (script.js.3D-Drucker.Klipper_Thumb:9:81) javascript.0 2025-12-27 14:23:54.082 error script.js.3D-Drucker.Klipper_Thumb: Error: TypeError: Cannot read properties of null (reading 'slice') javascript.0 2025-12-27 14:23:54.081 error script.js.3D-Drucker.Klipper_Thumb: Cannot parse "Emely_2.gcode": SyntaxError: Unexpected token 'E', "Emely_2.gcode" is not valid JSON -
@Negalein ich habe da ein JSON. Du musst dann den Text anders verarbeiten.
Trigger mal auf den Datenpunkt wo bei dir jetzt im Log Emely_2.gcode stand.ggf. das Blockly entsprechend anpassen.
@Merlin123 sagte in Adapter Klipper-Moonraker:
ich habe da ein JSON. Du musst dann den Text anders verarbeiten.
Trigger mal auf den Datenpunkt wo bei dir jetzt im Log Emely_2.gcode stand.ich bekomm weder im Adapter noch vom Script ein JSON :(

ggf. das Blockly entsprechend anpassen.
kennst du dich da aus?
-
@Negalein ich habe da ein JSON. Du musst dann den Text anders verarbeiten.
Trigger mal auf den Datenpunkt wo bei dir jetzt im Log Emely_2.gcode stand.ggf. das Blockly entsprechend anpassen.
-
-
Sehr schön das sich jemand um Klipper kümmert :)
Gerade zwei Instanzen installiert.
Was mir direkt auffällt:
Progress stimmt nicht mit Klipper überein Klipper= 35% Adapter = 44%? Wobei der Progress /100 angezeigt wird?
(klipper-moonraker.0.display_status.progress)Verbrauchtes Filament stimmt nicht mit Klipper überein, Klipper= 1m Adapter 1,2m
(klipper-moonraker.0.print_stats.total_duration)Der Gerade gedruckte Layer wird nicht übertragen. (Null)
(klipper-moonraker.0.print_stats.info.current_layer)
Ebenfalls für Total Layer
(klipper-moonraker.0.print_stats.info.total_layer)Ansonsten saubere Arbeit :) und Danke dafür.
@Lucifor1976 bischen her das du die Frage gepostet hast.
Bei mir findet sich der "richtige" Wert unter: klipper-moonraker.1.virtual_sdcard.progress
Jedenfalls ist das der Wert der mit 100 multipliziert, genau dem entspricht was ich auch bei meinem Drucker über die WebGUI sehe.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden
