mirror of
https://github.com/andvikt/mega_hacs.git
synced 2025-12-12 09:34:28 +05:00
Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
adb65529a2 | ||
|
|
768d46d952 | ||
|
|
359c6b99b7 |
@@ -72,6 +72,7 @@ async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry, asyn
|
|||||||
|
|
||||||
asyncio.create_task(scan())
|
asyncio.create_task(scan())
|
||||||
|
|
||||||
|
|
||||||
class MegaBinarySensor(BinarySensorEntity, BaseMegaEntity):
|
class MegaBinarySensor(BinarySensorEntity, BaseMegaEntity):
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
|
|||||||
@@ -153,10 +153,12 @@ class MegaD:
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
if '"value":NA' in msg.payload.decode():
|
if '"value":NA' in msg.payload.decode():
|
||||||
ftr.set_result(None)
|
if not ftr.done():
|
||||||
|
ftr.set_result(None)
|
||||||
return
|
return
|
||||||
ret = json.loads(msg.payload).get('value')
|
ret = json.loads(msg.payload).get('value')
|
||||||
ftr.set_result(ret)
|
if not ftr.done():
|
||||||
|
ftr.set_result(ret)
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
ret = None
|
ret = None
|
||||||
self.lg.exception(f'while parsing response from port {port}: {msg.payload}')
|
self.lg.exception(f'while parsing response from port {port}: {msg.payload}')
|
||||||
@@ -167,12 +169,12 @@ class MegaD:
|
|||||||
)
|
)
|
||||||
|
|
||||||
async with self.lck:
|
async with self.lck:
|
||||||
|
unsub = await self.mqtt.async_subscribe(
|
||||||
|
topic=f'{self.mqtt_id}/{port}',
|
||||||
|
msg_callback=cb,
|
||||||
|
qos=1,
|
||||||
|
)
|
||||||
try:
|
try:
|
||||||
unsub = await self.mqtt.async_subscribe(
|
|
||||||
topic=f'{self.mqtt_id}/{port}',
|
|
||||||
msg_callback=cb,
|
|
||||||
qos=1,
|
|
||||||
)
|
|
||||||
await self.mqtt.async_publish(
|
await self.mqtt.async_publish(
|
||||||
topic=f'{self.mqtt_id}/cmd',
|
topic=f'{self.mqtt_id}/cmd',
|
||||||
payload=f'get:{port}',
|
payload=f'get:{port}',
|
||||||
@@ -268,8 +270,7 @@ class MegaD:
|
|||||||
return pty, m
|
return pty, m
|
||||||
|
|
||||||
async def scan_ports(self,):
|
async def scan_ports(self,):
|
||||||
async with self.lck:
|
for x in range(38):
|
||||||
for x in range(38):
|
ret = await self.scan_port(x)
|
||||||
ret = await self.scan_port(x)
|
if ret:
|
||||||
if ret:
|
yield [x, *ret]
|
||||||
yield [x, *ret]
|
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry, asyn
|
|||||||
if values is None:
|
if values is None:
|
||||||
continue
|
continue
|
||||||
if isinstance(values, str) and TEMP_PATT.search(values):
|
if isinstance(values, str) and TEMP_PATT.search(values):
|
||||||
values = {TEMP: values}
|
values = {TEMP: values}
|
||||||
elif not isinstance(values, dict):
|
elif not isinstance(values, dict):
|
||||||
values = {None: values}
|
values = {None: values}
|
||||||
for key in values:
|
for key in values:
|
||||||
|
|||||||
Reference in New Issue
Block a user