Unfinished data restructure

This commit is contained in:
Jacob Holder 2021-07-04 23:23:16 +02:00
parent f3f21ffadd
commit b88b90ef4a
Signed by: jacob
GPG Key ID: 2194FC747048A7FD
4 changed files with 73 additions and 6 deletions

31
measurement.py Normal file
View File

@ -0,0 +1,31 @@
import os
class Measurement:
def __init__(self, name, sensors, path=None, comment=None):
self.name = name
self.path = os.path.join(path or "./meas_values", self.name)
os.makedirs(self.path)
self.save_version_text(comment)
self.data_files = {} # sensor_name: file_handler
def append_data(self, sensor_name, data):
"""
Save data from a sensor. Write it into the corresponding file.
TODO: file size limit, zip?
data: list of tuples: (timestamp, value)
"""
if sensor_name not in self.data_files:
self.data_files[sensor_name] = open(os.path.join(self.path, f"{sensor_name}_data.csv"))
for timestamp, value in data:
self.data_files[sensor_name].write(f"{timestamp.isoformat()}, {timestamp.timestamp()}, {value}\n")
def save_version_text(self, comment):
with open(os.path.join(self.path, "version.txt"), "w") as file:
file.write("Version 0.1\n")
if comment:
file.write(comment + "\n")
file.write("More descriptions of relevant parameters\n")

View File

@ -5,13 +5,15 @@ Data:
- dict with sensor data (temp, pressure, current)
- dict with drivers (magnetic field control)
"""
from sensor import Measurement
from sensor import Sensor
class Model:
def __init__(self):
self.sensors = {"temp": Measurement()}
self.sensors = {"temp": Sensor()}
self.drivers = []
self.measurement = None
self.plot_data = None
pass
def start_measuring(self):

34
plot_data.py Normal file
View File

@ -0,0 +1,34 @@
import numpy as np
from datetime import datetime
class PlotData():
def __init__(self):
self.refresh_rate = 1 # ms
self.timeout = 100 # cycles
self.data = {"time": np.array([0])}
self.start_time = datetime.utcnow()
self.queues = {}
def append_data(self, sensor_name, data):
"""
"""
if sensor_name not in self.data:
self.queues[sensor_name] = []
self.data[sensor_name] = np.full_like(self.data["time"], np.nan)
for data_tuple in data:
self.queues[sensor_name].append(data_tuple)
"""
TODO
while true
clean delte all to old values
for q in que:
if q is empty
return
update np array
"""

View File

@ -6,7 +6,7 @@ from queue import Queue
from random import random
class MeasureWork(Thread):
class SensorWorker(Thread):
""" Communicates with the measuring hardware. Here we only produce random data. """
def __init__(self, message_queue):
@ -29,15 +29,15 @@ class MeasureWork(Thread):
sleep(1)
class Measurement(object):
class Sensor(object):
"""docstring for Model."""
def __init__(self):
super(Measurement, self).__init__()
super(Sensor, self).__init__()
self.data = []
self.t = []
self.measureQueue = Queue()
self.measureThread = MeasureWork(self.measureQueue)
self.measureThread = SensorWorker(self.measureQueue)
self.measureThread.start()
def start_measuring(self):