more json
This commit is contained in:
parent
3f98a321fc
commit
b57eb2513c
@ -98,7 +98,7 @@ enum SensorError {
|
|||||||
OpenCircuit { hz: f32, min: f32 },
|
OpenCircuit { hz: f32, min: f32 },
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Copy, Clone, Debug, PartialEq, Default)]
|
#[derive(Copy, Clone, Debug, PartialEq, Default)]
|
||||||
struct TankState {
|
struct TankState {
|
||||||
enough_water: bool,
|
enough_water: bool,
|
||||||
warn_level: bool,
|
warn_level: bool,
|
||||||
@ -106,6 +106,16 @@ struct TankState {
|
|||||||
sensor_error: bool,
|
sensor_error: bool,
|
||||||
raw: u16,
|
raw: u16,
|
||||||
}
|
}
|
||||||
|
#[derive(Serialize)]
|
||||||
|
struct TankStateMQTT {
|
||||||
|
enough_water: bool,
|
||||||
|
warn_level: bool,
|
||||||
|
left_ml: u32,
|
||||||
|
sensor_error: bool,
|
||||||
|
raw: u16,
|
||||||
|
water_frozen: String
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Serialize)]
|
#[derive(Serialize)]
|
||||||
struct PlantStateMQTT<'a> {
|
struct PlantStateMQTT<'a> {
|
||||||
a: &'a str,
|
a: &'a str,
|
||||||
@ -355,18 +365,16 @@ fn safe_main() -> anyhow::Result<()> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let tank_state = determine_tank_state(&mut board, &config);
|
let tank_state = determine_tank_state(&mut board, &config);
|
||||||
if online_mode == OnlineMode::Online {
|
let mut tank_state_mqtt = TankStateMQTT{
|
||||||
match serde_json::to_string(&tank_state) {
|
enough_water : tank_state.enough_water,
|
||||||
Ok(state) => {
|
left_ml : tank_state.left_ml,
|
||||||
let _ = board.mqtt_publish(&config, "/water", state.as_bytes());
|
warn_level : tank_state.warn_level,
|
||||||
}
|
sensor_error: tank_state.sensor_error,
|
||||||
Err(err) => {
|
raw: tank_state.raw,
|
||||||
println!("Error publishing lightstate {}", err);
|
water_frozen: "".to_owned()
|
||||||
}
|
};
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
let mut water_frozen = false;
|
let mut water_frozen = false;
|
||||||
|
|
||||||
let mut temp: Option<f32> = None;
|
let mut temp: Option<f32> = None;
|
||||||
for _attempt in 0..5 {
|
for _attempt in 0..5 {
|
||||||
let water_temperature = board.water_temperature_c();
|
let water_temperature = board.water_temperature_c();
|
||||||
@ -386,23 +394,24 @@ fn safe_main() -> anyhow::Result<()> {
|
|||||||
if res < 4_f32 {
|
if res < 4_f32 {
|
||||||
water_frozen = true;
|
water_frozen = true;
|
||||||
}
|
}
|
||||||
if online_mode == OnlineMode::Online {
|
tank_state_mqtt.water_frozen = water_frozen.to_string();
|
||||||
let _ =
|
|
||||||
board.mqtt_publish(&config, "/water/temperature", res.to_string().as_bytes());
|
|
||||||
let _ = board.mqtt_publish(
|
|
||||||
&config,
|
|
||||||
"/water/frozen",
|
|
||||||
water_frozen.to_string().as_bytes(),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
None => {
|
None => {
|
||||||
if online_mode == OnlineMode::Online {
|
tank_state_mqtt.water_frozen = "tank sensor error".to_owned()
|
||||||
let _ = board.mqtt_publish(&config, "/water/temperature", "Error".as_bytes());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if online_mode == OnlineMode::Online {
|
||||||
|
match serde_json::to_string(&tank_state_mqtt) {
|
||||||
|
Ok(state) => {
|
||||||
|
let _ = board.mqtt_publish(&config, "/water", state.as_bytes());
|
||||||
|
}
|
||||||
|
Err(err) => {
|
||||||
|
println!("Error publishing tankstate {}", err);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
let mut plantstate = [PlantState {
|
let mut plantstate = [PlantState {
|
||||||
..Default::default()
|
..Default::default()
|
||||||
}; PLANT_COUNT];
|
}; PLANT_COUNT];
|
||||||
@ -622,7 +631,7 @@ fn publish_battery_state(
|
|||||||
};
|
};
|
||||||
match serde_json::to_string(&bat) {
|
match serde_json::to_string(&bat) {
|
||||||
Ok(state) => {
|
Ok(state) => {
|
||||||
let _ = board.mqtt_publish(&config, "/plant/battery", state.as_bytes());
|
let _ = board.mqtt_publish(&config, "/battery", state.as_bytes());
|
||||||
}
|
}
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
println!("Error publishing battery_state {}", err);
|
println!("Error publishing battery_state {}", err);
|
||||||
|
Loading…
Reference in New Issue
Block a user