Add sketch of relays, jinja templating.
This commit is contained in:
parent
0d1020a3d5
commit
320591277f
|
@ -2,7 +2,6 @@ import argparse
|
||||||
import asyncio
|
import asyncio
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
import pnpdevice.discovery
|
|
||||||
import pnpdevice.server
|
import pnpdevice.server
|
||||||
|
|
||||||
LOGGER = logging.getLogger(__name__)
|
LOGGER = logging.getLogger(__name__)
|
||||||
|
@ -10,8 +9,13 @@ LOGGER = logging.getLogger(__name__)
|
||||||
def main():
|
def main():
|
||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
parser.add_argument("-v", "--verbose", action="store_true", help="Enable verbose logging")
|
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()
|
args = parser.parse_args()
|
||||||
|
|
||||||
logging.basicConfig(level=logging.DEBUG if args.verbose else logging.INFO)
|
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
|
from aiohttp import web
|
||||||
|
import aiohttp_jinja2
|
||||||
|
import jinja2
|
||||||
|
|
||||||
import pnpdevice.discovery
|
import pnpdevice.discovery
|
||||||
|
import pnpdevice.relays
|
||||||
|
|
||||||
async def hello(request):
|
def html(text: str) -> web.Response:
|
||||||
return web.Response(text="Hello, world")
|
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"
|
"Run the embedded web server"
|
||||||
app = web.Application()
|
app = web.Application()
|
||||||
|
aiohttp_jinja2.setup(app,
|
||||||
|
loader=jinja2.FileSystemLoader("templates"))
|
||||||
app.on_startup.append(pnpdevice.discovery.handle)
|
app.on_startup.append(pnpdevice.discovery.handle)
|
||||||
app.add_routes([web.get("/", hello)])
|
app.add_routes([web.get("/", index)])
|
||||||
web.run_app(app)
|
web.run_app(app)
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@ authors = [
|
||||||
]
|
]
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"aiohttp",
|
"aiohttp",
|
||||||
|
"aiohttp_jinja2",
|
||||||
"zeroconf",
|
"zeroconf",
|
||||||
]
|
]
|
||||||
dynamic = ["version", "description"]
|
dynamic = ["version", "description"]
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
<html>
|
||||||
|
<h1>Pools'n'Pumps Device</h1>
|
||||||
|
</html>
|
Loading…
Reference in New Issue