It's working yet again
This commit is contained in:
parent
b45180d50d
commit
7ce3f5efc2
@ -1,9 +1,9 @@
|
|||||||
FROM alpine:latest
|
FROM alpine:latest
|
||||||
|
|
||||||
# https://docs.docker.com/reference/dockerfile/#environment-replacement
|
# https://docs.docker.com/reference/dockerfile/#environment-replacement
|
||||||
ENV MD1200BAUD=38400
|
# ENV MD1200BAUD=38400
|
||||||
ENV SERIALADAPTER=/dev/ttyUSB0
|
# ENV SERIALADAPTER=/dev/ttyUSB0
|
||||||
ENV EPPYSLEEPY=300
|
# ENV EPPYSLEEPY=300
|
||||||
|
|
||||||
# VOLUME [""]
|
# VOLUME [""]
|
||||||
|
|
||||||
|
@ -3,14 +3,14 @@
|
|||||||
services:
|
services:
|
||||||
mdfanchanger:
|
mdfanchanger:
|
||||||
container_name: MD_Fan_Changer
|
container_name: MD_Fan_Changer
|
||||||
# build: ./
|
image: yuruc3/md1200_fan_controll:v1.2.1
|
||||||
# image: dm1200fanchanger:V1
|
|
||||||
image: yuruc3/md1200_fan_controll:v1
|
|
||||||
environment:
|
environment:
|
||||||
- baud_rate=${baud_rate:-38400}
|
# - MD1200BAUD=
|
||||||
- serial_adapter=${serial_adapter:-"/dev/ttyUSB0"}
|
- SERIALADAPTER=/dev/ttyUSB0
|
||||||
- wait_time=${wait_time:-1}
|
- TEMP_FACTOR=17
|
||||||
env_file: "md1200.env"
|
# - EPPYSLEEPY=
|
||||||
|
# - LOW_FAN_TRSHD=
|
||||||
|
# - HIGH_FAN_TRSHD=
|
||||||
devices:
|
devices:
|
||||||
- /dev/ttyUSB0:/dev/ttyUSB0
|
- /dev/ttyUSB0:/dev/ttyUSB0
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
@ -1,23 +1,25 @@
|
|||||||
import serial, time, os
|
import serial, time, os
|
||||||
|
|
||||||
# CONST
|
# setting consts that can be customized
|
||||||
if os.environ["MD1200BAUD"]:
|
|
||||||
MD1200BAUD = int(os.environ["MD1200BAUD"])
|
|
||||||
else:
|
|
||||||
MD1200BAUD = 38400
|
|
||||||
|
|
||||||
if os.environ["SERIALADAPTER"]:
|
# baud rate. Prob not needed as 38400 is standard
|
||||||
SERIALADAPTER = os.environ["SERIALADAPTER"]
|
MD1200BAUD = int(os.getenv("MD1200BAUD", 38400))
|
||||||
else:
|
# used if you want to run it on multiple JBODs
|
||||||
SERIALADAPTER = "/dev/ttyUSB0"
|
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
|
# init
|
||||||
MDserial = serial.Serial(
|
MDserial = serial.Serial(
|
||||||
@ -69,30 +71,23 @@ def getTemp(inpMDreturning):
|
|||||||
def setSpeed(inSpeeDict: dict):
|
def setSpeed(inSpeeDict: dict):
|
||||||
|
|
||||||
bpavrg = 0
|
bpavrg = 0
|
||||||
# Some safe fan speedvalue
|
|
||||||
defoutprntg = 27
|
|
||||||
# default
|
# default
|
||||||
outfanprcntg = 0
|
outfanprcntg = 0
|
||||||
|
|
||||||
# Decide on fan speeds
|
|
||||||
LOW_FAN_TRSHD = 21
|
|
||||||
HIGH_FAN_TRSHD = 40
|
|
||||||
TEMP_FACTOR = 19
|
|
||||||
|
|
||||||
# get backplanbe average
|
# get backplanbe average
|
||||||
if inSpeeDict["bp1"] and inSpeeDict["bp2"]:
|
if inSpeeDict["bp1"] and inSpeeDict["bp2"]:
|
||||||
bpavrg = (inSpeeDict["bp1"] + inSpeeDict["bp2"]) /2
|
bpavrg = (inSpeeDict["bp1"] + inSpeeDict["bp2"]) /2
|
||||||
|
|
||||||
outfanprcntg = int((bpavrg / (HIGH_FAN_TRSHD - LOW_FAN_TRSHD)) * TEMP_FACTOR)
|
outfanprcntg = int((bpavrg / (HIGH_FAN_TRSHD - LOW_FAN_TRSHD)) * TEMP_FACTOR)
|
||||||
|
os.system(f"echo setting {outfanprcntg}%")
|
||||||
|
|
||||||
# Set fan speed
|
# Set fan speed
|
||||||
if outfanprcntg >= 20:
|
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}%")
|
print(f"setting {outfanprcntg}%")
|
||||||
return 0
|
return 0
|
||||||
else:
|
else:
|
||||||
# Set default value
|
# Set default value
|
||||||
MDserial.write(("set_speed " + str(defoutprntg) + " \n\r").encode())
|
MDserial.write((f"{SETFANCMND} {str(DEFOUTPRCNTG)} \n\r").encode())
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
# If something goes super wrong
|
# If something goes super wrong
|
||||||
@ -112,8 +107,10 @@ def setSpeed(inSpeeDict: dict):
|
|||||||
|
|
||||||
while True:
|
while True:
|
||||||
# https://stackoverflow.com/questions/52578122/not-able-to-send-the-enter-command-on-pyserial
|
# 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()
|
MDreturning = MDserial.read_until(" >").decode()
|
||||||
|
|
||||||
MDtempDict = getTemp(MDreturning)
|
MDtempDict = getTemp(MDreturning)
|
||||||
@ -121,12 +118,13 @@ while True:
|
|||||||
|
|
||||||
# good
|
# good
|
||||||
if setSpeedrcode == 0:
|
if setSpeedrcode == 0:
|
||||||
|
continue
|
||||||
# print("Were mint")
|
# print("Were mint")
|
||||||
time.sleep(EPPYSLEEPY)
|
# time.sleep(EPPYSLEEPY)
|
||||||
# not good
|
# not good
|
||||||
elif setSpeedrcode == 1:
|
elif setSpeedrcode == 1:
|
||||||
print("Ambigous temperature readings.\nFalling back to safe values.")
|
print("Ambigous temperature readings.\nFalling back to safe values.")
|
||||||
time.sleep(EPPYSLEEPY)
|
# time.sleep(EPPYSLEEPY)
|
||||||
# very not good
|
# very not good
|
||||||
elif setSpeedrcode == -1:
|
elif setSpeedrcode == -1:
|
||||||
print("o nyo")
|
print("o nyo")
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
baud_rate=
|
|
||||||
serial_adapter=
|
|
||||||
wait_time=
|
|
6
PC_CONTROL_CODE/docker/md1200.env.old
Normal file
6
PC_CONTROL_CODE/docker/md1200.env.old
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
baud_rate=
|
||||||
|
serial_adapter=
|
||||||
|
wait_time=
|
||||||
|
temp_factor=
|
||||||
|
lower_treshold=
|
||||||
|
upper_treshold=
|
Loading…
x
Reference in New Issue
Block a user