use same output for moisture on webpage as in mqtt
This commit is contained in:
		| @@ -4,7 +4,7 @@ use serde::{Deserialize, Serialize}; | |||||||
|  |  | ||||||
| use crate::{config::PlantConfig, in_time_range, plant_hal}; | use crate::{config::PlantConfig, in_time_range, plant_hal}; | ||||||
|  |  | ||||||
| const MOIST_SENSOR_MAX_FREQUENCY: f32 = 6500.; // 60kHz (500Hz margin) | const MOIST_SENSOR_MAX_FREQUENCY: f32 = 7500.; // 60kHz (500Hz margin) | ||||||
| const MOIST_SENSOR_MIN_FREQUENCY: f32 = 150.; // this is really, really dry, think like cactus levels | const MOIST_SENSOR_MIN_FREQUENCY: f32 = 150.; // this is really, really dry, think like cactus levels | ||||||
|  |  | ||||||
| #[derive(Debug, PartialEq, Serialize)] | #[derive(Debug, PartialEq, Serialize)] | ||||||
|   | |||||||
| @@ -21,6 +21,7 @@ use std::{ | |||||||
| use url::Url; | use url::Url; | ||||||
|  |  | ||||||
| use crate::config::PlantControllerConfig; | use crate::config::PlantControllerConfig; | ||||||
|  | use crate::plant_state::MoistureSensorState; | ||||||
|  |  | ||||||
| #[derive(Serialize, Debug)] | #[derive(Serialize, Debug)] | ||||||
| struct SSIDList<'a> { | struct SSIDList<'a> { | ||||||
| @@ -35,8 +36,8 @@ struct LoadData<'a> { | |||||||
|  |  | ||||||
| #[derive(Serialize, Debug)] | #[derive(Serialize, Debug)] | ||||||
| struct Moistures { | struct Moistures { | ||||||
|     moisture_a: Vec<Option<f32>>, |     moisture_a: Vec<std::string::String>, | ||||||
|     moisture_b: Vec<Option<f32>>, |     moisture_b: Vec<std::string::String>, | ||||||
| } | } | ||||||
|  |  | ||||||
| #[derive(Deserialize, Debug)] | #[derive(Deserialize, Debug)] | ||||||
| @@ -122,12 +123,28 @@ fn get_live_moisture( | |||||||
|     let a = Vec::from_iter( |     let a = Vec::from_iter( | ||||||
|         plant_state |         plant_state | ||||||
|             .iter() |             .iter() | ||||||
|             .map(|s| s.sensor_a.moisture_percent().map(|f| f.to_precision(2))), |             .map(|s| { | ||||||
|  |                 match &s.sensor_a  { | ||||||
|  |                     MoistureSensorState::Disabled => "disabled".to_string(), | ||||||
|  |                     MoistureSensorState::MoistureValue {raw_hz, moisture_percent } => { | ||||||
|  |                         format!("{moisture_percent:.2}% {raw_hz}hz",) | ||||||
|  |                     } | ||||||
|  |                     MoistureSensorState::SensorError(err) => format!("{err:?}"), | ||||||
|  |                 } | ||||||
|  |             }) | ||||||
|     ); |     ); | ||||||
|     let b = Vec::from_iter( |     let b = Vec::from_iter( | ||||||
|         plant_state |         plant_state | ||||||
|             .iter() |             .iter() | ||||||
|             .map(|s| s.sensor_b.moisture_percent().map(|f| f.to_precision(2))), |             .map(|s| { | ||||||
|  |                 match &s.sensor_b  { | ||||||
|  |                     MoistureSensorState::Disabled => "disabled".to_string(), | ||||||
|  |                     MoistureSensorState::MoistureValue {raw_hz, moisture_percent } => { | ||||||
|  |                         format!("{moisture_percent:.2}% {raw_hz}hz",) | ||||||
|  |                     } | ||||||
|  |                     MoistureSensorState::SensorError(err) => format!("{err:?}"), | ||||||
|  |                 } | ||||||
|  |             }) | ||||||
|     ); |     ); | ||||||
|  |  | ||||||
|     let data = Moistures { |     let data = Moistures { | ||||||
|   | |||||||
| @@ -106,8 +106,8 @@ interface GetTime { | |||||||
| } | } | ||||||
|  |  | ||||||
| interface Moistures { | interface Moistures { | ||||||
|   moisture_a: [number], |   moisture_a: [string], | ||||||
|   moisture_b: [number], |   moisture_b: [string], | ||||||
| } | } | ||||||
|  |  | ||||||
| interface VersionInfo { | interface VersionInfo { | ||||||
|   | |||||||
| @@ -24,7 +24,7 @@ export class PlantViews { | |||||||
|       } |       } | ||||||
|       return rv |       return rv | ||||||
|     } |     } | ||||||
|     update(moisture_a: [number], moisture_b: [number]) { |     update(moisture_a: [string], moisture_b: [string]) { | ||||||
|       for (let plantId = 0; plantId < PLANT_COUNT; plantId++) { |       for (let plantId = 0; plantId < PLANT_COUNT; plantId++) { | ||||||
|         const a = moisture_a[plantId] |         const a = moisture_a[plantId] | ||||||
|         const b = moisture_b[plantId] |         const b = moisture_b[plantId] | ||||||
| @@ -150,18 +150,9 @@ export class PlantView { | |||||||
|         }; |         }; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     update(a: number, b: number) { |     update(a: string, b: string) { | ||||||
|       if (a == 200){ |         this.moistureA.innerText = a | ||||||
|         this.moistureA.innerText = "error" |         this.moistureB.innerText = b | ||||||
|       } else { |  | ||||||
|         this.moistureA.innerText = String(a) |  | ||||||
|       } |  | ||||||
|        |  | ||||||
|       if (b == 200){ |  | ||||||
|         this.moistureB.innerText = "error" |  | ||||||
|       } else { |  | ||||||
|         this.moistureB.innerText = String(b) |  | ||||||
|       } |  | ||||||
|     } |     } | ||||||
|    |    | ||||||
|     setConfig(plantConfig: PlantConfig) { |     setConfig(plantConfig: PlantConfig) { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user