Exemple #1
0
def main():

    # stop_event = Event()
    # stop_event.clear()
    str_port_list = ["/dev/ttyUSB0", "/dev/ttyUSB1", "/dev/ttyUSB2"]
    temp_reader = [None, None, None]
    rate = 115200
    for i, str_port in enumerate(str_port_list):
        save_file = f"output_{i}.txt"
        temp_reader[i] = TempReader(str_port=str_port,
                                    rate=rate,
                                    save_file=save_file)
        # ssr[]
        temp_reader[i].start()
    time.sleep(10)

    # keyboard.wait("esc")
    # stop_event.set()
    # time.sleep(3)

    for i, str_port in enumerate(str_port_list):
        # temp_reader[i].join()
        print('exiting at temp_reader.join')
        temp_reader[i].close()
        time.sleep(1)

    sys.exit()
 def __init__(self, time_units=1):
     self.time_units = time_units
     self.temp_reader = TempReader()
     self.comparer = TempComparer()
     self.state = ControllerState.CORRECT
     self.controller_thread = Thread(target=self.main_loop)
     self.state_controller = StateController()
     self.database_client = InfluxDBClient(host="localhost",
                                           port=8086,
                                           database="ferm_data")
Exemple #3
0
 def __init__(self):
     #self.steps = []
     self.current_temp = 0
     self.current_step = None
     #self.current_step_count = 0
     self.current_start_time = None
     self.current_step_length = None
     self.step_end_time = None
     self.temp_reader = TempReader()
     self.pin_controller = PinController()
     self.temp_comparer = TempComparer()
     self.tick_interval = 1
     self.running = False
     self.loop_thread = Thread(target=self.main_loop)
     self.loop_thread.start()
Exemple #4
0
def main():

    """
    with open("./config.json", mode="r") as fr:
        conf_dict = json.load(fr)
 
    print(conf_dict)
    exit()
    """

    q_tc_temp = queue.Queue()
    # stop_event = Event()
    # stop_event.clear()
    str_port_list = ["/dev/ttyUSB0"]
    list_temp_reader = []
    rate = 115200
    for i, str_port in enumerate(str_port_list):
        save_file = f"output_{i}.txt"
        temp_reader = TempReader(str_port=str_port, rate=rate, save_file=save_file, q_tc_temp=q_tc_temp)
        temp_reader.start()
        list_temp_reader.append(temp_reader)
    time.sleep(1)


    # SSR制御スレッド
    # pin number is as on the RsPi4 board
    #ssr_pins = [2, 3, 4, 10, 9,11, 5,6,13,19,26, 14,15,18]     # SSR PWM output pins
    ssr_pins = [2, 3, 4, 9]  #{201122}
    
    #system configulation {201117}
    sys_config={
    "items":("key: =group_numnerof heater and thermo-couple", ("ssr_pins"),("Tc's") ),
    "g1":( (2, 4), (0, 2) ),
    "g2":( (3, 9), (1, 3) ),    
    }
    g="g1"
    print(f"sys_config= {sys_config[g]}")

    # スレッド起動
    list_ssr = []
    for i, pin_num in enumerate(ssr_pins):
        ssr = SsrController(pin_num, q_tc_temp=q_tc_temp)
        ssr.start()
        list_ssr.append(ssr)

    try:
        while True:
            time.sleep(1)

            # print(f"que_len: {q_tc_temp.qsize()}")
            pass
    except KeyboardInterrupt:
        # Ctrl-C
        print('interrupted!')

        # SSR を先に止める
        for i, ssr in enumerate(list_ssr):
            # print (f"exiting at ssr.join({i})")
            ssr.close()
            time.sleep(0.1)

        time.sleep(1)

        for i, temp_reader in enumerate(list_temp_reader):
            # print (f"exiting at temp_reader.join({i})")
            temp_reader.close()
            time.sleep(0.1)


        GPIO.cleanup()
        time.sleep(1)

        print("call exit!")
        exit()
