Advertisement
Guest User

Untitled

a guest
Jan 18th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.72 KB | None | 0 0
  1. package src;
  2.  
  3. import org.fusesource.mqtt.client.*;
  4. import org.json.JSONArray;
  5. import org.json.JSONException;
  6. import org.json.JSONObject;
  7.  
  8. import java.nio.charset.StandardCharsets;
  9. import java.util.ArrayList;
  10.  
  11. /**
  12. * Created by Kalaman on 09.01.18.
  13. */
  14. public class MQTTClient {
  15. private MQTT mqtt;
  16. private static BlockingConnection connection;
  17. private Topic [] topic;
  18.  
  19. private ArrayList<MQTTListener> mqttListener;
  20. private static final String SERVER_IP = "192.168.43.197";
  21. private static final int SERVER_PORT = 1883;
  22.  
  23. public static final String TOPIC_LOG = "log";
  24. public static final String TOPIC_DRIVE = "drive";
  25. public static final String TOPIC_SONIC_DISTANCE = "distance";
  26.  
  27. public MQTTClient() {
  28. mqtt = new MQTT();
  29. mqttListener = new ArrayList<MQTTListener>();
  30. topic = new Topic[] {new Topic(TOPIC_LOG, QoS.EXACTLY_ONCE),new Topic(TOPIC_SONIC_DISTANCE, QoS.EXACTLY_ONCE)};
  31.  
  32. try {
  33. mqtt.setHost(SERVER_IP, SERVER_PORT);
  34. connection = mqtt.blockingConnection();
  35. connection.connect();
  36. JConsolePanel.writeToConsole("Connected to MQTT-Server [" + SERVER_IP + ":" + SERVER_PORT + "]");
  37. connection.subscribe(topic);
  38.  
  39. }
  40. catch (Exception e){
  41. e.printStackTrace();
  42. JConsolePanel.writeToConsole("Connection with MQTT-Server failed " + SERVER_IP + ":" + SERVER_PORT);
  43. }
  44. }
  45.  
  46. public interface MQTTListener {
  47. public void onLogReceived(String jsonData);
  48. public void onDriveReceived(float distanceInCM);
  49. public void onUltrasonicDistanceReceived(float distanceInCM);
  50. }
  51.  
  52. public boolean addMQTTListener(MQTTListener listener) {
  53. return mqttListener.add(listener);
  54. }
  55.  
  56. public boolean removeMQTTListener(MQTTListener listener) {
  57. return mqttListener.remove(listener);
  58. }
  59.  
  60. public void startListeningThread () {
  61. new Thread() {
  62. @Override
  63. public void run() {
  64. try {
  65. while(true) {
  66. Message message = connection.receive();
  67. String payload = new String(message.getPayload(), StandardCharsets.UTF_8);
  68.  
  69. if (message.getTopic().equals(TOPIC_LOG)) {
  70. for (MQTTListener listener : mqttListener)
  71. listener.onLogReceived(payload);
  72. }
  73. else if (message.getTopic().equals(TOPIC_DRIVE))
  74. {
  75. float distance = Float.parseFloat(payload) / (float)100;
  76.  
  77. for (MQTTListener listener : mqttListener)
  78. listener.onDriveReceived(distance);
  79. }
  80. else if (message.getTopic().equals(TOPIC_SONIC_DISTANCE)){
  81. float sonicDistance = Float.parseFloat(payload);
  82.  
  83. for (MQTTListener listener : mqttListener)
  84. listener.onUltrasonicDistanceReceived(sonicDistance);
  85. }
  86. message.ack();
  87. }
  88. }
  89. catch (Exception e) {
  90. e.printStackTrace();
  91. }
  92. }
  93.  
  94. }.start();
  95. }
  96.  
  97. public static void publish (String message, String topic) {
  98. try {
  99. connection.publish(topic, message.getBytes() ,QoS.EXACTLY_ONCE, false);
  100. } catch (Exception e) {
  101. e.printStackTrace();
  102. }
  103. }
  104.  
  105. public void publishLog (String msg) {
  106. publish(msg,TOPIC_LOG);
  107. }
  108.  
  109. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement