ESPHome 2026.6.0-dev
Loading...
Searching...
No Matches
as3935.h
Go to the documentation of this file.
1#pragma once
2
5#include "esphome/core/hal.h"
6#ifdef USE_SENSOR
8#endif
9#ifdef USE_BINARY_SENSOR
11#endif
12
13namespace esphome::as3935 {
14
15static const uint8_t DIRECT_COMMAND = 0x96;
16static const uint8_t ANTFREQ = 3;
17
33
53
56 INDOOR = 0x12,
57 OUTDOOR = 0xE,
60 NOISE_INT = 0x01
61};
62
63class AS3935Component : public Component {
64#ifdef USE_SENSOR
65 SUB_SENSOR(distance)
66 SUB_SENSOR(energy)
67#endif
68
69#ifdef USE_BINARY_SENSOR
70 SUB_BINARY_SENSOR(thunder_alert)
71#endif
72
73 public:
74 void setup() override;
75 void dump_config() override;
76 void loop() override;
77
78 void set_irq_pin(GPIOPin *irq_pin) { irq_pin_ = irq_pin; }
79
80 void set_indoor(bool indoor) { indoor_ = indoor; }
81 void write_indoor(bool indoor);
82 void set_noise_level(uint8_t noise_level) { noise_level_ = noise_level; }
83 void write_noise_level(uint8_t noise_level);
84 void set_watchdog_threshold(uint8_t watchdog_threshold) { watchdog_threshold_ = watchdog_threshold; }
85 void write_watchdog_threshold(uint8_t watchdog_threshold);
86 void set_spike_rejection(uint8_t spike_rejection) { spike_rejection_ = spike_rejection; }
87 void write_spike_rejection(uint8_t write_spike_rejection);
88 void set_lightning_threshold(uint8_t lightning_threshold) { lightning_threshold_ = lightning_threshold; }
89 void write_lightning_threshold(uint8_t lightning_threshold);
90 void set_mask_disturber(bool mask_disturber) { mask_disturber_ = mask_disturber; }
91 void write_mask_disturber(bool enabled);
92 void set_div_ratio(uint8_t div_ratio) { div_ratio_ = div_ratio; }
93 void write_div_ratio(uint8_t div_ratio);
94 void set_capacitance(uint8_t capacitance) { capacitance_ = capacitance; }
95 void write_capacitance(uint8_t capacitance);
96 uint8_t read_div_ratio();
97 uint8_t read_capacitance();
98 bool calibrate_oscillator();
99 void display_oscillator(bool state, uint8_t osc);
100 void tune_antenna();
101 void set_tune_antenna(bool tune_antenna) { tune_antenna_ = tune_antenna; }
102 void set_calibration(bool calibration) { calibration_ = calibration; }
103
104 protected:
105 uint8_t read_interrupt_register_();
106 void clear_statistics_();
107 uint8_t get_distance_to_storm_();
109
110 virtual uint8_t read_register(uint8_t reg) = 0;
111 uint8_t read_register_(uint8_t reg, uint8_t mask);
112
113 virtual void write_register(uint8_t reg, uint8_t mask, uint8_t bits, uint8_t start_position) = 0;
114
116
123 uint8_t div_ratio_;
127};
128
129} // namespace esphome::as3935
virtual void setup()
Where the component's initialization should happen.
Definition component.cpp:84
virtual uint8_t read_register(uint8_t reg)=0
virtual void write_register(uint8_t reg, uint8_t mask, uint8_t bits, uint8_t start_position)=0
uint8_t read_register_(uint8_t reg, uint8_t mask)
Definition as3935.cpp:316
bool state
Definition fan.h:2
@ ENERGY_LIGHT_MMSB
Definition as3935.h:25
static void uint32_t