Exemple #5
0
def main():
 
    with open("./config.json", mode="r") as fr:
        config = json.load(fr)

    print(config)

    rate = 115200   # 通信レート

    # 温度用キュー(現在:全て同じキューを使用)
    """
    (以下、変数の中身の例)
    str.port= /dev/ttyUSB0
    tc_readers_dictというスレッドの立ち上がり:
    tc_readers_dict (スレッド)==  {'/dev/ttyUSB0': <TempReader(Thread-1, started 1985582176)>}
    """
    q_maxlen = 20
    tc_readers_dict = {}
    for str_port in config["Tc"].keys():
        print("tc_reader USB port=", str_port)
        tc_index = config["Tc"][str_port]["index"]	# ジェイソン使って順番を指定してもらう。Kメモ{210103}
        
        save_file = f"output_{str_port[-1]}.txt"
        tc_readers_dict[str_port] = TempReader(
            str_port=str_port, 
            rate=rate, 
            tc_index=tc_index, 
            q_maxlen=q_maxlen, 
            save_file=save_file
        )									# とにかく、順番に、温度を読んでくる。Kメモ{210103}
        tc_readers_dict[str_port].start() # スレッドを起動
        time.sleep(1)
    print("tc_readers_dictというスレッドの立ち上がり")   #Kinoshita{210102}
    print("str.port=", str_port)   #Kinoshita{210102}
    print("jsonからの情報の持ち込み方を見たい:")   #Kinoshita{210102}
    print("tc_readers_dict (スレッド)== ",tc_readers_dict)  #Kinoshita{210102}

    # SSR制御スレッド
    # スレッド起動
    """
    SSR のスレッドは以下のように立ち上がる:
    ssr_group_dict= {
    0: <SsrDriver(Thread-2, started 1975514208)>, 
    1: <SsrDriver(Thread-3, started 1965028448)>, 
    2: <SsrDriver(Thread-4, started 1954542688)>, 
    3: <SsrDriver(Thread-5, started 1944056928)>}
    """
    ssr_group_dict = {}
    # SSRの各々で現時点では、{210104} ループしている
    # confis.jsonで指定した、Groupでの ループにする方向ではないかとおもう。
    for i, target_pin in enumerate(config["SSR"]):   #ここでGroup別にイテレーションLoopに。{201212}
        ssr_group_dict[i] = SsrDriver(
            target_pin,
            tc_readers_dict=tc_readers_dict
        )
        ssr_group_dict[i].start()    #ここで起動1

    print("SsrDriverへの情報伝達を見たい:")   #Kinoshita{210103}
    print("ssr_group_dict (スレッド)==",ssr_group_dict)  #Kinoshita{210103}
    print()
    print("ssr_group_dict.keys()=",ssr_group_dict.keys()) #Kinoshita{210103}

    # ここから Ctrl-C が押されるまで無限ループ
    try:
        while True:
            # ここに処理を記載
            time.sleep(1)
            # 例
            """
            支配層と被支配層とに分けて「ロジック」(やりたいこと)を書き込むのではなくて
            やりたいことを表現する場を、上手に、被支配層と支配層とを突き抜けて、用意する方法を
            うまくつくっていく。そういう技法を身に着けなければいけない。
            複雑なことを、どう整理するか、
            UML 図 を描いてみようと思います。 Kコメント{210103}
            """
            #目標温度をGroup別に。現時点 {210104} では SSRに一対一対応している。
            ssr_group_dict[0].set_target_temp(40)   
            ssr_group_dict[1].set_target_temp(40)
            ssr_group_dict[2].set_target_temp(40)
            ssr_group_dict[3].set_target_temp(40)
            # print(f"que_len: {q_tc_temp.qsize()}")
            pass
        
    except KeyboardInterrupt:
        # Ctrl-C
        print('interrupted!')

        # SSRスレッド終了処理 ※先に止める
        for i, ssr in enumerate(ssr_group_dict.keys()): #現時点では、SSRのここに対応している。
            # print (f"exiting at ssr.join({i})")
            ssr_group_dict[ssr].close()
            time.sleep(0.1)

        time.sleep(1)

        # 温度取得スレッド終了処理
        for i, str_port in enumerate(tc_readers_dict.keys()):
            # print (f"exiting at temp_reader.join({i})")
            tc_readers_dict[str_port].close()
            time.sleep(0.1)


        GPIO.cleanup()
        time.sleep(1)

        print("call exit!")
        exit()
