mirror of
https://github.com/andvikt/mega_hacs.git
synced 2025-12-11 17:14:28 +05:00
53 lines
1.3 KiB
Python
53 lines
1.3 KiB
Python
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")
|
|
|