mirror of
https://github.com/esphome/esphome.git
synced 2024-11-21 22:48:10 +01:00
Move MQTT ip discovery to deticated config option. (#6673)
This commit is contained in:
parent
fbc830176f
commit
368662969e
3 changed files with 28 additions and 4 deletions
|
@ -61,6 +61,7 @@ def AUTO_LOAD():
|
|||
return ["json"]
|
||||
|
||||
|
||||
CONF_DISCOVER_IP = "discover_ip"
|
||||
CONF_IDF_SEND_ASYNC = "idf_send_async"
|
||||
CONF_SKIP_CERT_CN_CHECK = "skip_cert_cn_check"
|
||||
|
||||
|
@ -225,6 +226,7 @@ CONFIG_SCHEMA = cv.All(
|
|||
cv.boolean, cv.one_of("CLEAN", upper=True)
|
||||
),
|
||||
cv.Optional(CONF_DISCOVERY_RETAIN, default=True): cv.boolean,
|
||||
cv.Optional(CONF_DISCOVER_IP, default=True): cv.boolean,
|
||||
cv.Optional(
|
||||
CONF_DISCOVERY_PREFIX, default="homeassistant"
|
||||
): cv.publish_topic,
|
||||
|
@ -328,8 +330,12 @@ async def to_code(config):
|
|||
discovery_prefix = config[CONF_DISCOVERY_PREFIX]
|
||||
discovery_unique_id_generator = config[CONF_DISCOVERY_UNIQUE_ID_GENERATOR]
|
||||
discovery_object_id_generator = config[CONF_DISCOVERY_OBJECT_ID_GENERATOR]
|
||||
discover_ip = config[CONF_DISCOVER_IP]
|
||||
|
||||
if not discovery:
|
||||
discovery_prefix = ""
|
||||
|
||||
if not discovery and not discover_ip:
|
||||
cg.add(var.disable_discovery())
|
||||
elif discovery == "CLEAN":
|
||||
cg.add(
|
||||
|
@ -338,6 +344,7 @@ async def to_code(config):
|
|||
discovery_unique_id_generator,
|
||||
discovery_object_id_generator,
|
||||
discovery_retain,
|
||||
discover_ip,
|
||||
True,
|
||||
)
|
||||
)
|
||||
|
@ -348,6 +355,7 @@ async def to_code(config):
|
|||
discovery_unique_id_generator,
|
||||
discovery_object_id_generator,
|
||||
discovery_retain,
|
||||
discover_ip,
|
||||
)
|
||||
)
|
||||
|
||||
|
|
|
@ -66,7 +66,7 @@ void MQTTClientComponent::setup() {
|
|||
}
|
||||
#endif
|
||||
|
||||
if (this->is_discovery_enabled()) {
|
||||
if (this->is_discovery_ip_enabled()) {
|
||||
this->subscribe(
|
||||
"esphome/discover", [this](const std::string &topic, const std::string &payload) { this->send_device_info_(); },
|
||||
2);
|
||||
|
@ -82,7 +82,7 @@ void MQTTClientComponent::setup() {
|
|||
}
|
||||
|
||||
void MQTTClientComponent::send_device_info_() {
|
||||
if (!this->is_connected() or !this->is_discovery_enabled()) {
|
||||
if (!this->is_connected() or !this->is_discovery_ip_enabled()) {
|
||||
return;
|
||||
}
|
||||
std::string topic = "esphome/discover/";
|
||||
|
@ -99,6 +99,9 @@ void MQTTClientComponent::send_device_info_() {
|
|||
}
|
||||
}
|
||||
root["name"] = App.get_name();
|
||||
if (!App.get_friendly_name().empty()) {
|
||||
root["friendly_name"] = App.get_friendly_name();
|
||||
}
|
||||
#ifdef USE_API
|
||||
root["port"] = api::global_api_server->get_port();
|
||||
#endif
|
||||
|
@ -130,6 +133,10 @@ void MQTTClientComponent::send_device_info_() {
|
|||
#ifdef USE_DASHBOARD_IMPORT
|
||||
root["package_import_url"] = dashboard_import::get_package_import_url();
|
||||
#endif
|
||||
|
||||
#ifdef USE_API_NOISE
|
||||
root["api_encryption"] = "Noise_NNpsk0_25519_ChaChaPoly_SHA256";
|
||||
#endif
|
||||
},
|
||||
2, this->discovery_info_.retain);
|
||||
}
|
||||
|
@ -140,6 +147,9 @@ void MQTTClientComponent::dump_config() {
|
|||
this->ip_.str().c_str());
|
||||
ESP_LOGCONFIG(TAG, " Username: " LOG_SECRET("'%s'"), this->credentials_.username.c_str());
|
||||
ESP_LOGCONFIG(TAG, " Client ID: " LOG_SECRET("'%s'"), this->credentials_.client_id.c_str());
|
||||
if (this->is_discovery_ip_enabled()) {
|
||||
ESP_LOGCONFIG(TAG, " Discovery IP enabled");
|
||||
}
|
||||
if (!this->discovery_info_.prefix.empty()) {
|
||||
ESP_LOGCONFIG(TAG, " Discovery prefix: '%s'", this->discovery_info_.prefix.c_str());
|
||||
ESP_LOGCONFIG(TAG, " Discovery retain: %s", YESNO(this->discovery_info_.retain));
|
||||
|
@ -581,6 +591,7 @@ void MQTTClientComponent::disable_shutdown_message() {
|
|||
this->recalculate_availability_();
|
||||
}
|
||||
bool MQTTClientComponent::is_discovery_enabled() const { return !this->discovery_info_.prefix.empty(); }
|
||||
bool MQTTClientComponent::is_discovery_ip_enabled() const { return this->discovery_info_.discover_ip; }
|
||||
const Availability &MQTTClientComponent::get_availability() { return this->availability_; }
|
||||
void MQTTClientComponent::recalculate_availability_() {
|
||||
if (this->birth_message_.topic.empty() || this->birth_message_.topic != this->last_will_.topic) {
|
||||
|
@ -606,8 +617,9 @@ void MQTTClientComponent::set_shutdown_message(MQTTMessage &&message) { this->sh
|
|||
|
||||
void MQTTClientComponent::set_discovery_info(std::string &&prefix, MQTTDiscoveryUniqueIdGenerator unique_id_generator,
|
||||
MQTTDiscoveryObjectIdGenerator object_id_generator, bool retain,
|
||||
bool clean) {
|
||||
bool discover_ip, bool clean) {
|
||||
this->discovery_info_.prefix = std::move(prefix);
|
||||
this->discovery_info_.discover_ip = discover_ip;
|
||||
this->discovery_info_.unique_id_generator = unique_id_generator;
|
||||
this->discovery_info_.object_id_generator = object_id_generator;
|
||||
this->discovery_info_.retain = retain;
|
||||
|
|
|
@ -79,6 +79,7 @@ enum MQTTDiscoveryObjectIdGenerator {
|
|||
struct MQTTDiscoveryInfo {
|
||||
std::string prefix; ///< The Home Assistant discovery prefix. Empty means disabled.
|
||||
bool retain; ///< Whether to retain discovery messages.
|
||||
bool discover_ip; ///< Enable the Home Assistant device discovery.
|
||||
bool clean;
|
||||
MQTTDiscoveryUniqueIdGenerator unique_id_generator;
|
||||
MQTTDiscoveryObjectIdGenerator object_id_generator;
|
||||
|
@ -122,12 +123,14 @@ class MQTTClientComponent : public Component {
|
|||
* @param retain Whether to retain discovery messages.
|
||||
*/
|
||||
void set_discovery_info(std::string &&prefix, MQTTDiscoveryUniqueIdGenerator unique_id_generator,
|
||||
MQTTDiscoveryObjectIdGenerator object_id_generator, bool retain, bool clean = false);
|
||||
MQTTDiscoveryObjectIdGenerator object_id_generator, bool retain, bool discover_ip,
|
||||
bool clean = false);
|
||||
/// Get Home Assistant discovery info.
|
||||
const MQTTDiscoveryInfo &get_discovery_info() const;
|
||||
/// Globally disable Home Assistant discovery.
|
||||
void disable_discovery();
|
||||
bool is_discovery_enabled() const;
|
||||
bool is_discovery_ip_enabled() const;
|
||||
|
||||
#if ASYNC_TCP_SSL_ENABLED
|
||||
/** Add a SSL fingerprint to use for TCP SSL connections to the MQTT broker.
|
||||
|
@ -290,6 +293,7 @@ class MQTTClientComponent : public Component {
|
|||
MQTTDiscoveryInfo discovery_info_{
|
||||
.prefix = "homeassistant",
|
||||
.retain = true,
|
||||
.discover_ip = true,
|
||||
.clean = false,
|
||||
.unique_id_generator = MQTT_LEGACY_UNIQUE_ID_GENERATOR,
|
||||
.object_id_generator = MQTT_NONE_OBJECT_ID_GENERATOR,
|
||||
|
|
Loading…
Reference in a new issue