Basically, a device type gives a host a JSON schema for config, and a set of data points the host can subscribe to or set.
Data points are numbers, strings, objects, and binary data, with no device-specific types, just metadata flags.
Devices can declare their own sub devices, but other than that, most cheap consumer gear can be represented with just those types, and most everything else is out of scope.
Still pre-1.0, not 100% finalized, but I have not seen any reason to make a breaking change since pretty early in the project history, except for removing a few experimental features that should never have been there in the first place.
I'd love to know what you guys think or if there's anything I should change before 1.0!