82 lines
2.7 KiB
Python
82 lines
2.7 KiB
Python
import requests
|
|
|
|
class AIOPrrintSystemAPI:
|
|
def __init__(self, api_url="http://127.0.0.1:5001/api/v1", api_key=""):
|
|
self.api_url = api_url
|
|
self.api_key = api_key
|
|
self.headers = {"X-Api-Key": self.api_key}
|
|
|
|
def _post_action(self, method, **kwargs):
|
|
url = f"{self.api_url}/octoprint_client"
|
|
payload = {"method": method, "kwargs": kwargs}
|
|
try:
|
|
r = requests.post(url, json=payload, headers=self.headers, timeout=5)
|
|
return r.json()
|
|
except:
|
|
return None
|
|
|
|
def print(self, *args, **kwargs):
|
|
pass
|
|
|
|
def get_status(self):
|
|
|
|
test_data = {
|
|
'job': {
|
|
'job': {
|
|
'estimatedPrintTime': 1234,
|
|
'filament': {'length': 765, 'volume': 24356},
|
|
'file': {'display_name': 'Test File','date': None, 'name': '20260414135441_42bff5215c6148b8b5f4d8c4f15d5ddc.gcode', 'origin': 'local', 'path': None, 'size': 1468987},
|
|
'lastPrintTime': None,
|
|
'user': None
|
|
},
|
|
'progress': {
|
|
'completion': 74.8,
|
|
'filepos': 1234,
|
|
'printTime': 1235,
|
|
'printTimeLeft': 6353,
|
|
'printTimeLeftOrigin': 5366
|
|
},
|
|
'state': 'Operational'
|
|
},
|
|
'status': {
|
|
'sd': {'ready': False},
|
|
'state': {
|
|
'error': '',
|
|
'flags': {
|
|
'cancelling': False,
|
|
'closedOrError': False,
|
|
'error': False,
|
|
'finishing': False,
|
|
'operational': True,
|
|
'paused': False,
|
|
'pausing': False,
|
|
'printing': False,
|
|
'ready': True,
|
|
'resuming': False,
|
|
'sdReady': False
|
|
},
|
|
'text': 'Operational test'
|
|
},
|
|
'temperature': {
|
|
'bed': {'actual': 85, 'offset': 0, 'target': 56},
|
|
'tool0': {'actual': 0.0, 'offset': 0, 'target': 340}
|
|
}
|
|
}
|
|
}
|
|
return test_data
|
|
|
|
# url = f"{self.api_url}/status"
|
|
# try:
|
|
# r = requests.get(url, headers=self.headers, timeout=5)
|
|
# r.raise_for_status()
|
|
# return r.json()
|
|
# except:
|
|
# return {"status": {}, "job": {}}
|
|
|
|
def pause_print(self):
|
|
return self._post_action("pause_print", action="pause")
|
|
|
|
def stop_print(self):
|
|
return self._post_action("cancel_print")
|
|
|
|
|