Fix mysensors version errors
* The application of the version check in unit_of_measurement was messed up after the last refactor. Fix that again. * An error could occur in device_state_attributes if there was a mismatch between used value_type in the device and mysensors version in config. Add try... except to handle that.
This commit is contained in:
parent
614034d196
commit
b700ec4faa
2 changed files with 15 additions and 6 deletions
|
@ -151,23 +151,26 @@ class MySensorsSensor(Entity):
|
||||||
self.gateway.const.SetReq.V_VOLTAGE: 'V',
|
self.gateway.const.SetReq.V_VOLTAGE: 'V',
|
||||||
self.gateway.const.SetReq.V_CURRENT: 'A',
|
self.gateway.const.SetReq.V_CURRENT: 'A',
|
||||||
}
|
}
|
||||||
unit_map_v15 = {
|
|
||||||
self.gateway.const.SetReq.V_PERCENTAGE: '%',
|
|
||||||
}
|
|
||||||
if float(self.gateway.version) >= 1.5:
|
if float(self.gateway.version) >= 1.5:
|
||||||
if self.gateway.const.SetReq.V_UNIT_PREFIX in self._values:
|
if self.gateway.const.SetReq.V_UNIT_PREFIX in self._values:
|
||||||
return self._values[
|
return self._values[
|
||||||
self.gateway.const.SetReq.V_UNIT_PREFIX]
|
self.gateway.const.SetReq.V_UNIT_PREFIX]
|
||||||
unit_map.update(unit_map_v15)
|
unit_map.update({self.gateway.const.SetReq.V_PERCENTAGE: '%'})
|
||||||
return unit_map.get(self.value_type)
|
return unit_map.get(self.value_type)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def device_state_attributes(self):
|
def device_state_attributes(self):
|
||||||
"""Return device specific state attributes."""
|
"""Return device specific state attributes."""
|
||||||
|
set_req = self.gateway.const.SetReq
|
||||||
device_attr = {}
|
device_attr = {}
|
||||||
for value_type, value in self._values.items():
|
for value_type, value in self._values.items():
|
||||||
if value_type != self.value_type:
|
if value_type != self.value_type:
|
||||||
device_attr[self.gateway.const.SetReq(value_type).name] = value
|
try:
|
||||||
|
device_attr[set_req(value_type).name] = value
|
||||||
|
except ValueError:
|
||||||
|
_LOGGER.error('value_type %s is not valid for mysensors '
|
||||||
|
'version %s', value_type,
|
||||||
|
self.gateway.version)
|
||||||
return device_attr
|
return device_attr
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
|
|
@ -100,10 +100,16 @@ class MySensorsSwitch(SwitchDevice):
|
||||||
@property
|
@property
|
||||||
def device_state_attributes(self):
|
def device_state_attributes(self):
|
||||||
"""Return device specific state attributes."""
|
"""Return device specific state attributes."""
|
||||||
|
set_req = self.gateway.const.SetReq
|
||||||
device_attr = {}
|
device_attr = {}
|
||||||
for value_type, value in self._values.items():
|
for value_type, value in self._values.items():
|
||||||
if value_type != self.value_type:
|
if value_type != self.value_type:
|
||||||
device_attr[self.gateway.const.SetReq(value_type).name] = value
|
try:
|
||||||
|
device_attr[set_req(value_type).name] = value
|
||||||
|
except ValueError:
|
||||||
|
_LOGGER.error('value_type %s is not valid for mysensors '
|
||||||
|
'version %s', value_type,
|
||||||
|
self.gateway.version)
|
||||||
return device_attr
|
return device_attr
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
|
Loading…
Add table
Reference in a new issue