Advertisement
vitareinforce

contoh pubsub rmq

Oct 29th, 2019
344
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.     Develop by      : Fahmi Nurfadilah
  3.     Email           : fahmi.nurfadilah1412@gmail.com
  4.     Updated by      : Vitradisa Pratama
  5.     Email           : vitradisa@pptik.itb.ac.id
  6.     Project         : Example
  7.     Version         : 1.0
  8. */
  9.  
  10. #include <PubSubClient.h>
  11. #include <ESP8266WiFi.h>
  12.  
  13. // Update these with values suitable for your network.
  14.  
  15. const char* ssid = "........";
  16. const char* password = "........";
  17. const char* mqtt_server = "rmq1.pptik.id";
  18. const char* mqtt_user = "/tmdgdai:tmdgdai";
  19. const char* mqtt_pass = "tmdgdai";
  20. const char* CL = "pubsubtest_unique_1";
  21. const char* mqtt_pub_topic = "pubsubtest";
  22.  
  23. char msg[100];
  24. const int LED = 13;
  25. WiFiClient espClient;
  26. PubSubClient client(espClient);
  27.  
  28. byte mac[6];
  29. String MACAddress;
  30.  
  31. void setup_wifi() {
  32.   delay(10);
  33.   // We start by connecting to a WiFi network
  34.   Serial.println();
  35.   Serial.print("Connecting to ");
  36.   Serial.println(ssid);
  37.   WiFi.begin(ssid, password);
  38.   while (WiFi.status() != WL_CONNECTED) {
  39.     delay(500);
  40.     Serial.print(".");
  41.   }
  42.   Serial.println("");
  43.   Serial.println("WiFi connected");
  44.   Serial.println("IP address: ");
  45.   Serial.println(WiFi.localIP());
  46. }
  47.  
  48. String mac2String(byte ar[]) {
  49.   String s;
  50.   for (byte i = 0; i < 6; ++i)
  51.   {
  52.     char buf[3];
  53.     sprintf(buf, "%2X", ar[i]);
  54.     s += buf;
  55.     if (i < 5) s += ':';
  56.   }
  57.   return s;
  58. }
  59.  
  60. void printMACAddress() {
  61.   WiFi.macAddress(mac);
  62.   MACAddress = mac2String(mac);
  63.   Serial.println(MACAddress);
  64. }
  65.  
  66. void callback(char* topic, byte* payload, unsigned int length) {
  67.   Serial.println("Message arrived");
  68.   Serial.print("Message topic ");
  69.   Serial.println(topic);
  70.   Serial.print("Message payload ");
  71.   String payloads;
  72.   for (int i = 0; i < length; i++) {
  73.     payloads += (char)payload[i];
  74.   }
  75.   Serial.println();
  76.   // Switch on the LED if an 1 was received as first character
  77.   if (payloads == 'on') {
  78.     digitalWrite(LED, HIGH);   // Turn the LED on (Note that HIGH is the voltage level
  79.   } else if (payloads == 'off') {
  80.     digitalWrite(LED, LOW);  // Turn the LED off by making the voltage LOW
  81.   }
  82. }
  83.  
  84. void reconnect() {
  85.   // Loop until we're reconnected
  86.   printMACAddress();
  87.   const char* CL;
  88.   CL = MACAddress.c_str();
  89.   Serial.println(CL);
  90.   while (!client.connected()) {
  91.     Serial.print("Attempting MQTT connection...");
  92.     // Attempt to connect
  93.     if (client.connect(CL, mqtt_user, mqtt_pass)) {
  94.       Serial.println("connected");
  95.       digitalWrite(LED, HIGH);
  96.     } else {
  97.       digitalWrite(LED, LOW);
  98.       Serial.print("failed, rc=");
  99.       Serial.print(client.state());
  100.       Serial.println(" try again in 5 seconds");
  101.       ESP.restart();
  102.       delay(5000);
  103.  
  104.     }
  105.   }
  106. }
  107.  
  108. void setup()
  109. {
  110.   pinMode(LED, OUTPUT);
  111.   Serial.begin(115200);
  112.   setup_wifi();
  113.   printMACAddress();
  114.   client.setServer(mqtt_server, 1883);
  115.   client.setCallback(callback);
  116. }
  117. void loop() {
  118.   String pubmsg = "";
  119.   if (!client.connected()) {
  120.     reconnect();
  121.   }
  122.   client.loop();
  123.   String jenis_iot = "........";
  124.   String longitude = "0";
  125.   String latitude = "0";
  126.   String data_1 = "0";
  127.   String data_2 = "0";
  128.   String data_3 = "0";
  129.   String data_4 = "0";
  130.   String timestamp_device = "........";
  131.   String kode_device = "........";
  132.   Serial.print("Publish message: ");
  133.   pubmsg = "#" + jenis_iot + "#" + longitude + "#" + latitude + "#" + data_1 + "#" + data_2 + "#" + data_3 + "#" + data_4 + "#" + timestamp_device + "#" + kode_device;
  134.   Serial.println(pubmsg);
  135.   client.publish(mqtt_pub_topic, pubmsg.c_str());
  136.   delay(5000);
  137. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement