This is a quick post to share a sample code using Eclipse Paho for MQTT.
Recommended: First steps with MQTT using Mosquitto
Some may prefer to use REST or Websockets, but MQTT is the standard protocol to connect things to the Internet. Even a small NodeMCU can read and publish on MQTT topics. You can configure a RaspberryPi instance to be a mqtt server or even use a cloud MQTT server, such as Paho, Mosquitto and other servers on the cloud. There are also paid services such as Amazon AWS.
Here' s a very simple code to say hello from a Java application.
Recommended: First steps with MQTT using Mosquitto
Some may prefer to use REST or Websockets, but MQTT is the standard protocol to connect things to the Internet. Even a small NodeMCU can read and publish on MQTT topics. You can configure a RaspberryPi instance to be a mqtt server or even use a cloud MQTT server, such as Paho, Mosquitto and other servers on the cloud. There are also paid services such as Amazon AWS.
Here' s a very simple code to say hello from a Java application.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package org.fxapps.iot; | |
import java.util.Date; | |
import org.eclipse.paho.client.mqttv3.MqttClient; | |
import org.eclipse.paho.client.mqttv3.MqttConnectOptions; | |
import org.eclipse.paho.client.mqttv3.MqttException; | |
import org.eclipse.paho.client.mqttv3.MqttMessage; | |
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; | |
public class MqttPublish { | |
public static void main(String[] args) { | |
String topic = "fxapps/iot/test"; | |
String content = "Hello World from Java: " + new Date(); | |
int qos = 2; | |
String broker = "tcp://iot.eclipse.org:1883"; | |
String clientId = "FXappsTest"; | |
MemoryPersistence persistence = new MemoryPersistence(); | |
try { | |
MqttClient sampleClient = new MqttClient(broker, clientId, persistence); | |
MqttConnectOptions connOpts = new MqttConnectOptions(); | |
connOpts.setCleanSession(true); | |
System.out.println("Connecting to broker: " + broker); | |
sampleClient.connect(connOpts); | |
System.out.println("Connected"); | |
System.out.println("Publishing message: " + content); | |
MqttMessage message = new MqttMessage(content.getBytes()); | |
message.setQos(qos); | |
sampleClient.publish(topic, message); | |
System.out.println("Message published"); | |
sampleClient.disconnect(); | |
System.out.println("Disconnected"); | |
System.exit(0); | |
} catch (MqttException me) { | |
System.out.println("reason " + me.getReasonCode()); | |
System.out.println("msg " + me.getMessage()); | |
System.out.println("loc " + me.getLocalizedMessage()); | |
System.out.println("cause " + me.getCause()); | |
System.out.println("excep " + me); | |
me.printStackTrace(); | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package org.fxapps.iot; | |
import java.util.Scanner; | |
import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken; | |
import org.eclipse.paho.client.mqttv3.MqttCallback; | |
import org.eclipse.paho.client.mqttv3.MqttClient; | |
import org.eclipse.paho.client.mqttv3.MqttConnectOptions; | |
import org.eclipse.paho.client.mqttv3.MqttException; | |
import org.eclipse.paho.client.mqttv3.MqttMessage; | |
public class MqttSubscribe implements MqttCallback { | |
String topic = "fxapps/iot/test"; | |
String broker = "tcp://iot.eclipse.org:1883"; | |
String clientId = "FXappsTest"; | |
public static void main(String[] args) { | |
new MqttSubscribe(); | |
} | |
public MqttSubscribe() { | |
try { | |
MqttClient sampleClient = new MqttClient(broker, clientId); | |
MqttConnectOptions connOpts = new MqttConnectOptions(); | |
connOpts.setCleanSession(true); | |
System.out.println("Connecting to broker: " + broker); | |
sampleClient.connect(connOpts); | |
System.out.println("Connected"); | |
System.out.println("Listening topic: " + topic); | |
sampleClient.subscribe(topic); | |
sampleClient.setCallback(this); | |
Scanner sc = new Scanner(System.in); | |
sc.nextLine(); | |
sc.close(); | |
sampleClient.disconnect(); | |
} catch (MqttException me) { | |
me.printStackTrace(); | |
} | |
} | |
@Override | |
public void connectionLost(Throwable cause) { | |
System.out.println(" Connection Lost!"); | |
cause.printStackTrace(); | |
} | |
@Override | |
public void messageArrived(String topic, MqttMessage message) throws Exception { | |
System.out.println("Message to topic " + topic + ": " + new String(message.getPayload())); | |
} | |
@Override | |
public void deliveryComplete(IMqttDeliveryToken token) { | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | |
<modelVersion>4.0.0</modelVersion> | |
<groupId>org.fxapps.iot</groupId> | |
<artifactId>mqtt-test</artifactId> | |
<version>1.0</version> | |
<dependencies> | |
<dependency> | |
<groupId>org.eclipse.paho</groupId> | |
<artifactId>org.eclipse.paho.client.mqttv3</artifactId> | |
<version>1.0.2</version> | |
</dependency> | |
</dependencies> | |
</project> |
Comentários
Postar um comentário