-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathmain.py
41 lines (29 loc) · 1.3 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import asyncio
import argparse
from meshview import mqtt_reader
from meshview import database
from meshview import store
from meshview import web
from meshview import http
async def load_database_from_mqtt(mqtt_server, topic):
async for topic, env in mqtt_reader.get_topic_envelopes(mqtt_server, topic):
await store.process_envelope(topic, env)
async def main(args):
database.init_database(args.database)
await database.create_tables()
async with asyncio.TaskGroup() as tg:
tg.create_task(load_database_from_mqtt(args.mqtt_server, args.topic))
tg.create_task(web.run_server(args.bind, args.port, args.tls_cert))
if args.acme_challenge:
tg.create_task(http.run_server(args.bind, args.acme_challenge))
if __name__ == '__main__':
parser = argparse.ArgumentParser('meshview')
parser.add_argument('--bind', nargs='*', default=['::1'])
parser.add_argument('--acme-challenge')
parser.add_argument('--port', default=8080, type=int)
parser.add_argument('--tls-cert')
parser.add_argument('--mqtt-server', default='mqtt.meshtastic.org')
parser.add_argument('--topic', nargs='*', default=['msh/US/#'])
parser.add_argument('--database', default='sqlite+aiosqlite:///packets.db')
args = parser.parse_args()
asyncio.run(main(args))