Skip to content

Commit

Permalink
Merge pull request #7 from Qrome/1.1
Browse files Browse the repository at this point in the history
1.1
  • Loading branch information
Qrome authored Apr 27, 2018
2 parents 031e897 + f1b0669 commit ec45103
Show file tree
Hide file tree
Showing 4 changed files with 289 additions and 186 deletions.
67 changes: 42 additions & 25 deletions marquee/OctoPrintClient.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ void OctoPrintClient::updateOctoPrintClient(String ApiKey, String server, int po

void OctoPrintClient::getPrinterJobResults() {
WiFiClient printClient;
printClient.setTimeout(10000);
String apiGetData = "GET /api/job HTTP/1.1";

Serial.println("Getting Octoprint Data");
Expand All @@ -46,7 +47,11 @@ void OctoPrintClient::getPrinterJobResults() {
printClient.println("X-Api-Key: " + myApiKey);
printClient.println("User-Agent: ArduinoWiFi/1.1");
printClient.println("Connection: close");
printClient.println();
if (printClient.println() == 0) {
Serial.println("OctoPrint Connection failed.");
printerData.state = "";
return;
}
}
else {
Serial.println("connection for OctoPrint data failed"); //error message if no client connect
Expand All @@ -55,31 +60,34 @@ void OctoPrintClient::getPrinterJobResults() {
return;
}

while(printClient.connected() && !printClient.available()) delay(1); //waits for data

Serial.println("Waiting for data...");
// Check HTTP status
char status[32] = {0};
printClient.readBytesUntil('\r', status, sizeof(status));
if (strcmp(status, "HTTP/1.1 200 OK") != 0) {
Serial.print(F("Unexpected response: "));
Serial.println(status);
printerData.state = "";
return;
}

boolean isBody = false;
char c;
while (printClient.connected() || printClient.available()) { //connected or data available
c = printClient.read(); //gets byte from ethernet buffer
if (c == '{' || c == '[') {
isBody = true;
}
if (isBody) {
result = result + c;
}
// Skip HTTP headers
char endOfHeaders[] = "\r\n\r\n";
if (!printClient.find(endOfHeaders)) {
Serial.println(F("Invalid response"));
printerData.state = "";
return;
}

printClient.stop(); //stop client
Serial.println(result);

char jsonArray [result.length()+1];
result.toCharArray(jsonArray,sizeof(jsonArray));
jsonArray[result.length() + 1] = '\0';
DynamicJsonBuffer json_buf;
JsonObject& root = json_buf.parseObject(jsonArray);
const size_t bufferSize = JSON_OBJECT_SIZE(1) + JSON_OBJECT_SIZE(2) + JSON_OBJECT_SIZE(3) + 2*JSON_OBJECT_SIZE(5) + JSON_OBJECT_SIZE(6) + 710;
DynamicJsonBuffer jsonBuffer(bufferSize);

// Parse JSON object
JsonObject& root = jsonBuffer.parseObject(printClient);
if (!root.success()) {
Serial.println(F("OctoPrint Data Parsing failed!"));
return;
}

printerData.averagePrintTime = (const char*)root["job"]["averagePrintTime"];
printerData.estimatedPrintTime = (const char*)root["job"]["estimatedPrintTime"];
printerData.fileName = (const char*)root["job"]["file"]["name"];
Expand All @@ -90,6 +98,17 @@ void OctoPrintClient::getPrinterJobResults() {
printerData.progressPrintTime = (const char*)root["progress"]["printTime"];
printerData.progressPrintTimeLeft = (const char*)root["progress"]["printTimeLeft"];
printerData.state = (const char*)root["state"];

if (isPrinting()) {
Serial.println("Status: " + printerData.state + " " + printerData.fileName + "(" + printerData.progressCompletion + "%)");
} else if (isOperational()) {
Serial.println("Status: " + printerData.state);
} else {
Serial.println("Printer Not Opperational");
}


printClient.stop(); //stop client
}

String OctoPrintClient::getAveragePrintTime(){
Expand Down Expand Up @@ -146,6 +165,4 @@ boolean OctoPrintClient::isOperational() {
operational = true;
}
return operational;
}


}
2 changes: 1 addition & 1 deletion marquee/OctoPrintClient.h
Original file line number Diff line number Diff line change
Expand Up @@ -68,4 +68,4 @@ class OctoPrintClient {
boolean isPrinting();
boolean isOperational();
};


3 changes: 3 additions & 0 deletions marquee/Settings.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,10 @@ SOFTWARE.
#include <ESP8266WiFi.h>
#include <ArduinoJson.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
#include <WiFiManager.h>
#include <ESP8266mDNS.h>
#include <ArduinoOTA.h>
#include "FS.h"
#include <SPI.h>
#include <Adafruit_GFX.h>
Expand Down
Loading

0 comments on commit ec45103

Please sign in to comment.