mirror of
https://github.com/esphome/esphome.git
synced 2025-11-19 08:15:49 +00:00
Make Climate component work over mqtt (#535)
* Fix climate component over MQTT * Use climate_mode_to_string() in send_discovery() * remove superfluous mqtt binding
This commit is contained in:
@@ -24,12 +24,12 @@ void MQTTClimateComponent::send_discovery(JsonObject &root, mqtt::SendDiscoveryC
|
||||
JsonArray &modes = root.createNestedArray("modes");
|
||||
// sort array for nice UI in HA
|
||||
if (traits.supports_mode(CLIMATE_MODE_AUTO))
|
||||
modes.add("auto");
|
||||
modes.add("off");
|
||||
modes.add(climate_mode_to_string(CLIMATE_MODE_AUTO));
|
||||
modes.add(climate_mode_to_string(CLIMATE_MODE_OFF));
|
||||
if (traits.supports_mode(CLIMATE_MODE_COOL))
|
||||
modes.add("cool");
|
||||
modes.add(climate_mode_to_string(CLIMATE_MODE_COOL));
|
||||
if (traits.supports_mode(CLIMATE_MODE_HEAT))
|
||||
modes.add("heat");
|
||||
modes.add(climate_mode_to_string(CLIMATE_MODE_HEAT));
|
||||
|
||||
if (traits.get_supports_two_point_target_temperature()) {
|
||||
// temperature_low_command_topic
|
||||
@@ -60,6 +60,8 @@ void MQTTClimateComponent::send_discovery(JsonObject &root, mqtt::SendDiscoveryC
|
||||
// away_mode_state_topic
|
||||
root["away_mode_state_topic"] = this->get_away_state_topic();
|
||||
}
|
||||
config.state_topic = false;
|
||||
config.command_topic = false;
|
||||
}
|
||||
void MQTTClimateComponent::setup() {
|
||||
auto traits = this->device_->get_traits();
|
||||
@@ -144,7 +146,7 @@ bool MQTTClimateComponent::publish_state_() {
|
||||
if (!this->publish(this->get_mode_state_topic(), mode_s))
|
||||
success = false;
|
||||
int8_t accuracy = traits.get_temperature_accuracy_decimals();
|
||||
if (traits.get_supports_current_temperature()) {
|
||||
if (traits.get_supports_current_temperature() && !isnan(this->device_->current_temperature)) {
|
||||
std::string payload = value_accuracy_to_string(this->device_->current_temperature, accuracy);
|
||||
if (!this->publish(this->get_current_temperature_state_topic(), payload))
|
||||
success = false;
|
||||
|
||||
Reference in New Issue
Block a user