mirror of
https://github.com/esphome/esphome.git
synced 2024-11-22 15:08:10 +01:00
Turn off PN532 RF field when not expecting a tag (#1046)
* Turn off PN532 RF field when not expecting a tag Avoids interference with Wifi connectivity of nearby devices. * Rename turn_off_rf_ method * documented off command bytes Co-authored-by: Guillermo Ruffino <glm.net@gmail.com>
This commit is contained in:
parent
f63fd9696f
commit
bab562dc3a
2 changed files with 19 additions and 1 deletions
|
@ -86,6 +86,8 @@ void PN532::setup() {
|
|||
this->mark_failed();
|
||||
return;
|
||||
}
|
||||
|
||||
this->turn_off_rf_();
|
||||
}
|
||||
|
||||
void PN532::update() {
|
||||
|
@ -114,13 +116,16 @@ void PN532::loop() {
|
|||
|
||||
if (read.size() <= 2 || read[0] != 0x4B) {
|
||||
// Something failed
|
||||
this->turn_off_rf_();
|
||||
return;
|
||||
}
|
||||
|
||||
uint8_t num_targets = read[1];
|
||||
if (num_targets != 1)
|
||||
if (num_targets != 1) {
|
||||
// no tags found or too many
|
||||
this->turn_off_rf_();
|
||||
return;
|
||||
}
|
||||
|
||||
// const uint8_t target_number = read[2];
|
||||
// const uint16_t sens_res = uint16_t(read[3] << 8) | read[4];
|
||||
|
@ -150,6 +155,17 @@ void PN532::loop() {
|
|||
format_uid(buf, nfcid, nfcid_length);
|
||||
ESP_LOGD(TAG, "Found new tag '%s'", buf);
|
||||
}
|
||||
|
||||
this->turn_off_rf_();
|
||||
}
|
||||
|
||||
void PN532::turn_off_rf_() {
|
||||
ESP_LOGVV(TAG, "Turning RF field OFF");
|
||||
this->pn532_write_command_check_ack_({
|
||||
0x32, // RFConfiguration
|
||||
0x1, // RF Field
|
||||
0x0 // Off
|
||||
});
|
||||
}
|
||||
|
||||
float PN532::get_setup_priority() const { return setup_priority::DATA; }
|
||||
|
|
|
@ -55,6 +55,8 @@ class PN532 : public PollingComponent,
|
|||
|
||||
bool read_ack_();
|
||||
|
||||
void turn_off_rf_();
|
||||
|
||||
bool requested_read_{false};
|
||||
std::vector<PN532BinarySensor *> binary_sensors_;
|
||||
std::vector<PN532Trigger *> triggers_;
|
||||
|
|
Loading…
Reference in a new issue