fix errors

This commit is contained in:
Andrey
2021-02-27 14:44:20 +03:00
parent f88109c3a6
commit 9ae093dd91
2 changed files with 14 additions and 10 deletions

View File

@@ -78,14 +78,15 @@ class MegaBinarySensor(BinarySensorEntity, MegaPushEntity):
@property @property
def is_on(self) -> bool: def is_on(self) -> bool:
val = self.mega.values.get(self.port, {}).get("value") \ val = self.mega.values.get(self.port, {})
or self.mega.values.get(self.port, {}).get('m') if isinstance(val, dict):
val = val.get("value", val.get('m'))
if val is None and self._state is not None: if val is None and self._state is not None:
return self._state == 'ON' return self._state == 'ON'
elif val is not None: elif val is not None:
if val in ['ON', 'OFF']: if val in ['ON', 'OFF', '1', '0']:
return val == 'ON' if not self.invert else val == 'OFF' return val in ['ON', '1'] if not self.invert else val in ['OFF', '0']
else: elif isinstance(val, int):
return val != 1 if not self.invert else val == 1 return val != 1 if not self.invert else val == 1
def _update(self, payload: dict): def _update(self, payload: dict):

View File

@@ -247,8 +247,8 @@ class MegaOutPort(MegaPushEntity):
val = 0 val = 0
if val == 0: if val == 0:
return self._brightness return self._brightness
else: elif isinstance(val, (int, float)):
return val return int(val / self.dimmer_scale)
elif val is not None: elif val is not None:
val = val.get("value") val = val.get("value")
if val is None: if val is None:
@@ -269,7 +269,8 @@ class MegaOutPort(MegaPushEntity):
return return
if self.dimmer: if self.dimmer:
val = safe_int(val) val = safe_int(val)
return val > 0 if not self.invert else val == 0 if val is not None:
return val > 0 if not self.invert else val == 0
else: else:
return val == 'ON' if not self.invert else val == 'OFF' return val == 'ON' if not self.invert else val == 'OFF'
elif val is not None: elif val is not None:
@@ -358,8 +359,10 @@ class MegaOutPort(MegaPushEntity):
def safe_int(v): def safe_int(v):
if v in ['ON', 'OFF']: if v == 'ON':
return None return 1
elif v == 'OFF':
return 0
try: try:
return int(v) return int(v)
except (ValueError, TypeError): except (ValueError, TypeError):