Python interface to Duet RepRap V3 firmware via Http REST API.
- Works over IP network.
- Does not support passwords on the printer.
- Supported boards:
- Duet 3 + SBC
- Duet 3 standalone
- Duet 2 standalone
pip install duetwebapi
Alternatively:
pip install -e "git+https://github.com/AndyEveritt/DuetWebAPI.git@master#egg=duetwebapi"
- See 'examples.py' for examples.
fromduetwebapiimportDuetWebAPIprinter=DuetWebAPI(f'http://{printer_hostname}')The REST API allows for the following operations:
| Method | Description |
|---|---|
connect(password: str = '') -> Dict | Start a connection with Duet. DWC api only |
disconnect() -> Dict | End a connection with Duet. DWC api only |
get_model(key: str = None, depth: int = 99, verbose: bool = True, null: bool = True, frequent: bool = False, obsolete: bool = False) -> Dict | Get Duet object model. RRF3 only. Flags only supported in DWC api. |
send_code(code: str) -> Dict | Send G/M/T-code to Duet |
get_file(filename: str, directory: str = 'gcodes', binary: bool = False) -> str | Download file from Duet |
upload_file(file: str | bytes | StringIO | TextIOWrapper | BytesIO, filename: str, directory: str = 'gcodes') -> Dict | Upload file to Duet |
get_fileinfo(filename: str = None, directory: str = 'gcodes') -> Dict | Get file info |
delete_file(filename: str, directory: str = 'gcodes') -> Dict | Delete file on Duet |
move_file(from_path: str, to_path: str, force: bool = False) -> Dict | Move file on Duet, can be used to rename files |
get_directory(directory: str) -> List[Dict] | Get a list of all the files & directories in a directory |
create_directory(directory: str) -> Dict | Create a new directory |
An additional wrapper is provided to make repetative tasks easier
| Method | Description |
|---|---|
emergency_stop() -> None | Send M112 > M999 |
start_print(filename: str) -> Dict | start a print on duet |
pause_print() -> Dict | pause current print |
stop_print(leave_heaters: bool) -> Dict | stop current print, will pause first if not paused |
get_coords() -> Dict | return the current position of all the movement axes |
get_layer() -> int | return the current layer number of the print |
get_num_extruders() -> int | return the number of extruders currently configured |
get_num_tools() -> int | return the number of tools currently configured |
get_status() -> str | return the current Duet status |
get_temperature() -> List[Dict] | return a list of all the analog sensors and their value |
get_current_tool() -> int | return the current tool number |
get_messagebox() -> Dict | return the details of a message displayed via M291 if one exists |
acknowledge_message(response: int) -> Dict | send an acknowledgement to a message if one exists. Response options are 0 (continue), and 1 (cancel) |