mirror of
https://github.com/esphome/esphome.git
synced 2024-11-25 16:38:16 +01:00
(fingerprint_grow) Added on_finger_scan_invalid automation. (#5885)
This commit is contained in:
parent
a784f1e691
commit
04b3547992
5 changed files with 35 additions and 0 deletions
|
@ -15,6 +15,7 @@ from esphome.const import (
|
||||||
CONF_ON_ENROLLMENT_SCAN,
|
CONF_ON_ENROLLMENT_SCAN,
|
||||||
CONF_ON_FINGER_SCAN_MATCHED,
|
CONF_ON_FINGER_SCAN_MATCHED,
|
||||||
CONF_ON_FINGER_SCAN_UNMATCHED,
|
CONF_ON_FINGER_SCAN_UNMATCHED,
|
||||||
|
CONF_ON_FINGER_SCAN_INVALID,
|
||||||
CONF_PASSWORD,
|
CONF_PASSWORD,
|
||||||
CONF_SENSING_PIN,
|
CONF_SENSING_PIN,
|
||||||
CONF_SPEED,
|
CONF_SPEED,
|
||||||
|
@ -42,6 +43,10 @@ FingerScanUnmatchedTrigger = fingerprint_grow_ns.class_(
|
||||||
"FingerScanUnmatchedTrigger", automation.Trigger.template()
|
"FingerScanUnmatchedTrigger", automation.Trigger.template()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
FingerScanInvalidTrigger = fingerprint_grow_ns.class_(
|
||||||
|
"FingerScanInvalidTrigger", automation.Trigger.template()
|
||||||
|
)
|
||||||
|
|
||||||
EnrollmentScanTrigger = fingerprint_grow_ns.class_(
|
EnrollmentScanTrigger = fingerprint_grow_ns.class_(
|
||||||
"EnrollmentScanTrigger", automation.Trigger.template(cg.uint8, cg.uint16)
|
"EnrollmentScanTrigger", automation.Trigger.template(cg.uint8, cg.uint16)
|
||||||
)
|
)
|
||||||
|
@ -108,6 +113,13 @@ CONFIG_SCHEMA = (
|
||||||
),
|
),
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
|
cv.Optional(CONF_ON_FINGER_SCAN_INVALID): automation.validate_automation(
|
||||||
|
{
|
||||||
|
cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(
|
||||||
|
FingerScanInvalidTrigger
|
||||||
|
),
|
||||||
|
}
|
||||||
|
),
|
||||||
cv.Optional(CONF_ON_ENROLLMENT_SCAN): automation.validate_automation(
|
cv.Optional(CONF_ON_ENROLLMENT_SCAN): automation.validate_automation(
|
||||||
{
|
{
|
||||||
cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(
|
cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(
|
||||||
|
@ -162,6 +174,10 @@ async def to_code(config):
|
||||||
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var)
|
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var)
|
||||||
await automation.build_automation(trigger, [], conf)
|
await automation.build_automation(trigger, [], conf)
|
||||||
|
|
||||||
|
for conf in config.get(CONF_ON_FINGER_SCAN_INVALID, []):
|
||||||
|
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var)
|
||||||
|
await automation.build_automation(trigger, [], conf)
|
||||||
|
|
||||||
for conf in config.get(CONF_ON_ENROLLMENT_SCAN, []):
|
for conf in config.get(CONF_ON_ENROLLMENT_SCAN, []):
|
||||||
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var)
|
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var)
|
||||||
await automation.build_automation(
|
await automation.build_automation(
|
||||||
|
|
|
@ -134,12 +134,14 @@ uint8_t FingerprintGrowComponent::scan_image_(uint8_t buffer) {
|
||||||
case NO_FINGER:
|
case NO_FINGER:
|
||||||
if (this->sensing_pin_ != nullptr) {
|
if (this->sensing_pin_ != nullptr) {
|
||||||
ESP_LOGD(TAG, "No finger");
|
ESP_LOGD(TAG, "No finger");
|
||||||
|
this->finger_scan_invalid_callback_.call();
|
||||||
} else {
|
} else {
|
||||||
ESP_LOGV(TAG, "No finger");
|
ESP_LOGV(TAG, "No finger");
|
||||||
}
|
}
|
||||||
return this->data_[0];
|
return this->data_[0];
|
||||||
case IMAGE_FAIL:
|
case IMAGE_FAIL:
|
||||||
ESP_LOGE(TAG, "Imaging error");
|
ESP_LOGE(TAG, "Imaging error");
|
||||||
|
this->finger_scan_invalid_callback_.call();
|
||||||
default:
|
default:
|
||||||
return this->data_[0];
|
return this->data_[0];
|
||||||
}
|
}
|
||||||
|
@ -152,10 +154,12 @@ uint8_t FingerprintGrowComponent::scan_image_(uint8_t buffer) {
|
||||||
break;
|
break;
|
||||||
case IMAGE_MESS:
|
case IMAGE_MESS:
|
||||||
ESP_LOGE(TAG, "Image too messy");
|
ESP_LOGE(TAG, "Image too messy");
|
||||||
|
this->finger_scan_invalid_callback_.call();
|
||||||
break;
|
break;
|
||||||
case FEATURE_FAIL:
|
case FEATURE_FAIL:
|
||||||
case INVALID_IMAGE:
|
case INVALID_IMAGE:
|
||||||
ESP_LOGE(TAG, "Could not find fingerprint features");
|
ESP_LOGE(TAG, "Could not find fingerprint features");
|
||||||
|
this->finger_scan_invalid_callback_.call();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return this->data_[0];
|
return this->data_[0];
|
||||||
|
|
|
@ -124,6 +124,9 @@ class FingerprintGrowComponent : public PollingComponent, public uart::UARTDevic
|
||||||
void add_on_finger_scan_unmatched_callback(std::function<void()> callback) {
|
void add_on_finger_scan_unmatched_callback(std::function<void()> callback) {
|
||||||
this->finger_scan_unmatched_callback_.add(std::move(callback));
|
this->finger_scan_unmatched_callback_.add(std::move(callback));
|
||||||
}
|
}
|
||||||
|
void add_on_finger_scan_invalid_callback(std::function<void()> callback) {
|
||||||
|
this->finger_scan_invalid_callback_.add(std::move(callback));
|
||||||
|
}
|
||||||
void add_on_enrollment_scan_callback(std::function<void(uint8_t, uint16_t)> callback) {
|
void add_on_enrollment_scan_callback(std::function<void(uint8_t, uint16_t)> callback) {
|
||||||
this->enrollment_scan_callback_.add(std::move(callback));
|
this->enrollment_scan_callback_.add(std::move(callback));
|
||||||
}
|
}
|
||||||
|
@ -172,6 +175,7 @@ class FingerprintGrowComponent : public PollingComponent, public uart::UARTDevic
|
||||||
sensor::Sensor *last_finger_id_sensor_{nullptr};
|
sensor::Sensor *last_finger_id_sensor_{nullptr};
|
||||||
sensor::Sensor *last_confidence_sensor_{nullptr};
|
sensor::Sensor *last_confidence_sensor_{nullptr};
|
||||||
binary_sensor::BinarySensor *enrolling_binary_sensor_{nullptr};
|
binary_sensor::BinarySensor *enrolling_binary_sensor_{nullptr};
|
||||||
|
CallbackManager<void()> finger_scan_invalid_callback_;
|
||||||
CallbackManager<void(uint16_t, uint16_t)> finger_scan_matched_callback_;
|
CallbackManager<void(uint16_t, uint16_t)> finger_scan_matched_callback_;
|
||||||
CallbackManager<void()> finger_scan_unmatched_callback_;
|
CallbackManager<void()> finger_scan_unmatched_callback_;
|
||||||
CallbackManager<void(uint8_t, uint16_t)> enrollment_scan_callback_;
|
CallbackManager<void(uint8_t, uint16_t)> enrollment_scan_callback_;
|
||||||
|
@ -194,6 +198,13 @@ class FingerScanUnmatchedTrigger : public Trigger<> {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class FingerScanInvalidTrigger : public Trigger<> {
|
||||||
|
public:
|
||||||
|
explicit FingerScanInvalidTrigger(FingerprintGrowComponent *parent) {
|
||||||
|
parent->add_on_finger_scan_invalid_callback([this]() { this->trigger(); });
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
class EnrollmentScanTrigger : public Trigger<uint8_t, uint16_t> {
|
class EnrollmentScanTrigger : public Trigger<uint8_t, uint16_t> {
|
||||||
public:
|
public:
|
||||||
explicit EnrollmentScanTrigger(FingerprintGrowComponent *parent) {
|
explicit EnrollmentScanTrigger(FingerprintGrowComponent *parent) {
|
||||||
|
|
|
@ -500,6 +500,7 @@ CONF_ON_DOUBLE_CLICK = "on_double_click"
|
||||||
CONF_ON_ENROLLMENT_DONE = "on_enrollment_done"
|
CONF_ON_ENROLLMENT_DONE = "on_enrollment_done"
|
||||||
CONF_ON_ENROLLMENT_FAILED = "on_enrollment_failed"
|
CONF_ON_ENROLLMENT_FAILED = "on_enrollment_failed"
|
||||||
CONF_ON_ENROLLMENT_SCAN = "on_enrollment_scan"
|
CONF_ON_ENROLLMENT_SCAN = "on_enrollment_scan"
|
||||||
|
CONF_ON_FINGER_SCAN_INVALID = "on_finger_scan_invalid"
|
||||||
CONF_ON_FINGER_SCAN_MATCHED = "on_finger_scan_matched"
|
CONF_ON_FINGER_SCAN_MATCHED = "on_finger_scan_matched"
|
||||||
CONF_ON_FINGER_SCAN_UNMATCHED = "on_finger_scan_unmatched"
|
CONF_ON_FINGER_SCAN_UNMATCHED = "on_finger_scan_unmatched"
|
||||||
CONF_ON_JSON_MESSAGE = "on_json_message"
|
CONF_ON_JSON_MESSAGE = "on_json_message"
|
||||||
|
|
|
@ -1257,6 +1257,9 @@ fingerprint_grow:
|
||||||
number: 4
|
number: 4
|
||||||
password: 0x12FE37DC
|
password: 0x12FE37DC
|
||||||
new_password: 0xA65B9840
|
new_password: 0xA65B9840
|
||||||
|
on_finger_scan_invalid:
|
||||||
|
- homeassistant.event:
|
||||||
|
event: esphome.${device_name}_fingerprint_grow_finger_scan_invalid
|
||||||
on_finger_scan_matched:
|
on_finger_scan_matched:
|
||||||
- homeassistant.event:
|
- homeassistant.event:
|
||||||
event: esphome.${device_name}_fingerprint_grow_finger_scan_matched
|
event: esphome.${device_name}_fingerprint_grow_finger_scan_matched
|
||||||
|
|
Loading…
Reference in a new issue