@ -17,12 +17,6 @@
# define UNUSED(x) (void)(x)
static const char * TAG = " MQTT " ;
static const int CMD_QOS = 2 ;
//static const int HB_QOS = 1;
//static const long int MINIMAL_HB_INTERVAL_MS = 1000 * 60;
static const char * CLIENT_ID = " p10-dev " ;
static const MqttSettings * settings = NULL ;
@ -32,8 +26,6 @@ esp_mqtt_client_handle_t clientHandle = NULL;
static esp_err_t mqtt_event_handler_cb ( esp_mqtt_event_handle_t event )
{
esp_mqtt_client_handle_t client = event - > client ;
int msg_id ;
// your_context_t *context = event->context;
switch ( event - > event_id ) {
case MQTT_EVENT_CONNECTED :
ESP_LOGI ( TAG , " MQTT_EVENT_CONNECTED " ) ;
@ -42,15 +34,6 @@ static esp_err_t mqtt_event_handler_cb(esp_mqtt_event_handle_t event)
if ( settings - > connectedCb ) {
settings - > connectedCb ( ) ;
}
msg_id = esp_mqtt_client_subscribe ( client , settings - > apiTopic , CMD_QOS ) ;
if ( msg_id = = - 1 ) {
ESP_LOGE ( TAG , " Subscribtion failed " ) ;
if ( settings - > errorCb ) {
settings - > errorCb ( ) ;
}
}
break ;
case MQTT_EVENT_DISCONNECTED :
@ -78,8 +61,6 @@ static esp_err_t mqtt_event_handler_cb(esp_mqtt_event_handle_t event)
settings - > messageCb ( event - > data ) ;
}
printf ( " TOPIC=%.*s \r \n " , event - > topic_len , event - > topic ) ;
printf ( " DATA=%.*s \r \n " , event - > data_len , event - > data ) ;
break ;
case MQTT_EVENT_ERROR :
ESP_LOGI ( TAG , " MQTT_EVENT_ERROR " ) ;
@ -117,58 +98,41 @@ void nxStartMqttClient(const MqttSettings* mqttSettings)
esp_mqtt_client_config_t mqtt_cfg = { } ;
mqtt_cfg . uri = settings - > brokerAddr ;
mqtt_cfg . client_id = CLIENT_ID ;
mqtt_cfg . client_id = settings - > clientId ;
mqtt_cfg . cert_pem = settings - > caCrt ;
mqtt_cfg . username = settings - > user ;
mqtt_cfg . password = settings - > password ;
if ( mqtt_cfg . host ) {
ESP_LOGI ( TAG , " host: %s " , mqtt_cfg . host ) ;
}
if ( mqtt_cfg . uri ) {
ESP_LOGI ( TAG , " uri: %s " , mqtt_cfg . uri ) ;
}
ESP_LOGI ( TAG , " client: %s " , mqtt_cfg . client_id ) ;
ESP_LOGI ( TAG , " user: %s " , mqtt_cfg . username ) ;
ESP_LOGI ( TAG , " pass: %s " , mqtt_cfg . password ) ;
ESP_LOGI ( TAG , " cert: %s " , mqtt_cfg . cert_pem ) ;
esp_mqtt_client_handle_t client = esp_mqtt_client_init ( & mqtt_cfg ) ;
esp_mqtt_client_register_event ( client , ESP_EVENT_ANY_ID , mqtt_event_handler , client ) ;
esp_mqtt_client_start ( client ) ;
}
void nxMqttHeartbeatTask ( void * param )
bool nxMqttSubscribe ( const char * topic , uint8_t qos )
{
UNUSED ( param ) ;
// ESP_LOGI(TAG, "Starting MQTT heartbeat task");
//
// ESP_LOGI(TAG, "hbIntervalMin: %d", settings->hbIntervalMin);
//
// long int hbIntervalMs = 1000 * 60 * settings->hbIntervalMin;
//
// ESP_LOGI(TAG, "hbIntervalMs: %li", hbIntervalMs);
//
//
// if (hbIntervalMs < MINIMAL_HB_INTERVAL_MS) {
// hbIntervalMs = MINIMAL_HB_INTERVAL_MS;
// }
//
// while (1) {
// if (clientHandle) {
// ESP_LOGI(TAG, "Sending MQTT heartbeat");
//
// char timeStr[DT_FORMAT_LEN];
// getTimeStr(timeStr);
// char hbMessage[DT_FORMAT_LEN + strlen(DEVICE_ID) + 2];
// strcpy(hbMessage, DEVICE_ID);
// strcat(hbMessage, " ");
// strcat(hbMessage, timeStr);
//
// esp_mqtt_client_publish(clientHandle, HEARTBEAT_TOPIC,
// hbMessage, strlen(hbMessage), HB_QOS, 1);
// }
// vTaskDelay(hbIntervalMs / portTICK_PERIOD_MS);
// }
if ( ! clientHandle ) {
ESP_LOGE ( TAG , " MQTT client not initialized, aborting subscription of topic %s " , topic ) ;
return false ;
}
int msg_id = esp_mqtt_client_subscribe ( clientHandle , settings - > apiTopic , qos ) ;
if ( msg_id = = - 1 ) {
ESP_LOGE ( TAG , " Subscribtion of topic %s failed " , topic ) ;
if ( settings - > errorCb ) {
settings - > errorCb ( ) ;
}
return false ;
}
return true ;
}
uint32_t nxMqttPublish ( const char * topic , uint8_t qos , const char * data , size_t size , uint8_t retain )
{
if ( ! clientHandle ) {
ESP_LOGE ( TAG , " MQTT client not initialized, aborting data publishing in topic %s " , topic ) ;
return - 1 ;
}
return esp_mqtt_client_publish ( clientHandle , topic , data , size , qos , retain ) ;
}