Decoding Yale Z-Wave Lock with Homey
Since we last post on Yale lock and Homey, we have received several feedbacks on the Yale app on Homey app store from our customers. There have been report that a YDD424 pairing as a YFM40 in Homey or YDM4109 pairing as a YDD424. While remote locking and unlock works fine for all the locks, there are instances such as there is no status feedback for certain manual actions on the lock (such as autolock or fingerprint unlock).
This technical article aims to provide everyone a better understanding of the Yale Z-Wave information. Why Homey (unlike other hubs such as Vera, FIBARO and Zipato) is able to tell if the lock is unlocked from the back or locked from the touchpad. We also aim to share some of the limitations of certain models of Yale lock in terms of sending status feedback to the Z-Wave hub.
As such, we embarked on the quest of understanding the Yale Z-Wave better, we loan a set of YDD424, YDM4109 and YFM40 to do some detective work and here’s some of our basic information and findings.
1. Same Z-Wave module used for different locks for different batch
Regardless of the lock you have, whether it is YDM4109, YFM40 or YDD424, it uses the same Z-Wave module. When the Yale Z-Wave module is set into a lock and paired with Homey, it register 3 pieces of information to Homey : Manufacturer ID, Product Type ID and Product ID. In fact all Z-Wave devices register these information when being included to a hub.
For the test locks we have on hand, YDD424 pairs with a Manufacturer ID 197, Product Type ID 7, Product ID 0 while a YFM40 pairs with a Manufacturer ID 197, Product Type ID 199, Product ID 0 even though we used the same module in both locks. It seems to suggest that the Product Type ID determine which lock model but we’ve also seen a YDD424 produces Manufacturer ID 197, Product Type ID 255, Product ID 65535.
As a result, when you have a batch of Z-Wave module may producing an entire new range of Product Type ID or Product ID, Homey will identify it as a generic z-wave device until we update the new information into the Yale app. There might be cases that 2 different lock model, producing the same Product Type ID and Product ID. In this case, for example, even if you have a YDD424, it might appear as YFM40 in the Yale app.
Please let us know if you have a Yale lock that is included as generic Z-Wave device. We are in the process of adding more supported locks in the Yale app.
2. Yale sends a fixed set of Z-Wave command class during status update
Everytime you operate a Yale lock that is Z-Wave enabled, it sends out a status update via a Z-Wave command class called COMMAND_CLASS_ALARM. For example, if you unlock with the thumbturn behind the lock or when you lock by touching the number pad in front, the Yale lock will send this command class with some details to the Z-Wave hub. Note that Z-Wave transmission for locks are encrypted. We can only inspect the packets between Homey and the lock after we have included the lock as a generic Z-Wave device.
It is up to the Z-Wave hub to decipher the COMMAND_CLASS_ALARM to see if the lock is simply being unlocked or if it is being unlocked by a specific action. Hub like FIBARO, Vera and Zipato simply only decipher the lock and unlock status and discards the details. For Homey, we are able to take it to another level by deciphering details of the COMMAND_CLASS_ALARM that a specific action has taken place (provided that the lock sends out the status update).
We have analysed the COMMAND_CLASS_ALARM sent out by some of the mode common Yale models and realised that they updates the Z-Wave hub with a fix set of details. To go a little bit more in-depth, here’s how they look like:
|Alarm Type||Alarm Type Level||Action|
|19||N||User pin unlocked by user N|
|21||1||Locked by thumbturn|
|21||2||Locked by touchpad|
|21||3||Locked by button|
|22||1||Unlocked by thumbturn|
|22||2||Unlocked by button|
|24||None||Locked by Z-Wave|
|25||None||Unlocked by Z-Wave|
The Z-Wave hub like Vera and FIBARO will just update the lock status based on the Alarm Type and ignore Alarm Type Level entirely. With Homey we can determine the action by Alarm Type and allow automation by Homey flows.
With above being said, we also noticed that some models of lock does not send any COMMAND_CLASS_ALARM even for specific action. For example, the YFM40 and YDM4109 does not send a status update when you lock manually using thumbturn regardless of hub (we tried Vera and FIBARO and we cannot tell that it is locked when operating by thumbturn). We can only depends on the hub to poll the lock for the latest status.
Another disappointing point we noticed is that, the fingerprint locks do not send any Z-Wave status updates when you unlock with fingerprint! One would assume that since the fingerprint are tied to a specific user pin, we can know which user unlock with fingerprint. Unfortunately, for fingerprint locks only send Z-Wave status updates when operated by touchpad.
So far, we notice that the COMMAND_CLASS_ALARM from common Yale models available in Singapore are rather standard, however, we might not have covered every possible details in the COMMAND_CLASS_ALARM for different locks. We also hope that there is no 2 model of locks producing the same Product Type ID and Product ID. Feel free to let us know if you notice your Yale lock appearing as different model in the UI.
Regardless, with this app, Homey remains to be the most compatible Z-Wave hub for Yale locks.
Source : Automate Asia