Using the right version of an ArduinoMqttClient.h library

I am trying to send DHT11 data to Kaa IoT platform using Arduino Uno Wifi Rev2. The version of ArduinoMqttClient that I am using seems to not recognize the <mqttclient.publish/> method. Which version of ArduinoMqttClient library should I use.

#include <ArduinoMqttClient.h>

#include "kaa.h"
#include <WiFiNINA.h>
#include <PubSubClient.h>
#include <ArduinoJson.h>
#include <DHT.h>
#include <ArduinoMqttClient.h>

#define WIFI_SSID "Chaz"
#define WIFI_PASSWORD "11111111"

#define KAA_APPLICATION_TOKEN "cgkplvmgthheg922mn5g-v1"
#define KAA_SERVER_HOSTNAME "mqtt.cloud.kaaiot.com"
#define KAA_SERVER_PORT 1883
#define KAA_DEVICE_ID "9f6b3126-f9cc-4de8-a749-0545c142e944"
#define KAA_DEVICE_ACCESS_TOKEN "Arduino1"

#define DHTPIN 2
#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

WiFiClient wifiClient;
MqttClient mqttClient(wifiClient);
PubSubClient pubSubClient(KAA_SERVER_HOSTNAME, KAA_SERVER_PORT, wifiClient);

void callback(char* topic, byte* payload, unsigned int length);


void setup() {
  Serial.begin(115200);
  delay(1000);

  Serial.print("Connecting to Wi-Fi...");
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(1000);
  }
  Serial.println(" connected");

  Serial.print("Connecting to Kaa...");
  pubSubClient.setCallback(callback);
while (!pubSubClient.connected()) {
  if (pubSubClient.connect(KAA_DEVICE_ID, KAA_DEVICE_ACCESS_TOKEN, "")) {
    Serial.println(" connected");
  } else {
    Serial.print(" failed, rc=");
    Serial.print(pubSubClient.state());
    Serial.println(" retrying in 5 seconds");
    delay(5000);
  }
}

}

void loop() {
  float temperature = dht.readTemperature();
  float humidity = dht.readHumidity();

  if (isnan(temperature) || isnan(humidity)) {
    Serial.println("Failed to read from DHT sensor");
    return;
  }

  StaticJsonDocument<128> doc;
  doc["temperature"] = temperature;
  doc["humidity"] = humidity;
  char payload[128];
  serializeJson(doc, payload);

  if (mqttClient.connected()) {
    mqttClient.publish("kp1", payload);
    Serial.print("Published: ");
    Serial.println(payload);
  } else {
    Serial.println("MQTT client not connected");
  }

  delay(5000);
}

void callback(char *topic, byte *payload, unsigned int length) {
  Serial.print("Received message on topic: ");
  Serial.println(topic);

  char message[length + 1];
  for (int i = 0; i < length; i++) {
    message[i] = (char)payload[i];
  }
  message[length] = '\0';
  Serial.print("Payload: ");
  Serial.println(message);
}

This is my code and below is the error

C:\Users\Charles\Documents\Arduino\Kaa\Kaa.ino: In function 'void loop()':
C:\Users\Charles\Documents\Arduino\Kaa\Kaa.ino:74:16: error: 'class MqttClient' has no member named 'publish'
     mqttClient.publish("kp1", payload);
                ^~~~~~~

exit status 1

Compilation error: 'class MqttClient' has no member named 'publish'

Why are you trying to use 2 different MQTT libraries in the same sketch ?

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.