sensor_types.rs
1 #[derive(Clone, Copy, PartialEq)] 2 pub enum MeasurementTab { 3 Voltage, 4 CarbonDioxide, 5 TemperatureHumidity, 6 Pressure, 7 } 8 9 impl MeasurementTab { 10 pub fn to_value(self) -> String { 11 match self { 12 Self::TemperatureHumidity => "temp_humidity", 13 Self::Voltage => "voltage", 14 Self::CarbonDioxide => "co2", 15 Self::Pressure => "pressure", 16 } 17 .to_string() 18 } 19 20 pub fn from_value(s: &str) -> Self { 21 match s { 22 "temp_humidity" => Self::TemperatureHumidity, 23 "voltage" => Self::Voltage, 24 "co2" => Self::CarbonDioxide, 25 "pressure" => Self::Pressure, 26 _ => Self::TemperatureHumidity, 27 } 28 } 29 30 pub fn label(&self) -> &'static str { 31 match self { 32 Self::TemperatureHumidity => "Temperature & Humidity", 33 Self::Voltage => "Voltage", 34 Self::CarbonDioxide => "CO\u{2082}", 35 Self::Pressure => "Pressure", 36 } 37 } 38 39 pub fn is_available(&self, avail: &super::sensor_feed::SensorAvailability) -> bool { 40 match self { 41 Self::TemperatureHumidity => avail.temperature_humidity, 42 Self::Voltage => avail.voltage, 43 Self::CarbonDioxide => avail.co2, 44 Self::Pressure => avail.pressure, 45 } 46 } 47 } 48 49 #[derive(Clone)] 50 pub struct Co2Row { 51 pub row: usize, 52 pub co2_ppm: f64, 53 pub temperature: f64, 54 pub humidity: f64, 55 pub time: String, 56 } 57 58 #[derive(Clone)] 59 pub struct TemperatureHumidityReading { 60 pub read_ok: bool, 61 pub temperature_celsius: f64, 62 pub relative_humidity_percent: f64, 63 } 64 65 #[derive(Clone)] 66 pub struct TemperatureHumidityRow { 67 pub row: usize, 68 pub sensors: Vec<TemperatureHumidityReading>, 69 pub default_model: String, 70 pub time: String, 71 } 72 73 #[derive(Clone)] 74 pub struct VoltageRow { 75 pub row: usize, 76 pub gain: String, 77 pub channels: Vec<f64>, 78 pub time: String, 79 } 80 81 #[derive(Clone)] 82 pub struct PressureRow { 83 pub row: usize, 84 pub model: String, 85 pub pressure_hpa: f64, 86 pub temperature_celsius: f64, 87 pub time: String, 88 }