mirror of
https://github.com/HASwitchPlate/openHASP.git
synced 2025-07-19 17:26:38 +00:00
Improvements for esp_mqtt client #174
This commit is contained in:
parent
702143e5ee
commit
756239d245
@ -314,10 +314,10 @@ static esp_err_t mqtt_event_handler(esp_mqtt_event_handle_t event)
|
|||||||
case MQTT_ERROR_TYPE_NONE:
|
case MQTT_ERROR_TYPE_NONE:
|
||||||
default:;
|
default:;
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
LOG_WARNING(TAG_MQTT, "mqtt_event_handler %d", event->event_id);
|
LOG_WARNING(TAG_MQTT, "mqtt_event_handler %d", event->event_id);
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
return ESP_OK;
|
return ESP_OK;
|
||||||
}
|
}
|
||||||
@ -345,11 +345,10 @@ void mqttStart()
|
|||||||
{
|
{
|
||||||
char buffer[64];
|
char buffer[64];
|
||||||
char lastWillPayload[8];
|
char lastWillPayload[8];
|
||||||
// static uint8_t mqttReconnectCount = 0;
|
|
||||||
// bool mqttFirstConnect = true;
|
|
||||||
|
|
||||||
if(mqttClient) {
|
mqttEnabled = strlen(mqttServer) > 0 && mqttPort > 0;
|
||||||
LOG_INFO(TAG_MQTT, F(D_SERVICE_STARTED));
|
if(!mqttEnabled) {
|
||||||
|
LOG_WARNING(TAG_MQTT, F(D_MQTT_NOT_CONFIGURED));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -368,74 +367,71 @@ void mqttStart()
|
|||||||
strncat_P(mqttLwtTopic, PSTR(MQTT_TOPIC_LWT), sizeof(mqttLwtTopic));
|
strncat_P(mqttLwtTopic, PSTR(MQTT_TOPIC_LWT), sizeof(mqttLwtTopic));
|
||||||
LOG_WARNING(TAG_MQTT, mqttLwtTopic);
|
LOG_WARNING(TAG_MQTT, mqttLwtTopic);
|
||||||
|
|
||||||
if(mqttEnabled) {
|
mqtt_cfg.event_handle = mqtt_event_handler;
|
||||||
mqtt_cfg.event_handle = mqtt_event_handler;
|
mqtt_cfg.buffer_size = MQTT_MAX_PACKET_SIZE;
|
||||||
mqtt_cfg.buffer_size = MQTT_MAX_PACKET_SIZE;
|
mqtt_cfg.out_buffer_size = 512;
|
||||||
mqtt_cfg.out_buffer_size = 512;
|
mqtt_cfg.reconnect_timeout_ms = 5000;
|
||||||
mqtt_cfg.reconnect_timeout_ms = 5000;
|
mqtt_cfg.disable_auto_reconnect = false;
|
||||||
mqtt_cfg.keepalive = 15; /* seconds */
|
mqtt_cfg.keepalive = 15; /* seconds */
|
||||||
|
mqtt_cfg.disable_clean_session = true;
|
||||||
|
|
||||||
mqtt_cfg.protocol_ver = MQTT_PROTOCOL_V_3_1_1;
|
mqtt_cfg.protocol_ver = MQTT_PROTOCOL_V_3_1_1;
|
||||||
mqtt_cfg.transport = MQTT_TRANSPORT_OVER_TCP;
|
mqtt_cfg.transport = MQTT_TRANSPORT_OVER_TCP;
|
||||||
mqtt_cfg.host = mqttServer;
|
mqtt_cfg.host = mqttServer;
|
||||||
mqtt_cfg.port = mqttPort;
|
mqtt_cfg.port = mqttPort;
|
||||||
mqtt_cfg.username = mqttUsername;
|
mqtt_cfg.username = mqttUsername;
|
||||||
mqtt_cfg.password = mqttPassword;
|
mqtt_cfg.password = mqttPassword;
|
||||||
mqtt_cfg.client_id = mqttClientId;
|
mqtt_cfg.client_id = mqttClientId;
|
||||||
|
|
||||||
mqtt_cfg.lwt_msg = "offline";
|
mqtt_cfg.lwt_msg = "offline";
|
||||||
mqtt_cfg.lwt_retain = true;
|
mqtt_cfg.lwt_retain = true;
|
||||||
mqtt_cfg.lwt_topic = mqttLwtTopic;
|
mqtt_cfg.lwt_topic = mqttLwtTopic;
|
||||||
mqtt_cfg.lwt_qos = 1;
|
mqtt_cfg.lwt_qos = 1;
|
||||||
|
|
||||||
// mqtt_cfg.crt_bundle_attach = esp_crt_bundle_attach;
|
// mqtt_cfg.crt_bundle_attach = esp_crt_bundle_attach;
|
||||||
|
|
||||||
// test Mosquitto doesn't need a user/pwd
|
// test Mosquitto doesn't need a user/pwd
|
||||||
// // mqtt_cfg.username=(const char *)mqtt_user;
|
// // mqtt_cfg.username=(const char *)mqtt_user;
|
||||||
// // mqtt_cfg.password=(const char *)mqtt_pwd;
|
// // mqtt_cfg.password=(const char *)mqtt_pwd;
|
||||||
|
|
||||||
|
if(mqttClient) {
|
||||||
|
esp_mqtt_set_config(mqttClient, &mqtt_cfg);
|
||||||
|
} else {
|
||||||
mqttClient = esp_mqtt_client_init(&mqtt_cfg);
|
mqttClient = esp_mqtt_client_init(&mqtt_cfg);
|
||||||
// mqttStart();
|
if(esp_mqtt_client_start(mqttClient) != ESP_OK) {
|
||||||
} else {
|
LOG_WARNING(TAG_MQTT, F(D_SERVICE_START_FAILED));
|
||||||
LOG_WARNING(TAG_MQTT, F(D_MQTT_NOT_CONFIGURED));
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// haspProgressMsg(F(D_MQTT_CONNECTING));
|
LOG_INFO(TAG_MQTT, F(D_SERVICE_STARTING));
|
||||||
// haspProgressVal(mqttReconnectCount * 5);
|
|
||||||
if(esp_mqtt_client_start(mqttClient) != ESP_OK) {
|
|
||||||
LOG_WARNING(TAG_MQTT, F(D_SERVICE_START_FAILED));
|
|
||||||
// Retry until we give up and restart after connectTimeout seconds
|
|
||||||
// mqttReconnectCount++;
|
|
||||||
|
|
||||||
// switch(0) {
|
|
||||||
// default:
|
|
||||||
// LOG_WARNING(TAG_MQTT, F("Unknown failure"));
|
|
||||||
// }
|
|
||||||
|
|
||||||
// if(mqttReconnectCount > 20) {
|
|
||||||
// LOG_ERROR(TAG_MQTT, F("Retry count exceeded, rebooting..."));
|
|
||||||
// dispatch_reboot(false);
|
|
||||||
// }
|
|
||||||
return;
|
|
||||||
} else {
|
|
||||||
LOG_INFO(TAG_MQTT, F(D_SERVICE_STARTING));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void mqttStop()
|
void mqttStop()
|
||||||
{
|
{
|
||||||
if(!mqttEnabled) {
|
if(!mqttEnabled) {
|
||||||
LOG_WARNING(TAG_MQTT, F(D_SERVICE_DISABLED));
|
LOG_WARNING(TAG_MQTT, F(D_SERVICE_DISABLED));
|
||||||
} else if(!mqttClientConnected) {
|
return;
|
||||||
LOG_WARNING(TAG_MQTT, F(D_SERVICE_DISCONNECTED));
|
}
|
||||||
} else {
|
|
||||||
LOG_TRACE(TAG_MQTT, F(D_MQTT_DISCONNECTING));
|
|
||||||
mqtt_send_lwt(false);
|
|
||||||
esp_mqtt_client_stop(mqttClient);
|
|
||||||
LOG_INFO(TAG_MQTT, F(D_MQTT_DISCONNECTED));
|
|
||||||
|
|
||||||
mqttClient = NULL;
|
if(mqttClient != NULL) {
|
||||||
mqttClientConnected = false;
|
if(mqttClientConnected) {
|
||||||
|
LOG_TRACE(TAG_MQTT, F(D_MQTT_DISCONNECTING));
|
||||||
|
}
|
||||||
|
mqtt_send_lwt(false);
|
||||||
|
// esp_err_t err = esp_mqtt_client_stop(mqttClient); // Cannot be called from the *MQTT* event handler
|
||||||
|
mqtt_cfg.disable_auto_reconnect = true;
|
||||||
|
esp_mqtt_set_config(mqttClient, &mqtt_cfg);
|
||||||
|
esp_err_t err = esp_mqtt_client_disconnect(mqttClient);
|
||||||
|
if(err == ESP_OK) {
|
||||||
|
// mqttClient = NULL;
|
||||||
|
mqttClientConnected = false;
|
||||||
|
LOG_INFO(TAG_MQTT, F(D_MQTT_DISCONNECTED));
|
||||||
|
} else {
|
||||||
|
LOG_ERROR(TAG_MQTT, F(D_MQTT_FAILED " %d"), err);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
LOG_INFO(TAG_MQTT, F(D_SERVICE_STOPPED));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -570,7 +566,6 @@ bool mqttSetConfig(const JsonObject& settings)
|
|||||||
snprintf_P(mqttNodeTopic, sizeof(mqttNodeTopic), PSTR(MQTT_PREFIX "/%s/"), haspDevice.get_hostname());
|
snprintf_P(mqttNodeTopic, sizeof(mqttNodeTopic), PSTR(MQTT_PREFIX "/%s/"), haspDevice.get_hostname());
|
||||||
snprintf_P(mqttGroupTopic, sizeof(mqttGroupTopic), PSTR(MQTT_PREFIX "/%s/"), mqttGroupName);
|
snprintf_P(mqttGroupTopic, sizeof(mqttGroupTopic), PSTR(MQTT_PREFIX "/%s/"), mqttGroupName);
|
||||||
|
|
||||||
mqttEnabled = strlen(mqttServer) > 0 && mqttPort > 0;
|
|
||||||
return changed;
|
return changed;
|
||||||
}
|
}
|
||||||
#endif // HASP_USE_CONFIG
|
#endif // HASP_USE_CONFIG
|
||||||
|
Loading…
x
Reference in New Issue
Block a user