|
|
|
@ -1,7 +1,7 @@ |
|
|
|
#sys imports |
|
|
|
import argparse |
|
|
|
import traceback |
|
|
|
import sys |
|
|
|
import sys, os |
|
|
|
import asyncio |
|
|
|
from time import time |
|
|
|
from typing import List, Dict |
|
|
|
@ -54,7 +54,7 @@ class MeshListener(MeshArgsParse): |
|
|
|
#task |
|
|
|
async def meshWorker(self, queue: asyncio.Queue): |
|
|
|
logger.info("Start mesh queue listener") |
|
|
|
run = True |
|
|
|
run = not self.args.disable_mesh |
|
|
|
while run: |
|
|
|
try: |
|
|
|
await self.device.start() |
|
|
|
@ -82,6 +82,7 @@ class MeshListener(MeshArgsParse): |
|
|
|
class MeshApi(MeshArgsParse): |
|
|
|
app: FastAPI |
|
|
|
tasks: List |
|
|
|
context: str = "/api" |
|
|
|
def __init__(self, args): |
|
|
|
super().__init__(args) |
|
|
|
self.app = FastAPI(lifespan=self.lifespan) |
|
|
|
@ -169,6 +170,7 @@ class MeshCenter(MeshListener, MeshApi, MongoDriver, MeshArgsParse): |
|
|
|
MongoDriver.__init__(self, args) |
|
|
|
self.buildBackgroundTasks() |
|
|
|
self.bot = BotManager(self) |
|
|
|
self.extensionLoader(['webExtensions']) |
|
|
|
|
|
|
|
async def queueHandler(self): |
|
|
|
logger.info("Start queue handler") |
|
|
|
@ -200,12 +202,34 @@ class MeshCenter(MeshListener, MeshApi, MongoDriver, MeshArgsParse): |
|
|
|
|
|
|
|
self.tasks.append(handlerTask) |
|
|
|
|
|
|
|
def extensionLoader(self, search_paths = []): |
|
|
|
logger.info("Search fastapiExt") |
|
|
|
os.chdir(os.path.dirname(os.path.abspath(__file__))) |
|
|
|
if type(search_paths) == str: |
|
|
|
search_paths = [search_paths] |
|
|
|
|
|
|
|
for path in search_paths: |
|
|
|
logger.info(f"Try found extensions in {path}") |
|
|
|
if not os.path.exists(path) or not os.path.isdir(path): |
|
|
|
logger.info(f"Directory is not exists or not directory, skip") |
|
|
|
continue |
|
|
|
|
|
|
|
sys.path.insert(0, path) |
|
|
|
for extension in os.listdir(path): |
|
|
|
extension, ext = os.path.splitext(extension) |
|
|
|
if ext != ".py": |
|
|
|
continue |
|
|
|
logger.info(f"Found web ext: {extension}") |
|
|
|
__import__(extension).WebExtension(self) |
|
|
|
sys.path.pop(0) |
|
|
|
|
|
|
|
if __name__ == "__main__": |
|
|
|
parser = argparse.ArgumentParser() |
|
|
|
#mesh |
|
|
|
parser.add_argument("--transport", default="serial") |
|
|
|
parser.add_argument("--serial-port", default="/dev/tty.usbmodemD0CF1309DC141") |
|
|
|
parser.add_argument("--serial-baudrate", default=115200) |
|
|
|
parser.add_argument("--disable-mesh", action="store_true", default=True) |
|
|
|
#fastapi |
|
|
|
parser.add_argument("--web-host", default="0.0.0.0") |
|
|
|
parser.add_argument("--web-port", default=8680) |
|
|
|
|