What are the values being returned when you report device disconnected? You should be checking if the value returned = -127 to determine if there was an error. Maybe it's just really cold in your basement lately?
From the commnents in the library (DallasTemperature.cpp):
// returns temperature in degrees C or DEVICE_DISCONNECTED if the
// device's scratch pad cannot be read successfully.
// the numeric value of DEVICE_DISCONNECTED is defined in
// DallasTemperature.h. It is a large negative number outside the
// operating range of the device
float DallasTemperature::getTempC(uint8_t* deviceAddress)
The definition of DEVICE_DISCONNECTED in DallasTemperature.h:
// Error Codes
#define DEVICE_DISCONNECTED -127
willnue