From c5782018b8379463f6ac21612313b910b63b255e Mon Sep 17 00:00:00 2001 From: YuruC3 Date: Wed, 16 Jul 2025 17:16:20 +0200 Subject: [PATCH] Added a special token to avoid usage conflicts. --- PC_CONTROL_CODE/dockerInflux/mainDocker.py | 42 +++++++++++++++++----- 1 file changed, 33 insertions(+), 9 deletions(-) diff --git a/PC_CONTROL_CODE/dockerInflux/mainDocker.py b/PC_CONTROL_CODE/dockerInflux/mainDocker.py index 502b058..0499c1a 100644 --- a/PC_CONTROL_CODE/dockerInflux/mainDocker.py +++ b/PC_CONTROL_CODE/dockerInflux/mainDocker.py @@ -10,22 +10,26 @@ MD1200BAUD = int(os.getenv("MD1200BAUD", 38400)) # used if you want to run it on multiple JBODs SERIALADAPTER = os.getenv("SERIALADAPTER", "/dev/ttyUSB0") # Factor that defines how aggressive the temperature curve is -TEMP_FACTOR = int(os.getenv("TEMP_FACTOR", 19)) +TEMP_FACTOR = float(os.getenv("TEMP_FACTOR", 19)) # time between sending command to get temp and storing it. It's there to allow JBOD to answer EPPYSLEEPY = float(os.getenv("EPPYSLEEPY", 1)) -LOW_FAN_TRSHD = int(os.getenv("LOW_FAN_TRSHD", 21)) -HIGH_FAN_TRSHD = int(os.getenv("HIGH_FAN_TRSHD", 40)) +LOW_FAN_TRSHD = float(os.getenv("LOW_FAN_TRSHD", 21)) +HIGH_FAN_TRSHD = float(os.getenv("HIGH_FAN_TRSHD", 40)) GETTMPCMND = os.getenv("GETTMPCMND", "_temp_rd") SETFANCMND = os.getenv("SETFANCMND", "set_speed") -DEFOUTPRCNTG = int(os.getenv("DEFOUTPRCNTG", 24)) +DEFOUTPRCNTG = float(os.getenv("DEFOUTPRCNTG", 24)) MDSERIALTIMEOUT = float(os.getenv("MDSERIALTIMEOUT", 1)) TEMPREADINTERVAL = float(os.getenv("TEMPREADINTERVAL", 15)) +TEMPSETING = bool(os.getenv("TEMPSETING", True)) + +PROCESSTEMPWAITTIME = float(os.getenv("PROCESSTEMPWAITTIME"), 0.75) + # INFLUXDB config # token = "apg1gysUeCcxdcRTMmosJTenbEppmUNi9rXlANDB2oNadBdWAu2GVTDc_q_dyo0iyYsckKaOvPRm6ba2NK0y_A==" token = os.getenv("INFLUX_TOKEN") @@ -56,6 +60,7 @@ MDserial = serial.Serial( lastTempReading = time.time() MDtempDict = {} MDict = {} +currentSerialUsage = False fluxSending = False currentTime = 0 lastTempReading = 0 @@ -68,12 +73,16 @@ write_api = inflxdb_client.write_api(write_options=SYNCHRONOUS) def getTemp(): - global MDict, fluxSending + global MDict, fluxSending, currentSerialUsage + + currentSerialUsage = True MDserial.write(f"{GETTMPCMND}\n\r".encode()) time.sleep(1) MDreturning = MDserial.read_until(" >").decode() + currentSerialUsage = False + # MDict = {} # Sanitise output @@ -133,6 +142,7 @@ def getTemp(): def setSpeed(inSpeeDict: dict): + global currentSerialUsage bpavrg = 0 # default @@ -144,16 +154,23 @@ def setSpeed(inSpeeDict: dict): outfanprcntg = int((bpavrg / (HIGH_FAN_TRSHD - LOW_FAN_TRSHD)) * TEMP_FACTOR) # os.system(f"echo setting {outfanprcntg}%") + currentSerialUsage = True + # Set fan speed if outfanprcntg >= 20: MDserial.write((f"{SETFANCMND} {str(outfanprcntg)} \n\r").encode()) print(f"setting {outfanprcntg}%", flush=True) + + currentSerialUsage = False return 0 else: # Set default value MDserial.write((f"{SETFANCMND} {str(DEFOUTPRCNTG)} \n\r").encode()) + + currentSerialUsage = False return 1 + currentSerialUsage = False # If something goes super wrong return -1 @@ -198,14 +215,14 @@ def process_temps(): write_api.write(bucket=bucket, org=org, record=inflxdb_Data_To_Send) - # Clean up before another loop + # Clean up before another lo#op, 0.75 inflxdb_LeData.clear() print("Sending data to InfluxDB", flush=True) fluxSending = False else: - time.sleep(0.25) + time.sleep(PROCESSTEMPWAITTIME) @@ -216,7 +233,7 @@ lastTempReading = time.time() def mainCodeHere(): while True: - global MDict, fluxSending, currentTime, lastTempReading + global MDict, fluxSending, currentTime, lastTempReading, currentSerialUsage # https://stackoverflow.com/questions/52578122/not-able-to-send-the-enter-command-on-pyserial # get temperature data, wait for MD1200 to answer and store @@ -227,7 +244,7 @@ def mainCodeHere(): getTemp() lastTempReading = currentTime - if MDict: + if MDict and TEMPSETING: setSpeedrcode = setSpeed(MDict) # good @@ -247,11 +264,18 @@ def mainCodeHere(): else: print("idk", flush=True) exit() + elif TEMPSETING == False: + print(f"Waiting to get temp", flush=True) + pass else: print(f"temperature not yet pulled.\nFalling back do default fan speed", flush=True) # os.system(f"echo temperature not yet pulled.\nFalling back do default fan speed") + currentSerialUsage = True + MDserial.write((f"{SETFANCMND} {str(DEFOUTPRCNTG)} \n\r").encode()) + currentSerialUsage = False + time.sleep(EPPYSLEEPY)