ESPHome  2024.3.1
ethernet_info_text_sensor.h
Go to the documentation of this file.
1 #pragma once
2 
6 
7 #ifdef USE_ESP32
8 
9 namespace esphome {
10 namespace ethernet_info {
11 
13  public:
14  void update() override {
16  if (ips != this->last_ips_) {
17  this->last_ips_ = ips;
18  this->publish_state(ips[0].str());
19  uint8_t sensor = 0;
20  for (auto &ip : ips) {
21  if (ip.is_set()) {
22  if (this->ip_sensors_[sensor] != nullptr) {
23  this->ip_sensors_[sensor]->publish_state(ip.str());
24  }
25  sensor++;
26  }
27  }
28  }
29  }
30 
31  float get_setup_priority() const override { return setup_priority::ETHERNET; }
32  std::string unique_id() override { return get_mac_address() + "-ethernetinfo"; }
33  void dump_config() override;
34  void add_ip_sensors(uint8_t index, text_sensor::TextSensor *s) { this->ip_sensors_[index] = s; }
35 
36  protected:
38  std::array<text_sensor::TextSensor *, 5> ip_sensors_;
39 };
40 
41 } // namespace ethernet_info
42 } // namespace esphome
43 
44 #endif // USE_ESP32
void add_ip_sensors(uint8_t index, text_sensor::TextSensor *s)
This class simplifies creating components that periodically check a state.
Definition: component.h:283
void publish_state(const std::string &state)
Definition: text_sensor.cpp:9
EthernetComponent * global_eth_component
std::array< text_sensor::TextSensor *, 5 > ip_sensors_
std::string get_mac_address()
Get the device MAC address as a string, in lowercase hex notation.
Definition: helpers.cpp:587
std::array< IPAddress, 5 > IPAddresses
Definition: ip_address.h:138
This is a workaround until we can figure out a way to get the tflite-micro idf component code availab...
Definition: a01nyub.cpp:7