Exemple #6
0
 def __init__(self, target_temp=65, temp_range=1):
     self.reader = TempReader()
     self.target_temp = target_temp
     self.temp_range = temp_range
     self.current_mode = TempControllerStatus.CORRECT
Exemple #7
0
from linear_fan_control import LinearFanControl
from temp_reader import TempReader
from rpm_reader import RPMReader
from wifi import connect_wifi
from metrics import send_metrics
from machine import Pin

connect_wifi()

lfc_in = LinearFanControl(pwm_pin=23, min_temp=23, max_temp=30)
lfc_out = LinearFanControl(pwm_pin=18, min_temp=23, max_temp=30)

rpm_in = RPMReader(rpm_pin=22)
rpm_out = RPMReader(rpm_pin=5)

temp_reader = TempReader(pin=19)
# temp_reader_2 = TempReader(pin=16)
fan_switch = Pin(21, Pin.OUT)
fan_switch_2 = Pin(17, Pin.OUT)

while True:
    temp = 100
    temp2 = 100
    try:
        temps = list(temp_reader.read_temps())
        temp = temps[0]
        temp2 = temps[1]
    except Exception:
        pass

    if temp < lfc_out.min_temp:
Exemple #8
0
def main():

    with open("./config.json", mode="r") as fr:
        config = json.load(fr)

    print(config)

    rate = 115200  # 通信レート

    # 温度用キュー(現在:全て同じキューを使用)
    q_maxsize = 200
    tc_queue_dict = {}
    tc_readers_dict = {}
    for str_port in config["Tc"].keys():
        print(str_port)
        tc_queue_dict[str_port] = {}
        for idx in config["Tc"][str_port]["index"]:
            tc_queue_dict[str_port][idx] = queue.Queue(maxsize=q_maxsize)

        save_file = f"output_{str_port[-4]}.txt"
        tc_readers_dict[str_port] = TempReader(str_port=str_port,
                                               rate=rate,
                                               save_file=save_file,
                                               tc_queue_dict=tc_queue_dict)
        tc_readers_dict[str_port].start()  # スレッドを起動
        time.sleep(1)

    # SSR制御スレッド
    # スレッド起動
    ssr_group_dict = {}
    for i, group in enumerate(config["SSR"]):
        ssr_group_dict[i] = SsrDriver(group, tc_queue_dict=tc_queue_dict)
        ssr_group_dict[i].start()

    # ここから Ctrl-C が押されるまで無限ループ
    try:
        while True:
            # ここに処理を記載
            time.sleep(1)
            # 例
            ssr_group_dict[0].set_target_temp(200)
            ssr_group_dict[1].set_target_temp(200)
            # print(f"que_len: {q_tc_temp.qsize()}")
            pass

    except KeyboardInterrupt:
        # Ctrl-C
        print('interrupted!')

        # SSRスレッド終了処理 ※先に止める
        for i, ssr in enumerate(ssr_group_dict.keys()):
            # print (f"exiting at ssr.join({i})")
            ssr_group_dict[ssr].close()
            time.sleep(0.1)

        time.sleep(1)

        # 温度取得スレッド終了処理
        for i, str_port in enumerate(tc_readers_dict.keys()):
            # print (f"exiting at temp_reader.join({i})")
            tc_readers_dict[str_port]["reader"].close()
            time.sleep(0.1)

        GPIO.cleanup()
        time.sleep(1)

        print("call exit!")
        exit()