Aeotec Smart Switch 6 vs ZEN25 -- Capability and Attribute inconsistencies normal?

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:

  1. As described in the developer docs, the VoltageMeasurement capability has only two attributes, voltage and frequency. In the Aeotec device, these attributes are reported, but there are additional attributes voltageL and voltageH. 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 reports voltageLow and voltageHigh. 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 a power attribute according to its documentation, but again, the Aeotec offers powerL and powerH and the ZEN25 reports powerHigh and powerLow.
  2. 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 is amperage, not current. And again, the Aeotec has currentH and currentL where the ZEN25 has currentHigh and currentLow.
  3. 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.

1 Like