Make octoprint work after testing

This commit is contained in:
suchmememanyskill
2024-12-15 22:06:01 +01:00
parent b342e58cfc
commit f4498e95cd
12 changed files with 80 additions and 66 deletions

View File

@@ -84,8 +84,8 @@ void global_config_add_new_printer()
new_config->printer_type = PrinterType::PrinterTypeNone;
new_config->printer_name[0] = 0;
new_config->klipper_host[0] = 0;
new_config->klipper_auth[0] = 0;
new_config->printer_host[0] = 0;
new_config->printer_auth[0] = 0;
new_config->klipper_port = 0;
new_config->color_scheme = old_config->color_scheme;
@@ -144,8 +144,8 @@ void set_printer_config_index(int index)
new_config->auth_configured = false;
new_config->printer_name[0] = 0;
new_config->klipper_host[0] = 0;
new_config->klipper_auth[0] = 0;
new_config->printer_host[0] = 0;
new_config->printer_auth[0] = 0;
new_config->klipper_port = 0;
new_config->color_scheme = old_config->color_scheme;

View File

@@ -4,7 +4,7 @@
#include "lvgl.h"
#define CONFIG_VERSION 7
#define PRINTER_CONFIG_COUNT 8
#define PRINTER_CONFIG_COUNT 6
#define DISPLAY_SECRETS 0
enum {
@@ -49,8 +49,8 @@ typedef struct {
};
char printer_name[25];
char klipper_host[65];
char klipper_auth[33];
char printer_host[65];
char printer_auth[65];
unsigned int klipper_port;
unsigned char color_scheme;

View File

@@ -40,7 +40,7 @@ bool BambuPrinter::publish_mqtt_command(const char* command)
}
char auth[48] = {0};
sprintf(auth, "device/%s/request", printer_config->klipper_auth);
sprintf(auth, "device/%s/request", printer_config->printer_auth);
return client.publish(auth, command);
}
@@ -117,7 +117,7 @@ bool BambuPrinter::connect()
{
wifi_client.setInsecure();
client.setBufferSize(4096);
client.setServer(printer_config->klipper_host, 8883);
client.setServer(printer_config->printer_host, 8883);
current_printer = this;
client.setCallback(NULL);
char buff[10] = {0};
@@ -129,7 +129,7 @@ bool BambuPrinter::connect()
}
char auth[48] = {0};
sprintf(auth, "device/%s/report", printer_config->klipper_auth);
sprintf(auth, "device/%s/report", printer_config->printer_auth);
if (!client.subscribe(auth))
{
@@ -341,7 +341,7 @@ BambuConnectionStatus connection_test_bambu(PrinterConfiguration* config)
WiFiClientSecure connection_test_wifi_client;
PubSubClient connection_test_client(connection_test_wifi_client);
connection_test_wifi_client.setInsecure();
connection_test_client.setServer(config->klipper_host, 8883);
connection_test_client.setServer(config->printer_host, 8883);
char buff[10] = {0};
sprintf(buff, "%d", config->klipper_port);
if (!connection_test_client.connect("id", "bblp", buff))
@@ -351,7 +351,7 @@ BambuConnectionStatus connection_test_bambu(PrinterConfiguration* config)
}
char auth[48] = {0};
sprintf(auth, "device/%s/report", config->klipper_auth);
sprintf(auth, "device/%s/report", config->printer_auth);
if (!connection_test_client.subscribe(auth))
{

View File

@@ -309,7 +309,7 @@ Files BambuPrinter::parse_files(WiFiClientSecure& wifi_client, int max_files)
unsigned long timer_request = millis();
Files result = {0};
if (!wifi_client.connect(printer_config->klipper_host, 990))
if (!wifi_client.connect(printer_config->printer_host, 990))
{
LOG_LN("Failed to fetch files: connection failed");
}
@@ -325,7 +325,7 @@ Files BambuPrinter::parse_files(WiFiClientSecure& wifi_client, int max_files)
send_command_without_response(wifi_client, "NLST");
wifi_client.stop();
if (wifi_client.connect(printer_config->klipper_host, 2024))
if (wifi_client.connect(printer_config->printer_host, 2024))
{
unsigned long timer_parse = millis();
std::list<char*> files;

View File

@@ -14,10 +14,10 @@ void KlipperPrinter::configure_http_client(HTTPClient &client, String url_part,
client.setConnectTimeout(timeout);
}
client.begin("http://" + String(printer_config->klipper_host) + ":" + String(printer_config->klipper_port) + url_part);
client.begin("http://" + String(printer_config->printer_host) + ":" + String(printer_config->klipper_port) + url_part);
if (printer_config->auth_configured) {
client.addHeader("X-Api-Key", printer_config->klipper_auth);
client.addHeader("X-Api-Key", printer_config->printer_auth);
}
}
@@ -495,10 +495,10 @@ KlipperConnectionStatus connection_test_klipper(PrinterConfiguration* config)
client.setTimeout(1000);
client.setConnectTimeout(1000);
client.begin("http://" + String(config->klipper_host) + ":" + String(config->klipper_port) + "/printer/info");
client.begin("http://" + String(config->printer_host) + ":" + String(config->klipper_port) + "/printer/info");
if (config->auth_configured) {
client.addHeader("X-Api-Key", config->klipper_auth);
client.addHeader("X-Api-Key", config->printer_auth);
}
int http_code;

View File

@@ -24,10 +24,10 @@ void configure_http_client(HTTPClient &client, String url_part, bool stream, int
client.setConnectTimeout(timeout);
}
client.begin("http://" + String(printer_config->klipper_host) + ":" + String(printer_config->klipper_port) + url_part);
client.begin("http://" + String(printer_config->printer_host) + ":" + String(printer_config->klipper_port) + url_part);
if (printer_config->auth_configured) {
client.addHeader("X-Api-Key", printer_config->klipper_auth);
client.addHeader("X-Api-Key", printer_config->printer_auth);
}
}
@@ -54,6 +54,7 @@ bool OctoPrinter::post_request(const char* endpoint, const char* body, int timeo
timeout_ms = 500;
}
LOG_F(("POST >>> %s %s\n", endpoint, body));
configure_http_client(client, endpoint, false, timeout_ms, printer_config);
if (body[0] == '{' || body[0] == '[')
@@ -61,8 +62,10 @@ bool OctoPrinter::post_request(const char* endpoint, const char* body, int timeo
client.addHeader("Content-Type", "application/json");
}
int result = client.POST(body);
return result >= 200 && result < 300;
int http_code = client.POST(body);
bool result = http_code >= 200 && http_code < 300;
LOG_F(("<<< %d\n", http_code));
return result;
}
bool OctoPrinter::send_gcode(const char* gcode, bool wait)
@@ -77,7 +80,8 @@ bool OctoPrinter::send_gcode(const char* gcode, bool wait)
for (char* iter = gcode_copy;; iter++)
{
if (*iter == '\n' || *iter == '\0')
char cur_iter = *iter;
if (cur_iter == '\n' || cur_iter == '\0')
{
if (iter != last_line_start)
{
@@ -88,7 +92,7 @@ bool OctoPrinter::send_gcode(const char* gcode, bool wait)
last_line_start = iter + 1;
}
if (*iter == '\0')
if (cur_iter == '\0')
{
break;
}
@@ -100,7 +104,7 @@ bool OctoPrinter::send_gcode(const char* gcode, bool wait)
}
free(gcode_copy);
bool result = post_request("/api/printer/command/custom", out_buff);
bool result = post_request("/api/printer/command", out_buff);
free(out_buff);
return result;
}
@@ -109,9 +113,11 @@ bool OctoPrinter::move_printer(const char* axis, float amount, bool relative)
{
JsonDocument doc;
char out_buff[512];
out_buff[0] = tolower(axis[0]);
out_buff[1] = '\0';
doc["command"] = "jog";
doc[axis] = amount;
doc[out_buff] = amount;
doc["absolute"] = !relative;
if (serializeJson(doc, out_buff, 512) >= 512)
@@ -390,7 +396,7 @@ Files OctoPrinter::get_files()
bool OctoPrinter::start_file(const char* filename)
{
char buff[512];
sprintf("/api/files/local/%s", filename);
sprintf(buff, "/api/files/local/%s", filename);
return post_request(buff, COMMAND_PRINT);
}

View File

@@ -120,13 +120,15 @@ void OctoPrinter::parse_file_list(JsonDocument &in, std::list<OctoFileSystemFile
for (auto file : result)
{
if (!strcmp("local", file["origin"]))
const char *path = file["path"];
if (strcmp("local", file["origin"]))
{
LOG_F(("Skipping non-local file %s\n", path))
continue;
}
OctoFileSystemFile f = {0};
const char *path = file["path"];
float modified = file["date"];
auto file_iter = files.begin();

View File

@@ -74,7 +74,7 @@ void serial_check_connection()
if (result == KlipperConnectionStatus::ConnectOk)
{
global_config.printer_config[global_config.printer_index].setup_complete = true;
strcpy(global_config.printer_config[global_config.printer_index].klipper_host, "Serial");
strcpy(global_config.printer_config[global_config.printer_index].printer_host, "Serial");
write_global_config();
}
}
@@ -100,7 +100,7 @@ void switch_printer_init() {
for (int i = 0; i < PRINTER_CONFIG_COUNT; i++){
PrinterConfiguration * config = &global_config.printer_config[i];
const char* printer_name = (config->printer_name[0] == 0) ? config->klipper_host : config->printer_name;
const char* printer_name = (config->printer_name[0] == 0) ? config->printer_host : config->printer_name;
if (i == global_config.printer_index && config->setup_complete)
{
@@ -122,7 +122,7 @@ static void host_update(lv_event_t * e)
{
lv_obj_t * ta = lv_event_get_target(e);
const char* text = lv_textarea_get_text(ta);
strcpy(global_config.printer_config[global_config.printer_index].klipper_host, text);
strcpy(global_config.printer_config[global_config.printer_index].printer_host, text);
global_config.printer_config[global_config.printer_index].ip_configured = text[0] != '\0';
}
@@ -140,7 +140,7 @@ static void auth_update(lv_event_t * e)
{
lv_obj_t * ta = lv_event_get_target(e);
const char* text = lv_textarea_get_text(ta);
strcpy(global_config.printer_config[global_config.printer_index].klipper_auth, text);
strcpy(global_config.printer_config[global_config.printer_index].printer_auth, text);
global_config.printer_config[global_config.printer_index].auth_configured = text[0] != '\0';
}
@@ -166,6 +166,10 @@ static void keyboard_event_ip_entry(lv_event_t * e) {
{
lv_keyboard_set_mode(kb, LV_KEYBOARD_MODE_USER_2);
}
else if (lv_obj_has_flag(ta, LV_OBJ_FLAG_USER_3))
{
lv_keyboard_set_mode(kb, LV_KEYBOARD_MODE_TEXT_LOWER);
}
else
{
lv_keyboard_set_mode(kb, LV_KEYBOARD_MODE_NUMBER);
@@ -309,7 +313,7 @@ void show_ip_entry()
{
char buff[10] = {0};
sprintf(buff, "%d", global_config.printer_config[global_config.printer_index].klipper_port);
lv_textarea_set_text(host_entry, global_config.printer_config[global_config.printer_index].klipper_host);
lv_textarea_set_text(host_entry, global_config.printer_config[global_config.printer_index].printer_host);
lv_textarea_set_text(port_entry, buff);
}
else
@@ -327,18 +331,18 @@ void show_ip_entry()
global_config.printer_config[global_config.printer_index].klipper_port = 80;
}
global_config.printer_config[global_config.printer_index].klipper_host[0] = '\0';
global_config.printer_config[global_config.printer_index].printer_host[0] = '\0';
}
if (global_config.printer_config[global_config.printer_index].auth_configured)
{
lv_textarea_set_text(auth_entry, global_config.printer_config[global_config.printer_index].klipper_auth);
lv_textarea_set_text(auth_entry, global_config.printer_config[global_config.printer_index].printer_auth);
}
else
{
lv_textarea_set_text(auth_entry, "");
global_config.printer_config[global_config.printer_index].klipper_auth[0] = '\0';
global_config.printer_config[global_config.printer_index].printer_auth[0] = '\0';
}
lv_obj_add_event_cb(host_entry, host_update, LV_EVENT_VALUE_CHANGED, NULL);
@@ -373,6 +377,9 @@ void show_ip_entry()
lv_textarea_set_placeholder_text(auth_entry, "Printer serial number");
break;
case PrinterType::PrinterTypeOctoprint:
lv_obj_clear_flag(auth_entry, LV_OBJ_FLAG_USER_2);
lv_obj_add_flag(auth_entry, LV_OBJ_FLAG_USER_3);
lv_textarea_set_max_length(auth_entry, 48);
lv_label_set_text(main_label, "Octoprint Setup");
lv_textarea_set_max_length(port_entry, 5);
lv_textarea_set_placeholder_text(host_entry, "Octoprint Host");

View File

@@ -5,7 +5,7 @@ void connecting_panel_init(lv_obj_t* panel)
{
lv_obj_t* label = lv_label_create(panel);
lv_label_set_text_fmt(label, "Connecting to %s...", (get_current_printer()->printer_config->printer_name[0] == 0)
? get_current_printer()->printer_config->klipper_host
? get_current_printer()->printer_config->printer_host
: get_current_printer()->printer_config->printer_name);
lv_obj_align(label, LV_ALIGN_CENTER, 0, 0);
}

View File

@@ -31,7 +31,7 @@ void macros_panel_init(lv_obj_t* panel) {
if (macros_count <= 0){
label = lv_label_create(root_panel);
if (get_current_printer()->printer_config->printer_type == PrinterType::PrinterTypeKlipper
|| get_current_printer()->printer_config->printer_type == PrinterType::PrinterTypeKlipper)
|| get_current_printer()->printer_config->printer_type == PrinterType::PrinterTypeKlipperSerial)
{
lv_label_set_text(label, "No macros found.\nMacros with the description\n\"CYD_SCREEN_MACRO\"\nwill show up here.");
}

View File

@@ -22,7 +22,7 @@ static void update_printer_name_text(lv_event_t * e)
lv_obj_t * label = lv_event_get_target(e);
int config_index = (int)lv_event_get_user_data(e);
BasePrinter* printer = get_printer(config_index);
lv_label_set_text(label, printer->printer_config->printer_name[0] == 0 ? printer->printer_config->klipper_host : printer->printer_config->printer_name);
lv_label_set_text(label, printer->printer_config->printer_name[0] == 0 ? printer->printer_config->printer_host : printer->printer_config->printer_name);
}
static void update_printer_status_text(lv_event_t * e)

View File

@@ -16,6 +16,11 @@ namespace serial_console {
- optionally add handling the new preference to sets() and settings() if it modifies global_config
*/
PrinterConfiguration* get_current_printer_config()
{
return &global_config.printer_config[global_config.printer_index];
}
HANDLER commandHandlers[] = {
{"help", &help, 1},
{"reset", &reset, 1},
@@ -94,20 +99,20 @@ void sets(String argv[])
Serial.printf("erase ssid\n");
}
if(get_current_printer()->printer_config->ip_configured)
if(get_current_printer_config()->ip_configured)
{
Serial.printf("ip %s %d\n",get_current_printer()->printer_config->klipper_host, get_current_printer()->printer_config->klipper_port);
Serial.printf("ip %s %d\n",get_current_printer_config()->printer_host, get_current_printer_config()->klipper_port);
}
else
{
Serial.printf("erase ip\n");
}
if(get_current_printer()->printer_config->auth_configured)
if(get_current_printer_config()->auth_configured)
{
Serial.printf("key %s\n",
#if DISPLAY_SECRETS
get_current_printer()->printer_config->klipper_auth
get_current_printer_config()->printer_auth
#else
"[redacted]"
#endif
@@ -135,9 +140,9 @@ void sets(String argv[])
void settings(String argv[])
{
if(get_current_printer()->printer_config->printer_name[0] != 0)
if(get_current_printer_config()->printer_name[0] != 0)
{
Serial.printf("Current printer# %d name: %s",global_config.printer_index, get_current_printer()->printer_config->printer_name);
Serial.printf("Current printer# %d name: %s",global_config.printer_index, get_current_printer_config()->printer_name);
}
else
{
@@ -162,20 +167,20 @@ void settings(String argv[])
Serial.printf("Wifi not configured\n");
}
if(get_current_printer()->printer_config->ip_configured)
if(get_current_printer_config()->ip_configured)
{
Serial.printf("Moonraker address: %s:%d\n",get_current_printer()->printer_config->klipper_host, get_current_printer()->printer_config->klipper_port);
Serial.printf("Moonraker address: %s:%d\n",get_current_printer_config()->printer_host, get_current_printer_config()->klipper_port);
}
else
{
Serial.printf("Moonraker address not configured\n");
}
if(get_current_printer()->printer_config->auth_configured)
if(get_current_printer_config()->auth_configured)
{
Serial.printf("Moonraker API key: %s\n",
#if DISPLAY_SECRETS
get_current_printer()->printer_config->klipper_auth
get_current_printer_config()->printer_auth
#else
"[redacted]"
#endif
@@ -205,15 +210,15 @@ void erase_one(const String arg)
{
if(arg == "key")
{
get_current_printer()->printer_config->auth_configured = false;
get_current_printer_config()->auth_configured = false;
// overwrite the key to make it unrecoverable for 3rd parties
memset(get_current_printer()->printer_config->klipper_auth,0,32);
memset(get_current_printer_config()->printer_auth,0,64);
write_global_config();
}
else if(arg == "ip")
{
get_current_printer()->printer_config->setup_complete = false;
get_current_printer()->printer_config->ip_configured = false;
get_current_printer_config()->setup_complete = false;
get_current_printer_config()->ip_configured = false;
write_global_config();
}
else if(arg == "touch")
@@ -252,14 +257,8 @@ void erase(String argv[])
void key(String argv[])
{
if (argv[1].length() != 32)
{
Serial.println("Key must be 32 characters");
return;
}
get_current_printer()->printer_config->auth_configured = true;
strncpy(get_current_printer()->printer_config->klipper_auth, argv[1].c_str(), sizeof(global_config.printer_config[0].klipper_auth));
get_current_printer_config()->auth_configured = true;
strncpy(get_current_printer_config()->printer_auth, argv[1].c_str(), sizeof(global_config.printer_config[0].printer_auth));
write_global_config();
}
@@ -283,10 +282,10 @@ void ssid(String argv[])
void ip(String argv[])
{
strncpy(get_current_printer()->printer_config->klipper_host, argv[1].c_str(), sizeof(global_config.printer_config[0].klipper_host)-1);
get_current_printer()->printer_config->klipper_port = argv[2].toInt();
get_current_printer()->printer_config->ip_configured = true;
get_current_printer()->printer_config->setup_complete = true;
strncpy(get_current_printer_config()->printer_host, argv[1].c_str(), sizeof(global_config.printer_config[0].printer_host)-1);
get_current_printer_config()->klipper_port = argv[2].toInt();
get_current_printer_config()->ip_configured = true;
get_current_printer_config()->setup_complete = true;
write_global_config();
}