Difference between revisions of "MQTT: Arduino Publish di callback"

From OnnoWiki
Jump to navigation Jump to search
(Blanked the page)
Line 1: Line 1:
/*
 
Publishing in the callback
 
  
  - connects to an MQTT server
 
  - subscribes to the topic "inTopic"
 
  - when a message is received, republishes it to "outTopic"
 
 
  This example shows how to publish messages within the
 
  callback function. The callback function header needs to
 
  be declared before the PubSubClient constructor and the
 
  actual callback defined afterwards.
 
  This ensures the client reference in the callback function
 
  is valid.
 
 
*/
 
 
#include <SPI.h>
 
#include <Ethernet.h>
 
#include <PubSubClient.h>
 
 
// Update these with values suitable for your network.
 
byte mac[]    = {  0xDE, 0xED, 0xBA, 0xFE, 0xFE, 0xED };
 
IPAddress ip(192, 168, 0, 4);
 
IPAddress server(192, 168, 0, 100);
 
 
// Callback function header
 
void callback(char* topic, byte* payload, unsigned int length);
 
 
EthernetClient ethClient;
 
PubSubClient client(server, 1883, callback, ethClient);
 
 
// Callback function
 
void callback(char* topic, byte* payload, unsigned int length) {
 
  // In order to republish this payload, a copy must be made
 
  // as the orignal payload buffer will be overwritten whilst
 
  // constructing the PUBLISH packet.
 
 
  // Allocate the correct amount of memory for the payload copy
 
  byte* p = (byte*)malloc(length);
 
  // Copy the payload to the new buffer
 
  memcpy(p,payload,length);
 
  client.publish("outTopic", p, length);
 
  // Free the memory
 
  free(p);
 
}
 
 
void setup()
 
{
 
 
  Ethernet.begin(mac, ip);
 
  if (client.connect("arduinoClient")) {
 
    client.publish("outTopic","hello world");
 
    client.subscribe("inTopic");
 
  }
 
}
 
 
void loop()
 
{
 
  client.loop();
 
}
 

Revision as of 16:31, 11 May 2018