I just looked at the XML in the binding and see BARRIER_STATE and all the other channels you are seeing. I didnt realize the device database was updated back in April. I haven’t deleted (or reinitialized) the Things for my garage openers, which would have picked up these changes!
So, I reinitialized them and am in the same state as you (I’m also on 2.2.0 snapshot). I swapped my items from barrier_operator to barrier_state and everything is behaving as before. I tried the other channels and nothing came through. Which I’m not surprised about, since the device does not use the ALARM CC (Product Command Classes).
The items for one of my garage doors:
Switch GarageAttached_Door "Garage Door (Attached) [MAP(garagedoor.map):%s]" <garagedoor> (gGarageAttached,gLock,gGarageDoor,gSleep_Security)
Number GarageAttached_Door_Position "Garage Door (Attached) [MAP(garagedoor.map):%s]" <garagedoor> (gGarageAttached,gGarageDoor,gSleep_Security) {channel="zwave:device:07cb40a2:node177:barrier_state"}
garagedoor.map:
0=CLOSED
ON=CLOSED
252=CLOSING
253=STOPPED
254=OPENING
255=OPEN
OFF=OPEN
-=Unknown
NULL=Unknown
This rule sends a 255 or 0 to open and close the door, based on the switch state:
rule "Lock: Update garage door barrier_state after switch state change events (GarageAttached_Door)"
when
Item GarageAttached_Door changed
then
if (GarageAttached_Door.state == ON) {//closed
GarageAttached_Door_Position.sendCommand("0")
logDebug("Rules", "Lock: Update garage door barrier_state after switch state change events (GarageAttached_Door_Position) [{}]",GarageAttached_Door_Position.state)
}
else if (GarageAttached_Door.state == OFF) {
GarageAttached_Door_Position.sendCommand("255")
logDebug("Rules", "Lock: Update garage door barrier_state after switch state change events (GarageAttached_Door_Position) [{}]",GarageAttached_Door_Position.state)
}
end
The number items change if the remote for the garage doors are used, so this rule keeps the state of the switch correct:
rule "Lock: Update garage door states after barrier_state events (GarageAttached_Door_Position)"
when
Item GarageAttached_Door_Position received update
then
if (GarageAttached_Door_Position.state == 255 && GarageAttached_Door.state == ON) {
GarageAttached_Door.postUpdate(OFF)
logDebug("Rules", "Lock: Update garage door states after barrier_state events (GarageAttached_Door) [{}]",GarageAttached_Door.state)
}
else if (GarageAttached_Door_Position.state == 0 && GarageAttached_Door.state == OFF) {
GarageAttached_Door.postUpdate(ON)
logDebug("Rules", "Lock: Update garage door states after barrier_state events (GarageAttached_Door) [{}]",GarageAttached_Door.state)
}
end
EDIT: Here is an updated version that uses a lambda to avoid duplication of code when more than one NGD00Z is being used.