Repository navigation
Conversation
New plugin for the Grow fingerprint modules on a serial port: R503 (with RGB LED ring), R307, R502, ZFM-20, AS608 and compatibles. Plugin ID 190 as reserved in letscontrolit#3839 (see letscontrolit#5670). - Recognise a finger: slot ID and score to controllers and rules - Enrol (first free slot or given slot), delete, count and list fingers with commands, JSON answers over HTTP for list and enroll - Enrolment progress as task value and events - R503 LED ring feedback and fingerprint,led command - Touch detection on the WAKEUP pin, or polling; non-blocking state machine - Added to PLUGIN_SET_MAX (ESP32) and the PLUGIN_USES_SERIAL list - Documentation: plugin page, commands, events, plugin lists Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Great, I'll have a look at the code asap. |
|
Done, thanks! The PR now resolves #5670. |
- New Plugin_Security category with P190 and a matching Security section in the plugin list, instead of listing it under RFID - Drop the hand-added row from _plugin_sets_overview.repl, it is regenerated for ReadTheDocs Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
P190_protocol.h now holds only the constants and the declarations. The .cpp is built with the plugin (USES_P190), or on its own with P190_HOST_TEST for the host unit tests of the protocol. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The serial GPIOs must be selected in the settings like for the other serial plugins; drops the settings page script, the defaults applied on save and on init, and the related documentation. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
At most P190_MAX_READ_BYTES (64, a full acknowledge is 52 bytes) are handled per call, and dropping stale bytes before a command only reads those already received, so a module (or noise) that keeps sending can't block ESPEasy. A missing acknowledge still ends with the response timeout. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
There is one thing missing still, but it's not very obvious: Source formatting. (It's mentioned in the developer documentation though) |
Formatted with the repository uncrustify.cfg (Uncrustify 0.79). One-line loops and case statements are written on several lines, and the jobs without parameters use a startJob(event, P190_Job) overload, so the formatter output stays readable. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Thanks for the hint! I installed Uncrustify (0.79) and formatted the sources with the repository |
Any GPIO works for the serial port on ESP32, so the wiring table and the Sensor section no longer suggest GPIO numbers. The docs now say that the polling interval is the plugin's Scan interval setting (msec) and why the regular task Interval isn't used. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- PLUGIN_GET_DISCOVERY_VTYPES with the per-value custom VType, as in P026 - Screenshot of the Device Configuration page in the documentation Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…y size Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…IDs, boolToString() Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
A request to keep stuff a bit organized: Can you resolve the comments that you've resolved/fixed/improved/etc.? |
…elling Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Sure, done: I resolved the threads that are fixed. The one about the minimum score is still open, as there I only partly followed your suggestion (see my reply there), so I leave that to you. |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
There are a few features that aren't available in the plugin, not sure if you have planned to add them, as they can be a bit tricky, or even risky, to implement, so don't start Claude yet 😃 but let's first discuss this:
The baud rate and module address aren't that hard to implement, and they should also properly take care of updating the settings. NB: There parameters are stored in flash memory in the sensor, and there is no way to do a factory reset on the sensor, so only a lucky guess or a brute-force trial and error, until the correct module address or password is found, can revive it. These changes to the sensor configuration can also be set from an external application (Windows or mobile-app only, AFAICS), but come with the same risks, and should then also be updated in the plugin configuration. |
|
Thanks for raising this, I hadn't planned them for this first version, on purpose:
If you prefer to have any of them in this PR, let me know. Docs updated in 51f76a1: the plugin settings say that baud rate, password and address must match the module and are not changed by the plugin, plus a warning about losing the password or address. |
…lugin Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
[P190] Security - Fingerprint (Grow R503/R307)
New plugin for the Grow fingerprint modules on a serial port: R503 (with RGB LED ring), R307, R502, ZFM-20, AS608 and compatibles. Plugin ID 190 as reserved in #3839 (see #5670).
Resolves #5670
Features
<task>#ID, -1 = not recognised)fingerprint,enrollwithout ID uses the first free slotfingerprint,listandfingerprint,enrollover HTTPfingerprint,ledcommandTaskValuesWriterHelper)Changes
src/_P190_Fingerprint.ino,src/src/PluginStructs/P190_*define_plugin_sets.h: added toPLUGIN_SET_MAX(ESP32 only) and to thePLUGIN_USES_SERIALlist;Custom-sample.hentryP190.rst, commands and events (also included in the Command and Events reference), plugin list,_plugin_substitutions_p19x.repl, MAX build set overviewTesting
custom_ESP32_4M316k) against the currentmegamega-20260720with this plugin (P190): recognition, enrolment at the first free slot and at a given slot,fingerprint,list,fingerprint,delete,fingerprint,ledand the automatic LED ring feedback. Not tested on hardware:fingerprint,deleteall.Notes / questions
_plugin_categories.repland_Plugin.rst(as suggested in the review).