Ultimaker Cura 2 Mooraker Upload Plugin

Overview

Klipper & Cura - Cura2MoonrakerPlugin

  • Allows you to upload Gcode directly from Cura to your Klipper-based 3D printer (Fluidd, Mainsailos etc.) using the Moonraker API.
  • Uploading thumbnails via UFP (Ultimaker Format Package) is supported
  • You can also start a print job using the upload process

How to Install

The installation of this plugin is straightforward ... no compiling etc.

  1. Download this repository as zip file (https://github.com/emtrax-ltd/Cura2MoonrakerPlugin/archive/main.zip) and unzip it
  2. Find your Cura plugins directory:
    • Windows:
      • The default installation path is C:\Program Files\Ultimaker Cura [version number]\plugins.
      • The user based installation path is C:\Users\<Your Username>\AppData\Roaming\cura\[version number]\plugins (no admin privileges needed)
    • macOS:
      • Right-click on Ultimaker Cura.app in your Applications folder then click on Show Package Contents. The default installation path is Ultimaker Cura.app -> Contents -> Resources -> Plugins -> Plugins.
  3. Copy the extracted Cura2MoonrakerPluginfolder into the Cura plugins folder you located in step 2. Attention: In the user based windows installation you have to copy the unzipped plugin directory into a parent directory with the same name. Looks like ...\cura\[version number]\plugins\Cura2MoonrakerPlugin\Cura2MoonrakerPlugin.

How to Configure

To configure your Moonraker 3D printer...

  1. Go to Settings -> Printer -> Manage Printers
  2. Select and click on 'Connect Moonraker'
  3. Fill in the URL and select your preferred output format
  4. Click 'Save Config'

How to Upload

  1. Open your STL model in Cura and click Slice.
  2. Click the small up arrow on the right and select Upload to <Your Printername>:
  3. Now you can modify the filename, select the option to create a print job and finally... click Upload :)

Buy Me A Coffee

