Beispiel #1
0
def data_to_csv(data_obj: RadioData, filename: str = "buggydata.csv"):

    # Creating a new CSV if there doesn't exist one
    if not csv_funcs.exists_csv(filename):
        csv_funcs.create_csv_file(filename, data_obj.get_fieldnames())

    # Writing to the CSV
    csv_funcs.write_to_csv(filename, data_obj.get_data_dict())
def data_to_csv(data_obj: RadioData, filename: str):

    # Creating a new CSV if there doesn't exist one
    if not exists_csv(filename):
        create_csv_file(filename, data_obj.get_fieldnames())

    # Writing to the CSV
    # (For loop is there for testing purposes; script will only add one data row per call)
    # for i in range(5):
    write_to_csv(filename, randomize_data(data_obj.get_data_dict()))
Beispiel #3
0
def send_json(obj: RadioData):
    ser = Serial(SEND_JSON_PORT, baudrate=BAUDRATE, timeout=1)

    timestamp = datetime.now().strftime("%Y-%b-%d;%I:%M:%S:%p").split(';')
    obj.OBC_date = timestamp.pop(0)
    obj.OBC_time = timestamp.pop(0)

    data_to_send = {"data": obj.get_data_dict(), "buggy_id": obj.BUGGY_ID}

    data = json.dumps(data_to_send, cls=MyEncoder)
    ser.write(data.encode('utf-8'))
    # ser.flush()
    ser.close()
def process_data(threadID):
    arduino = serial.Serial(
        'COM5', 9600
    )  #Replace 'COM' port for 'ttyACM*some number*' when not using windows
    # Raspberry Pi sends through one port
    GPIO.setmode(GPIO.BOARD)
    decoded_data = None
    GPS_Input = GPIO.setup(8, input)

    print("Thread ID: #{} is online.\nReading data from Arduino.\n".format(
        threadID))

    #   print(arduino)
    while True:

        time.sleep(0.2)
        # data refers to direct arduino reads
        data = arduino.readline()

        # Assume 'data' is true when signal is not lost and is receiving data
        if data:
            decoded_data = data.decode("utf-8")
            cleaned_data_list, gps_data_list = parser(decoded_data, GPS_Input)
            obj = RadioData(
                cleaned_data_list, gps_data_list
            )  # Creates object of type RadioData with parsed data lists // Comment if it does not work correctly
            data_to_csv(obj,
                        "DataLog.csv")  # Comment if it does not work correctly
def setup():
    arduino = serial.Serial(
        'COM5', 9600
    )  #Replace 'COM' port for 'ttyACM*some number*' when not using windows
    GPIO.setmode(GPIO.BOARD)
    decoded_data = None
    GPS_Input = GPIO.setup(8, input)

    #   print(arduino)
    while True:
        # data refers to direct arduino reads
        data = arduino.readline()

        # We flag for signal, True = connected
        flag = True  # serial.read() # Serial read from groundstation
        # Possibly neeed to set it to the same port?
        # What happens if read doesnt read? Does it stay hanging??
        # Make sure read returns atleast garbage values and not hangs.
        # Does serial.read() read from any source?? Is there a way to make it a specific read???

        # reconnect flags for specific behavior once reconnection happens
        reconnect = False

        # Assume 'data' is true when signal is not lost and is receiving data
        if data:
            decoded_data = data.decode("utf-8")
            cleaned_data_list, gps_data_list = parser(decoded_data, GPS_Input)
            obj = RadioData(
                cleaned_data_list, gps_data_list
            )  # Creates object of type RadioData with parsed data lists // Comment if it does not work correctly
            data_to_csv(obj,
                        "DataLog.csv")  # Comment if it does not work correctly
            # Keep local CSV file that is appended so that data loss is prevented in case of signal loss.

        if flag:
            #           print(data.decode("utf-8"))

            # Prototype functionality for disconection and reconnection
            # Assuming existing functions
            if reconnect:
                # Create function "local_upload" to upload local data log
                # Implement multithreading to prevent data back ups
                # Use try-except-finally
                send_json(csv_to_json("DataLog_Local.csv"))
                reconnect = False

            #ifdef obj
            send_json(obj)  # Comment if it does not work correctly
            #endif

        else:
            reconnect = True
            # Buffer log for data collected during disconnection
            if data:
                data_to_csv(obj, "DataLog_Local.csv")
        rnd.randint(0, 100),    # strain_front_lft_3
        rnd.randint(0, 100),    # strain_front_rt_1
        rnd.randint(0, 100),    # strain_front_rt_2
        rnd.randint(0, 100),    # strain_front_rt_3
        rnd.randint(0, 100),    # strain_center_1
        rnd.randint(0, 100),    # strain_center_2
        rnd.randint(0, 100),    # strain_center_3
        rnd.randint(0, 100),    # vibration_front_lft
        rnd.randint(0, 100),    # vibration_front_rt
        rnd.randint(0, 100),    # vibration_rear_lft
        rnd.randint(0, 100),    # vibration_rear_rt
        rnd.randint(0, 100),    # vibration_center
        rnd.randint(0, 100),    # battery_status
    ]
    return data


def generate_random_positions():
    return [
        rnd.uniform(0, 100),    # latitude
        rnd.uniform(0, 100)     # longitude
    ]


if __name__ == "__main__":
    filename = "buggyData.csv"
    dataObj = RadioData(generate_random_data(), generate_random_positions())
    dataObj.OBC_date = d.today()
    dataObj.OBC_time = t.ctime().split()[3]
    data_to_csv(dataObj, filename)
Beispiel #7
0
def get_buggy_name_by_id(pk):
    return "NewBuggy" if pk == 1 else "OldBuggy"


class MyEncoder(json.JSONEncoder):
    def default(self, o):
        return o.__dict__


def send_json(obj: RadioData):
    ser = Serial(SEND_JSON_PORT, baudrate=BAUDRATE, timeout=1)

    timestamp = datetime.now().strftime("%Y-%b-%d;%I:%M:%S:%p").split(';')
    obj.OBC_date = timestamp.pop(0)
    obj.OBC_time = timestamp.pop(0)

    data_to_send = {"data": obj.get_data_dict(), "buggy_id": obj.BUGGY_ID}

    data = json.dumps(data_to_send, cls=MyEncoder)
    ser.write(data.encode('utf-8'))
    # ser.flush()
    ser.close()


if __name__ == '__main__':
    # for port in list(ports.comports()):
    #     print(port)
    dummy_obj = RadioData(generate_random_data(), generate_random_positions())
    dummy_obj.OBC_date, dummy_obj.OBC_time = datetime.now().strftime("%Y-%b-%d;%I:%M:%S:%p").split(';')
    send_json(dummy_obj)
Beispiel #8
0
import random as rnd
import time as t

from datetime import date as d
from radiodata.radiodata import RadioData
from data_to_csv import data_to_csv

date = d.today()
time = t.ctime().split()[3]
filename = "buggyData.csv"

data_list = [rnd.randint(0, 100) for i in range(15)]
gps_list = [rnd.randint(0, 100), rnd.randint(0, 100)]

dataObj = RadioData(data_list, gps_list)
dataObj.OBC_time = dataObj.GSC_time = time
dataObj.OBC_date = dataObj.GSC_date = date

data_to_csv(dataObj, filename)