mirror of
https://github.com/andvikt/mega_hacs.git
synced 2025-12-12 01:24:29 +05:00
поддержка PCA9685 и MCP230
This commit is contained in:
52
custom_components/mega/config_parser.py
Normal file
52
custom_components/mega/config_parser.py
Normal file
@@ -0,0 +1,52 @@
|
||||
from dataclasses import dataclass, field
|
||||
from bs4 import BeautifulSoup
|
||||
|
||||
|
||||
@dataclass(frozen=True, eq=True)
|
||||
class Config:
|
||||
pty: str = None
|
||||
m: str = None
|
||||
gr: str = None
|
||||
d: str = None
|
||||
inta: str = field(compare=False, hash=False, default=None)
|
||||
ety: str = None
|
||||
misc: str = field(compare=False, hash=False, default=None)
|
||||
|
||||
|
||||
def parse_config(page: str):
|
||||
page = BeautifulSoup(page, features="lxml")
|
||||
ret = {}
|
||||
for x in [
|
||||
'pty',
|
||||
'm',
|
||||
'gr',
|
||||
'd',
|
||||
'ety',
|
||||
]:
|
||||
v = page.find('select', attrs={'name': x})
|
||||
if v is None:
|
||||
continue
|
||||
else:
|
||||
v = v.find(selected=True)
|
||||
if v:
|
||||
v = v['value']
|
||||
ret[x] = v
|
||||
v = page.find('input', attrs={'name': 'inta'})
|
||||
if v:
|
||||
ret['inta'] = v['value']
|
||||
v = page.find('input', attrs={'name': 'misc'})
|
||||
if v:
|
||||
ret['misc'] = v.get('checked', False)
|
||||
return Config(**ret)
|
||||
|
||||
|
||||
DIGITAL_IN = Config(pty="0")
|
||||
RELAY_OUT = Config(pty="1", m="0")
|
||||
PWM_OUT = Config(pty="1", m="1")
|
||||
DS2413 = Config(pty="1", m="2")
|
||||
MCP230 = Config(pty="4", m="1", gr="3", d="20")
|
||||
MCP230_OUT = Config(ety="1")
|
||||
MCP230_IN = Config(ety="0")
|
||||
PCA9685 = Config(pty="4", m="1", gr="3", d="21")
|
||||
OWIRE_BUS = Config(pty="3", d="5")
|
||||
|
||||
Reference in New Issue
Block a user