Comments
  • 5.0 support

    5.0 support

    I'm really in love with this plugin! Thanks for a great job! Recently Cura released 5.0 beta but looks like they brake something and plugin stopped to work. While loading Cura says that plugin need to be reinstalled

    opened by devolf92 28
  • error: 204 host requires authorisation

    error: 204 host requires authorisation

    Hi there,

    Does anyone know or could help with this issue?

    Screenshot 2021-10-06 at 18 58 35

    Get an error when trying to upload to Klipper from cura. I have added the IP address of my PC to the authorized list of addresses in moonraker.config.

    UPDATE: #7 does not fix it for me!? Where can i find "~/.moonraker_api_key" ??

    One other question is, for the section in the cura config "name of Moonraker power device". i am assuming this refers to the power device such as a TP link smart plug?

    cheers

    opened by Kieraneasdale 12
  • Crash when file upload CURA 5.1

    Crash when file upload CURA 5.1

    Hi, Cura crashed whenever i upload a file.

    Traceback (most recent call last): File "UM\TaskManagement\TaskManager.py", line 142, in event call_event.callFunction() File "UM\TaskManagement\TaskManager.py", line 33, in callFunction self._function(*self._args, **self._kwargs) File "C:\Users\Ludovic\AppData\Roaming\cura\5.1\plugins\MoonrakerConnection\MoonrakerConnection\MoonrakerOutputDevice.py", line 305, in _checkPrinterStatus status = response['result']['state'] TypeError: string indices must be integers

    opened by CrownFlash 10
  • Fix to original PR - Now sends FIRMWARE_RESTART before powering on printer, queries

    Fix to original PR - Now sends FIRMWARE_RESTART before powering on printer, queries "webhooks" printer object, sends model when state == 'ready'

    Before this fix, if the user requested the model to start printing immediately, the plugin might upload the model before the printer was ready to accept the print job. This change should fix that issue -- it now queries the "webhooks" printer object and waits until state == 'ready' before sending the model.

    At the moment, the queries occur every 0.5 seconds for a total of 10 seconds before a timeout occurs.

    Thanks again for a great plugin!

    opened by truckershitch 9
  • [FR] replacing dots and whitespace in filenames with an underscore or dash

    [FR] replacing dots and whitespace in filenames with an underscore or dash

    it would be really nice if the Plug-in could replace dots and whitespaces/spaces with an underscore or a dash instead of cutting/stripping the Filename.

    Examples: i have a .stl file with the filename "test_head_v1.4 (small).stl" current filename handling is like "test_head_v1.[gcode | ufp]" (file extension doesn't really matter in thsi example)

    would i would like is something like this "test_head_v1_4_small.gcode" or "test_head_v1_4-small.gcode"

    EDIT i would really like to inplement it by myself but unfortunately i dont know python that well.

    opened by itCarl 8
  • Upload the plugin to the marketplace.

    Upload the plugin to the marketplace.

    I think this would be much easier to find if this was uploaded to the marketplace! You can do that via https://contribute.ultimaker.com

    Even if you don't want that, you can use it to generate .curapackage files which can be drag & dropped into Cura, making installing it a lot less error prone.

    opened by nallath 7
  • Unable to save configured plugin settings

    Unable to save configured plugin settings

    Unable to save configured plugin settings

    Despite typing text in all fields, "Connect Moonraker" window shows only "Close" button, and no "Save Config" button at all. In Cura, printing buttons show "Moonraker Plugin", and clicking it displays message to Configure Moonraker in Preferences.

    System information:

    Gentoo Linux Python 3.8 Cura 4.9.1

    opened by agrohn 6
  • Upload timeout too short

    Upload timeout too short

    Hello,

    Thank you again for the "Fire and Forget" feature. Is it possible to adjust the time before error? When I first send a file, the printer turns on via relay and the firmware loads. That take longer than the current delay before an error is displayed, and load is cancelled. This could either be longer or a configurable option. Other than this minor inconvenience, the plugin has worked very well.

    Best, Mujeeb

    enhancement 
    opened by mujeebbasit 5
  • Cura 5.2.1: object of type settingfunction is not json serializable

    Cura 5.2.1: object of type settingfunction is not json serializable

    when i upgrade cura i get: object of type settingfunction is not json serializable

    in old version all is fine

    2022-10-30 17:11:17,530 - ERROR - [MainThread] UM.Qt.Bindings.OutputDeviceManagerProxy._writeToDevice [163]: Exception: Unable to write to file CFFFP_Peppa_Wutz: Object of type SettingFunction is not JSON serializable 2022-10-30 17:11:17,531 - ERROR - [MainThread] UM.Qt.Bindings.OutputDeviceManagerProxy._writeToDevice [163]: Traceback (most recent call last): 2022-10-30 17:11:17,532 - ERROR - [MainThread] UM.Qt.Bindings.OutputDeviceManagerProxy._writeToDevice [163]: File "UM\Qt\Bindings\OutputDeviceManagerProxy.py", line 150, in _writeToDevice 2022-10-30 17:11:17,532 - ERROR - [MainThread] UM.Qt.Bindings.OutputDeviceManagerProxy._writeToDevice [163]: device.requestWrite(nodes, file_name, limit_mimetypes, file_handler, **kwargs) 2022-10-30 17:11:17,533 - ERROR - [MainThread] UM.Qt.Bindings.OutputDeviceManagerProxy._writeToDevice [163]: File "C:\Users\phil2sat\AppData\Roaming\cura\5.2\plugins\MoonrakerConnection\MoonrakerConnection\MoonrakerOutputDevice.py", line 94, in requestWrite 2022-10-30 17:11:17,533 - ERROR - [MainThread] UM.Qt.Bindings.OutputDeviceManagerProxy._writeToDevice [163]: if not meshWriter.write(self._stream, None): 2022-10-30 17:11:17,534 - ERROR - [MainThread] UM.Qt.Bindings.OutputDeviceManagerProxy._writeToDevice [163]: File "cura\Utils\Threading.py", line 31, in _call_on_qt_thread_wrapper 2022-10-30 17:11:17,534 - ERROR - [MainThread] UM.Qt.Bindings.OutputDeviceManagerProxy._writeToDevice [163]: return func(*args, **kwargs) 2022-10-30 17:11:17,535 - ERROR - [MainThread] UM.Qt.Bindings.OutputDeviceManagerProxy._writeToDevice [163]: File "C:\Program Files\Ultimaker Cura 5.2.1\share\cura\plugins\UFPWriter\UFPWriter.py", line 88, in write 2022-10-30 17:11:17,535 - ERROR - [MainThread] UM.Qt.Bindings.OutputDeviceManagerProxy._writeToDevice [163]: json.dump(self._getSliceMetadata(), setting_textio, separators=(", ", ": "), indent=4) 2022-10-30 17:11:17,536 - ERROR - [MainThread] UM.Qt.Bindings.OutputDeviceManagerProxy._writeToDevice [163]: File "json\__init__.py", line 179, in dump 2022-10-30 17:11:17,536 - ERROR - [MainThread] UM.Qt.Bindings.OutputDeviceManagerProxy._writeToDevice [163]: File "json\encoder.py", line 431, in _iterencode 2022-10-30 17:11:17,537 - ERROR - [MainThread] UM.Qt.Bindings.OutputDeviceManagerProxy._writeToDevice [163]: File "json\encoder.py", line 405, in _iterencode_dict 2022-10-30 17:11:17,537 - ERROR - [MainThread] UM.Qt.Bindings.OutputDeviceManagerProxy._writeToDevice [163]: File "json\encoder.py", line 405, in _iterencode_dict 2022-10-30 17:11:17,538 - ERROR - [MainThread] UM.Qt.Bindings.OutputDeviceManagerProxy._writeToDevice [163]: File "json\encoder.py", line 405, in _iterencode_dict 2022-10-30 17:11:17,538 - ERROR - [MainThread] UM.Qt.Bindings.OutputDeviceManagerProxy._writeToDevice [163]: File "json\encoder.py", line 438, in _iterencode 2022-10-30 17:11:17,539 - ERROR - [MainThread] UM.Qt.Bindings.OutputDeviceManagerProxy._writeToDevice [163]: File "json\encoder.py", line 179, in default 2022-10-30 17:11:17,539 - ERROR - [MainThread] UM.Qt.Bindings.OutputDeviceManagerProxy._writeToDevice [163]: TypeError: Object of type SettingFunction is not JSON serializable

    opened by phil2sat 4
  • "Could not find plugin UFPWriter" error when attempting to use "UFP with Thumbnail" option

    Cura version: 4.13.1

    When I select the "UFP with Thumbnail" option in the "Connect to Moonraker" settings, and then attempt to send a sliced model to my printer, it just results in an error pop-up at the bottom of the Cura window that says: "Error

    Could not find plugin UFPWriter"

    Changing the Moonraker option to send GCODE instead makes it work just fine. Might be due to breaking changes in Cura 4.13 as seems to be implied by https://www.reddit.com/r/Cura/comments/s5i0bg/cura_413_fails_to_loaf_plugin_ufpwriter/.

    opened by scramsby 4
  • Display not large. And port number is required for connect to printer.

    Display not large. And port number is required for connect to printer.

    Using CURA 4.8 Fluidd with Klipper

    For the display image The button cropped. but i already adjust actionDialog.minimumHeight = screenScaleFactor * 320; and it seams fit nicely. image

    IP address need to put including port number. If only IP address without port, the file cant be uploaded.

    http://192.168.9.112:7125/

    Anyway thanks for great plug-in!

    opened by rexstor 4
  • Cura 5.2 uses a different plugin directory

    Cura 5.2 uses a different plugin directory

    Hello,

    It seems, that in the current Cura 5.2, a different plugin directory is used. In Cura 5.x or newer, the default installation path is Ultimaker Cura.app -> Contents -> Resources -> share -> cura -> plugins.

    But this Plugin-Directory seems to be for bundled Plugins only. Cura can´t find additional Plugins here.

    I had to put the plugin in the directory: /Library/Application Support/cura/5.2/plugins to get it to work.

    There is a readme file in the old plugins directory that points this out. Maybe the correct directory will be added here in the readme from Cura 5.2

    Greetings, Daniel

    opened by daniel-volz 1
  • Unknown command:

    Unknown command:"SDCARD_PRINT_FILE"

    Hi

    I was unable to connect Moonraker by using URL http://192.168.1.69/, was timing out I can however connect using http://192.168.1.69:7125

    However, when I send a gcode to Klipper, Cura advises 'succesfully completed and job started', but in Klipper i get the error:

    Unknown command:"SDCARD_PRINT_FILE"

    Originally suspected an unknown character but happens even if filename is 'test6' for example

    opened by ryangillett1 0
  • Thumbnail not showing up

    Thumbnail not showing up

    I did a fresh install of Klipper and Mainsail using KIAUH V5 and followed all the instructions on this page, but no matter what, I can't get the thumbnail to display.

    I'm using Cura 5.2.1 klipper v0.10.0-615-g96ea871b moonraker v0.7.1-747-g779997c mainsail v2.3.1

    Can anyone help

    opened by larie438 0
  • UFP

    UFP

    upload with UFP was working, then when I tried uploading a file, it would pause for a moment and i would get the following error: "object of type SettingFunction is not JSON serializable"

    if i change it to Gcode it works fine. This issue just started happening last night.

    opened by Roho81 9
  • Timeout-all the time

    Timeout-all the time

    Installed plugin in Cura 5.0.0 on a Windows 11 system with plenty of resources. Configured as instructions. Uploaded successfully on the first try, then failed to upload with a timeout error on each subsequent occasion. Uninstalled plugin, rebooted, checked IP allocation, reinstalled, reconfigured and it continues to time out each time. Thanks for the work on this plugin.

    enhancement 
    opened by andycrane 3
  • Cancel the changed information when closing or pressing Escape

    Cancel the changed information when closing or pressing Escape

    Not sure if this is possible using the close button of the dialog.

    I would like to see another dialog asking if you want to discard the changed settings whenever you try to close the dialog or when pressing Escape.

    This FR is the result of #46 after figuring out pressing Escape saves the settings.

    enhancement 
    opened by GerdonAbbink 2
A Sublime Text plugin to select a default syntax dialect

Default Syntax Chooser This Sublime Text 4 plugin provides the set_default_syntax_dialect command. This command manipulates a syntax file (e.g.: SQL.s

3 Jan 14, 2022
Flask-Rebar combines flask, marshmallow, and swagger for robust REST services.

Flask-Rebar Flask-Rebar combines flask, marshmallow, and swagger for robust REST services. Features Request and Response Validation - Flask-Rebar reli

PlanGrid 223 Dec 19, 2022
A complete kickstart devcontainer repository for python3

A complete kickstart devcontainer repository for python3

Viktor Freiman 3 Dec 23, 2022
Main repository for the Sphinx documentation builder

Sphinx Sphinx is a tool that makes it easy to create intelligent and beautiful documentation for Python projects (or other documents consisting of mul

5.1k Jan 04, 2023
Loudchecker - Python script to check files for earrape

loudchecker python script to check files for earrape automatically installs depe

1 Jan 22, 2022
Autolookup GUI Plugin for Plover

Word Tray for Plover Word Tray is a GUI plugin that automatically looks up efficient outlines for words that start with the current input, much like a

Kathy 3 Jun 08, 2022
Python document object mapper (load python object from JSON and vice-versa)

lupin is a Python JSON object mapper lupin is meant to help in serializing python objects to JSON and unserializing JSON data to python objects. Insta

Aurélien Amilin 24 Nov 09, 2022
Repository for tutorials, examples and starter scripts for using the MTU HPC cluster

MTU-HPC-Starter Repository for tutorials, examples and starter scripts for using the MTU HPC cluster Connecting to the MTU HPC cluster Within the coll

1 Jan 31, 2022
Literate-style documentation generator.

888888b. 888 Y88b 888 888 888 d88P 888 888 .d8888b .d8888b .d88b. 8888888P" 888 888 d88P" d88P" d88""88b 888 888 888

Pycco 808 Dec 27, 2022
Material for the ros2 crash course

Material for the ros2 crash course

Emmanuel Dean 1 Jan 22, 2022
Clases y ejercicios del curso de python diactodo por la UNSAM

Programación en Python En el marco del proyecto de Inteligencia Artificial Interdisciplinaria, la Escuela de Ciencia y Tecnología de la UNSAM vuelve a

Maximiliano Villalva 3 Jan 06, 2022
This tutorial will guide you through the process of self-hosting Polygon

Hosting guide This tutorial will guide you through the process of self-hosting Polygon Before starting Make sure you have the following tools installe

Polygon 2 Jan 31, 2022
A module filled with many useful functions and modules in various subjects.

Usefulpy Check out the Usefulpy site Usefulpy site is not always up to date Download and Import download and install with with pip download usefulpyth

Austin Garcia 1 Dec 28, 2021
🧙 A simple, typed and monad-based Result type for Python.

meiga 🧙 A simple, typed and monad-based Result type for Python. Table of Contents Installation 💻 Getting Started 📈 Example Features Result Function

Alice Biometrics 31 Jan 08, 2023
📘 OpenAPI/Swagger-generated API Reference Documentation

Generate interactive API documentation from OpenAPI definitions This is the README for the 2.x version of Redoc (React-based). The README for the 1.x

Redocly 19.2k Jan 02, 2023
A Material Design theme for MkDocs

A Material Design theme for MkDocs Create a branded static site from a set of Markdown files to host the documentation of your Open Source or commerci

Martin Donath 12.3k Jan 04, 2023
Documentation of the QR code found on new Austrian ID cards.

Austrian ID Card QR Code This document aims to be a complete documentation of the format used in the QR area on the back of new Austrian ID cards (Per

Gabriel Huber 9 Dec 12, 2022
Generates, filters, parses, and cleans data regarding the financial disclosures of judges in the American Judicial System

This repository contains code that gets data regarding financial disclosures from the Court Listener API main.py: contains driver code that interacts

Ali Rastegar 2 Aug 06, 2022
Some code that takes a pipe-separated input and converts that into a table!

tablemaker A program that takes an input: a | b | c # With comments as well. e | f | g h | i |jk And converts it to a table: ┌───┬───┬────┐ │ a │ b │

CodingSoda 2 Aug 30, 2022
Workbench to integrate pyoptools with freecad, that means basically optics ray tracing capabilities for FreeCAD.

freecad-pyoptools Workbench to integrate pyoptools with freecad, that means basically optics ray tracing capabilities for FreeCAD. Requirements It req

Combustión Ingenieros SAS 12 Nov 16, 2022