version as key

This commit is contained in:
Robin Appelman 2022-02-13 18:13:31 +01:00
commit 07e2cc0063

View file

@ -101,6 +101,7 @@ pub struct DeviceState {
pub pms_state: Option<PMSState>, pub pms_state: Option<PMSState>,
pub last_seen: Instant, pub last_seen: Instant,
pub firmware: String, pub firmware: String,
pub version: f32,
} }
impl Default for DeviceState { impl Default for DeviceState {
@ -119,6 +120,7 @@ impl Default for DeviceState {
pms_state: Default::default(), pms_state: Default::default(),
last_seen: Instant::now(), last_seen: Instant::now(),
firmware: Default::default(), firmware: Default::default(),
version: 0.0,
} }
} }
} }
@ -192,6 +194,13 @@ impl DeviceState {
if let Some(version) = json["StatusFWR"]["Version"].as_str() { if let Some(version) = json["StatusFWR"]["Version"].as_str() {
self.firmware = version.into(); self.firmware = version.into();
if let Some(version) = version
.rfind(".")
.map(|index| &version[0..index])
.and_then(|s| s.parse().ok())
{
self.version = version
}
} }
if json["PMS5003"].is_object() { if json["PMS5003"].is_object() {
@ -347,8 +356,8 @@ pub fn format_device_state<W: Write>(
if !state.firmware.is_empty() { if !state.firmware.is_empty() {
writeln!( writeln!(
writer, writer,
"tasmota_version{{tasmota_id=\"{}\", name=\"{}\"}} {}", r#"tasmota_version{{tasmota_id="{}", name="{}", firmware="{}", version="{}"}} 1"#,
device.hostname, state.name, state.firmware device.hostname, state.name, state.firmware, state.version
)?; )?;
} }