ESPHome
2026.1.0-dev
Loading...
Searching...
No Matches
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::ethernet_info
{
10
11
class
IPAddressEthernetInfo
:
public
PollingComponent
,
public
text_sensor::TextSensor
{
12
public
:
13
void
update
()
override
{
14
auto
ips =
ethernet::global_eth_component
->
get_ip_addresses
();
15
if
(ips != this->
last_ips_
) {
16
this->
last_ips_
= ips;
17
this->
publish_state
(ips[0].str());
18
uint8_t sensor = 0;
19
for
(
auto
&ip : ips) {
20
if
(ip.is_set()) {
21
if
(this->
ip_sensors_
[sensor] !=
nullptr
) {
22
this->
ip_sensors_
[sensor]->publish_state(ip.str());
23
}
24
sensor++;
25
}
26
}
27
}
28
}
29
30
float
get_setup_priority
()
const override
{
return
setup_priority::ETHERNET
; }
31
void
dump_config
()
override
;
32
void
add_ip_sensors
(uint8_t index,
text_sensor::TextSensor
*s) { this->
ip_sensors_
[index] = s; }
33
34
protected
:
35
network::IPAddresses
last_ips_
;
36
std::array<text_sensor::TextSensor *, 5>
ip_sensors_
;
37
};
38
39
class
DNSAddressEthernetInfo
:
public
PollingComponent
,
public
text_sensor::TextSensor
{
40
public
:
41
void
update
()
override
{
42
auto
dns1 =
ethernet::global_eth_component
->
get_dns_address
(0);
43
auto
dns2 =
ethernet::global_eth_component
->
get_dns_address
(1);
44
45
if
(dns1 != this->
last_dns1_
|| dns2 != this->
last_dns2_
) {
46
this->
last_dns1_
= dns1;
47
this->
last_dns2_
= dns2;
48
// IP_ADDRESS_BUFFER_SIZE (40) = max IP (39) + null; space reuses first null's slot
49
char
buf[network::IP_ADDRESS_BUFFER_SIZE * 2];
50
dns1.
str_to
(buf);
51
size_t
len1 = strlen(buf);
52
buf[len1] =
' '
;
53
dns2.str_to(buf + len1 + 1);
54
this->
publish_state
(buf);
55
}
56
}
57
float
get_setup_priority
()
const override
{
return
setup_priority::ETHERNET
; }
58
void
dump_config
()
override
;
59
60
protected
:
61
network::IPAddress
last_dns1_
;
62
network::IPAddress
last_dns2_
;
63
};
64
65
class
MACAddressEthernetInfo
:
public
Component
,
public
text_sensor::TextSensor
{
66
public
:
67
void
setup
()
override
{ this->
publish_state
(
ethernet::global_eth_component
->get_eth_mac_address_pretty()); }
68
float
get_setup_priority
()
const override
{
return
setup_priority::ETHERNET
; }
69
void
dump_config
()
override
;
70
};
71
72
}
// namespace esphome::ethernet_info
73
74
#endif
// USE_ESP32
esphome::Component
Definition
component.h:75
esphome::PollingComponent
This class simplifies creating components that periodically check a state.
Definition
component.h:474
esphome::ethernet::EthernetComponent::get_ip_addresses
network::IPAddresses get_ip_addresses()
Definition
ethernet_component.cpp:428
esphome::ethernet::EthernetComponent::get_dns_address
network::IPAddress get_dns_address(uint8_t num)
Definition
ethernet_component.cpp:452
esphome::ethernet_info::DNSAddressEthernetInfo
Definition
ethernet_info_text_sensor.h:39
esphome::ethernet_info::DNSAddressEthernetInfo::update
void update() override
Definition
ethernet_info_text_sensor.h:41
esphome::ethernet_info::DNSAddressEthernetInfo::last_dns2_
network::IPAddress last_dns2_
Definition
ethernet_info_text_sensor.h:62
esphome::ethernet_info::DNSAddressEthernetInfo::get_setup_priority
float get_setup_priority() const override
Definition
ethernet_info_text_sensor.h:57
esphome::ethernet_info::DNSAddressEthernetInfo::last_dns1_
network::IPAddress last_dns1_
Definition
ethernet_info_text_sensor.h:61
esphome::ethernet_info::DNSAddressEthernetInfo::dump_config
void dump_config() override
Definition
ethernet_info_text_sensor.cpp:11
esphome::ethernet_info::IPAddressEthernetInfo
Definition
ethernet_info_text_sensor.h:11
esphome::ethernet_info::IPAddressEthernetInfo::dump_config
void dump_config() override
Definition
ethernet_info_text_sensor.cpp:10
esphome::ethernet_info::IPAddressEthernetInfo::last_ips_
network::IPAddresses last_ips_
Definition
ethernet_info_text_sensor.h:35
esphome::ethernet_info::IPAddressEthernetInfo::update
void update() override
Definition
ethernet_info_text_sensor.h:13
esphome::ethernet_info::IPAddressEthernetInfo::get_setup_priority
float get_setup_priority() const override
Definition
ethernet_info_text_sensor.h:30
esphome::ethernet_info::IPAddressEthernetInfo::ip_sensors_
std::array< text_sensor::TextSensor *, 5 > ip_sensors_
Definition
ethernet_info_text_sensor.h:36
esphome::ethernet_info::IPAddressEthernetInfo::add_ip_sensors
void add_ip_sensors(uint8_t index, text_sensor::TextSensor *s)
Definition
ethernet_info_text_sensor.h:32
esphome::ethernet_info::MACAddressEthernetInfo
Definition
ethernet_info_text_sensor.h:65
esphome::ethernet_info::MACAddressEthernetInfo::get_setup_priority
float get_setup_priority() const override
Definition
ethernet_info_text_sensor.h:68
esphome::ethernet_info::MACAddressEthernetInfo::setup
void setup() override
Definition
ethernet_info_text_sensor.h:67
esphome::ethernet_info::MACAddressEthernetInfo::dump_config
void dump_config() override
Definition
ethernet_info_text_sensor.cpp:12
esphome::text_sensor::TextSensor
Definition
text_sensor.h:25
esphome::text_sensor::TextSensor::publish_state
void publish_state(const std::string &state)
Definition
text_sensor.cpp:27
component.h
ethernet_component.h
esphome::ethernet_info
Definition
ethernet_info_text_sensor.cpp:6
esphome::ethernet::global_eth_component
EthernetComponent * global_eth_component
Definition
ethernet_component.cpp:46
esphome::network::IPAddresses
std::array< IPAddress, 5 > IPAddresses
Definition
ip_address.h:158
esphome::setup_priority::ETHERNET
const float ETHERNET
Definition
component.cpp:86
esphome::network::IPAddress
Definition
ip_address.h:46
esphome::network::IPAddress::str_to
char * str_to(char *buf) const
Write IP address to buffer. Buffer must be at least IP_ADDRESS_BUFFER_SIZE bytes.
Definition
ip_address.h:57
text_sensor.h
Generated by
1.12.0