How to make the cameras connected to a four cameras adaptor djust brigtness when light changes

Hi!, I am a beginner in python and raspberry
I am using the four cameras adaptor from Arducam on my Raspberry for a project where I change the light intensity several times throughout the day. I am using crontab -e to run the program during all day, the cameras used to adjust their exposure time automatically but now they stopped doing it, and they do it only when I run the program manually, so now the pictures are very dark if I change from a high light to a low light and very bright if I change from a low light to a hight light.
Does someone have a solution for this issue?

This is the code:

import RPi.GPIO as gp
import os
import cv2 as cv
import numpy as np
import time
import logging
class MultiAdapter:
logging.basicConfig(filename=’/home/pi/Desktop/agueda_imgs/example.log’, level=logging.DEBUG)
camera = cv.VideoCapture(0)
camNum = 4
adapter_info = { “A”:{ “i2c_cmd”:“i2cset -y 1 0x70 0x00 0x04”,
“gpio_sta”:[0,0,1],
},
“B”:{
“i2c_cmd”:“i2cset -y 1 0x70 0x00 0x05”,
“gpio_sta”:[1,0,1],
},
“C”:{
“i2c_cmd”:“i2cset -y 1 0x70 0x00 0x06”,
“gpio_sta”:[0,1,0],
},
“D”:{
“i2c_cmd”:“i2cset -y 1 0x70 0x00 0x07”,
“gpio_sta”:[1,1,0],
},
}
width = 240
height = 320

def release_all(self):
for i in range(self.camNum):
self.choose_channel(chr(65+i))
self.camera.release()

def init(self):
#gp.setwarnings(False)
gp.setmode(gp.BOARD)
gp.setup(7, gp.OUT)
gp.setup(11,gp.OUT)
gp.setup(12,gp.OUT)
def choose_channel(self,index):
channel_info = self.adapter_info.get(index)
if channel_info == None:
print(“Can’t get this info”)
os.system(channel_info[“i2c_cmd”]) # i2c write
gpio_sta = channel_info[“gpio_sta”] # gpio write
gp.output(7, gpio_sta[0])
gp.output(11, gpio_sta[1])
gp.output(12, gpio_sta[2])
def init(self,width,height):
for i in range(self.camNum):
self.height = height
self.width = width
self.choose_channel(chr(65+i))
self.camera.set(3, self.width)
self.camera.set(4, self.height)
ret, frame = self.camera.read()
if ret == True:
print(“camera %s init OK” %(chr(65+i)))
pname = “image_”+ chr(65+i)+".jpg"
cv.imwrite(pname,frame)
def preview(self):
font = cv.FONT_HERSHEY_PLAIN
fontScale = 1
fontColor = (255,255,255)
lineType = 1
factor = 20
black = np.zeros(((self.height+factor)2, self.width2, 3), dtype= np.uint8)
i = 0
while True:
self.choose_channel(chr(65+i))
ret, frame = self.camera.read()
ret, frame = self.camera.read()
ret, frame = self.camera.read()
print(ret)
frame.dtype=np.uint8
if i == 0:
black[factor:factor+self.height, 0:self.width, :] = frame
bottomLeftCornerOfText = (factor,factor)
index = chr(65+i)
elif i == 1:
black[factor:factor+self.height, self.width:self.width2,:] = frame
bottomLeftCornerOfText = (factor+self.width, factor)
index = chr(65+i)
elif i == 2:
black[factor
2+self.height:factor2+self.height2, 0:self.width,:] = frame
bottomLeftCornerOfText = (factor, factor2+self.height)
index = chr(65+i)
elif i == 3:
black[factor
2+self.height:factor2+self.height2, self.width:self.width2,:] = frame
bottomLeftCornerOfText = (factor+self.width, factor
2+self.height)
index = chr(65+i)
i = i+1
if i==self.camNum:
i = 0
cv.putText(black,'CAM '+index, bottomLeftCornerOfText, font, fontScale,fontColor,lineType)
cv.imshow(“Arducam Multi Camera Demo”,black)
if cv.waitKey(1) & 0xFF == ord(‘q’):
del frame
self.camera.release()
cv.destroyAllWindows()
break
def save_imgs(self, parent_path, f_name, width,height):
# Check if the folder exists
# Create empty folders if not
for i in range(self.camNum):
directory_name = chr(65+i)
path = os.path.join(parent_path, directory_name)

    if not os.path.isdir(path):
        os.makedirs(path)
        print("created folder " + chr(65+i))
    else:
        print("folder exists - " + chr(65+i))
# logging data
cnt = 0
# Take imgs    
for i in range(self.camNum):
    try:
        self.height = height
        self.width = width
        self.choose_channel(chr(65+i))
        time.sleep(0.5)
        self.camera.set(3, self.width)
        self.camera.set(4, self.height)
        ret, frame = self.camera.read()
        if ret == True:
            directory_name = chr(65+i)
            path = os.path.join(parent_path, directory_name)
            pname = path + "//" + f_name +".jpg"
            cv.imwrite(pname,frame)
            print(f"camera {chr(65+i)} OK")
            my_logging((f_name, directory_name, "worked"))
            time.sleep(0.5)
            cnt += 1
        else:
            print(f"failed {chr(65+i)}")
            my_logging((f_name, directory_name, "failed"))
    except:
        logging.info(30*'-')
        logging.exception('')
my_logging(f"{cnt} of 4 worked at {f_name}, temp was {check_temp()} deg.\n")

for i in range(self.camNum):

self.choose_channel(chr(65+i))

self.camera.release()

def check_temp():
result = 0.0

The first line in this file holds the CPU temperature as an integer times 1000.

Read the first line and remove the newline character at the end of the string.

if os.path.isfile(’/sys/class/thermal/thermal_zone0/temp’):
with open(’/sys/class/thermal/thermal_zone0/temp’) as f:
line = f.readline().strip()

Test if the string is an integer as expected.

if line.isdigit():

Convert the string with the CPU temperature to a float in degrees Celsius.

result = float(line) / 1000
return int(result)

def my_logging(data):
with open("/home/pi/Desktop/agueda_imgs/log_file.txt", “a”) as logger:
if len(data)>5:
logger.write(data)
logger.write(32*"-"+"\n")
else:
line = str(data) + “\n”
logger.write(line)