Only a couple things I could think of to consider:
Triggers:
1) Trigger on any code. Since users or codes aren't stored in the plugin (or in the device), there isn't an "invalid code" option (like I have with my Yale lock and your plugin). If codes are managed outside of the plugin, it may be nice to trigger off any integer. Example Code options:
" " (Blank) no numbers pressed, trigger on Event Type only. <-- That one works now
* Any integer will trigger with event.
?-????????? Any 1 - 9 digit integer will trigger with event.
I'm not sure what character is a wildcard in pythonese.
1b) Maybe provide a sample condition python script where a user could fill in all their valid codes so the trigger would only fire if it's NOT one of the valid codes in the condition.
- Code: Select all
if device.lastCodeEntered = 1234 or = 5678 or = 9012 #<-- probably wrong, my first 149 attempts usually are.
2) Trigger on code regardless of enter, timeout or disarm <-- should all = disarm. So Event Type / Key Pressed could be (for example):
Enter
Cancel
Home
Away
Disarm
Timeout
Any Disarm (Enter, Timeout or Disarm)
Any Event Type (Just triggers off the code, regardless of how it was transmitted)
3) Maybe a trigger off the battery power setting thing. When the Ring device is on battery power, if the proximity sensor detects someone, it changes it's power setting which broadcasts in z-wave. When it's plugged in, this never happens because it stays in normal power mode. So if your ring keypad is mounted without a USB cord, you could trigger on the presence of someone.
Actions: FYI, after running the commands from that post, the beeps and color flashes and stuff all run on a single cycle (that's why there isn't a corresponding OFF command).....
The only action I would like to see is a way to capture the input (Code Entered). Can it be written into a device state? state = lastCodeEntered. <-- Helpful if there is a way to trigger off any integer.
For myself, I'm looking at one of two methods.... One is a variable that is populated when a keypad code is entered. A change in the variable runs a script that will compare that code against a list of users in a CSV file. If the user is on the list, another variable is populate with the user's name. If not, that variable is populated with "Fail".
The other method would be a user plugin. (version 168 or so). All human info would be maintained in there. (I'm still on this step, the next step would be figuring out how to integrate those plugin saved states with other plugins that are people based: Presence detection, iMessage, email, pushover, access control, etc.)
Side note: When trolling the forums last night looking for code help on my plugin, there was discussion on a thread about something similar, but instead of being human-centric, it would be room-centric. If I ever get mine finished, I would only have to change verbiage around... name -> room. Email -> lamp, etc.