def read():
    local = local_air.read_local_air()
    local_temp_c = local[0]
    local_temp_f = local_temp_c*1.8+32
    local_hum = local[1]
    local_press = local[2]/100.0
    local_feel_f =apparent_temp(local[0],local[1])
    local_temp = local_temp_f
    local_feel_f = local_temp_f
    query = "UPDATE status SET temp = {},humidity = {},feel_temp = {},pressure = {} where room = 0".format(local_temp_f,local_hum,local_feel_f,local_press)
    cursor.execute(query)
    database.commit()
    def run(self):
        global loc_temp
        global loc_hum
        global loc_feel
        global loc_press
        global desired_temp

        comp_on_time = 0
        comp_off_time = 0
        fan_on_time = 0
        fan_off_time = 0

        global ac_state
        global fan_state
        global comp_state
        global heat_state
        
        global FAN_PIN
        global COMP_PIN
        global HEATER_PIN

        while True:
            

            local = local_air.read_local_air()
            local_temp_c = local[0]
#            local_temp_c += -2
            local_temp_f = local_temp_c*1.8+32
            local_hum = local[1]
            local_press = local[2]
            local_feel_f =apparent_temp(local[0],local[1])
            local_temp = local_temp_f
                        
            set_temp_f=desired_temp
            
            loc_temp = local_temp_f
            loc_hum = local_hum
            loc_feel = local_feel_f
            loc_press = local_press            
            self.event.set()

            error_temp = local_temp - set_temp_f

            fuzz_temp = NORMAL
            if error_temp < COOL_THRESH:
                    fuzz_temp = COOL
            if error_temp < COLD_THRESH:
                    fuzz_temp = COLD
            if error_temp > WARM_THRESH:
                    fuzz_temp = WARM
            if error_temp > HOT_THRESH:
                    fuzz_temp = HOT
                 
            if fan_state is ON:
                    fan_on_time += 1
            if fan_state is OFF:
                    fan_off_time += 1
            if comp_state is ON:
                    comp_on_time += 1
            if comp_state is OFF:
                    comp_off_time += 1

            if fan_state is ON:
                GPIO.output(FAN_PIN, True)
            else:
                GPIO.output(FAN_PIN, False)
            if comp_state is ON:
                GPIO.output(COMP_PIN, True)
            else:
                GPIO.output(COMP_PIN, False)

            if set_mode is COOL_MODE:
                w.setPalette(coolPal)
            
                if ac_state is ON:
                        if comp_state is ON:
                                if fuzz_temp is COLD:
                                        comp_state = OFF
                                        comp_off_time = 0
                                if fuzz_temp is COOL:
                                        comp_state = OFF
                                        comp_off_time = 0
                                        fan_state = OFF
                                        fan_off_time = 0
                                        ac_state = OFF
                        if comp_state is OFF:
                                if fan_on_time > FAN_ON_TIME_THRESH:
                                        if local_temp + 0.5 < fan_start_temp:
                                                fan_start_temp = local_temp
                                                fan_on_time = 0
                                                if fuzz_temp is COOL or fuzz_temp is COLD:
                                                        fan_state = OFF
                                                        fan_off_time = 0
                                                        ac_state = OFF
                                        else:
                                                comp_state = ON
                                                comp_on_time = 0
                                if fuzz_temp is HOT:
                                        comp_state = ON
                                        comp_on_time = 0
                                if fuzz_temp is COOL or fuzz_temp is COLD:
                                        fan_state = OFF
                                        fan_on_time = 0
                else:
                        if fuzz_temp is WARM:
                                if comp_off_time < COMP_OFF_TIME_THRESH:
                                        ac_state = ON
                                        fan_state = ON
                                        fan_start_temp = local_temp
                                        fan_on_time = 0 
                                else:
                                        ac_state = ON
                                        fan_state = ON
                                        fan_on_time = 0
                                        comp_state = ON
                                        comp_on_time = 0
                        if fuzz_temp is HOT:
                                ac_state = ON
                                fan_state = ON
                                fan_on_time = 0
                                comp_state = ON
                                comp_on_time = 0
            if set_mode is HEAT_MODE:
                #heater
                #print(set_mode)
                w.setPalette(heatPal)
            if (set_mode is not 2) and (set_mode is not COOL_MODE):
                w.setPalette(offPal)
                fan_state = OFF
                comp_state = OFF
                ac_state = OFF
                heat_state = OFF