commit f8154b5bd2377a0eac445042bc6aabcd246044ef Author: linchangqing <lcq0485@china-toptec.com> Date: Wed Jul 26 15:53:42 2023 +0800 初始化项目 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ed8ebf5 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +__pycache__ \ No newline at end of file diff --git a/command/__init__.py b/command/__init__.py new file mode 100644 index 0000000..05958c4 --- /dev/null +++ b/command/__init__.py @@ -0,0 +1,2 @@ +from . import network +from . import com \ No newline at end of file diff --git a/command/abstract_command.py b/command/abstract_command.py new file mode 100644 index 0000000..57a18fd --- /dev/null +++ b/command/abstract_command.py @@ -0,0 +1,9 @@ +from abc import ABCMeta, abstractmethod + +class AbstractCommand(metaclass=ABCMeta): + def __init__(self, args = None): + self.args = args + + @abstractmethod + def execute(self): + pass \ No newline at end of file diff --git a/command/com/__init__.py b/command/com/__init__.py new file mode 100644 index 0000000..00f8809 --- /dev/null +++ b/command/com/__init__.py @@ -0,0 +1 @@ +from .drawer_open_request import DrawerOpenRequest \ No newline at end of file diff --git a/command/com/drawer_open_request.py b/command/com/drawer_open_request.py new file mode 100644 index 0000000..f6585e2 --- /dev/null +++ b/command/com/drawer_open_request.py @@ -0,0 +1,5 @@ +from command.abstract_command import AbstractCommand + +class DrawerOpenRequest(AbstractCommand): + def execute(self): + print(self.args) \ No newline at end of file diff --git a/command/network/__init__.py b/command/network/__init__.py new file mode 100644 index 0000000..00f8809 --- /dev/null +++ b/command/network/__init__.py @@ -0,0 +1 @@ +from .drawer_open_request import DrawerOpenRequest \ No newline at end of file diff --git a/command/network/drawer_open_request.py b/command/network/drawer_open_request.py new file mode 100644 index 0000000..f6585e2 --- /dev/null +++ b/command/network/drawer_open_request.py @@ -0,0 +1,5 @@ +from command.abstract_command import AbstractCommand + +class DrawerOpenRequest(AbstractCommand): + def execute(self): + print(self.args) \ No newline at end of file diff --git a/config.yaml b/config.yaml new file mode 100644 index 0000000..f492c3a --- /dev/null +++ b/config.yaml @@ -0,0 +1,18 @@ +cabinets: + - + id: '100' + mode: com + addr: /dev/ttyUSB0 + bps: 115200 + actions: + - + addr: /dev/ttyUSB1 + name: DrawerOpenRequest + desc: 串口开抽屉 + - + id: '101' + addr: 100.64.1.1 + actions: + - + name: DrawerOpenRequest + desc: 网络开抽屉 \ No newline at end of file diff --git a/main.py b/main.py new file mode 100644 index 0000000..c4f0c3b --- /dev/null +++ b/main.py @@ -0,0 +1,23 @@ +from fastapi import FastAPI +import yaml + +app = FastAPI() + +data: dict = {} + +@app.on_event('startup') +async def startup(): + global data + yml = open('config.yaml', 'r', encoding='utf-8') + raw = yml.read() + yml.close() + data = yaml.load(raw, Loader=yaml.FullLoader) + +@app.get('/{id}') +def endpoint(id: str): + cabinets = data.get('cabinets', []) + try: + cabinet = next(filter(lambda c: c['id'] == id, cabinets)) + return cabinet + except StopIteration: + return '找不到柜体' diff --git a/requirement.txt b/requirement.txt new file mode 100644 index 0000000..c9e54e1 --- /dev/null +++ b/requirement.txt @@ -0,0 +1,19 @@ +annotated-types==0.5.0 +anyio==3.7.1 +click==8.1.6 +exceptiongroup==1.1.2 +fastapi==0.100.0 +h11==0.14.0 +httptools==0.6.0 +idna==3.4 +pydantic==2.1.1 +pydantic_core==2.4.0 +python-dotenv==1.0.0 +PyYAML==6.0.1 +sniffio==1.3.0 +starlette==0.27.0 +typing_extensions==4.7.1 +uvicorn==0.23.1 +uvloop==0.17.0 +watchfiles==0.19.0 +websockets==11.0.3