diff --git a/Globals.py b/Globals.py index 91d5298..dc342cd 100644 --- a/Globals.py +++ b/Globals.py @@ -8,4 +8,4 @@ config_man = ConfigManager() -version_string = '1.0.0' +version_string = '1.0.1' diff --git a/libs/hardware/PiHubHardware.py b/libs/hardware/PiHubHardware.py index 174ee65..0f36e6a 100644 --- a/libs/hardware/PiHubHardware.py +++ b/libs/hardware/PiHubHardware.py @@ -62,4 +62,4 @@ def wait_for_internet_infinite(): # No internet connection... Try to reboot the cellular network PiHubHardware.reset_cellular_network() time.sleep(60) # Wait 60 seconds to see if network is coming back online or not - logging.info('Internet is back. All is fine.') \ No newline at end of file + logging.info('Internet is back. All is fine.') diff --git a/libs/servers/BedServer.py b/libs/servers/BedServer.py index 6f00743..9f6a6b5 100644 --- a/libs/servers/BedServer.py +++ b/libs/servers/BedServer.py @@ -15,6 +15,7 @@ import threading import os +import socket class BedServer(BaseServer): @@ -63,7 +64,7 @@ def run(self): logging.critical(str(e)) return - self.server.timeout = 10.0 + # self.server.timeout = 10.0 self.is_running = True logging.info("BedServer started on port " + str(self.port)) try: @@ -115,6 +116,7 @@ def handle(self) -> None: # Loop to transfer data (2 bytes at a time - UINT16 are read from RAM and transmitted by ESP logging.info('Starting data transfer...') + self.request.settimeout(10) while self.connection: try: d1minidata = self.request.recv(2) # self.rfile.read(2) @@ -123,9 +125,16 @@ def handle(self) -> None: else: x = int.from_bytes(d1minidata, byteorder='little', signed=False) file.write(str(x) + "\t") - except TimeoutError as e: - self.rfile.close() + except (socket.timeout, TimeoutError, ConnectionResetError, ConnectionAbortedError, ConnectionError): logging.error("Timeout receiving data.") + # self.request.settimeout(1.0) + # while 1: + # try: + # self.request.recv(1) # Clear all pending bytes, if available. + # except (TimeoutError, ConnectionResetError, ConnectionAbortedError, ConnectionError): + # break + self.rfile.close() + # logging.error("Remote stream closed") break logging.info("Data transfer complete.") file.write("\n") @@ -136,7 +145,8 @@ def handle(self) -> None: file_server_path = file_server_directory + "/" + str(datetime.now().date()) + ".txt" temp_file = self.data_path + "/local_only/" + str(greetings) + "/tempData.txt" file_transferred_directory = self.data_path + "/transferred/" + str(greetings) - logging.info("try to create " + file_transferred_directory + str(not os.path.isdir(file_transferred_directory))) + logging.info("Try to create " + file_transferred_directory + ", dir exists = " + + str(not os.path.isdir(file_transferred_directory))) if not os.path.isdir(file_transferred_directory): makedirs(file_transferred_directory) file_transferred_location = file_transferred_directory + "/" + str(datetime.now().date()) + ".txt" diff --git a/piHub.py b/piHub.py index e3a96d7..76dcba1 100644 --- a/piHub.py +++ b/piHub.py @@ -6,6 +6,7 @@ ################################################## import time import logging +import sys from libs.config.ConfigManager import ConfigManager from libs.servers.BedServer import BedServer @@ -14,6 +15,18 @@ from Globals import version_string + +def handle_exception(exc_type, exc_value, exc_traceback): + if issubclass(exc_type, KeyboardInterrupt): + sys.__excepthook__(exc_type, exc_value, exc_traceback) + return + + logging.critical("Uncaught exception", exc_info=(exc_type, exc_value, exc_traceback)) + + +sys.excepthook = handle_exception + + if __name__ == '__main__': # Logging module ################