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")
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()
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()
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()
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
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:
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()