This is particularly useful downstream for distinguishing between
instances of these types.
I was unsure about `Device` as I noticed it has a `Temp` field that
looks like it might eventually store some non-PartialEq/Hash-friendly
fields.
Let me know if you'd like me to add a derive for `Device` or if there
are any issues with those I have updated.