From 7ce3f5efc2441e0cdd7640595bc7abba3c07caaa Mon Sep 17 00:00:00 2001 From: YuruC3 Date: Wed, 2 Jul 2025 14:53:15 +0200 Subject: [PATCH] It's working yet again --- PC_CONTROL_CODE/docker/Dockerfile | 6 +-- PC_CONTROL_CODE/docker/docker-compose.yml | 14 +++--- PC_CONTROL_CODE/docker/mainDocker.py | 56 +++++++++++------------ PC_CONTROL_CODE/docker/md1200.env | 3 -- PC_CONTROL_CODE/docker/md1200.env.old | 6 +++ 5 files changed, 43 insertions(+), 42 deletions(-) delete mode 100644 PC_CONTROL_CODE/docker/md1200.env create mode 100644 PC_CONTROL_CODE/docker/md1200.env.old diff --git a/PC_CONTROL_CODE/docker/Dockerfile b/PC_CONTROL_CODE/docker/Dockerfile index 072ee3f..a46a8cd 100644 --- a/PC_CONTROL_CODE/docker/Dockerfile +++ b/PC_CONTROL_CODE/docker/Dockerfile @@ -1,9 +1,9 @@ FROM alpine:latest # https://docs.docker.com/reference/dockerfile/#environment-replacement -ENV MD1200BAUD=38400 -ENV SERIALADAPTER=/dev/ttyUSB0 -ENV EPPYSLEEPY=300 +# ENV MD1200BAUD=38400 +# ENV SERIALADAPTER=/dev/ttyUSB0 +# ENV EPPYSLEEPY=300 # VOLUME [""] diff --git a/PC_CONTROL_CODE/docker/docker-compose.yml b/PC_CONTROL_CODE/docker/docker-compose.yml index 35d9541..b162c97 100644 --- a/PC_CONTROL_CODE/docker/docker-compose.yml +++ b/PC_CONTROL_CODE/docker/docker-compose.yml @@ -3,14 +3,14 @@ services: mdfanchanger: container_name: MD_Fan_Changer - # build: ./ - # image: dm1200fanchanger:V1 - image: yuruc3/md1200_fan_controll:v1 + image: yuruc3/md1200_fan_controll:v1.2.1 environment: - - baud_rate=${baud_rate:-38400} - - serial_adapter=${serial_adapter:-"/dev/ttyUSB0"} - - wait_time=${wait_time:-1} - env_file: "md1200.env" + # - MD1200BAUD= + - SERIALADAPTER=/dev/ttyUSB0 + - TEMP_FACTOR=17 + # - EPPYSLEEPY= + # - LOW_FAN_TRSHD= + # - HIGH_FAN_TRSHD= devices: - /dev/ttyUSB0:/dev/ttyUSB0 restart: unless-stopped diff --git a/PC_CONTROL_CODE/docker/mainDocker.py b/PC_CONTROL_CODE/docker/mainDocker.py index 7c7ea1c..6eb40eb 100644 --- a/PC_CONTROL_CODE/docker/mainDocker.py +++ b/PC_CONTROL_CODE/docker/mainDocker.py @@ -1,23 +1,25 @@ import serial, time, os -# CONST -if os.environ["MD1200BAUD"]: - MD1200BAUD = int(os.environ["MD1200BAUD"]) -else: - MD1200BAUD = 38400 +# setting consts that can be customized -if os.environ["SERIALADAPTER"]: - SERIALADAPTER = os.environ["SERIALADAPTER"] -else: - SERIALADAPTER = "/dev/ttyUSB0" +# baud rate. Prob not needed as 38400 is standard +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)) +# time between sending command to get temp and storing it. It's there to allow JBOD to answer +EPPYSLEEPY = float(os.getenv("EPPYSLEEPY", 0.25)) + +LOW_FAN_TRSHD = int(os.getenv("LOW_FAN_TRSHD", 21)) +HIGH_FAN_TRSHD = int(os.getenv("HIGH_FAN_TRSHD", 40)) + +GETTMPCMND = os.getenv("GETTMPCMND", "_temp_rd") +SETFANCMND = os.getenv("SETFANCMND", "set_speed") + +DEFOUTPRCNTG = int(os.getenv("DEFOUTPRCNTG", 24)) -GETTEMP = "_temp_rd" -SETFANPRCNT = "set_speed" -if os.environ["EPPYSLEEPY"]: - EPPYSLEEPY = int(os.environ["EPPYSLEEPY"]) -else: - EPPYSLEEPY = 1 # 1 second # init MDserial = serial.Serial( @@ -69,30 +71,23 @@ def getTemp(inpMDreturning): def setSpeed(inSpeeDict: dict): bpavrg = 0 - # Some safe fan speedvalue - defoutprntg = 27 # default outfanprcntg = 0 - # Decide on fan speeds - LOW_FAN_TRSHD = 21 - HIGH_FAN_TRSHD = 40 - TEMP_FACTOR = 19 - # get backplanbe average if inSpeeDict["bp1"] and inSpeeDict["bp2"]: bpavrg = (inSpeeDict["bp1"] + inSpeeDict["bp2"]) /2 - outfanprcntg = int((bpavrg / (HIGH_FAN_TRSHD - LOW_FAN_TRSHD)) * TEMP_FACTOR) + os.system(f"echo setting {outfanprcntg}%") # Set fan speed if outfanprcntg >= 20: - MDserial.write(("set_speed " + str(outfanprcntg) + " \n\r").encode()) + MDserial.write((f"{SETFANCMND} {str(outfanprcntg)} \n\r").encode()) print(f"setting {outfanprcntg}%") return 0 else: # Set default value - MDserial.write(("set_speed " + str(defoutprntg) + " \n\r").encode()) + MDserial.write((f"{SETFANCMND} {str(DEFOUTPRCNTG)} \n\r").encode()) return 1 # If something goes super wrong @@ -112,8 +107,10 @@ def setSpeed(inSpeeDict: dict): while True: # https://stackoverflow.com/questions/52578122/not-able-to-send-the-enter-command-on-pyserial - MDserial.write("_temp_rd\n\r".encode()) - time.sleep(1) + + # get temperature data, wait for MD1200 to answer and store + MDserial.write(f"{GETTMPCMND}\n\r".encode()) + time.sleep(EPPYSLEEPY) MDreturning = MDserial.read_until(" >").decode() MDtempDict = getTemp(MDreturning) @@ -121,12 +118,13 @@ while True: # good if setSpeedrcode == 0: + continue # print("Were mint") - time.sleep(EPPYSLEEPY) + # time.sleep(EPPYSLEEPY) # not good elif setSpeedrcode == 1: print("Ambigous temperature readings.\nFalling back to safe values.") - time.sleep(EPPYSLEEPY) + # time.sleep(EPPYSLEEPY) # very not good elif setSpeedrcode == -1: print("o nyo") diff --git a/PC_CONTROL_CODE/docker/md1200.env b/PC_CONTROL_CODE/docker/md1200.env deleted file mode 100644 index ff1f847..0000000 --- a/PC_CONTROL_CODE/docker/md1200.env +++ /dev/null @@ -1,3 +0,0 @@ -baud_rate= -serial_adapter= -wait_time= \ No newline at end of file diff --git a/PC_CONTROL_CODE/docker/md1200.env.old b/PC_CONTROL_CODE/docker/md1200.env.old new file mode 100644 index 0000000..77e344a --- /dev/null +++ b/PC_CONTROL_CODE/docker/md1200.env.old @@ -0,0 +1,6 @@ +baud_rate= +serial_adapter= +wait_time= +temp_factor= +lower_treshold= +upper_treshold= \ No newline at end of file