Merge branch 'main' into recyclingfabrik
This commit is contained in:
475
src/api.cpp
475
src/api.cpp
@@ -4,8 +4,9 @@
|
||||
#include "commonFS.h"
|
||||
#include <Preferences.h>
|
||||
#include "debug.h"
|
||||
#include "scale.h"
|
||||
|
||||
volatile spoolmanApiStateType spoolmanApiState = API_INIT;
|
||||
volatile spoolmanApiStateType spoolmanApiState = API_IDLE;
|
||||
//bool spoolman_connected = false;
|
||||
String spoolmanUrl = "";
|
||||
bool octoEnabled = false;
|
||||
@@ -17,6 +18,8 @@ uint16_t createdVendorId = 0; // Store ID of newly created vendor
|
||||
uint16_t foundVendorId = 0; // Store ID of found vendor
|
||||
uint16_t foundFilamentId = 0; // Store ID of found filament
|
||||
bool spoolmanConnected = false;
|
||||
bool spoolmanExtraFieldsChecked = false;
|
||||
TaskHandle_t* apiTask;
|
||||
|
||||
struct SendToApiParams {
|
||||
SpoolmanApiRequestType requestType;
|
||||
@@ -24,6 +27,10 @@ struct SendToApiParams {
|
||||
String spoolsUrl;
|
||||
String updatePayload;
|
||||
String octoToken;
|
||||
// Weight update parameters for sequential execution
|
||||
bool triggerWeightUpdate;
|
||||
String spoolIdForWeight;
|
||||
uint16_t weightValue;
|
||||
};
|
||||
|
||||
JsonDocument fetchSingleSpoolInfo(int spoolId) {
|
||||
@@ -97,15 +104,23 @@ JsonDocument fetchSingleSpoolInfo(int spoolId) {
|
||||
void sendToApi(void *parameter) {
|
||||
HEAP_DEBUG_MESSAGE("sendToApi begin");
|
||||
|
||||
// Wait until API is IDLE
|
||||
while(spoolmanApiState != API_IDLE){
|
||||
Serial.println("Waiting!");
|
||||
yield();
|
||||
}
|
||||
spoolmanApiState = API_TRANSMITTING;
|
||||
SendToApiParams* params = (SendToApiParams*)parameter;
|
||||
|
||||
// Extrahiere die Werte
|
||||
// Extract values including weight update parameters
|
||||
SpoolmanApiRequestType requestType = params->requestType;
|
||||
String httpType = params->httpType;
|
||||
String spoolsUrl = params->spoolsUrl;
|
||||
String updatePayload = params->updatePayload;
|
||||
String octoToken = params->octoToken;
|
||||
String octoToken = params->octoToken;
|
||||
bool triggerWeightUpdate = params->triggerWeightUpdate;
|
||||
String spoolIdForWeight = params->spoolIdForWeight;
|
||||
uint16_t weightValue = params->weightValue;
|
||||
|
||||
HTTPClient http;
|
||||
http.setReuse(false);
|
||||
@@ -212,6 +227,57 @@ void sendToApi(void *parameter) {
|
||||
}
|
||||
}
|
||||
doc.clear();
|
||||
|
||||
// Execute weight update if requested and tag update was successful
|
||||
if (triggerWeightUpdate && requestType == API_REQUEST_SPOOL_TAG_ID_UPDATE && weightValue > 10) {
|
||||
Serial.println("Executing weight update after successful tag update");
|
||||
|
||||
// Prepare weight update request
|
||||
String weightUrl = spoolmanUrl + apiUrl + "/spool/" + spoolIdForWeight + "/measure";
|
||||
JsonDocument weightDoc;
|
||||
weightDoc["weight"] = weightValue;
|
||||
|
||||
String weightPayload;
|
||||
serializeJson(weightDoc, weightPayload);
|
||||
|
||||
Serial.print("Weight update URL: ");
|
||||
Serial.println(weightUrl);
|
||||
Serial.print("Weight update payload: ");
|
||||
Serial.println(weightPayload);
|
||||
|
||||
// Execute weight update
|
||||
http.begin(weightUrl);
|
||||
http.addHeader("Content-Type", "application/json");
|
||||
|
||||
int weightHttpCode = http.PUT(weightPayload);
|
||||
|
||||
if (weightHttpCode == HTTP_CODE_OK) {
|
||||
Serial.println("Weight update successful");
|
||||
String weightResponse = http.getString();
|
||||
JsonDocument weightResponseDoc;
|
||||
DeserializationError weightError = deserializeJson(weightResponseDoc, weightResponse);
|
||||
|
||||
if (!weightError) {
|
||||
remainingWeight = weightResponseDoc["remaining_weight"].as<uint16_t>();
|
||||
Serial.print("Updated weight: ");
|
||||
Serial.println(remainingWeight);
|
||||
|
||||
if (!octoEnabled) {
|
||||
oledShowProgressBar(1, 1, "Spool Tag", ("Done: " + String(remainingWeight) + " g remain").c_str());
|
||||
remainingWeight = 0;
|
||||
} else {
|
||||
sendOctoUpdate = true;
|
||||
}
|
||||
}
|
||||
weightResponseDoc.clear();
|
||||
} else {
|
||||
Serial.print("Weight update failed with HTTP code: ");
|
||||
Serial.println(weightHttpCode);
|
||||
oledShowProgressBar(1, 1, "Failure!", "Weight update");
|
||||
}
|
||||
|
||||
weightDoc.clear();
|
||||
}
|
||||
} else {
|
||||
switch(requestType){
|
||||
case API_REQUEST_SPOOL_WEIGHT_UPDATE:
|
||||
@@ -263,7 +329,8 @@ bool updateSpoolTagId(String uidString, const char* payload) {
|
||||
return false;
|
||||
}
|
||||
|
||||
String spoolsUrl = spoolmanUrl + apiUrl + "/spool/" + doc["sm_id"].as<String>();
|
||||
String spoolId = doc["sm_id"].as<String>();
|
||||
String spoolsUrl = spoolmanUrl + apiUrl + "/spool/" + spoolId;
|
||||
Serial.print("Update Spule mit URL: ");
|
||||
Serial.println(spoolsUrl);
|
||||
|
||||
@@ -287,22 +354,26 @@ bool updateSpoolTagId(String uidString, const char* payload) {
|
||||
params->httpType = "PATCH";
|
||||
params->spoolsUrl = spoolsUrl;
|
||||
params->updatePayload = updatePayload;
|
||||
|
||||
// Add weight update parameters for sequential execution
|
||||
params->triggerWeightUpdate = (weight > 10);
|
||||
params->spoolIdForWeight = spoolId;
|
||||
params->weightValue = weight;
|
||||
|
||||
// Erstelle die Task
|
||||
// Erstelle die Task mit erhöhter Stackgröße für zusätzliche HTTP-Anfrage
|
||||
BaseType_t result = xTaskCreate(
|
||||
sendToApi, // Task-Funktion
|
||||
"SendToApiTask", // Task-Name
|
||||
6144, // Stackgröße in Bytes
|
||||
8192, // Erhöhte Stackgröße für zusätzliche HTTP-Anfrage
|
||||
(void*)params, // Parameter
|
||||
0, // Priorität
|
||||
NULL // Task-Handle (nicht benötigt)
|
||||
apiTask // Task-Handle (nicht benötigt)
|
||||
);
|
||||
|
||||
updateDoc.clear();
|
||||
|
||||
// Update Spool weight
|
||||
//TBD: how to handle this with spool and locatin tags? Also potential parallel access again
|
||||
//if (weight > 10) updateSpoolWeight(doc["sm_id"].as<String>(), weight);
|
||||
// Update Spool weight now handled sequentially in sendToApi task
|
||||
// to prevent parallel API access issues
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -341,7 +412,7 @@ uint8_t updateSpoolWeight(String spoolId, uint16_t weight) {
|
||||
6144, // Stackgröße in Bytes
|
||||
(void*)params, // Parameter
|
||||
0, // Priorität
|
||||
NULL // Task-Handle (nicht benötigt)
|
||||
apiTask // Task-Handle (nicht benötigt)
|
||||
);
|
||||
|
||||
updateDoc.clear();
|
||||
@@ -378,17 +449,17 @@ uint8_t updateSpoolLocation(String spoolId, String location){
|
||||
params->spoolsUrl = spoolsUrl;
|
||||
params->updatePayload = updatePayload;
|
||||
|
||||
if(spoolmanApiState == API_IDLE){
|
||||
// Erstelle die Task
|
||||
BaseType_t result = xTaskCreate(
|
||||
sendToApi, // Task-Funktion
|
||||
"SendToApiTask", // Task-Name
|
||||
6144, // Stackgröße in Bytes
|
||||
(void*)params, // Parameter
|
||||
0, // Priorität
|
||||
NULL // Task-Handle (nicht benötigt)
|
||||
);
|
||||
|
||||
if(apiTask == nullptr){
|
||||
// Erstelle die Task
|
||||
BaseType_t result = xTaskCreate(
|
||||
sendToApi, // Task-Funktion
|
||||
"SendToApiTask", // Task-Name
|
||||
6144, // Stackgröße in Bytes
|
||||
(void*)params, // Parameter
|
||||
0, // Priorität
|
||||
apiTask // Task-Handle
|
||||
);
|
||||
}else{
|
||||
Serial.println("Not spawning new task, API still active!");
|
||||
}
|
||||
@@ -433,7 +504,7 @@ bool updateSpoolOcto(int spoolId) {
|
||||
6144, // Stackgröße in Bytes
|
||||
(void*)params, // Parameter
|
||||
0, // Priorität
|
||||
NULL // Task-Handle (nicht benötigt)
|
||||
apiTask // Task-Handle (nicht benötigt)
|
||||
);
|
||||
|
||||
updateDoc.clear();
|
||||
@@ -486,7 +557,7 @@ bool updateSpoolBambuData(String payload) {
|
||||
6144, // Stackgröße in Bytes
|
||||
(void*)params, // Parameter
|
||||
0, // Priorität
|
||||
NULL // Task-Handle (nicht benötigt)
|
||||
apiTask // Task-Handle (nicht benötigt)
|
||||
);
|
||||
|
||||
return true;
|
||||
@@ -726,198 +797,222 @@ bool createSpool() {
|
||||
|
||||
// #### Spoolman init
|
||||
bool checkSpoolmanExtraFields() {
|
||||
HTTPClient http;
|
||||
String checkUrls[] = {
|
||||
spoolmanUrl + apiUrl + "/field/spool",
|
||||
spoolmanUrl + apiUrl + "/field/filament"
|
||||
};
|
||||
// Only check extra fields if they have not been checked before
|
||||
if(!spoolmanExtraFieldsChecked){
|
||||
HTTPClient http;
|
||||
String checkUrls[] = {
|
||||
spoolmanUrl + apiUrl + "/field/spool",
|
||||
spoolmanUrl + apiUrl + "/field/filament"
|
||||
};
|
||||
|
||||
String spoolExtra[] = {
|
||||
"nfc_id"
|
||||
};
|
||||
String spoolExtra[] = {
|
||||
"nfc_id"
|
||||
};
|
||||
|
||||
String filamentExtra[] = {
|
||||
"nozzle_temperature",
|
||||
"price_meter",
|
||||
"price_gramm",
|
||||
"bambu_setting_id",
|
||||
"bambu_cali_id",
|
||||
"bambu_idx",
|
||||
"bambu_k",
|
||||
"bambu_flow_ratio",
|
||||
"bambu_max_volspeed"
|
||||
};
|
||||
String filamentExtra[] = {
|
||||
"nozzle_temperature",
|
||||
"price_meter",
|
||||
"price_gramm",
|
||||
"bambu_setting_id",
|
||||
"bambu_cali_id",
|
||||
"bambu_idx",
|
||||
"bambu_k",
|
||||
"bambu_flow_ratio",
|
||||
"bambu_max_volspeed"
|
||||
};
|
||||
|
||||
String spoolExtraFields[] = {
|
||||
"{\"name\": \"NFC ID\","
|
||||
"\"key\": \"nfc_id\","
|
||||
"\"field_type\": \"text\"}"
|
||||
};
|
||||
String spoolExtraFields[] = {
|
||||
"{\"name\": \"NFC ID\","
|
||||
"\"key\": \"nfc_id\","
|
||||
"\"field_type\": \"text\"}"
|
||||
};
|
||||
|
||||
String filamentExtraFields[] = {
|
||||
"{\"name\": \"Nozzle Temp\","
|
||||
"\"unit\": \"°C\","
|
||||
"\"field_type\": \"integer_range\","
|
||||
"\"default_value\": \"[190,230]\","
|
||||
"\"key\": \"nozzle_temperature\"}",
|
||||
String filamentExtraFields[] = {
|
||||
"{\"name\": \"Nozzle Temp\","
|
||||
"\"unit\": \"°C\","
|
||||
"\"field_type\": \"integer_range\","
|
||||
"\"default_value\": \"[190,230]\","
|
||||
"\"key\": \"nozzle_temperature\"}",
|
||||
|
||||
"{\"name\": \"Price/m\","
|
||||
"\"unit\": \"€\","
|
||||
"\"field_type\": \"float\","
|
||||
"\"key\": \"price_meter\"}",
|
||||
"{\"name\": \"Price/m\","
|
||||
"\"unit\": \"€\","
|
||||
"\"field_type\": \"float\","
|
||||
"\"key\": \"price_meter\"}",
|
||||
|
||||
"{\"name\": \"Price/g\","
|
||||
"\"unit\": \"€\","
|
||||
"\"field_type\": \"float\","
|
||||
"\"key\": \"price_gramm\"}",
|
||||
|
||||
"{\"name\": \"Bambu Setting ID\","
|
||||
"\"field_type\": \"text\","
|
||||
"\"key\": \"bambu_setting_id\"}",
|
||||
|
||||
"{\"name\": \"Bambu Cali ID\","
|
||||
"\"field_type\": \"text\","
|
||||
"\"key\": \"bambu_cali_id\"}",
|
||||
|
||||
"{\"name\": \"Bambu Filament IDX\","
|
||||
"\"field_type\": \"text\","
|
||||
"\"key\": \"bambu_idx\"}",
|
||||
|
||||
"{\"name\": \"Bambu k\","
|
||||
"\"field_type\": \"float\","
|
||||
"\"key\": \"bambu_k\"}",
|
||||
|
||||
"{\"name\": \"Bambu Flow Ratio\","
|
||||
"\"field_type\": \"float\","
|
||||
"\"key\": \"bambu_flow_ratio\"}",
|
||||
|
||||
"{\"name\": \"Bambu Max Vol. Speed\","
|
||||
"\"unit\": \"mm3/s\","
|
||||
"\"field_type\": \"integer\","
|
||||
"\"default_value\": \"12\","
|
||||
"\"key\": \"bambu_max_volspeed\"}"
|
||||
};
|
||||
|
||||
Serial.println("Überprüfe Extrafelder...");
|
||||
|
||||
int urlLength = sizeof(checkUrls) / sizeof(checkUrls[0]);
|
||||
|
||||
for (uint8_t i = 0; i < urlLength; i++) {
|
||||
Serial.println();
|
||||
Serial.println("-------- Prüfe Felder für "+checkUrls[i]+" --------");
|
||||
http.begin(checkUrls[i]);
|
||||
int httpCode = http.GET();
|
||||
|
||||
"{\"name\": \"Price/g\","
|
||||
"\"unit\": \"€\","
|
||||
"\"field_type\": \"float\","
|
||||
"\"key\": \"price_gramm\"}",
|
||||
if (httpCode == HTTP_CODE_OK) {
|
||||
String payload = http.getString();
|
||||
JsonDocument doc;
|
||||
DeserializationError error = deserializeJson(doc, payload);
|
||||
if (!error) {
|
||||
String* extraFields;
|
||||
String* extraFieldData;
|
||||
u16_t extraLength;
|
||||
|
||||
"{\"name\": \"Bambu Setting ID\","
|
||||
"\"field_type\": \"text\","
|
||||
"\"key\": \"bambu_setting_id\"}",
|
||||
|
||||
"{\"name\": \"Bambu Cali ID\","
|
||||
"\"field_type\": \"text\","
|
||||
"\"key\": \"bambu_cali_id\"}",
|
||||
|
||||
"{\"name\": \"Bambu Filament IDX\","
|
||||
"\"field_type\": \"text\","
|
||||
"\"key\": \"bambu_idx\"}",
|
||||
|
||||
"{\"name\": \"Bambu k\","
|
||||
"\"field_type\": \"float\","
|
||||
"\"key\": \"bambu_k\"}",
|
||||
|
||||
"{\"name\": \"Bambu Flow Ratio\","
|
||||
"\"field_type\": \"float\","
|
||||
"\"key\": \"bambu_flow_ratio\"}",
|
||||
|
||||
"{\"name\": \"Bambu Max Vol. Speed\","
|
||||
"\"unit\": \"mm3/s\","
|
||||
"\"field_type\": \"integer\","
|
||||
"\"default_value\": \"12\","
|
||||
"\"key\": \"bambu_max_volspeed\"}"
|
||||
};
|
||||
|
||||
Serial.println("Überprüfe Extrafelder...");
|
||||
|
||||
int urlLength = sizeof(checkUrls) / sizeof(checkUrls[0]);
|
||||
|
||||
for (uint8_t i = 0; i < urlLength; i++) {
|
||||
Serial.println();
|
||||
Serial.println("-------- Prüfe Felder für "+checkUrls[i]+" --------");
|
||||
http.begin(checkUrls[i]);
|
||||
int httpCode = http.GET();
|
||||
|
||||
if (httpCode == HTTP_CODE_OK) {
|
||||
String payload = http.getString();
|
||||
JsonDocument doc;
|
||||
DeserializationError error = deserializeJson(doc, payload);
|
||||
if (!error) {
|
||||
String* extraFields;
|
||||
String* extraFieldData;
|
||||
u16_t extraLength;
|
||||
|
||||
if (i == 0) {
|
||||
extraFields = spoolExtra;
|
||||
extraFieldData = spoolExtraFields;
|
||||
extraLength = sizeof(spoolExtra) / sizeof(spoolExtra[0]);
|
||||
} else {
|
||||
extraFields = filamentExtra;
|
||||
extraFieldData = filamentExtraFields;
|
||||
extraLength = sizeof(filamentExtra) / sizeof(filamentExtra[0]);
|
||||
}
|
||||
|
||||
for (uint8_t s = 0; s < extraLength; s++) {
|
||||
bool found = false;
|
||||
for (JsonObject field : doc.as<JsonArray>()) {
|
||||
if (field["key"].is<String>() && field["key"] == extraFields[s]) {
|
||||
Serial.println("Feld gefunden: " + extraFields[s]);
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
if (i == 0) {
|
||||
extraFields = spoolExtra;
|
||||
extraFieldData = spoolExtraFields;
|
||||
extraLength = sizeof(spoolExtra) / sizeof(spoolExtra[0]);
|
||||
} else {
|
||||
extraFields = filamentExtra;
|
||||
extraFieldData = filamentExtraFields;
|
||||
extraLength = sizeof(filamentExtra) / sizeof(filamentExtra[0]);
|
||||
}
|
||||
if (!found) {
|
||||
Serial.println("Feld nicht gefunden: " + extraFields[s]);
|
||||
|
||||
// Extrafeld hinzufügen
|
||||
http.begin(checkUrls[i] + "/" + extraFields[s]);
|
||||
http.addHeader("Content-Type", "application/json");
|
||||
int httpCode = http.POST(extraFieldData[s]);
|
||||
for (uint8_t s = 0; s < extraLength; s++) {
|
||||
bool found = false;
|
||||
for (JsonObject field : doc.as<JsonArray>()) {
|
||||
if (field["key"].is<String>() && field["key"] == extraFields[s]) {
|
||||
Serial.println("Feld gefunden: " + extraFields[s]);
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found) {
|
||||
Serial.println("Feld nicht gefunden: " + extraFields[s]);
|
||||
|
||||
if (httpCode > 0) {
|
||||
// Antwortscode und -nachricht abrufen
|
||||
String response = http.getString();
|
||||
//Serial.println("HTTP-Code: " + String(httpCode));
|
||||
//Serial.println("Antwort: " + response);
|
||||
if (httpCode != HTTP_CODE_OK) {
|
||||
// Extrafeld hinzufügen
|
||||
http.begin(checkUrls[i] + "/" + extraFields[s]);
|
||||
http.addHeader("Content-Type", "application/json");
|
||||
int httpCode = http.POST(extraFieldData[s]);
|
||||
|
||||
if (httpCode > 0) {
|
||||
// Antwortscode und -nachricht abrufen
|
||||
String response = http.getString();
|
||||
//Serial.println("HTTP-Code: " + String(httpCode));
|
||||
//Serial.println("Antwort: " + response);
|
||||
if (httpCode != HTTP_CODE_OK) {
|
||||
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
// Fehler beim Senden der Anfrage
|
||||
Serial.println("Fehler beim Senden der Anfrage: " + String(http.errorToString(httpCode)));
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
// Fehler beim Senden der Anfrage
|
||||
Serial.println("Fehler beim Senden der Anfrage: " + String(http.errorToString(httpCode)));
|
||||
return false;
|
||||
//http.end();
|
||||
}
|
||||
//http.end();
|
||||
yield();
|
||||
vTaskDelay(100 / portTICK_PERIOD_MS);
|
||||
}
|
||||
yield();
|
||||
vTaskDelay(100 / portTICK_PERIOD_MS);
|
||||
}
|
||||
doc.clear();
|
||||
}
|
||||
doc.clear();
|
||||
}
|
||||
|
||||
Serial.println("-------- ENDE Prüfe Felder --------");
|
||||
Serial.println();
|
||||
|
||||
http.end();
|
||||
|
||||
spoolmanExtraFieldsChecked = true;
|
||||
return true;
|
||||
}else{
|
||||
return true;
|
||||
}
|
||||
|
||||
Serial.println("-------- ENDE Prüfe Felder --------");
|
||||
Serial.println();
|
||||
|
||||
http.end();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool checkSpoolmanInstance(const String& url) {
|
||||
bool checkSpoolmanInstance() {
|
||||
HTTPClient http;
|
||||
String healthUrl = url + apiUrl + "/health";
|
||||
bool returnValue = false;
|
||||
|
||||
Serial.print("Überprüfe Spoolman-Instanz unter: ");
|
||||
Serial.println(healthUrl);
|
||||
// Only do the spoolman instance check if there is no active API request going on
|
||||
if(spoolmanApiState == API_IDLE){
|
||||
spoolmanApiState = API_TRANSMITTING;
|
||||
String healthUrl = spoolmanUrl + apiUrl + "/health";
|
||||
|
||||
http.begin(healthUrl);
|
||||
int httpCode = http.GET();
|
||||
Serial.print("Checking spoolman instance: ");
|
||||
Serial.println(healthUrl);
|
||||
|
||||
if (httpCode > 0) {
|
||||
if (httpCode == HTTP_CODE_OK) {
|
||||
String payload = http.getString();
|
||||
JsonDocument doc;
|
||||
DeserializationError error = deserializeJson(doc, payload);
|
||||
if (!error && doc["status"].is<String>()) {
|
||||
const char* status = doc["status"];
|
||||
http.end();
|
||||
http.begin(healthUrl);
|
||||
int httpCode = http.GET();
|
||||
|
||||
if (!checkSpoolmanExtraFields()) {
|
||||
Serial.println("Fehler beim Überprüfen der Extrafelder.");
|
||||
if (httpCode > 0) {
|
||||
if (httpCode == HTTP_CODE_OK) {
|
||||
String payload = http.getString();
|
||||
JsonDocument doc;
|
||||
DeserializationError error = deserializeJson(doc, payload);
|
||||
if (!error && doc["status"].is<String>()) {
|
||||
const char* status = doc["status"];
|
||||
http.end();
|
||||
|
||||
// TBD
|
||||
oledShowMessage("Spoolman Error creating Extrafields");
|
||||
vTaskDelay(2000 / portTICK_PERIOD_MS);
|
||||
|
||||
return false;
|
||||
if (!checkSpoolmanExtraFields()) {
|
||||
Serial.println("Fehler beim Überprüfen der Extrafelder.");
|
||||
|
||||
// TBD
|
||||
oledShowMessage("Spoolman Error creating Extrafields");
|
||||
vTaskDelay(2000 / portTICK_PERIOD_MS);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
spoolmanApiState = API_IDLE;
|
||||
oledShowTopRow();
|
||||
spoolmanConnected = true;
|
||||
returnValue = strcmp(status, "healthy") == 0;
|
||||
}else{
|
||||
spoolmanConnected = false;
|
||||
}
|
||||
|
||||
spoolmanApiState = API_IDLE;
|
||||
oledShowTopRow();
|
||||
spoolmanConnected = true;
|
||||
return strcmp(status, "healthy") == 0;
|
||||
doc.clear();
|
||||
}else{
|
||||
spoolmanConnected = false;
|
||||
}
|
||||
|
||||
doc.clear();
|
||||
} else {
|
||||
spoolmanConnected = false;
|
||||
Serial.println("Error contacting spoolman instance! HTTP Code: " + String(httpCode));
|
||||
}
|
||||
} else {
|
||||
Serial.println("Error contacting spoolman instance! HTTP Code: " + String(httpCode));
|
||||
http.end();
|
||||
returnValue = false;
|
||||
spoolmanApiState = API_IDLE;
|
||||
}else{
|
||||
// If the check is skipped, return the previous status
|
||||
Serial.println("Skipping spoolman healthcheck, API is active.");
|
||||
returnValue = spoolmanConnected;
|
||||
}
|
||||
http.end();
|
||||
return false;
|
||||
Serial.println("Healthcheck completed!");
|
||||
return returnValue;
|
||||
}
|
||||
|
||||
bool saveSpoolmanUrl(const String& url, bool octoOn, const String& octo_url, const String& octoTk) {
|
||||
@@ -930,12 +1025,13 @@ bool saveSpoolmanUrl(const String& url, bool octoOn, const String& octo_url, con
|
||||
preferences.end();
|
||||
|
||||
//TBD: This could be handled nicer in the future
|
||||
spoolmanExtraFieldsChecked = false;
|
||||
spoolmanUrl = url;
|
||||
octoEnabled = octoOn;
|
||||
octoUrl = octo_url;
|
||||
octoToken = octoTk;
|
||||
|
||||
return true;
|
||||
return checkSpoolmanInstance();
|
||||
}
|
||||
|
||||
String loadSpoolmanUrl() {
|
||||
@@ -955,15 +1051,10 @@ String loadSpoolmanUrl() {
|
||||
bool initSpoolman() {
|
||||
oledShowProgressBar(3, 7, DISPLAY_BOOT_TEXT, "Spoolman init");
|
||||
spoolmanUrl = loadSpoolmanUrl();
|
||||
spoolmanUrl.trim();
|
||||
if (spoolmanUrl == "") {
|
||||
Serial.println("Keine Spoolman-URL gefunden.");
|
||||
return false;
|
||||
}
|
||||
|
||||
bool success = checkSpoolmanInstance(spoolmanUrl);
|
||||
|
||||
bool success = checkSpoolmanInstance();
|
||||
if (!success) {
|
||||
Serial.println("Spoolman nicht erreichbar.");
|
||||
Serial.println("Spoolman not available");
|
||||
return false;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user