The checkbox is the correct control. You just have to label it correctly: “Include only devices: [ ] With cooling.” That seems unambiguous to me that uncheck means apply no filter and include both devices with and without cooling. In general, users interpret a blank, including unchecked, as “don’t query/filter on this criterion,” not as “invert this query filter criterion.”
If you’re not convinced, then use radio buttons (or a dropdown list if space is tight): “Include only devices: ( ) With cooling, ( ) With or without cooling.”
If you wanted to include the option to filter on Without Cooling, then you must use radio buttons or a dropdown list: “Include only devices: ( ) With cooling, ( ) Without cooling.” Likewise, if you need to show more than two states, you must use radio buttons or a dropdown list: “Include only devices: ( ) With cooling, ( ) Without cooling,
( ) With or without cooling.”
You are correct that using a tri-state checkbox would be confusing. The mixed state is used to mean “some yes, some no” not “both yes and no.” Windows UX Interaction Guidelines specifically prohibit using the mixed state of the checkbox as a third state for a single item (you filter, in this case), or letting users select a mixed state (pg49).
In general it should be avoided.