Add sketch of relays, jinja templating.
This commit is contained in:
parent
0d1020a3d5
commit
320591277f
|
@ -2,7 +2,6 @@ import argparse
|
|||
import asyncio
|
||||
import logging
|
||||
|
||||
import pnpdevice.discovery
|
||||
import pnpdevice.server
|
||||
|
||||
LOGGER = logging.getLogger(__name__)
|
||||
|
@ -10,8 +9,13 @@ LOGGER = logging.getLogger(__name__)
|
|||
def main():
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("-v", "--verbose", action="store_true", help="Enable verbose logging")
|
||||
parser.add_argument("-s", "--simulate", action="store_true", help="When present, simulate the state of the relays")
|
||||
args = parser.parse_args()
|
||||
|
||||
logging.basicConfig(level=logging.DEBUG if args.verbose else logging.INFO)
|
||||
|
||||
pnpdevice.server.run()
|
||||
if args.simulate:
|
||||
relays = pnpdevice.relays.RelaysFake()
|
||||
else:
|
||||
relays = pnpdevice.relays.RelaysReal()
|
||||
pnpdevice.server.run(relays)
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
|
||||
class Relays:
|
||||
"Class for interacting with relays."
|
||||
|
||||
class RelaysFake(Relays):
|
||||
"Class for fake relays, useful for testing."
|
||||
|
||||
class RelaysReal(Relays):
|
||||
"Class for controlling real relays."
|
|
@ -1,14 +1,26 @@
|
|||
from aiohttp import web
|
||||
import aiohttp_jinja2
|
||||
import jinja2
|
||||
|
||||
import pnpdevice.discovery
|
||||
import pnpdevice.relays
|
||||
|
||||
async def hello(request):
|
||||
return web.Response(text="Hello, world")
|
||||
def html(text: str) -> web.Response:
|
||||
return web.Response(content_type="text/html", text=f"<html>{text}</html>")
|
||||
|
||||
def run():
|
||||
@aiohttp_jinja2.template("index.template.html")
|
||||
async def index(request):
|
||||
return {}
|
||||
|
||||
async def status(request):
|
||||
return html("Status")
|
||||
|
||||
def run(relays: pnpdevice.relays.Relays):
|
||||
"Run the embedded web server"
|
||||
app = web.Application()
|
||||
aiohttp_jinja2.setup(app,
|
||||
loader=jinja2.FileSystemLoader("templates"))
|
||||
app.on_startup.append(pnpdevice.discovery.handle)
|
||||
app.add_routes([web.get("/", hello)])
|
||||
app.add_routes([web.get("/", index)])
|
||||
web.run_app(app)
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@ authors = [
|
|||
]
|
||||
dependencies = [
|
||||
"aiohttp",
|
||||
"aiohttp_jinja2",
|
||||
"zeroconf",
|
||||
]
|
||||
dynamic = ["version", "description"]
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
<html>
|
||||
<h1>Pools'n'Pumps Device</h1>
|
||||
</html>
|
Loading…
Reference in New Issue