diff --git a/printermonitor/Menu/PreheatMenu.cpp b/printermonitor/Menu/PreheatMenu.cpp index 2c8194f..d304b86 100644 --- a/printermonitor/Menu/PreheatMenu.cpp +++ b/printermonitor/Menu/PreheatMenu.cpp @@ -53,20 +53,22 @@ void PreheatMenu::processKey(char c) Menu::processKey(c); } -void PreheatMenu::TriggerPreheat(TemperatureMenuItem *item) { - if (item->preheatBed) { +void PreheatMenu::TriggerPreheat(TemperatureMenuItem *item) +{ + if (item->preheatBed) + { client->preheatBed(item->preset->bed); - } - if (item->preheatChamber) { + if (item->preheatChamber) + { client->preheatChamber(item->preset->chamber); } - if (item->preheatExtruder) { + if (item->preheatExtruder) + { client->preheatTool(0, item->preset->extruder); } - } void PreheatMenu::CreateTemperatureMenu(TemperatureMenuItem *item) diff --git a/printermonitor/OctoPrintClient.cpp b/printermonitor/OctoPrintClient.cpp index cc9f7fe..a878bd4 100644 --- a/printermonitor/OctoPrintClient.cpp +++ b/printermonitor/OctoPrintClient.cpp @@ -229,6 +229,45 @@ void OctoPrintClient::preheatBed(int temperature) WiFiClient printClient = getPostRequest(apiPostData, stringBuffer); } +void OctoPrintClient::homeAxis(boolean x, boolean y, boolean z) +{ + if (!validate()) + { + return; + } + + String apiPostData = "POST /api/printer/printhead HTTP/1.1"; + + const size_t capacity = JSON_ARRAY_SIZE(3) + JSON_OBJECT_SIZE(2); + DynamicJsonBuffer jsonBuffer(capacity); + + JsonObject &root = jsonBuffer.createObject(); + + JsonArray &axes = root.createNestedArray("axes"); + if (x) + { + axes.add("x"); + } + + if (y) + { + axes.add("y"); + } + + if (z) + { + axes.add("z"); + } + root["command"] = "home"; + + String json; + + root.printTo(json); + + Serial.println(json); + WiFiClient printClient = getPostRequest(apiPostData, json); +} + void OctoPrintClient::preheatChamber(int temperature) { if (!validate()) diff --git a/printermonitor/OctoPrintClient.h b/printermonitor/OctoPrintClient.h index a4ad638..5b87773 100644 --- a/printermonitor/OctoPrintClient.h +++ b/printermonitor/OctoPrintClient.h @@ -79,6 +79,7 @@ public: void getPrinterPsuState(); void preheatTool(int toolIndex, int temperature); void preheatBed(int temperature); + void homeAxis(boolean x, boolean y, boolean z); void preheatChamber (int temperature); void updatePrintClient(String ApiKey, String server, int port, String user, String pass, boolean psu); void updateTemperaturePresets(); diff --git a/printermonitor/printermonitor.ino b/printermonitor/printermonitor.ino index db697af..5bff0f1 100644 --- a/printermonitor/printermonitor.ino +++ b/printermonitor/printermonitor.ino @@ -444,6 +444,15 @@ void loop() case 'B': displayMenu(cooldownMenu); break; + case '1': + printerClient.homeAxis(true, false, false); + break; + case '2': + printerClient.homeAxis(false, true, false); + break; + case '3': + printerClient.homeAxis(false, false, true); + break; } } }