miyago

mqtt-child.c

May 17th, 2019
407
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.15 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include "MQTTClient.h"
  5.  
  6. #include <unistd.h>
  7.  
  8. #define ADDRESS     "tcp://192.168.6.20:1883"
  9. #define CLIENTID    "RPI3B"
  10. #define TOPIC       "hem/drift/effekt"
  11. #define PAYLOAD     "Hello World!"
  12. #define QOS         0
  13. #define TIMEOUT     10000L
  14.  
  15. volatile MQTTClient_deliveryToken deliveredtoken;
  16. void delivered(void *context, MQTTClient_deliveryToken dt)
  17. {
  18.     fprintf(stderr, "Message with token value %d delivery confirmed\n", dt);
  19.     deliveredtoken = dt;
  20. }
  21. int msgarrvd(void *context, char *topicName, int topicLen, MQTTClient_message *message)
  22. {
  23.     int i;
  24.     char* payloadptr;
  25.     char* w_pl_ptr;
  26.  
  27.     /* printf("Message arrived! ");
  28.     printf("Topic: %s\n", topicName);
  29.     printf("Message: "); */
  30.     payloadptr = message->payload;
  31.       w_pl_ptr = message->payload;
  32.  
  33.       for(i=0; i<message->payloadlen; i++)
  34.     {
  35.         putchar(*payloadptr++);
  36.     }
  37.     putchar('\n');
  38.  
  39.     // Hanterar meddelandet
  40.     // handleMsg(w_pl_ptr);
  41.     write(STDOUT_FILENO, w_pl_ptr, message->payloadlen);
  42.     // *************'**
  43.  
  44.     MQTTClient_freeMessage(&message);
  45.     MQTTClient_free(topicName);
  46.     return 1;
  47. }
  48. void connlost(void *context, char *cause)
  49. {
  50.     fprintf(stderr,"\nConnection lost\n");
  51.     fprintf(stderr,"     cause: %s\n", cause);
  52. }
  53. int mqtt_sub()
  54. {
  55.  
  56.     MQTTClient client;
  57.     MQTTClient_connectOptions conn_opts = MQTTClient_connectOptions_initializer;
  58.  
  59.     int rc;
  60.     int ch;
  61.  
  62.     MQTTClient_create(&client, ADDRESS, CLIENTID,
  63.         MQTTCLIENT_PERSISTENCE_NONE, NULL);
  64.     conn_opts.keepAliveInterval = 20;
  65.     conn_opts.cleansession = 1;
  66.     MQTTClient_setCallbacks(client, NULL, connlost, msgarrvd, delivered);
  67.     if ((rc = MQTTClient_connect(client, &conn_opts)) != MQTTCLIENT_SUCCESS)
  68.     {
  69.         fprintf(stderr,"Failed to connect, return code %d\n", rc);
  70.         exit(EXIT_FAILURE);
  71.     }
  72.     fprintf(stderr,"Subscribing to topic %s\nfor client %s using QoS%d\n\n"
  73.            "Press Q<Enter> to quit\n\n", TOPIC, CLIENTID, QOS);
  74.     MQTTClient_subscribe(client, TOPIC, QOS);
  75.  
  76.     do
  77.     {
  78.         ch = getchar();
  79.     } while(ch!='Q' && ch != 'q');
  80.     MQTTClient_disconnect(client, 10000);
  81.     MQTTClient_destroy(&client);
  82.     return rc;
  83. }
Advertisement
Add Comment
Please, Sign In to add comment