diff options
| author | Serguey Parkhomovsky <xindigo@gmail.com> | 2026-03-16 21:13:51 -0700 |
|---|---|---|
| committer | Serguey Parkhomovsky <xindigo@gmail.com> | 2026-03-16 21:13:51 -0700 |
| commit | f2f257e9e1f1e2a6fefd5df00a317ae721031d5a (patch) | |
| tree | 04efcc21c277537f773e4eb4dd581f4538d48cb8 /src/main.rs | |
| parent | 87c38f717de7b29a17b13e93a503964a424721fe (diff) | |
add more fields to bambu status
Diffstat (limited to 'src/main.rs')
| -rw-r--r-- | src/main.rs | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/src/main.rs b/src/main.rs index 5dc84eb..29df56d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -35,9 +35,8 @@ async fn main() { .json::<PrusaStatus>() .await?; let mut lock = state_clone.lock().await; - lock.entry(name.clone()) - .and_modify(|prs| *prs = extract_status_from_prusa(&response)) - .or_insert_with(|| { extract_status_from_prusa(&response) } ); + let entry = lock.entry(name.clone()).or_default(); + extract_status_from_prusa(&response, entry); Ok(()) } .await; @@ -81,16 +80,15 @@ async fn main() { if let Event::Incoming(Packet::Publish(p)) = notification { let mut lock = state_clone.lock().await; println!("{:?}", &p.payload); - if let Ok(msg) = - serde_json::from_slice::<BambuMessage>(&p.payload) - { - lock.entry(name.clone()) - .and_modify(|prs| prs.bed_temp = msg.print.bed_temper) - .or_insert_with(|| PrinterState { - bed_temp: msg.print.bed_temper, - ..Default::default() - }); - println!("Updated state for {}: {:?}", &name, p.payload); + match serde_json::from_slice::<BambuStatus>(&p.payload) { + Ok(msg) => { + let entry = lock.entry(name.clone()).or_default(); + extract_status_from_bambu(&msg, entry); + println!("Updated state for {}: {:?}", &name, p.payload); + } + Err(e) => { + eprintln!("Failed to deserialize BambuStatus: {}", e); + } } } } |
