From 23f8be4a058ec421390e3274dba35ee152941ad3 Mon Sep 17 00:00:00 2001 From: Serguey Parkhomovsky Date: Sat, 21 Mar 2026 08:53:02 -0700 Subject: Handle errors more cleanly --- src/main.rs | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) (limited to 'src/main.rs') diff --git a/src/main.rs b/src/main.rs index f4fcc5f..dc16023 100644 --- a/src/main.rs +++ b/src/main.rs @@ -96,10 +96,16 @@ async fn poll_bambu( mqttoptions.set_credentials("bblp", &access_code); // Bambu printers use TLS with a self-signed certificate - let connector = TlsConnector::builder() + let connector = match TlsConnector::builder() .danger_accept_invalid_certs(true) .build() - .unwrap(); + { + Ok(c) => c, + Err(e) => { + tracing::error!(name, error = %e, "Failed to build TLS connector for Bambu printer"); + return; + } + }; mqttoptions.set_transport(Transport::tls_with_config(connector.into())); let (client, mut eventloop) = AsyncClient::new(mqttoptions, 10); @@ -108,12 +114,14 @@ async fn poll_bambu( // eventloop.poll() yields back to Tokio when there's no data match eventloop.poll().await { Ok(Event::Incoming(Packet::ConnAck(_))) => { - client + if let Err(e) = client .subscribe(format!("device/{}/report", serial_number), QoS::AtMostOnce) .await - .unwrap(); + { + tracing::error!(name, error = %e, "Failed to subscribe to Bambu MQTT topic"); + } // Send a request to push all values to us; otherwise we'll have to wait for the values to come in incremental updates. - client + if let Err(e) = client .publish( format!("device/{}/request", serial_number), QoS::AtMostOnce, @@ -128,7 +136,9 @@ async fn poll_bambu( }"#, ) .await - .unwrap(); + { + tracing::error!(name, error = %e, "Failed to send pushall to Bambu printer"); + } } Ok(Event::Incoming(Packet::Publish(p))) => { tracing::debug!(payload = ?p.payload, "Received Bambu payload"); -- cgit v1.2.3