Message Queue Telemetry Transport - MQTT

Subscribe

#include <SPI.h>
#include <Ethernet.h> 
#include <PubSubClient.h> // Impostazioni di rete 
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; 
IPAddress server(192,168,1,100); 
EthernetClient ethClient; 
PubSubClient client(ethClient); // Dichiarazione della callback 

void callback(char* topic, byte* payload, unsigned int length) 
	{ 
	Serial.print("Messaggio ricevuto su ["); 
	Serial.print(topic); 
	Serial.print("]: "); 
	for (int i = 0; i < length; i++) 
		{ 
		Serial.print((char)payload[i]);
		} 
	Serial.println(); 
	}	 

void setup() 
	{ 
	Serial.begin(9600); 
	Ethernet.begin(mac); 
	delay(1000); 
	client.setServer(server, 1883); 
	client.setCallback(callback); 
	while (!client.connected()) 
		{ 
			Serial.println("Connessione al broker MQTT..."); 
			if (client.connect("arduino_client")) 
			{
				Serial.println("Connesso al broker MQTT"); 
				client.subscribe("arduino/test");
			}
			else 
			{ 
				Serial.print("Fallito, codice errore: "); 
				Serial.println(client.state()); 
				delay(5000); 
			} 
		} 
	} 


void loop() 
	{
	client.loop(); 
	}

Publish

#include <SPI.h> 
#include <Ethernet.h> 
#include <PubSubClient.h> // Impostazioni di rete 
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; 
IPAddress server(192,168,1,100); 
EthernetClient ethClient; 
PubSubClient client(ethClient); 

void setup() 
	{ 
	Serial.begin(9600); 
	Ethernet.begin(mac); 
	delay(1000); 
	client.setServer(server, 1883); 
	while (!client.connected()) 
		{ 
		Serial.println("Connessione al broker MQTT..."); 
		if (client.connect("arduino_client")) 
			{ 
			Serial.println("Connesso al broker MQTT"); 
			} 
		else 
			{	 	
			Serial.print("Fallito, codice errore: "); 
			Serial.println(client.state()); 
			delay(5000); 
			} 
		} 
	} 

void loop() 
	{ // Esempio di pubblicazione di un messaggio sul topic "arduino/test" 
		client.publish("arduino/test", "Hello World!"); 
		delay(5000); 
	}