Compare commits

..

2 Commits

Author SHA1 Message Date
Lukas Prause
2239911bc0 Merge branch 'master' of ssh://git.black-mesa.xyz:434/langspielplatte/measurement-scripts 2022-12-06 16:30:52 +01:00
Lukas Prause
ccfd3c3d06 Adds a new handling for reconnects. 2022-12-06 16:30:42 +01:00
2 changed files with 86 additions and 47 deletions

View File

@@ -28,6 +28,9 @@ CMD_TIME_EPOCH = "date +%s"
TIMEOUT_OFFSET = 10.0 TIMEOUT_OFFSET = 10.0
WAIT_AFTER_IPERF = 5.0 WAIT_AFTER_IPERF = 5.0
modem_serial_obj = None
gps_serial_obj = None
class ProcessHandler: class ProcessHandler:
def __init__(self): def __init__(self):
@@ -243,6 +246,53 @@ def monitor_serial(ser, output_file):
return return
def start_serial_monitoring(serial, baudrate, folder, prefix):
global modem_serial_obj
print_message("Opening serial port for {}".format(serial))
modem_serial_obj = serial.Serial(
port=serial,
baudrate=baudrate,
)
modem_serial_obj.isOpen()
ser_filepath = "{}{}_serial_monitor_output.txt".format(
folder, prefix
)
ser_thread = Thread(
target=monitor_serial,
args=(
modem_serial_obj,
ser_filepath,
),
)
ser_thread.start()
def is_serial_monitoring_running():
return modem_serial_obj.is_open
def start_gps_monitoring(gps, baudrate, folder, prefix):
global gps_serial_obj
print_message("Opening GPS serial port for {}".format(gps))
gps_serial_obj = serial.Serial(
gps,
baudrate=baudrate,
)
gps_ser_filepath = "{}{}_gps.nmea".format(
folder, prefix
)
gps_ser_thread = Thread(
target=monitor_gps,
args=(
gps_serial_obj,
gps_ser_filepath,
),
)
gps_ser_thread.start()
def monitor_gps(ser, output_file): def monitor_gps(ser, output_file):
ser.flushInput() ser.flushInput()
ser.flushOutput() ser.flushOutput()
@@ -270,11 +320,19 @@ def connect_moden(provider="telekom"):
print_message("...done") print_message("...done")
def reconnect_modem(provider="telekom"): def reconnect_modem(provider="telekom", hard=False):
global modem_serial_obj
print_message("Reonnect modem with provider {} ...".format(provider)) print_message("Reonnect modem with provider {} ...".format(provider))
os.system("/root/connect-modem.py -s") if hard:
sleep(5) if modem_serial_obj.is_open:
os.system("/root/connect-modem.py -l {}".format(provider)) modem_serial_obj.write(b'at+COPS?\r\n')
sleep(NR_SERIAL_RESPOND_TIME)
modem_serial_obj.write(b'AT+QENG="servingcell"\r\n')
sleep(NR_SERIAL_RESPOND_TIME)
else:
os.system("/root/connect-modem.py -s")
sleep(5)
os.system("/root/connect-modem.py -l {}".format(provider))
print_message("...done") print_message("...done")
@@ -538,46 +596,11 @@ class Client:
sleep(1) sleep(1)
print_message("Start measurement") print_message("Start measurement")
ser = None
if self.config["serial"] is not None: if self.config["serial"] is not None:
print_message("Opening serial port for {}".format(self.config["serial"])) start_serial_monitoring(self.config["serial"], self.config["baudrate"], self.config["folder"], self.config["prefix"])
ser = serial.Serial(
port=self.config["serial"],
baudrate=self.config["baudrate"],
)
ser.isOpen()
ser_filepath = "{}{}_serial_monitor_output.txt".format(
self.config["folder"], self.config["prefix"]
)
ser_thread = Thread(
target=monitor_serial,
args=(
ser,
ser_filepath,
),
)
ser_thread.start()
gps_ser = None
if self.config["gps"] is not None: if self.config["gps"] is not None:
print_message("Opening GPS serial port for {}".format(self.config["gps"])) start_gps_monitoring(self.config["gps"], self.config["gps_baudrate"], self.config["folder"], self.config["prefix"])
gps_ser = serial.Serial(
self.config["gps"],
baudrate=self.config["gps_baudrate"],
)
gps_ser_filepath = "{}{}_gps.nmea".format(
self.config["folder"], self.config["prefix"]
)
gps_ser_thread = Thread(
target=monitor_gps,
args=(
gps_ser,
gps_ser_filepath,
),
)
gps_ser_thread.start()
if self.config["bandwidth"]: if self.config["bandwidth"]:
self.bandwidth() self.bandwidth()
@@ -592,14 +615,14 @@ class Client:
elif self.config["ping"]: elif self.config["ping"]:
self.ping() self.ping()
if ser is not None: if modem_serial_obj is not None:
print_message("Closing serial port...") print_message("Closing serial port...")
ser.close() modem_serial_obj.close()
sleep(2) sleep(2)
print_message("done...") print_message("done...")
if gps_ser is not None: if gps_serial_obj is not None:
print_message("Closing GPS serial port...") print_message("Closing GPS serial port...")
gps_ser.close() gps_serial_obj.close()
sleep(2) sleep(2)
print_message("done...") print_message("done...")
@@ -767,6 +790,7 @@ class Client:
ws_filter = "{} and port {}".format("tcp", self.config["port"]) ws_filter = "{} and port {}".format("tcp", self.config["port"])
print_message("Use ws filter: {}".format(ws_filter)) print_message("Use ws filter: {}".format(ws_filter))
for n in range(1, self.config["number_of_measurements"] + 1): for n in range(1, self.config["number_of_measurements"] + 1):
reconnect_count = 0
if not is_modem_connected(): if not is_modem_connected():
background_write_to_file( background_write_to_file(
filepath="{}{}_reconnect.log".format( filepath="{}{}_reconnect.log".format(
@@ -775,6 +799,9 @@ class Client:
content='{}\n'.format(datetime.timestamp(datetime.now())), content='{}\n'.format(datetime.timestamp(datetime.now())),
) )
reconnect_modem() reconnect_modem()
sleep(2)
if not is_serial_monitoring_running():
start_serial_monitoring()
print_message( print_message(
"{} of {}".format(n, self.config["number_of_measurements"]) "{} of {}".format(n, self.config["number_of_measurements"])
) )
@@ -824,7 +851,11 @@ class Client:
), ),
content='{}\n'.format(datetime.timestamp(datetime.now())), content='{}\n'.format(datetime.timestamp(datetime.now())),
) )
reconnect_modem() reconnect_modem(hard=reconnect_count > 5)
reconnect_count += 1
sleep(2)
if not is_serial_monitoring_running():
start_serial_monitoring()
try: try:
try: try:
iperf_return = subprocess.call( iperf_return = subprocess.call(
@@ -856,6 +887,7 @@ class Client:
enable_tcp_probe() enable_tcp_probe()
print_message("tcp probe is now enabled") print_message("tcp probe is now enabled")
for n in range(1, self.config["number_of_measurements"] + 1): for n in range(1, self.config["number_of_measurements"] + 1):
reconnect_count = 0
if not is_modem_connected(): if not is_modem_connected():
background_write_to_file( background_write_to_file(
filepath="{}{}_reconnect.log".format( filepath="{}{}_reconnect.log".format(
@@ -864,6 +896,9 @@ class Client:
content='{}\n'.format(datetime.timestamp(datetime.now())), content='{}\n'.format(datetime.timestamp(datetime.now())),
) )
reconnect_modem() reconnect_modem()
sleep(2)
if not is_serial_monitoring_running():
start_serial_monitoring()
print_message( print_message(
"{} of {}".format(n, self.config["number_of_measurements"]) "{} of {}".format(n, self.config["number_of_measurements"])
) )
@@ -912,7 +947,11 @@ class Client:
), ),
content='{}\n'.format(datetime.timestamp(datetime.now())), content='{}\n'.format(datetime.timestamp(datetime.now())),
) )
reconnect_modem() reconnect_modem(hard=reconnect_count > 5)
reconnect_count += 1
sleep(2)
if not is_serial_monitoring_running():
start_serial_monitoring()
try: try:
try: try:
iperf_return = subprocess.call( iperf_return = subprocess.call(

View File