alias gas_sensor d0 # d1= Logic Switch, Dial variant (Max=30) alias thermostat d1 # d2 = Logic Memory, must be more than 0 alias temp_variance d2 # d3 = Console, LED Display variant, optional alias temp_disp d3 # d4 = Wall Cooler alias w_cooler d4 # d5 = Wall Heater alias w_heater d5 alias curr_temp r0 alias target_temp r1 alias variance r2 alias min_temp r3 alias max_temp r4 alias cooling_active r5 alias heating_active r6 alias cooler r7 alias heater r8 define TEMP_CONVERT 273.15 move cooling_active 0 move heating_active 0 l cooler w_cooler PrefabHash l heater w_heater PrefabHash start: yield # establish min- and max-temps to registry l variance temp_variance Setting l min_temp thermostat Setting sub min_temp min_temp variance l max_temp thermostat Setting add max_temp max_temp variance l target_temp thermostat Setting # get current temperature jal temp_read # update display brdns temp_disp 2 jal display # compare current temp to max/min temp and # initiate cooling or heating if needed bgt curr_temp max_temp cooling blt curr_temp min_temp heating sb cooler On cooling_active sb heater On heating_active j start temp_read: l curr_temp gas_sensor Temperature sub curr_temp curr_temp TEMP_CONVERT j ra display: s temp_disp Setting curr_temp j ra cooling: yield jal temp_read # test if coolers need to be on or not sgt cooling_active curr_temp target_temp brdns temp_disp 2 jal display # send state to coolers sb cooler On cooling_active bgtz cooling_active cooling j start heating: yield jal temp_read # test if heaters need to be on or not slt heating_active curr_temp target_temp brdns temp_disp 2 jal display # send state to heaters sb heater On heating_active bgtz heating_active heating j start