Go Down

Topic: MQTT void callback, nothing happens (Read 54 times) previous topic - next topic


I'm testing with my arduino and MQTT cloud.
For the publish everything goes well, the arduino publishes "hello world"

But with the void callback function nothing happens.
With my MQTT.fx client, I'm subscribed to the topics "status" and "commando".
At the "status" I see that the arduino is a live.

When I publish with my MQTT.fx client to the topic "commando".
I can see it arrived in my client, but not in the serial monitor of the arduino.

Why is the void callback function not used?

Code: [Select]

#include <SPI.h>
#include <PubSubClient.h>
#include <Ethernet.h>

#define server "m20.cloudmqtt.com"
int port = 13365;

// Update these with values suitable for your network.
byte mac[]    = {  0xDE, 0xED, 0xBA, 0xFE, 0xFE, 0xED };
byte ip[]     = { 192, 168, 0, 120 };

unsigned long time;
char message_buff[100];

EthernetClient ethClient;
PubSubClient client(server, port, callback, ethClient);

void setup()
  // init serial link for debugging
  Ethernet.begin(mac, ip);
  if (client.connect("arduino-MQTT","test","test")) {
    client.publish("/arduino/status/","hello world");
  if (Ethernet.begin(mac) == 0)
      Serial.println("Failed to configure Ethernet using DHCP");

void loop()
  // MQTT client loop processing

void callback(char* topic, byte* payload, unsigned int length) {
  if (strcmp(topic, "/arduino/commando/") == 0) {
    String msg = toString(payload, length);
    Serial.println("arduino topic not found");

// toString function
String toString(byte* payload, unsigned int length) {
  int i = 0;
  char buff[length + 1];
  for (i = 0; i < length; i++) {
    buff[i] = payload[i];
  buff[i] = '\0';
  String msg = String(buff);
  return msg;

Go Up

Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

via Egeo 16
Torino, 10131