mirror of
https://github.com/esphome/esphome.git
synced 2024-11-25 08:28:12 +01:00
Add DNS to Text info (#4821)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
This commit is contained in:
parent
90598d2405
commit
0de47e2a4e
7 changed files with 44 additions and 0 deletions
|
@ -183,6 +183,11 @@ network::IPAddress WiFiComponent::get_ip_address() {
|
||||||
return this->wifi_soft_ap_ip();
|
return this->wifi_soft_ap_ip();
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
network::IPAddress WiFiComponent::get_dns_address(int num) {
|
||||||
|
if (this->has_sta())
|
||||||
|
return this->wifi_dns_ip_(num);
|
||||||
|
return {};
|
||||||
|
}
|
||||||
std::string WiFiComponent::get_use_address() const {
|
std::string WiFiComponent::get_use_address() const {
|
||||||
if (this->use_address_.empty()) {
|
if (this->use_address_.empty()) {
|
||||||
return App.get_name() + ".local";
|
return App.get_name() + ".local";
|
||||||
|
|
|
@ -240,6 +240,7 @@ class WiFiComponent : public Component {
|
||||||
void set_rrm(bool rrm);
|
void set_rrm(bool rrm);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
network::IPAddress get_dns_address(int num);
|
||||||
network::IPAddress get_ip_address();
|
network::IPAddress get_ip_address();
|
||||||
std::string get_use_address() const;
|
std::string get_use_address() const;
|
||||||
void set_use_address(const std::string &use_address);
|
void set_use_address(const std::string &use_address);
|
||||||
|
|
|
@ -7,6 +7,7 @@ from esphome.const import (
|
||||||
CONF_SCAN_RESULTS,
|
CONF_SCAN_RESULTS,
|
||||||
CONF_SSID,
|
CONF_SSID,
|
||||||
CONF_MAC_ADDRESS,
|
CONF_MAC_ADDRESS,
|
||||||
|
CONF_DNS_ADDRESS,
|
||||||
ENTITY_CATEGORY_DIAGNOSTIC,
|
ENTITY_CATEGORY_DIAGNOSTIC,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -28,6 +29,9 @@ BSSIDWiFiInfo = wifi_info_ns.class_(
|
||||||
MacAddressWifiInfo = wifi_info_ns.class_(
|
MacAddressWifiInfo = wifi_info_ns.class_(
|
||||||
"MacAddressWifiInfo", text_sensor.TextSensor, cg.Component
|
"MacAddressWifiInfo", text_sensor.TextSensor, cg.Component
|
||||||
)
|
)
|
||||||
|
DNSAddressWifiInfo = wifi_info_ns.class_(
|
||||||
|
"DNSAddressWifiInfo", text_sensor.TextSensor, cg.PollingComponent
|
||||||
|
)
|
||||||
|
|
||||||
CONFIG_SCHEMA = cv.Schema(
|
CONFIG_SCHEMA = cv.Schema(
|
||||||
{
|
{
|
||||||
|
@ -46,6 +50,9 @@ CONFIG_SCHEMA = cv.Schema(
|
||||||
cv.Optional(CONF_MAC_ADDRESS): text_sensor.text_sensor_schema(
|
cv.Optional(CONF_MAC_ADDRESS): text_sensor.text_sensor_schema(
|
||||||
MacAddressWifiInfo, entity_category=ENTITY_CATEGORY_DIAGNOSTIC
|
MacAddressWifiInfo, entity_category=ENTITY_CATEGORY_DIAGNOSTIC
|
||||||
),
|
),
|
||||||
|
cv.Optional(CONF_DNS_ADDRESS): text_sensor.text_sensor_schema(
|
||||||
|
DNSAddressWifiInfo, entity_category=ENTITY_CATEGORY_DIAGNOSTIC
|
||||||
|
).extend(cv.polling_component_schema("1s")),
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -63,3 +70,4 @@ async def to_code(config):
|
||||||
await setup_conf(config, CONF_BSSID)
|
await setup_conf(config, CONF_BSSID)
|
||||||
await setup_conf(config, CONF_MAC_ADDRESS)
|
await setup_conf(config, CONF_MAC_ADDRESS)
|
||||||
await setup_conf(config, CONF_SCAN_RESULTS)
|
await setup_conf(config, CONF_SCAN_RESULTS)
|
||||||
|
await setup_conf(config, CONF_DNS_ADDRESS)
|
||||||
|
|
|
@ -11,6 +11,7 @@ void ScanResultsWiFiInfo::dump_config() { LOG_TEXT_SENSOR("", "WifiInfo Scan Res
|
||||||
void SSIDWiFiInfo::dump_config() { LOG_TEXT_SENSOR("", "WifiInfo SSID", this); }
|
void SSIDWiFiInfo::dump_config() { LOG_TEXT_SENSOR("", "WifiInfo SSID", this); }
|
||||||
void BSSIDWiFiInfo::dump_config() { LOG_TEXT_SENSOR("", "WifiInfo BSSID", this); }
|
void BSSIDWiFiInfo::dump_config() { LOG_TEXT_SENSOR("", "WifiInfo BSSID", this); }
|
||||||
void MacAddressWifiInfo::dump_config() { LOG_TEXT_SENSOR("", "WifiInfo Mac Address", this); }
|
void MacAddressWifiInfo::dump_config() { LOG_TEXT_SENSOR("", "WifiInfo Mac Address", this); }
|
||||||
|
void DNSAddressWifiInfo::dump_config() { LOG_TEXT_SENSOR("", "WifiInfo DNS Address", this); }
|
||||||
|
|
||||||
} // namespace wifi_info
|
} // namespace wifi_info
|
||||||
} // namespace esphome
|
} // namespace esphome
|
||||||
|
|
|
@ -24,6 +24,32 @@ class IPAddressWiFiInfo : public PollingComponent, public text_sensor::TextSenso
|
||||||
network::IPAddress last_ip_;
|
network::IPAddress last_ip_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class DNSAddressWifiInfo : public PollingComponent, public text_sensor::TextSensor {
|
||||||
|
public:
|
||||||
|
void update() override {
|
||||||
|
std::string dns_results;
|
||||||
|
|
||||||
|
auto dns_one = wifi::global_wifi_component->get_dns_address(0);
|
||||||
|
auto dns_two = wifi::global_wifi_component->get_dns_address(1);
|
||||||
|
|
||||||
|
dns_results += "DNS1: ";
|
||||||
|
dns_results += dns_one.str();
|
||||||
|
dns_results += " DNS2: ";
|
||||||
|
dns_results += dns_two.str();
|
||||||
|
|
||||||
|
if (dns_results != this->last_results_) {
|
||||||
|
this->last_results_ = dns_results;
|
||||||
|
this->publish_state(dns_results);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
float get_setup_priority() const override { return setup_priority::AFTER_WIFI; }
|
||||||
|
std::string unique_id() override { return get_mac_address() + "-wifiinfo-dns"; }
|
||||||
|
void dump_config() override;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
std::string last_results_;
|
||||||
|
};
|
||||||
|
|
||||||
class ScanResultsWiFiInfo : public PollingComponent, public text_sensor::TextSensor {
|
class ScanResultsWiFiInfo : public PollingComponent, public text_sensor::TextSensor {
|
||||||
public:
|
public:
|
||||||
void update() override {
|
void update() override {
|
||||||
|
|
|
@ -190,6 +190,7 @@ CONF_DISCOVERY_UNIQUE_ID_GENERATOR = "discovery_unique_id_generator"
|
||||||
CONF_DISTANCE = "distance"
|
CONF_DISTANCE = "distance"
|
||||||
CONF_DITHER = "dither"
|
CONF_DITHER = "dither"
|
||||||
CONF_DIV_RATIO = "div_ratio"
|
CONF_DIV_RATIO = "div_ratio"
|
||||||
|
CONF_DNS_ADDRESS = "dns_address"
|
||||||
CONF_DNS1 = "dns1"
|
CONF_DNS1 = "dns1"
|
||||||
CONF_DNS2 = "dns2"
|
CONF_DNS2 = "dns2"
|
||||||
CONF_DOMAIN = "domain"
|
CONF_DOMAIN = "domain"
|
||||||
|
|
|
@ -3077,6 +3077,8 @@ text_sensor:
|
||||||
name: BSSID
|
name: BSSID
|
||||||
mac_address:
|
mac_address:
|
||||||
name: Mac Address
|
name: Mac Address
|
||||||
|
dns_address:
|
||||||
|
name: DNS ADdress
|
||||||
- platform: version
|
- platform: version
|
||||||
name: ESPHome Version No Timestamp
|
name: ESPHome Version No Timestamp
|
||||||
hide_timestamp: true
|
hide_timestamp: true
|
||||||
|
|
Loading…
Reference in a new issue