Skip to content

Commit

Permalink
Merge pull request #31 from nickrw/master
Browse files Browse the repository at this point in the history
Expect a null temperature setting when heating is disabled
  • Loading branch information
eko committed May 21, 2020
2 parents e54b8f5 + b8f636b commit 2505f76
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 9 deletions.
24 changes: 16 additions & 8 deletions src/tado/metrics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -35,14 +35,22 @@ lazy_static! {

pub fn set(zones: Vec<ZoneStateResponse>) {
for zone in zones {
// setting temperature
let value: f64 = zone.state_response.setting.temperature.celsius;
SETTING_TEMPERATURE.with_label_values(&[zone.name.as_str(), "celsius"]).set(value);
info!("-> {} -> setting temperature (celsius): {}", zone.name, value);

let value: f64 = zone.state_response.setting.temperature.fahrenheit;
SETTING_TEMPERATURE.with_label_values(&[zone.name.as_str(), "fahrenheit"]).set(value);
info!("-> {} -> setting temperature (fahrenheit): {}", zone.name, value);
// The setting temperature may be null in the API response, if the
// zone's heating mode is turned off. If the temperature setting is
// absent, from the API response we'll simply not set its gauge values.
if let Some(setting_temperature) = zone.state_response.setting.temperature {
// setting temperature
let value: f64 = setting_temperature.celsius;
SETTING_TEMPERATURE.with_label_values(&[zone.name.as_str(), "celsius"]).set(value);
info!("-> {} -> setting temperature (celsius): {}", zone.name, value);

let value: f64 = setting_temperature.fahrenheit;
SETTING_TEMPERATURE.with_label_values(&[zone.name.as_str(), "fahrenheit"]).set(value);
info!("-> {} -> setting temperature (fahrenheit): {}", zone.name, value);
} else {
info!("-> {} -> setting temperature (celsius): Off", zone.name);
info!("-> {} -> setting temperature (fahrenheit): Off", zone.name);
}

// sensor temperature
let value: f64 = zone.state_response.sensorDataPoints.insideTemperature.celsius;
Expand Down
2 changes: 1 addition & 1 deletion src/tado/model.rs
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ pub struct ZoneStateApiResponse {
#[derive(Deserialize, Debug)]
#[allow(non_snake_case)]
pub struct ZoneStateSettingApiResponse {
pub temperature: ZoneStateSettingTemperatureApiResponse,
pub temperature: Option<ZoneStateSettingTemperatureApiResponse>,
}

#[derive(Deserialize, Debug)]
Expand Down

0 comments on commit 2505f76

Please sign in to comment.