[RELEASE] Virtual Keypad

I did not find the "virtual keypad hsm options" section. I looked in Devices -> Keypad - Main; Apps -> Virtual Keypad Manager; Apps -> Keypad - Main and in the Dashboard. Where do I find it?

In the app-> virtual keypad manager, go into the keypad child app you created, its the top option in this screenshot after the 'virtual keypad mode options' section

I already had that selected:


In the Dashboard, I have the Disarm button set to this:

It works with requiring a code to press but dose not change the HSM status.

OK, I got it! I had to add "Keypad - Main (HSM-disarm)" in Apps -> Keyboard. Then I was able to select it in the Dashboard -> Keyboard.

I have created a tile that shows asterisks as buttons are pushed:


Is it possible to show the numbers entered instead of asterisks?

It would need a new feature/option to enable number visibility, so that is not supported currently.

Is there a way to change the background color of this tile based on what the tile is displaying? Red for input denied, green for input accepted.

Hi, I've resolved this now. I removed everything and started again. I think I'd somehow crossed over the basic keypad with the advanced keypad. Appreciated and thank you for helping thus far. Amazing piece of kit

I've been trying to get this set up. I've got the json and css configured, but even though it indicates it's arming HSM Away, it never actually does it. Also, when I try to set a pin code in the keypad manager, I get this error: errororg.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'h6OTvZolQk9XuHhUf2nrZXBp32j2EDY05/qMQIcZ6NXJ5ZyHCJ/Dm1oDpmA1+IaC' with class 'java.lang.String' to class 'java.util.Map' on line 678 (method setCode)

On the main keypad device, there is a state that holds the success or failure message, so you could setup a rm trigger or something to watch the keypad for
UserInput: Failed

state getting set and change the color of a tile.

that state resets itself when the inputdisplay resets so you may need your own logic to extend how long you want the color to be changed.. or just watch for the
UserInput: Success

State change to reset it.

The issue with lockcodemanager will need to be asked in that thread, you can also set codes directly on the keypad device until you get that working.
Edit, unless you mean saving a code to the keypad device.. please give a little more info if that is the case, i have not seen this issue.

For the first question, are you using the custom-arm button or the hsm-arm button?

Look at the recent messages in this thread with nelsonh to see the difference and what you should use for your desired functionality

I run into errors when trying to add a code in the keypad device. That's what led me to try the lock code manager. I've been playing with the driver code to add a little more information. Here's the block of code that's failing as well as what displays in the log:

    codeMap = ["name":"${name}", "code":"${code}"]
    data = ["${codeNumber}":codeMap]
        log.debug "1data ${data}"
        log.debug "1enc data ${JsonOutput.toJson(data)}"
    lockCodes << data
    if (optEncrypt) data = encrypt(JsonOutput.toJson(data))
    value = "added"

I was able to get it working by changing the lines in the code to be:

    String sData = data.toString()
    if (optEncrypt) sData = encrypt(JsonOutput.toJson(data)).toString()
    value = "added"

Interesting, looks like it might only be an issue if encrypting is turned on. Thanks for posting the fix, ill try to get an updated version out after testing

1 Like