mirror of
				https://github.com/esphome/esphome.git
				synced 2025-11-03 16:41:50 +00:00 
			
		
		
		
	Compare commits
	
		
			3 Commits
		
	
	
		
			select_opt
			...
			jesserockz
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					140792d8a9 | ||
| 
						 | 
					14e6918eb1 | ||
| 
						 | 
					a794a8f3e4 | 
@@ -2,8 +2,8 @@
 | 
			
		||||
 | 
			
		||||
#include "esp32_touch.h"
 | 
			
		||||
#include "esphome/core/application.h"
 | 
			
		||||
#include "esphome/core/log.h"
 | 
			
		||||
#include "esphome/core/hal.h"
 | 
			
		||||
#include "esphome/core/log.h"
 | 
			
		||||
 | 
			
		||||
#include <cinttypes>
 | 
			
		||||
 | 
			
		||||
@@ -293,27 +293,33 @@ uint32_t ESP32TouchComponent::component_touch_pad_read(touch_pad_t tp) {
 | 
			
		||||
 | 
			
		||||
void ESP32TouchComponent::loop() {
 | 
			
		||||
  const uint32_t now = App.get_loop_component_start_time();
 | 
			
		||||
  bool should_print = this->setup_mode_ && now - this->setup_mode_last_log_print_ > 250;
 | 
			
		||||
  for (auto *child : this->children_) {
 | 
			
		||||
    child->value_ = this->component_touch_pad_read(child->get_touch_pad());
 | 
			
		||||
  if (this->current_child_ == 0) {
 | 
			
		||||
    this->should_print_ = this->setup_mode_ && now - this->setup_mode_last_log_print_ > 250;
 | 
			
		||||
  }
 | 
			
		||||
  if (this->children_.empty()) {
 | 
			
		||||
    return;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  auto *child = this->children_[this->current_child_];
 | 
			
		||||
  child->value_ = this->component_touch_pad_read(child->get_touch_pad());
 | 
			
		||||
#if !(defined(USE_ESP32_VARIANT_ESP32S2) || defined(USE_ESP32_VARIANT_ESP32S3))
 | 
			
		||||
    child->publish_state(child->value_ < child->get_threshold());
 | 
			
		||||
  child->publish_state(child->value_ < child->get_threshold());
 | 
			
		||||
#else
 | 
			
		||||
    child->publish_state(child->value_ > child->get_threshold());
 | 
			
		||||
  child->publish_state(child->value_ > child->get_threshold());
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    if (should_print) {
 | 
			
		||||
      ESP_LOGD(TAG, "Touch Pad '%s' (T%" PRIu32 "): %" PRIu32, child->get_name().c_str(),
 | 
			
		||||
               (uint32_t) child->get_touch_pad(), child->value_);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    App.feed_wdt();
 | 
			
		||||
  if (this->should_print_) {
 | 
			
		||||
    ESP_LOGD(TAG, "Touch Pad '%s' (T%" PRIu32 "): %" PRIu32, child->get_name().c_str(),
 | 
			
		||||
             (uint32_t) child->get_touch_pad(), child->value_);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (should_print) {
 | 
			
		||||
  if (this->should_print_ && this->current_child_ == this->children_.size() - 1) {
 | 
			
		||||
    // Avoid spamming logs
 | 
			
		||||
    this->setup_mode_last_log_print_ = now;
 | 
			
		||||
    this->should_print_ = false;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  this->current_child_ = (this->current_child_ + 1) % this->children_.size();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ESP32TouchComponent::on_shutdown() {
 | 
			
		||||
 
 | 
			
		||||
@@ -2,9 +2,9 @@
 | 
			
		||||
 | 
			
		||||
#ifdef USE_ESP32
 | 
			
		||||
 | 
			
		||||
#include "esphome/core/component.h"
 | 
			
		||||
#include "esphome/components/binary_sensor/binary_sensor.h"
 | 
			
		||||
#include <esp_idf_version.h>
 | 
			
		||||
#include "esphome/components/binary_sensor/binary_sensor.h"
 | 
			
		||||
#include "esphome/core/component.h"
 | 
			
		||||
 | 
			
		||||
#include <vector>
 | 
			
		||||
 | 
			
		||||
@@ -73,7 +73,9 @@ class ESP32TouchComponent : public Component {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
  std::vector<ESP32TouchBinarySensor *> children_;
 | 
			
		||||
  uint8_t current_child_{0};
 | 
			
		||||
  bool setup_mode_{false};
 | 
			
		||||
  bool should_print_{false};
 | 
			
		||||
  uint32_t setup_mode_last_log_print_{0};
 | 
			
		||||
  // common parameters
 | 
			
		||||
  uint16_t sleep_cycle_{4095};
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user