ESPHome
2024.3.1
esphome
esphome
components
ethernet_info
ethernet_info_text_sensor.h
Go to the documentation of this file.
1
#pragma once
2
3
#include "
esphome/core/component.h
"
4
#include "
esphome/components/text_sensor/text_sensor.h
"
5
#include "
esphome/components/ethernet/ethernet_component.h
"
6
7
#ifdef USE_ESP32
8
9
namespace
esphome
{
10
namespace
ethernet_info {
11
12
class
IPAddressEthernetInfo
:
public
PollingComponent
,
public
text_sensor::TextSensor
{
13
public
:
14
void
update
()
override
{
15
auto
ips =
ethernet::global_eth_component
->
get_ip_addresses
();
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
:
37
network::IPAddresses
last_ips_
;
38
std::array<text_sensor::TextSensor *, 5>
ip_sensors_
;
39
};
40
41
}
// namespace ethernet_info
42
}
// namespace esphome
43
44
#endif // USE_ESP32
esphome::ethernet_info::IPAddressEthernetInfo::last_ips_
network::IPAddresses last_ips_
Definition:
ethernet_info_text_sensor.h:37
esphome::ethernet_info::IPAddressEthernetInfo
Definition:
ethernet_info_text_sensor.h:12
esphome::ethernet_info::IPAddressEthernetInfo::add_ip_sensors
void add_ip_sensors(uint8_t index, text_sensor::TextSensor *s)
Definition:
ethernet_info_text_sensor.h:34
esphome::PollingComponent
This class simplifies creating components that periodically check a state.
Definition:
component.h:283
esphome::text_sensor::TextSensor::publish_state
void publish_state(const std::string &state)
Definition:
text_sensor.cpp:9
esphome::ethernet_info::IPAddressEthernetInfo::unique_id
std::string unique_id() override
Definition:
ethernet_info_text_sensor.h:32
esphome::ethernet::global_eth_component
EthernetComponent * global_eth_component
Definition:
ethernet_component.cpp:22
esphome::ethernet::EthernetComponent::get_ip_addresses
network::IPAddresses get_ip_addresses()
Definition:
ethernet_component.cpp:319
esphome::text_sensor::TextSensor
Definition:
text_sensor.h:34
esphome::ethernet_info::IPAddressEthernetInfo::ip_sensors_
std::array< text_sensor::TextSensor *, 5 > ip_sensors_
Definition:
ethernet_info_text_sensor.h:38
esphome::ethernet_info::IPAddressEthernetInfo::update
void update() override
Definition:
ethernet_info_text_sensor.h:14
esphome::get_mac_address
std::string get_mac_address()
Get the device MAC address as a string, in lowercase hex notation.
Definition:
helpers.cpp:587
esphome::network::IPAddresses
std::array< IPAddress, 5 > IPAddresses
Definition:
ip_address.h:138
esphome::setup_priority::ETHERNET
const float ETHERNET
Definition:
component.cpp:24
esphome::ethernet_info::IPAddressEthernetInfo::get_setup_priority
float get_setup_priority() const override
Definition:
ethernet_info_text_sensor.h:31
esphome::ethernet_info::IPAddressEthernetInfo::dump_config
void dump_config() override
Definition:
ethernet_info_text_sensor.cpp:11
esphome
This is a workaround until we can figure out a way to get the tflite-micro idf component code availab...
Definition:
a01nyub.cpp:7
component.h
text_sensor.h
ethernet_component.h
Generated by
1.8.13