Remove AUTO_LOAD from as3935 (#4630)

This commit is contained in:
Jesse Hills 2023-03-30 14:08:31 +13:00 committed by GitHub
parent a014d853a4
commit b5d0aede38
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 27 additions and 11 deletions

View file

@ -12,7 +12,6 @@ from esphome.const import (
CONF_CAPACITANCE, CONF_CAPACITANCE,
) )
AUTO_LOAD = ["sensor", "binary_sensor"]
MULTI_CONF = True MULTI_CONF = True
CONF_AS3935_ID = "as3935_id" CONF_AS3935_ID = "as3935_id"

View file

@ -26,9 +26,13 @@ void AS3935Component::setup() {
void AS3935Component::dump_config() { void AS3935Component::dump_config() {
ESP_LOGCONFIG(TAG, "AS3935:"); ESP_LOGCONFIG(TAG, "AS3935:");
LOG_PIN(" Interrupt Pin: ", this->irq_pin_); LOG_PIN(" Interrupt Pin: ", this->irq_pin_);
#ifdef USE_BINARY_SENSOR
LOG_BINARY_SENSOR(" ", "Thunder alert", this->thunder_alert_binary_sensor_); LOG_BINARY_SENSOR(" ", "Thunder alert", this->thunder_alert_binary_sensor_);
#endif
#ifdef USE_SENSOR
LOG_SENSOR(" ", "Distance", this->distance_sensor_); LOG_SENSOR(" ", "Distance", this->distance_sensor_);
LOG_SENSOR(" ", "Lightning energy", this->energy_sensor_); LOG_SENSOR(" ", "Lightning energy", this->energy_sensor_);
#endif
} }
float AS3935Component::get_setup_priority() const { return setup_priority::DATA; } float AS3935Component::get_setup_priority() const { return setup_priority::DATA; }
@ -44,16 +48,22 @@ void AS3935Component::loop() {
ESP_LOGI(TAG, "Disturber was detected - try increasing the spike rejection value!"); ESP_LOGI(TAG, "Disturber was detected - try increasing the spike rejection value!");
} else if (int_value == LIGHTNING_INT) { } else if (int_value == LIGHTNING_INT) {
ESP_LOGI(TAG, "Lightning has been detected!"); ESP_LOGI(TAG, "Lightning has been detected!");
if (this->thunder_alert_binary_sensor_ != nullptr) #ifdef USE_BINARY_SENSOR
if (this->thunder_alert_binary_sensor_ != nullptr) {
this->thunder_alert_binary_sensor_->publish_state(true); this->thunder_alert_binary_sensor_->publish_state(true);
this->set_timeout(10, [this]() { this->thunder_alert_binary_sensor_->publish_state(false); });
}
#endif
#ifdef USE_SENSOR
uint8_t distance = this->get_distance_to_storm_(); uint8_t distance = this->get_distance_to_storm_();
if (this->distance_sensor_ != nullptr) if (this->distance_sensor_ != nullptr)
this->distance_sensor_->publish_state(distance); this->distance_sensor_->publish_state(distance);
uint32_t energy = this->get_lightning_energy_(); uint32_t energy = this->get_lightning_energy_();
if (this->energy_sensor_ != nullptr) if (this->energy_sensor_ != nullptr)
this->energy_sensor_->publish_state(energy); this->energy_sensor_->publish_state(energy);
#endif
} }
this->thunder_alert_binary_sensor_->publish_state(false);
} }
void AS3935Component::write_indoor(bool indoor) { void AS3935Component::write_indoor(bool indoor) {

View file

@ -1,9 +1,14 @@
#pragma once #pragma once
#include "esphome/core/component.h" #include "esphome/core/component.h"
#include "esphome/core/defines.h"
#include "esphome/core/hal.h" #include "esphome/core/hal.h"
#ifdef USE_SENSOR
#include "esphome/components/sensor/sensor.h" #include "esphome/components/sensor/sensor.h"
#endif
#ifdef USE_BINARY_SENSOR
#include "esphome/components/binary_sensor/binary_sensor.h" #include "esphome/components/binary_sensor/binary_sensor.h"
#endif
namespace esphome { namespace esphome {
namespace as3935 { namespace as3935 {
@ -52,6 +57,15 @@ enum AS3935Values {
}; };
class AS3935Component : public Component { class AS3935Component : public Component {
#ifdef USE_SENSOR
SUB_SENSOR(distance)
SUB_SENSOR(energy)
#endif
#ifdef USE_BINARY_SENSOR
SUB_BINARY_SENSOR(thunder_alert)
#endif
public: public:
void setup() override; void setup() override;
void dump_config() override; void dump_config() override;
@ -59,11 +73,7 @@ class AS3935Component : public Component {
void loop() override; void loop() override;
void set_irq_pin(GPIOPin *irq_pin) { irq_pin_ = irq_pin; } void set_irq_pin(GPIOPin *irq_pin) { irq_pin_ = irq_pin; }
void set_distance_sensor(sensor::Sensor *distance_sensor) { distance_sensor_ = distance_sensor; }
void set_energy_sensor(sensor::Sensor *energy_sensor) { energy_sensor_ = energy_sensor; }
void set_thunder_alert_binary_sensor(binary_sensor::BinarySensor *thunder_alert_binary_sensor) {
thunder_alert_binary_sensor_ = thunder_alert_binary_sensor;
}
void set_indoor(bool indoor) { indoor_ = indoor; } void set_indoor(bool indoor) { indoor_ = indoor; }
void write_indoor(bool indoor); void write_indoor(bool indoor);
void set_noise_level(uint8_t noise_level) { noise_level_ = noise_level; } void set_noise_level(uint8_t noise_level) { noise_level_ = noise_level; }
@ -92,9 +102,6 @@ class AS3935Component : public Component {
virtual void write_register(uint8_t reg, uint8_t mask, uint8_t bits, uint8_t start_position) = 0; virtual void write_register(uint8_t reg, uint8_t mask, uint8_t bits, uint8_t start_position) = 0;
sensor::Sensor *distance_sensor_{nullptr};
sensor::Sensor *energy_sensor_{nullptr};
binary_sensor::BinarySensor *thunder_alert_binary_sensor_{nullptr};
GPIOPin *irq_pin_; GPIOPin *irq_pin_;
bool indoor_; bool indoor_;