switchbot_api2/api/
battery.rs

1use anyhow::Result;
2use serde::Deserialize;
3
4use crate::{Dev, Device, SwitchBot};
5
6/// Battery status.
7#[derive(Clone, Debug, Deserialize, PartialEq)]
8pub struct BatteryStatus {
9    /// Battery (%).
10    battery: f64,
11}
12
13impl SwitchBot {
14    /// Get battery (%).
15    pub async fn get_battery(&self, dev: &Device) -> Result<Option<f64>> {
16        match dev.typ {
17            Dev::IOThermoHygrometer => Ok(Some(
18                self.get::<BatteryStatus>(&format!("v1.1/devices/{}/status", dev.id))
19                    .await?
20                    .battery,
21            )),
22            Dev::Hub2 => Ok(None),
23            Dev::Other(_) => Ok(None),
24        }
25    }
26}