alias GasSensor d0 # d1= Logic Switch, Dial variant (Max=30) alias Thermostat d1 # d2 = Logic Memory, must be more than 0 alias TempVariance d2 # d3 = Console, LED Display variant, optional alias TempDisplay d3 # d4 = Wall Cooler alias WallCooler d4 # d5 = Wall Heater alias WallHeater d5 alias CurrentTemp r0 alias TargetTemp r1 alias Variance r2 alias MinTemp r3 alias MaxTemp r4 alias CoolingActive r5 alias HeatingActive r6 alias Cooler r7 alias Heater r8 define TEMPCONVERT 273.15 move CoolingActive 0 move HeatingActive 0 l Cooler WallCooler PrefabHash l Heater WallHeater PrefabHash start: yield # establish min- and max-temps to registry l Variance TempVariance Setting l TargetTemp Thermostat Setting sub MinTemp TargetTemp Variance add MaxTemp TargetTemp Variance # get current temperature jal temp_read # update display bdseal TempDisplay display # compare current temp to max/min temp and # initiate cooling or heating if needed bgt CurrentTemp MaxTemp cooling blt CurrentTemp MinTemp heating # Ensure coolers and heaters are off when not needed sb Cooler On CoolingActive sb Heater On HeatingActive j start temp_read: l CurrentTemp GasSensor Temperature sub CurrentTemp CurrentTemp TEMPCONVERT j ra display: s TempDisplay Setting CurrentTemp j ra cooling: yield jal temp_read # test if coolers need to be on or not sgt CoolingActive CurrentTemp TargetTemp # update display bdseal TempDisplay display # send state to coolers sb Cooler On CoolingActive bgtz CoolingActive cooling j start heating: yield jal temp_read # test if heaters need to be on or not slt HeatingActive CurrentTemp TargetTemp # update display bdseal TempDisplay display # send state to heaters sb Heater On HeatingActive bgtz HeatingActive heating j start