while ( Wire.available( ) < 2 ) // Wait for data
{;;} << a block with empty statements?
can be written as
while ( Wire.available( ) < 2 ) {}
instead of float division in getTemp/hum you can do a multiply with the reciproke (faster)
_last_humidity is nowhere used.
in detectSensor() you should check the return value of Wire.endtransmission(),
if the device isnot on the bus you will get a non zero value.
Wire.beginTransmission( SI7005_ADR );
Wire.write( REG_ID ); // Select the ID register
Wire.endTransmission( false ); // We don't want to release the bus - this is important!