-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMothHub.py
100 lines (78 loc) · 3.17 KB
/
MothHub.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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
from threading import Thread
import logging as log
from paho.mqtt import client as mqtt_client
from time import sleep
import argparse
import asyncio
import sys
import os
from modules.gps import GPS
from modules.imu import IMU
from modules.local_archiving import Database as Local_DB
from modules.mqtt_utils import DEFAULT_BROKER, DEFAULT_PORT
from modules.anemometer2 import Anemometer
from modules.anemometer2 import Anemometer
def isMQTTBrokerUp(broker: str = DEFAULT_BROKER, port: int = DEFAULT_PORT):
broker_up = False
def on_connect(client: mqtt_client.Client, userdata, result):
log.info(f"{userdata}, {result}")
nonlocal broker_up #use the parent's variable
broker_up = True
try:
cl = mqtt_client.Client(client_id=None, clean_session=True, reconnect_on_failure=False)
cl.on_connect = on_connect
cl.connect(broker, port)
sleep(2)
cl.disconnect()
except Exception as e:
log.warning(f"Broker not found at {broker}:{port}, cause by exception:")
log.warning(f"{e}")
exit(1)
return broker_up
def main():
#argParser = argparse.ArgumentParser()
#argParser.add_argument('-b', '--broker', type=str, help="The MQTT broker's IP address (string)", default=DEFAULT_BROKER, required=False)
#argParser.add_argument('-b', '--broker', type=str, help="The MQTT broker's IP address (string)", default=DEFAULT_BROKER, required=False)
#argParser.add_argument('-p', '--port', type=int, help="The MQTT broker's port. (int)", default=DEFAULT_PORT, required=False)
#argParser.add_argument('-v', '--verbose', help="Print debug outputs", required=False, action='store_true')
#argParser.add_argument('-s', '--silent', help="Print only warn and errors", required=False, action='store_true')
#args = argParser.parse_args()
#if args.verbose:
# log.basicConfig(level=log.DEBUG)
#elif args.silent:
# log.basicConfig(level=log.WARNING)
#else:
# log.basicConfig(level=log.INFO)
#log.info("Checking for MQTT Broker...")
# TODO: fix
#if not isMQTTBrokerUp(args.broker, args.port):
# log.warning(f"No MQTT broker found at {args.broker}:{args.port}, exiting.")
# exit(1)
log.info("Broker found, Starting HUB...")
user_input = 1
while True:
gps = GPS("HUB GPS")
imu = IMU("HUB IMU")
#anemo = Anemometer("Calypso Mini")
local_DB = Local_DB("rafale3_local_archive") #Autostarts
print("database demarrer")
gps_thread = Thread(target=gps.run)
imu_thread = Thread(target=imu.run)
#anemo_thread = Thread(target=asyncio.run, args=(anemo.run(),))
gps_thread.start()
imu_thread.start()
#sleep(5)
user_input = input("Ecrire stop pour arreter:")
#print(user_input)
if user_input == 'stop':
#local_DB._handle_termination()
#local_DB.exit_gracefully()
#print("should exit")
os._exit(0)
#anemo_thread.start()
#log.info("Threads started. Waiting end...")
#gps_thread.join()
#imu_thread.join()
# anemo_thread.join()
if __name__ == "__main__":
main()