Obviously manufacturers are not going to follow any common protocol, especially one coined by a hobbyist, but I kinda applaud the oversimplified design.
Opposite case: take solar inverters, energy storage battery systems etc. Problem: each manufacturer has their own interface to receive data such as solar production, or apply commands such as "charge battery at 3000W" "discharge battery at 1500W". Enter SunSpec, a committee-driven common standard which, if everyone followed it, would offer perfect interoperability with no custom per-device driver layers.
End result - committee specifying every imaginable complexity, to the point that if you want to receive solar production data, you have to implement six different interfaces implementation each of which is optional for the manufacturers. Yesterday I spent hours trying to figure out how to control the battery power level bidirectionally using SunSpec, and it appears this is just impossible to do, and there is no documentation how it's supposed to work; while the actual manufacturer of the battery system, thank god, offers their own custom interface, over which it's a single register write, understood in 5 minutes. So even though SunSpec has existed for... over a decade? ... it is hard to find any products that actually implement it. And the few that do, are actually not compliant even though they say so, but require understanding quirks (for example, a device reporting "not implemented" for a mandatory field which cannot be "not implemented", when they want to say "not available").
Enter alternative reality: SiwastajaSpec, written ad-hoc here in 2 minutes:
registers 40001-40002: power, in W, int32, positive = to grid, negative = from grid
registers 50001-50002: battery real power setpoint, in W, int32, positive = to grid, negative = from grid
registers 50003-50004: battery reactive power setpoint, in W, int32, positive = to grid, negative = from grid
... and so on. Pretty similar to Informatic0re's short list of 0x01 = temperature in degC, 0x02 = pressure in Pa...
If such thing existed, it would be followed, because implementing it would not be worth a full man-year or two. With no royalties and compliance programs, it would just benefit everyone. Sure, manufacturer specific alternative protocol would still be needed for those use cases for which the generic protocol is too simplified. But at least the generic protocol would be usable. Maybe for 95% of the cases.
Of course, genix has no way to configure gyro sensitivity or acceleration filters or temperature sensor sampling rate or whatever. There are three ways to deal with it:
(1) come up with perfectly generic and elegant set of configuration options
(2) leave room for "manufacturer specific" messages which can ride along on the same bus without conflicts
(3) make it a mode selection, "genix mode" or "manufacturer's custom mode", force users to use the latter when they need more features
1 does not work. 2 is the best. 3 is the safest option.
This is the takeaway: complexity and genericity do not play along at all. When you choose to do an abstracted, generic interface, you are going to throw away flexibility and options, and choosing "good defaults" for the end-users. This is fine, do it with pride. This is why Arduino is successful: you get the simple AnalogWrite() or whatever which gives you crappy 500Hz PWM, but it's simple to understand and it works. One can always choose to bypass the simplicity and use the custom solution.
This is how all Perfectly Elegant Generic Solutions fail: because of genericity, they make simple cases difficult. Because of genericity, they are too expensive to implement. And in case of SunSpec, it is wrong that the inverter manufacturer can choose which of the six information models they implement, but as data user, I have to implement every single one of them, when I only wanted a few simple numbers, the same subset everyone wants.