Best way to manage a device information class
I think you should have :


A constructor taking device_id, device_type and home as an argument.
a static method doing the file handling and calling the constructor previously defined.


This would make your code more modular, easier to test and would put different independent things (device creation and file handling) in different places.

I'd also like to point out that at the moment, your constructor does create a non-properly-initialised device when the file does not exist. It would probably be much better not to create it at all (and return null ?) if we don't have the required information to do so.

Also, and this is not relevant to your question but there's not real need for 2 variables XML_DIRECTORY_ON_DEVICE and ROOT_DEVICE_XML_FILE if you are always going to call them together. It might be just as easy to have "XML_PATH".