spaceapi_dezentrale/sensors/
humidity.rs1use 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}