From 821464498b8a91b321703ddb6e13a5d4f42b3e06 Mon Sep 17 00:00:00 2001 From: PrabhanshuAttri Date: Wed, 1 Apr 2020 15:10:32 -0400 Subject: [PATCH 01/13] Added radio_transeiver class --- hardware/CommunicationsPi/lan_server.py | 2 +- .../CommunicationsPi/radio_transceiver.py | 46 +++++++++++++++++++ 2 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 hardware/CommunicationsPi/radio_transceiver.py diff --git a/hardware/CommunicationsPi/lan_server.py b/hardware/CommunicationsPi/lan_server.py index e49f35b1..62564a48 100644 --- a/hardware/CommunicationsPi/lan_server.py +++ b/hardware/CommunicationsPi/lan_server.py @@ -42,7 +42,7 @@ def run(server_class=HTTPServer, handler_class=S, port=8080): logging.basicConfig(level=logging.INFO) server_address = ("", port) httpd = server_class(server_address, handler_class) - logging.info("Starting httpd...\n") + log.info("Starting httpd...\n") try: httpd.serve_forever() except KeyboardInterrupt: diff --git a/hardware/CommunicationsPi/radio_transceiver.py b/hardware/CommunicationsPi/radio_transceiver.py new file mode 100644 index 00000000..272baab3 --- /dev/null +++ b/hardware/CommunicationsPi/radio_transceiver.py @@ -0,0 +1,46 @@ +import os +import time +import serial +import json + +from utils import get_logger, get_serial_stream +class Transceiver: + def __init__(self, log_file_name=None, port=None): + if log_file_name is None: + self.logging = get_logger("TRANSMITTER_LOG_FILE") + else: + self.logging = get_logger(log_file_name) + + port = os.environ["RADIO_TRANSMITTER_PORT"] if port is None else port + baudrate=9600, + parity=serial.PARITY_NONE, + stopbits=serial.STOPBITS_ONE, + bytesize=serial.EIGHTBITS, + timeout=1, + + self.logging.info("Opening serial") + self.serial = serial.Serial( + port=port, + baudrate=baudrate, + parity=parity, + stopbits=stopbits, + bytesize=bytesize, + timeout=1, + ) + + + def send(self, payload): + self.logging.info("sending") + self.serial.write(get_serial_stream(payload)) + self.logging.info(payload) + + def listen(self): + payload = self.serial.readline().decode("utf-8") + message = 'Error: Check logs' + if payload is not "": + try: + message = json.loads(payload) + self.logging.info(message) + except json.JSONDecodeError: + logging.error(json.JSONDecodeError) + return message From 4afeda48257b75f03b006bf365d6e553d62d8272 Mon Sep 17 00:00:00 2001 From: PrabhanshuAttri Date: Wed, 1 Apr 2020 15:11:09 -0400 Subject: [PATCH 02/13] Removed redundant code --- hardware/CommunicationsPi/serial_read.py | 27 ---------------------- hardware/CommunicationsPi/serial_write.py | 28 ----------------------- 2 files changed, 55 deletions(-) delete mode 100644 hardware/CommunicationsPi/serial_read.py delete mode 100644 hardware/CommunicationsPi/serial_write.py diff --git a/hardware/CommunicationsPi/serial_read.py b/hardware/CommunicationsPi/serial_read.py deleted file mode 100644 index e299fe5c..00000000 --- a/hardware/CommunicationsPi/serial_read.py +++ /dev/null @@ -1,27 +0,0 @@ -import os -import json -import serial -from utils import get_logger - -logging = get_logger("RECEIVER_LOG_FILE") - -logging.info("Opening serial") -ser = serial.Serial( - port=os.environ["RADIO_RECEIVER_PORT"], - baudrate=9600, - parity=serial.PARITY_NONE, - stopbits=serial.STOPBITS_ONE, - bytesize=serial.EIGHTBITS, - timeout=1, -) - -logging.info("listening") -while 1: - x = ser.readline().decode("utf-8") - if x != "": - try: - message = json.loads(x) - logging.info(message) - print(message["value"]["value_c_name"]) # indexes into JSON message - except json.JSONDecodeError: - logging.error(message) diff --git a/hardware/CommunicationsPi/serial_write.py b/hardware/CommunicationsPi/serial_write.py deleted file mode 100644 index ba5f29ae..00000000 --- a/hardware/CommunicationsPi/serial_write.py +++ /dev/null @@ -1,28 +0,0 @@ -import os -import time -import serial - -from utils import get_logger, get_serial_stream - -logging = get_logger("TRANSMITTER_LOG_FILE") - -logging.info("Opening serial") -ser = serial.Serial( - port=os.environ["RADIO_TRANSMITTER_PORT"], - baudrate=9600, - parity=serial.PARITY_NONE, - stopbits=serial.STOPBITS_ONE, - bytesize=serial.EIGHTBITS, - timeout=1, -) - -logging.info("sending") - -while 1: - message = { - "id": 5, - "value": {"value_a_name": 15.0, "value_b_name": 26.5, "value_c_name": 13.3}, - } - ser.write(get_serial_stream(message)) - logging.info(message) - time.sleep(1) From f83ea1123dd3623587f0e2a3b61bf0f285e6bb12 Mon Sep 17 00:00:00 2001 From: PrabhanshuAttri Date: Wed, 1 Apr 2020 15:14:09 -0400 Subject: [PATCH 03/13] import fixes --- hardware/CommunicationsPi/radio_transceiver.py | 11 ++++++----- hardware/CommunicationsPi/utils.py | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/hardware/CommunicationsPi/radio_transceiver.py b/hardware/CommunicationsPi/radio_transceiver.py index 272baab3..a645c570 100644 --- a/hardware/CommunicationsPi/radio_transceiver.py +++ b/hardware/CommunicationsPi/radio_transceiver.py @@ -4,6 +4,7 @@ import json from utils import get_logger, get_serial_stream + class Transceiver: def __init__(self, log_file_name=None, port=None): if log_file_name is None: @@ -12,11 +13,11 @@ def __init__(self, log_file_name=None, port=None): self.logging = get_logger(log_file_name) port = os.environ["RADIO_TRANSMITTER_PORT"] if port is None else port - baudrate=9600, - parity=serial.PARITY_NONE, - stopbits=serial.STOPBITS_ONE, - bytesize=serial.EIGHTBITS, - timeout=1, + baudrate=9600 + parity=serial.PARITY_NONE + stopbits=serial.STOPBITS_ONE + bytesize=serial.EIGHTBITS + timeout=1 self.logging.info("Opening serial") self.serial = serial.Serial( diff --git a/hardware/CommunicationsPi/utils.py b/hardware/CommunicationsPi/utils.py index ff83b53f..a6f1af65 100644 --- a/hardware/CommunicationsPi/utils.py +++ b/hardware/CommunicationsPi/utils.py @@ -1,6 +1,6 @@ import os import json -from .logger import Logger +from logger import Logger def get_serial_stream(s): From c502cfb514a868434453d8ec3f985a5471cedd59 Mon Sep 17 00:00:00 2001 From: PrabhanshuAttri Date: Wed, 1 Apr 2020 15:15:16 -0400 Subject: [PATCH 04/13] Fixed formatting --- .../CommunicationsPi/radio_transceiver.py | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/hardware/CommunicationsPi/radio_transceiver.py b/hardware/CommunicationsPi/radio_transceiver.py index a645c570..0e22ba33 100644 --- a/hardware/CommunicationsPi/radio_transceiver.py +++ b/hardware/CommunicationsPi/radio_transceiver.py @@ -5,6 +5,7 @@ from utils import get_logger, get_serial_stream + class Transceiver: def __init__(self, log_file_name=None, port=None): if log_file_name is None: @@ -13,22 +14,21 @@ def __init__(self, log_file_name=None, port=None): self.logging = get_logger(log_file_name) port = os.environ["RADIO_TRANSMITTER_PORT"] if port is None else port - baudrate=9600 - parity=serial.PARITY_NONE - stopbits=serial.STOPBITS_ONE - bytesize=serial.EIGHTBITS - timeout=1 + baudrate = 9600 + parity = serial.PARITY_NONE + stopbits = serial.STOPBITS_ONE + bytesize = serial.EIGHTBITS + timeout = 1 self.logging.info("Opening serial") self.serial = serial.Serial( - port=port, - baudrate=baudrate, - parity=parity, - stopbits=stopbits, - bytesize=bytesize, - timeout=1, - ) - + port=port, + baudrate=baudrate, + parity=parity, + stopbits=stopbits, + bytesize=bytesize, + timeout=1, + ) def send(self, payload): self.logging.info("sending") @@ -37,7 +37,7 @@ def send(self, payload): def listen(self): payload = self.serial.readline().decode("utf-8") - message = 'Error: Check logs' + message = "Error: Check logs" if payload is not "": try: message = json.loads(payload) From 8baddef9d604f202c9ef6368b0696efe4db962bf Mon Sep 17 00:00:00 2001 From: PrabhanshuAttri Date: Wed, 1 Apr 2020 15:16:39 -0400 Subject: [PATCH 05/13] minor fix --- hardware/CommunicationsPi/radio_transceiver.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hardware/CommunicationsPi/radio_transceiver.py b/hardware/CommunicationsPi/radio_transceiver.py index 0e22ba33..950dad1d 100644 --- a/hardware/CommunicationsPi/radio_transceiver.py +++ b/hardware/CommunicationsPi/radio_transceiver.py @@ -27,7 +27,7 @@ def __init__(self, log_file_name=None, port=None): parity=parity, stopbits=stopbits, bytesize=bytesize, - timeout=1, + timeout=timeout, ) def send(self, payload): From 08020980115a56438390cd2b565704913280a8e4 Mon Sep 17 00:00:00 2001 From: PrabhanshuAttri Date: Wed, 1 Apr 2020 15:47:35 -0400 Subject: [PATCH 06/13] Added port searching --- .../CommunicationsPi/radio_transceiver.py | 50 +++++++++++++++++-- hardware/CommunicationsPi/utils.py | 6 ++- 2 files changed, 50 insertions(+), 6 deletions(-) diff --git a/hardware/CommunicationsPi/radio_transceiver.py b/hardware/CommunicationsPi/radio_transceiver.py index 950dad1d..cf230a02 100644 --- a/hardware/CommunicationsPi/radio_transceiver.py +++ b/hardware/CommunicationsPi/radio_transceiver.py @@ -2,6 +2,7 @@ import time import serial import json +import serial.tools.list_ports from utils import get_logger, get_serial_stream @@ -11,18 +12,27 @@ def __init__(self, log_file_name=None, port=None): if log_file_name is None: self.logging = get_logger("TRANSMITTER_LOG_FILE") else: - self.logging = get_logger(log_file_name) + self.logging = get_logger(log_file_name, log_file_name) + + self.port = os.environ["RADIO_TRANSMITTER_PORT"] if port is None else port + + if not self.port: + self.port_vid = None + self.port_pid = None + self.port_vendor = None + self.port_intf = None + self.port_serial_number = None + self.find_port() - port = os.environ["RADIO_TRANSMITTER_PORT"] if port is None else port baudrate = 9600 parity = serial.PARITY_NONE stopbits = serial.STOPBITS_ONE bytesize = serial.EIGHTBITS timeout = 1 - self.logging.info("Opening serial") + self.logging.info("Opening serial on: " + str(self.port)) self.serial = serial.Serial( - port=port, + port=self.port, baudrate=baudrate, parity=parity, stopbits=stopbits, @@ -30,6 +40,38 @@ def __init__(self, log_file_name=None, port=None): timeout=timeout, ) + + def find_port(self): + for port in serial.tools.list_ports.comports(): + if self.is_usb_serial(port): + print(port) + print('D', port.device) + self.port = port.device + return + + return + + + def is_usb_serial(self, port): + if port.vid is None: + return False + if not self.port_vid is None: + if port.vid != self.port_vid: + return False + if not self.port_pid is None: + if port.pid != self.port_pid: + return False + if not self.port_vendor is None: + if not port.manufacturer.startswith(self.port_vendor): + return False + if not self.port_serial_number is None: + if not port.serial_number.startswith(self.port_serial_number): + return False + if not self.port_intf is None: + if port.interface is None or not self.port_intf in port.interface: + return False + return True + def send(self, payload): self.logging.info("sending") self.serial.write(get_serial_stream(payload)) diff --git a/hardware/CommunicationsPi/utils.py b/hardware/CommunicationsPi/utils.py index a6f1af65..649434c7 100644 --- a/hardware/CommunicationsPi/utils.py +++ b/hardware/CommunicationsPi/utils.py @@ -7,6 +7,8 @@ def get_serial_stream(s): return (json.dumps(s) + "\n").encode() -def get_logger(key): - logger = Logger(name=key, filename=os.environ[key]) +def get_logger(key, file_name=None): + if file_name is None: + file_name = key + logger = Logger(name=key, filename=os.environ[file_name]) return logger From a2141139947956a831b6b84f1d678419f348daa3 Mon Sep 17 00:00:00 2001 From: PrabhanshuAttri Date: Wed, 1 Apr 2020 16:01:29 -0400 Subject: [PATCH 07/13] fixed errors --- hardware/CommunicationsPi/radio_transceiver.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/hardware/CommunicationsPi/radio_transceiver.py b/hardware/CommunicationsPi/radio_transceiver.py index 950dad1d..9690b596 100644 --- a/hardware/CommunicationsPi/radio_transceiver.py +++ b/hardware/CommunicationsPi/radio_transceiver.py @@ -1,5 +1,4 @@ import os -import time import serial import json @@ -38,10 +37,10 @@ def send(self, payload): def listen(self): payload = self.serial.readline().decode("utf-8") message = "Error: Check logs" - if payload is not "": + if payload != "": try: message = json.loads(payload) self.logging.info(message) except json.JSONDecodeError: - logging.error(json.JSONDecodeError) + self.logging.error(json.JSONDecodeError) return message From da31e342301036114e84ac75bf3f4b07be1d91eb Mon Sep 17 00:00:00 2001 From: Yashasvi Dadhe Date: Wed, 1 Apr 2020 16:17:01 -0400 Subject: [PATCH 08/13] Added LAN client and server module --- hardware/CommunicationsPi/lan_client.py | 46 +++++++++++++------ hardware/CommunicationsPi/lan_server.py | 48 ++++++++++---------- hardware/CommunicationsPi/test_lan_client.py | 10 ++++ hardware/CommunicationsPi/test_lan_server.py | 8 ++++ hardware/CommunicationsPi/utils.py | 2 +- 5 files changed, 75 insertions(+), 39 deletions(-) create mode 100644 hardware/CommunicationsPi/test_lan_client.py create mode 100644 hardware/CommunicationsPi/test_lan_server.py diff --git a/hardware/CommunicationsPi/lan_client.py b/hardware/CommunicationsPi/lan_client.py index 05c37a4e..eb95f4bc 100644 --- a/hardware/CommunicationsPi/lan_client.py +++ b/hardware/CommunicationsPi/lan_client.py @@ -5,20 +5,36 @@ from requests.exceptions import HTTPError from utils import get_logger -logging = get_logger("LAN_CLIENT_LOG_FILE") -url = os.environ["LAN_SERVER"] +class LANClient: + def __init__(self, log_file_name=None, lan_server_url=None): + if log_file_name is None: + self.logging = get_logger("LAN_CLIENT_LOG_FILE") + else: + self.logging = log_file_name + if lan_server_url is None: + self.url = os.environ["LAN_SERVER"] + else: + self.url = lan_server_url -logging.info("Pinging") -while True: - try: - payload = {"key1": "value1", "key2": "value2"} - logging.info("data: " + json.dumps(payload)) - response = requests.post(url, data=payload) - response.raise_for_status() - except HTTPError as http_err: - logging.error("HTTP error occurred: {}".format(str(http_err))) - except Exception as err: - logging.error("error occurred: {}".format(str(err))) - else: - time.sleep(1) + # Function to ping the LAN server + # Accepts payload as a python dictionary + def ping_lan_server(self, payload): + + self.logging.info("Pinging") + + try: + # payload = {"key1": "value1", "key2": "value2"} + self.logging.info("data: " + json.dumps(payload)) + response = requests.post(self.url, data=payload) + response.raise_for_status() + return response + + except HTTPError as http_err: + self.logging.error("HTTP error occurred: {}".format(str(http_err))) + # re-raised so that it can be handled further up the call stack + raise + + except Exception as err: + self.logging.error("error occurred: {}".format(str(err))) + raise diff --git a/hardware/CommunicationsPi/lan_server.py b/hardware/CommunicationsPi/lan_server.py index e49f35b1..86a74d37 100644 --- a/hardware/CommunicationsPi/lan_server.py +++ b/hardware/CommunicationsPi/lan_server.py @@ -1,36 +1,40 @@ #!/usr/bin/env python3 from http.server import BaseHTTPRequestHandler, HTTPServer -import logging from utils import get_logger -# Logs status in a file log = get_logger("LAN_SERVER_LOG_FILE") -class S(BaseHTTPRequestHandler): +class Server(BaseHTTPRequestHandler): def _set_response(self): self.send_response(200) self.send_header("Content-type", "text/html") self.end_headers() def do_GET(self): - logging.info( - "GET request,\nPath: %s\nHeaders:\n%s\n", str(self.path), str(self.headers) + global log + + log.info( + "GET request,\nPath: %s\nHeaders:\n%s\n" + + str(self.path) + + str(self.headers) ) self._set_response() self.wfile.write("GET request for {}".format(self.path).encode("utf-8")) def do_POST(self): + global log + content_length = int( self.headers["Content-Length"] ) # <--- Gets the size of data post_data = self.rfile.read(content_length) # <--- Gets the data itself - logging.info( - "POST request,\nPath: %s\nHeaders:\n%s\n\nBody:\n%s\n", - str(self.path), - str(self.headers), - post_data.decode("utf-8"), + log.info( + "POST request,\nPath: %s\nHeaders:\n%s\n\nBody:\n%s\n" + + str(self.path) + + str(self.headers) + + post_data.decode("utf-8") ) log.info("data: " + str(post_data)) @@ -38,23 +42,21 @@ def do_POST(self): self.wfile.write("POST request for {}".format(self.path).encode("utf-8")) -def run(server_class=HTTPServer, handler_class=S, port=8080): - logging.basicConfig(level=logging.INFO) +def run(server_class=HTTPServer, handler_class=Server, log_file_name=None, port=8080): + + global log + + if log_file_name is not None: + log = get_logger(log_file_name) + server_address = ("", port) httpd = server_class(server_address, handler_class) - logging.info("Starting httpd...\n") + log.info("Starting httpd...\n") + try: httpd.serve_forever() except KeyboardInterrupt: pass - httpd.server_close() - logging.info("Stopping httpd...\n") - -if __name__ == "__main__": - from sys import argv - - if len(argv) == 2: - run(port=int(argv[1])) - else: - run() + httpd.server_close() + log.info("Stopping httpd...\n") diff --git a/hardware/CommunicationsPi/test_lan_client.py b/hardware/CommunicationsPi/test_lan_client.py new file mode 100644 index 00000000..86541192 --- /dev/null +++ b/hardware/CommunicationsPi/test_lan_client.py @@ -0,0 +1,10 @@ +from sys import argv +import lan_server_class + +if __name__ == "__main__": + + if len(argv) == 2: + # log_file_name and port are configurable for lan_server + lan_server_class.run(port=int(argv[1])) + else: + lan_server_class.run() diff --git a/hardware/CommunicationsPi/test_lan_server.py b/hardware/CommunicationsPi/test_lan_server.py new file mode 100644 index 00000000..28e44aca --- /dev/null +++ b/hardware/CommunicationsPi/test_lan_server.py @@ -0,0 +1,8 @@ +import lan_client_class + +if __name__ == "__main__": + + # log_file_name and lan_server_url are configurable for lan_client + client = lan_client_class.LANClient() + sample_payload = {"key1": "value1", "key2": "value2"} + client.ping_lan_server(sample_payload) diff --git a/hardware/CommunicationsPi/utils.py b/hardware/CommunicationsPi/utils.py index ff83b53f..a6f1af65 100644 --- a/hardware/CommunicationsPi/utils.py +++ b/hardware/CommunicationsPi/utils.py @@ -1,6 +1,6 @@ import os import json -from .logger import Logger +from logger import Logger def get_serial_stream(s): From ae6d64ed60bc305ba5ed4ff80e574335b27589d8 Mon Sep 17 00:00:00 2001 From: PrabhanshuAttri Date: Wed, 1 Apr 2020 16:24:09 -0400 Subject: [PATCH 09/13] Added import fix --- hardware/CommunicationsPi/radio_transceiver.py | 2 +- hardware/CommunicationsPi/utils.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/hardware/CommunicationsPi/radio_transceiver.py b/hardware/CommunicationsPi/radio_transceiver.py index 9690b596..59d77741 100644 --- a/hardware/CommunicationsPi/radio_transceiver.py +++ b/hardware/CommunicationsPi/radio_transceiver.py @@ -2,7 +2,7 @@ import serial import json -from utils import get_logger, get_serial_stream +from .utils import get_logger, get_serial_stream class Transceiver: diff --git a/hardware/CommunicationsPi/utils.py b/hardware/CommunicationsPi/utils.py index a6f1af65..ff83b53f 100644 --- a/hardware/CommunicationsPi/utils.py +++ b/hardware/CommunicationsPi/utils.py @@ -1,6 +1,6 @@ import os import json -from logger import Logger +from .logger import Logger def get_serial_stream(s): From fd3883fb0e5137b23ed16e6abcf1e4cd79fcf9eb Mon Sep 17 00:00:00 2001 From: PrabhanshuAttri Date: Wed, 1 Apr 2020 16:33:26 -0400 Subject: [PATCH 10/13] Fixed formatting and logging --- hardware/CommunicationsPi/radio_transceiver.py | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/hardware/CommunicationsPi/radio_transceiver.py b/hardware/CommunicationsPi/radio_transceiver.py index d7ce70bd..c42a21d0 100644 --- a/hardware/CommunicationsPi/radio_transceiver.py +++ b/hardware/CommunicationsPi/radio_transceiver.py @@ -39,35 +39,32 @@ def __init__(self, log_file_name=None, port=None): timeout=timeout, ) - def find_port(self): for port in serial.tools.list_ports.comports(): if self.is_usb_serial(port): - print(port) - print('D', port.device) + self.logging.info("Port device found: " + str(port.device)) self.port = port.device return return - def is_usb_serial(self, port): if port.vid is None: return False - if not self.port_vid is None: + if self.port_vid is not None: if port.vid != self.port_vid: return False - if not self.port_pid is None: + if self.port_pid is not None: if port.pid != self.port_pid: return False - if not self.port_vendor is None: + if self.port_vendor is not None: if not port.manufacturer.startswith(self.port_vendor): return False - if not self.port_serial_number is None: + if self.port_serial_number is not None: if not port.serial_number.startswith(self.port_serial_number): return False - if not self.port_intf is None: - if port.interface is None or not self.port_intf in port.interface: + if self.port_intf is not None: + if port.interface is None or self.port_intf not in port.interface: return False return True From f3988e52f4ef1139c677a5fe0cd02378d3b4e429 Mon Sep 17 00:00:00 2001 From: PrabhanshuAttri Date: Wed, 1 Apr 2020 16:39:57 -0400 Subject: [PATCH 11/13] flake fix --- hardware/CommunicationsPi/lan_client.py | 1 - 1 file changed, 1 deletion(-) diff --git a/hardware/CommunicationsPi/lan_client.py b/hardware/CommunicationsPi/lan_client.py index eb95f4bc..914a8561 100644 --- a/hardware/CommunicationsPi/lan_client.py +++ b/hardware/CommunicationsPi/lan_client.py @@ -1,5 +1,4 @@ import os -import time import json import requests from requests.exceptions import HTTPError From e02475833be4745a1e529111485d8d58cd659093 Mon Sep 17 00:00:00 2001 From: PrabhanshuAttri Date: Wed, 1 Apr 2020 17:18:05 -0400 Subject: [PATCH 12/13] Added env support and customisability --- hardware/CommunicationsPi/lan_client.py | 11 ++++++++--- hardware/CommunicationsPi/lan_server.py | 19 +++++++++++-------- hardware/CommunicationsPi/utils.py | 2 +- hardware/env | 3 ++- 4 files changed, 22 insertions(+), 13 deletions(-) diff --git a/hardware/CommunicationsPi/lan_client.py b/hardware/CommunicationsPi/lan_client.py index 914a8561..5230d9a3 100644 --- a/hardware/CommunicationsPi/lan_client.py +++ b/hardware/CommunicationsPi/lan_client.py @@ -2,7 +2,7 @@ import json import requests from requests.exceptions import HTTPError -from utils import get_logger +from .utils import get_logger class LANClient: @@ -11,15 +11,20 @@ def __init__(self, log_file_name=None, lan_server_url=None): self.logging = get_logger("LAN_CLIENT_LOG_FILE") else: self.logging = log_file_name + if lan_server_url is None: - self.url = os.environ["LAN_SERVER"] + self.url = self.get_server_url_from_env() else: self.url = lan_server_url + def get_server_url_from_env(self): + ip = os.environ["LAN_SERVER_IP"] + port = os.environ["LAN_PORT"] + return "http://{}:{}".format(ip, port) + # Function to ping the LAN server # Accepts payload as a python dictionary def ping_lan_server(self, payload): - self.logging.info("Pinging") try: diff --git a/hardware/CommunicationsPi/lan_server.py b/hardware/CommunicationsPi/lan_server.py index c0f4742f..4aba8a75 100644 --- a/hardware/CommunicationsPi/lan_server.py +++ b/hardware/CommunicationsPi/lan_server.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 - +import os from http.server import BaseHTTPRequestHandler, HTTPServer -from utils import get_logger +from .utils import get_logger log = get_logger("LAN_SERVER_LOG_FILE") @@ -42,20 +42,23 @@ def do_POST(self): self.wfile.write("POST request for {}".format(self.path).encode("utf-8")) -def run(server_class=HTTPServer, handler_class=Server, log_file_name=None, port=8080): - +def run(server_class=HTTPServer, handler_class=Server, log_file_name=None, port=None): global log + log = ( + get_logger("LAN_SERVER_LOG_FILE") + if log_file_name is None + else get_logger(log_file_name, log_file_name) + ) - if log_file_name is not None: - log = get_logger(log_file_name) + port = int(os.environ["LAN_PORT"]) if port is None else port server_address = ("", port) httpd = server_class(server_address, handler_class) - log.info("Starting httpd...\n") + log.info("Starting server on port: " + str(port)) try: httpd.serve_forever() except KeyboardInterrupt: pass httpd.server_close() - log.info("Stopping httpd...\n") + log.info("Stopping\n") diff --git a/hardware/CommunicationsPi/utils.py b/hardware/CommunicationsPi/utils.py index a6f1af65..ff83b53f 100644 --- a/hardware/CommunicationsPi/utils.py +++ b/hardware/CommunicationsPi/utils.py @@ -1,6 +1,6 @@ import os import json -from logger import Logger +from .logger import Logger def get_serial_stream(s): diff --git a/hardware/env b/hardware/env index 506728be..eff74c1d 100644 --- a/hardware/env +++ b/hardware/env @@ -1,6 +1,7 @@ RADIO_TRANSMITTER_PORT=/dev/ttyUSB0 RADIO_RECEIVER_PORT=/dev/ttyUSB0 -LAN_SERVER=http://169.254.187.204:1234 +LAN_SERVER_IP=192.168.8.193 +LAN_PORT=3322 LOG_DIRECTORY=logs TRANSMITTER_LOG_FILE=transmitter.log RECEIVER_LOG_FILE=receiver.log From d9e05d6da2ea4199ad59efa92ec0bf3cb1f15a9b Mon Sep 17 00:00:00 2001 From: PrabhanshuAttri Date: Wed, 1 Apr 2020 17:18:38 -0400 Subject: [PATCH 13/13] removed old tests --- hardware/CommunicationsPi/test_lan_client.py | 10 ---------- hardware/CommunicationsPi/test_lan_server.py | 8 -------- 2 files changed, 18 deletions(-) delete mode 100644 hardware/CommunicationsPi/test_lan_client.py delete mode 100644 hardware/CommunicationsPi/test_lan_server.py diff --git a/hardware/CommunicationsPi/test_lan_client.py b/hardware/CommunicationsPi/test_lan_client.py deleted file mode 100644 index 86541192..00000000 --- a/hardware/CommunicationsPi/test_lan_client.py +++ /dev/null @@ -1,10 +0,0 @@ -from sys import argv -import lan_server_class - -if __name__ == "__main__": - - if len(argv) == 2: - # log_file_name and port are configurable for lan_server - lan_server_class.run(port=int(argv[1])) - else: - lan_server_class.run() diff --git a/hardware/CommunicationsPi/test_lan_server.py b/hardware/CommunicationsPi/test_lan_server.py deleted file mode 100644 index 28e44aca..00000000 --- a/hardware/CommunicationsPi/test_lan_server.py +++ /dev/null @@ -1,8 +0,0 @@ -import lan_client_class - -if __name__ == "__main__": - - # log_file_name and lan_server_url are configurable for lan_client - client = lan_client_class.LANClient() - sample_payload = {"key1": "value1", "key2": "value2"} - client.ping_lan_server(sample_payload)