I'm fairly new to HE, so I'm not sure if I've found a problem or yet another gap in my knowledge/understanding. Haven't found any posts related to this...
I'm a developer of an automation system for multiple hubs called Reactor, so I'm using Maker API and the events websocket to integrate with Hubitat. As part of that effort, I have to map the capabilities and attributes advertised by HE into the Reactor device data model. Although I've been at this for two years and have things running quite well, I am still in the learning phase and still surprised from time to time.
I have an Aeotec Smart Switch 6 (ZWave+) that I've recently moved from my Vera to Hubitat, included using the native driver. The advertised capabilities (from Maker API) are: Configuration, Actuator, VoltageMeasurement, Refresh, PowerMeter, EnergyMeter, Outlet, SwitchLevel, Switch, and Sensor. I've highlighted a couple of these for particular questions about consistency issues I'm seeing with the capabilities and attributes vs the developer docs and another device with similar capabilities:
- As described in the developer docs, the VoltageMeasurement capability has only two attributes,
voltage
andfrequency
. In the Aeotec device, these attributes are reported, but there are additional attributesvoltageL
andvoltageH
. While I recognize that devices may offer additional attributes, and that's a valuable flexibility, the naming of these attributes is inconsistent with another device I have, a ZooZ dual switch (ZEN25, also using the native driver) that reportsvoltageLow
andvoltageHigh
. Given that these are both supported by native drivers for Z-Wave devices, this seems like an error in one or the other. Similarly, the PowerMeter capability offers apower
attribute according to its documentation, but again, the Aeotec offerspowerL
andpowerH
and the ZEN25 reportspowerHigh
andpowerLow
. - Both devices have a
current
attribute, but the CurrentMeter attribute is not listed as a capability of either device (as reported by Maker API), and even if it was, the definition of CurrentMeter in the developer docs specifies the attribute name isamperage
, notcurrent
. And again, the Aeotec hascurrentH
andcurrentL
where the ZEN25 hascurrentHigh
andcurrentLow
. - It's a switch, but it reports SwitchLevel capability, which seems like it doesn't belong (that's for dimmers, right?). I can set any value and it sticks, but has no apparent effect on the switch state whatsoever (i.e. setting it to 0 does not turn the switch off if it's on, and setting it to 99 doesn't turn the switch on if it's off).
Of course, in mapping devices for my system, I try to make the mapping approach as flexible as possible (most of it is done in configuration files that can be changed and updated more quickly than the code). But, I'm just a poor broke developer working on my own time, getting the occasional donation, and can't afford every device to test with, and even if I could, some of what users have is unobtainium (no longer offered, limited geography, etc -- I'm sure that's a familiar song). But among these two that I do have, they seem in conflict. Is one correct, and if so, which? If they're both right... why? It seems like the developer docs intend a standard for some baseline predictability, but that seems to not apply to one of these devices. And if one is wrong, what are the prospects for it getting corrected? Because it seems to me at this point there are likely hundreds or thousands of users for each with rules that now depend on those incorrect names, so that's a big breaking change for one group of users or the other.