diff --git a/main.py b/main.py index bfb440986933a08f3c30655e9801e7de76f4a579..1491f9d4e45a1dd2ce73c71b8012b18469c36e3c 100755 --- a/main.py +++ b/main.py @@ -73,7 +73,8 @@ class Metrics(): Args: name: (str) Name of device. serial: (str) Serial number of device. - message: must be one of a DysonEnvironmentalSensorState or DysonPureHotCoolState. + message: must be one of a DysonEnvironmentalSensorState, DysonPureHotCoolState + or DysonPureCoolState. """ if not name or not serial: logging.error('Ignoring update with name=%s, serial=%s', name, serial) @@ -85,7 +86,7 @@ class Metrics(): self.temperature.labels(name=name, serial=serial).set(message.temperature - 273.2) self.voc.labels(name=name, serial=serial).set(message.volatil_organic_compounds) self.dust.labels(name=name, serial=serial).set(message.dust) - elif isinstance(message, dyson_pure_state.DysonPureHotCoolState): + elif isinstance(message, dyson_pure_state.DysonPureCoolState): self.fan_mode.labels(name=name, serial=serial).state(message.fan_mode) self.fan_state.labels(name=name, serial=serial).state(message.fan_state) @@ -94,19 +95,22 @@ class Metrics(): speed = -1 self.fan_speed.labels(name=name, serial=serial).set(speed) - # Convert from Decicelsius to Kelvin. - heat_target = int(message.heat_target) / 10 - 273.2 - # Convert filter_life from hours to seconds filter_life = int(message.filter_life) * 60 * 60 self.oscillation.labels(name=name, serial=serial).state(message.oscillation) - self.focus_mode.labels(name=name, serial=serial).state(message.focus_mode) - self.heat_mode.labels(name=name, serial=serial).state(message.heat_mode) - self.heat_state.labels(name=name, serial=serial).state(message.heat_state) - self.heat_target.labels(name=name, serial=serial).set(heat_target) self.quality_target.labels(name=name, serial=serial).set(message.quality_target) self.filter_life.labels(name=name, serial=serial).set(filter_life) + + # Metrics only available with DysonPureHotCoolState + if isinstance(message, dyson_pure_state.DysonPureHotCoolState): + # Convert from Decicelsius to Kelvin. + heat_target = int(message.heat_target) / 10 - 273.2 + + self.focus_mode.labels(name=name, serial=serial).state(message.focus_mode) + self.heat_mode.labels(name=name, serial=serial).state(message.heat_mode) + self.heat_state.labels(name=name, serial=serial).state(message.heat_state) + self.heat_target.labels(name=name, serial=serial).set(heat_target) else: logging.warning('Received unknown update from "%s" (serial=%s): %s; ignoring', name, serial, type(message))