Private GIT

Skip to content
Snippets Groups Projects
Unverified Commit 1432a631 authored by Tuan Anh Hoang-Vu's avatar Tuan Anh Hoang-Vu Committed by GitHub
Browse files

added support for Dyson Pure Cool. (#2)

* added support for Dyson Pure Cool.

* refactored PureHotCool and PureCool metrics.
parent 5643c508
No related branches found
No related tags found
No related merge requests found
...@@ -73,7 +73,8 @@ class Metrics(): ...@@ -73,7 +73,8 @@ class Metrics():
Args: Args:
name: (str) Name of device. name: (str) Name of device.
serial: (str) Serial number 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: if not name or not serial:
logging.error('Ignoring update with name=%s, serial=%s', name, serial) logging.error('Ignoring update with name=%s, serial=%s', name, serial)
...@@ -85,7 +86,7 @@ class Metrics(): ...@@ -85,7 +86,7 @@ class Metrics():
self.temperature.labels(name=name, serial=serial).set(message.temperature - 273.2) 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.voc.labels(name=name, serial=serial).set(message.volatil_organic_compounds)
self.dust.labels(name=name, serial=serial).set(message.dust) 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_mode.labels(name=name, serial=serial).state(message.fan_mode)
self.fan_state.labels(name=name, serial=serial).state(message.fan_state) self.fan_state.labels(name=name, serial=serial).state(message.fan_state)
...@@ -94,19 +95,22 @@ class Metrics(): ...@@ -94,19 +95,22 @@ class Metrics():
speed = -1 speed = -1
self.fan_speed.labels(name=name, serial=serial).set(speed) 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 # Convert filter_life from hours to seconds
filter_life = int(message.filter_life) * 60 * 60 filter_life = int(message.filter_life) * 60 * 60
self.oscillation.labels(name=name, serial=serial).state(message.oscillation) self.oscillation.labels(name=name, serial=serial).state(message.oscillation)
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.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_mode.labels(name=name, serial=serial).state(message.heat_mode)
self.heat_state.labels(name=name, serial=serial).state(message.heat_state) self.heat_state.labels(name=name, serial=serial).state(message.heat_state)
self.heat_target.labels(name=name, serial=serial).set(heat_target) 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)
else: else:
logging.warning('Received unknown update from "%s" (serial=%s): %s; ignoring', logging.warning('Received unknown update from "%s" (serial=%s): %s; ignoring',
name, serial, type(message)) name, serial, type(message))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment