spaceapi_dezentrale/sensors/
humidity.rs

1//! Module providing humidity sensor functionality.
2
3use super::{FromSensorTemplate, SensorMetadataWithLocation, SensorTemplate, SensorTemplateError, Sensors};
4use serde::{Deserialize, Serialize};
5
6#[derive(Serialize, Deserialize, Default, Debug, Clone, PartialEq)]
7pub struct HumiditySensor {
8    #[serde(flatten)]
9    pub metadata: SensorMetadataWithLocation,
10    pub unit: String,
11    pub value: f64,
12}
13
14#[derive(Debug, Clone)]
15pub struct HumiditySensorTemplate {
16    pub metadata: SensorMetadataWithLocation,
17    pub unit: String,
18}
19
20impl FromSensorTemplate<HumiditySensorTemplate> for HumiditySensor {
21    fn try_from(template: &HumiditySensorTemplate, value: &str) -> Result<Self, SensorTemplateError> {
22        Ok(Self {
23            metadata: template.metadata.clone(),
24            unit: template.unit.clone(),
25            value: value.parse()?,
26        })
27    }
28}
29
30impl SensorTemplate for HumiditySensorTemplate {
31    fn try_to_sensor(&self, value_str: &str, sensors: &mut Sensors) -> Result<(), SensorTemplateError> {
32        sensors.humidity.push(HumiditySensor::try_from(self, value_str)?);
33        Ok(())
34    }
35}