Add sketch of relays, jinja templating.

This commit is contained in:
Eli Ribble 2023-05-12 15:09:15 -07:00
parent 0d1020a3d5
commit 320591277f
5 changed files with 35 additions and 6 deletions

View File

@ -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)

9
pnpdevice/relays.py Normal file
View File

@ -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."

View File

@ -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)

View File

@ -5,6 +5,7 @@ authors = [
]
dependencies = [
"aiohttp",
"aiohttp_jinja2",
"zeroconf",
]
dynamic = ["version", "description"]

View File

@ -0,0 +1,3 @@
<html>
<h1>Pools'n'Pumps Device</h1>
</html>