Using a .things file is not recommended because it is too error-prone. In 2 years I nage never needed to do that.
If the device is not being recognized as it should, you need to follow the binding documentation and collect DEBUG logs to determine what is happening.
That is true, but there are still many “Z-Wave version 1” devices. There are also Z-Wave 2 devices which don’t report their state. In either case, the Z-Wave binding won’t be able to offer you polling, unless you write a rule which explicitly issues a REFRESH command to the devices to be polled.
Here’s an example of such rule written in Jython/ (Python):
LogTitle = "Blinds Automation"
# Item registry items used in this rule:
class my_ir_items:
ALL_Z_WAVE_ROLLER_SHUTTERS_GROUP = "Group_Item_containing_ZWave_devices_to_be_polled_periodically"
@rule(
"Refresh Z-Wave state",
description="Poll the Z-Wave state every 5 minutes (for managing older Z-Wave shutters that don't report their state to the controller)",
tags=["roller shutter automation", "polling"],
)
@when("Time cron 1 0/5 * * * ?") # Poll item state each 5 minutes, starting at 00:00:01
def Rule_poll_state(event):
global logTitle
logPrefix = "Rule_refresh_state(): "
# First retrieve the group item from the item registry:
gShutter = get_item(my_ir_items.ALL_Z_WAVE_ROLLER_SHUTTERS_GROUP)
if gShutter is None:
# Group item not found: rule will not run
LogAction.logError(
logTitle,
logPrefix
+ "Group '{grp}' not found - nothing to do".format(
grp=my_ir_items.ALL_Z_WAVE_ROLLER_SHUTTERS_GROUP
),
)
return
LogAction.logDebug(
logTitle,
logPrefix
+ "Refresh Z-Wave state of {cnt} blind(s)".format(
cnt=gShutter.getAllMembers().size()
),
)
# Send REFRESH to each member of the gShutter group:
for x in gShutter.getAllMembers():
LogAction.logDebug(
logTitle,
logPrefix + "Refresh Z-Wave state of '{name}'".format(name=x.getName()),
)
events.sendCommand(x, "REFRESH")
Replace Group_Item_containing_ZWave_devices_to_be_polled_periodically with the name of the GroupItem containing the (Z-Wave) devices to be polled.
I’m performing this rule-based approach on all Z-Wave blinds (Fakro ARZ Z-WAVE and Fibaro FGR-223) at home. What you can also do, is add a 2nd rule which performs the command re-poll some time after the command is supposed to have been executed (e.g. 30 seconds if your blinds need 20 seconds to be operated). That second rule is then triggered when an Item received a command (different from REFRESH) and fires a timer after which the REFRESH command will be issued. I implemented the latter in Node-RED (so I could expose my blinds to Apple Homekit).