Skip to content

Commit 2e0569a

Browse files
authored
Merge pull request #2 from AndyEveritt:dev_v1.1.1
dev_v1.1.1
2 parents 10deae6 + 6208ad3 commit 2e0569a

8 files changed

Lines changed: 74 additions & 22 deletions

File tree

.bumpversion.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[bumpversion]
2-
current_version = 1.1.0
2+
current_version = 1.1.1
33
commit = False
44
tag = False
55
allow_dirty = False

Makefile

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,14 @@ verbosity=1
88
# `bumpversion --tag release
99

1010
update_dist:
11+
rm dist/*
1112
python setup.py sdist bdist_wheel
1213

1314
check_dist:
14-
twine check dist/*-$(v)*
15+
twine check dist/*
1516

16-
upload_test:
17-
twine upload --repository testpypi dist/*-$(v)*
17+
upload_test: check_dist
18+
twine upload --repository testpypi dist/*
1819

19-
upload:
20-
twine upload dist/*-$(v)*
20+
upload: check_dist
21+
twine upload dist/*

README.md

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ pip install -e "git+https://github.com/AndyEveritt/DuetWebAPI.git@master#egg=due
2424
```python
2525
from duetwebapi import DuetWebAPI
2626

27-
printer = DuetWebAPI(f'http://{printer_hostname})
27+
printer = DuetWebAPI(f'http://{printer_hostname}')
2828
```
2929

3030
## REST API
@@ -48,9 +48,16 @@ An additional wrapper is provided to make repetative tasks easier
4848

4949
Method | Description
5050
------ | -----------
51-
`get_coords()` | return the current position of all the movement axes
52-
`get_layer()` | return the current layer number of the print
53-
`get_num_extruders()` | return the number of extruders currently configured
54-
`get_num_tools()` | return the number of tools currently configured
55-
`get_status()` | return the current Duet status
56-
`get_temperature()` | return a list of all the analog sensors and their value
51+
`emergency_stop() -> None` | Send M112 > M999
52+
`start_print(filename: str) -> Dict` | start a print on duet
53+
`pause_print() -> Dict` | pause current print
54+
`stop_print(leave_heaters: bool) -> Dict` | stop current print, will pause first if not paused
55+
`get_coords() -> Dict` | return the current position of all the movement axes
56+
`get_layer() -> int` | return the current layer number of the print
57+
`get_num_extruders() -> int` | return the number of extruders currently configured
58+
`get_num_tools() -> int` | return the number of tools currently configured
59+
`get_status() -> str` | return the current Duet status
60+
`get_temperature() -> List[Dict]` | return a list of all the analog sensors and their value
61+
`get_current_tool() -> int` | return the current tool number
62+
`get_messagebox() -> Dict` | return the details of a message displayed via `M291` if one exists
63+
`acknowledge_message(response: int) -> Dict` | send an acknowledgement to a message if one exists. Response options are `0` (continue), and `1` (cancel)

duetwebapi/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
__version__ = "1.1.0"
1+
__version__ = "1.1.1"
22

33
from .dwa_factory import DuetWebAPI

duetwebapi/api/base.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,14 @@
77
class DuetAPI:
88
api_name = ''
99

10-
def __init__(self, base_url) -> None:
10+
def __init__(self, base_url: str) -> None:
11+
if not base_url.startswith('http://'):
12+
base_url = f'http://{base_url}'
1113
self._base_url = base_url
1214

15+
def base_url(self):
16+
return self._base_url
17+
1318
def get_model(self, key: str = None) -> Dict:
1419
""" Get Duet object model. RRF3 only """
1520
raise NotImplementedError
@@ -45,3 +50,5 @@ def get_directory(self, directory: str) -> List[Dict]:
4550
def create_directory(self, directory: str) -> Dict:
4651
""" Create a new directory """
4752
raise NotImplementedError
53+
54+
pass

duetwebapi/api/wrapper.py

Lines changed: 41 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,37 +5,72 @@
55

66

77
class DuetAPIWrapper(DuetAPI):
8-
def get_coords(self):
8+
def emergency_stop(self) -> None:
9+
self.send_code('M112')
10+
self.send_code('M999')
11+
12+
def start_print(self, filename: str) -> Dict:
13+
return self.send_code(f'M32 "{filename}"')
14+
15+
def pause_print(self) -> Dict:
16+
return self.send_code(f'M25')
17+
18+
def stop_print(self, leave_heaters: bool = True) -> Dict:
19+
status = self.get_status()
20+
if status == 'idle':
21+
return
22+
if not status == 'paused':
23+
self.pause_print()
24+
25+
code = 'M0'
26+
if leave_heaters:
27+
code += ' H1'
28+
return self.send_code(code)
29+
30+
def get_coords(self) -> Dict:
931
model = self.get_model()
1032
axes = model['move']['axes']
1133
ret = {}
1234
for i in range(0, len(axes)):
1335
ret[axes[i]['letter']] = axes[i]['userPosition']
1436
return(ret)
1537

16-
def get_layer(self):
38+
def get_layer(self) -> int:
1739
model = self.get_model()
1840
layer = model['job']['layer']
1941
if not layer:
2042
layer = 0
2143
return(layer)
2244

23-
def get_num_extruders(self):
45+
def get_num_extruders(self) -> int:
2446
model = self.get_model()
2547
extruders = model['move']['extruders']
2648
return len(extruders)
2749

28-
def get_num_tools(self):
50+
def get_num_tools(self) -> int:
2951
model = self.get_model()
3052
tools = model['tools']
3153
return len(tools)
3254

33-
def get_status(self):
55+
def get_status(self) -> str:
3456
model = self.get_model()
3557
status = model['state']['status']
3658
return status
3759

38-
def get_temperatures(self):
60+
def get_temperatures(self) -> List[Dict]:
3961
model = self.get_model()
4062
sensors = model['sensors']['analog']
4163
return sensors
64+
65+
def get_current_tool(self) -> int:
66+
model = self.get_model()
67+
tool = model['state']['currentTool']
68+
return tool
69+
70+
def get_messagebox(self) -> Dict:
71+
model = self.get_model()
72+
messagebox = model['state']['messageBox']
73+
return messagebox
74+
75+
def acknowledge_message(self, response: int = 0) -> Dict:
76+
return self.send_code(f'M292 P{response}')

duetwebapi/dwa_factory.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ def register_api(self, name: str, creator: object, url_suffix: str) -> None:
3131

3232
def get_api(self, base_url) -> DuetAPI:
3333
for api in self._creators.values():
34+
if not base_url.startswith('http://'):
35+
base_url = f'http://{base_url}'
3436
url = base_url + api['url_suffix']
3537
try:
3638
r = requests.get(url, timeout=(2, 60))

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
setup(
1111
name="duetwebapi",
12-
version="1.1.0",
12+
version="1.1.1",
1313
include_package_data=True,
1414
packages=find_packages(),
1515

0 commit comments

Comments
 (0)