mirror of
https://github.com/andvikt/mega_hacs.git
synced 2025-12-12 01:24:29 +05:00
Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ad1210d5cc | ||
|
|
687e80f729 | ||
|
|
7d777c9e82 | ||
|
|
c9f0e85f6a | ||
|
|
e75f8b91ef | ||
|
|
bf15d4f3f9 |
@@ -157,11 +157,10 @@ class MegaD:
|
||||
if force_d is not None:
|
||||
self.customize[CONF_FORCE_D] = force_d
|
||||
try:
|
||||
if allow_hosts is not None:
|
||||
if allow_hosts is not None and DOMAIN in hass.data:
|
||||
allow_hosts = set(allow_hosts.split(';'))
|
||||
hass.data[DOMAIN][CONF_HTTP].allowed_hosts |= allow_hosts
|
||||
hass.data[DOMAIN][CONF_HTTP].protected = protected
|
||||
|
||||
except Exception:
|
||||
self.lg.exception('while setting allowed hosts')
|
||||
|
||||
@@ -290,14 +289,20 @@ class MegaD:
|
||||
url = f"{url}/?{cmd}"
|
||||
self.lg.debug('request: %s', url)
|
||||
async with self._http_lck(priority):
|
||||
async with aiohttp.request("get", url=url) as req:
|
||||
if req.status != 200:
|
||||
self.lg.warning('%s returned %s (%s)', url, req.status, await req.text())
|
||||
return None
|
||||
else:
|
||||
ret = await req.text()
|
||||
self.lg.debug('response %s', ret)
|
||||
return ret
|
||||
for _ntry in range(3):
|
||||
try:
|
||||
async with aiohttp.request("get", url=url) as req:
|
||||
if req.status != 200:
|
||||
self.lg.warning('%s returned %s (%s)', url, req.status, await req.text())
|
||||
return None
|
||||
else:
|
||||
ret = await req.text()
|
||||
self.lg.debug('response %s', ret)
|
||||
return ret
|
||||
except asyncio.TimeoutError:
|
||||
self.lg.warning(f'timeout while requesting {url}')
|
||||
await asyncio.sleep(1)
|
||||
raise asyncio.TimeoutError('after 3 tries')
|
||||
|
||||
async def save(self):
|
||||
await self.send_command(cmd='s')
|
||||
@@ -673,7 +678,7 @@ class MegaD:
|
||||
cmd = dict(
|
||||
pt=config[0][0],
|
||||
chip=chip,
|
||||
ws=''.join([hex(x).split('x')[1].ljust(2, '0').upper() for x in _next_val])
|
||||
ws=''.join([hex(x).split('x')[1].rjust(2, '0').upper() for x in _next_val])
|
||||
)
|
||||
await self.request(**cmd)
|
||||
|
||||
|
||||
@@ -146,7 +146,7 @@ class MegaI2C(MegaPushEntity):
|
||||
ret = tmpl.async_render({'value': ret})
|
||||
except:
|
||||
ret = ret
|
||||
return ret
|
||||
return str(ret)
|
||||
|
||||
@property
|
||||
def device_class(self):
|
||||
@@ -241,7 +241,8 @@ class Mega1WSensor(MegaPushEntity):
|
||||
tmpl.hass = self.hass
|
||||
ret = tmpl.async_render({'value': ret})
|
||||
except:
|
||||
return ret
|
||||
pass
|
||||
return str(ret)
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
@@ -255,4 +256,4 @@ class Mega1WSensor(MegaPushEntity):
|
||||
_constructors = {
|
||||
'sensor': Mega1WSensor,
|
||||
'i2c': MegaI2C,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,8 +25,7 @@
|
||||
- Плавное диммирование для любых диммируемых объектов (в том числе с аппаратной поддержкой и без),
|
||||
[подробнее про smooth](https://github.com/andvikt/mega_hacs/wiki/smooth)
|
||||
- Возможность работы с несколькими megad
|
||||
- Обратная связь по [http](https://github.com/andvikt/mega_hacs/wiki/http)
|
||||
будет выключена в версиях >= 1.0.0, тк в нем нет необходимости)
|
||||
- Обратная связь по [http](https://github.com/andvikt/mega_hacs/wiki/http)
|
||||
- Автоматическое восстановление состояний выходов после перезагрузки контроллера
|
||||
- Автоматическое добавление/изменение объектов после перезагрузки контроллера
|
||||
- [События](https://github.com/andvikt/mega_hacs/wiki/События) на двойные/долгие нажатия
|
||||
|
||||
Reference in New Issue
Block a user