miyago icon

mqtt-child.c

miyago | PRO | 05/17/19 09:12:50 AM UTC | 0 ⭐ | 381 👁️ | Never ⏰ | []
C |

2.15 KB

|

None

|

0 👍

/

0 👎

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "MQTTClient.h"
 
#include <unistd.h>
 
#define ADDRESS     "tcp://192.168.6.20:1883"
#define CLIENTID    "RPI3B"
#define TOPIC       "hem/drift/effekt"
#define PAYLOAD     "Hello World!"
#define QOS         0
#define TIMEOUT     10000L
 
volatile MQTTClient_deliveryToken deliveredtoken;
void delivered(void *context, MQTTClient_deliveryToken dt)
{
    fprintf(stderr, "Message with token value %d delivery confirmed\n", dt);
    deliveredtoken = dt;
}
int msgarrvd(void *context, char *topicName, int topicLen, MQTTClient_message *message)
{
    int i;
    char* payloadptr;
    char* w_pl_ptr;
 
    /* printf("Message arrived! ");
    printf("Topic: %s\n", topicName);
    printf("Message: "); */
    payloadptr = message->payload;
      w_pl_ptr = message->payload;
 
      for(i=0; i<message->payloadlen; i++)
    {
        putchar(*payloadptr++);
    }
    putchar('\n');
 
    // Hanterar meddelandet
    // handleMsg(w_pl_ptr);
    write(STDOUT_FILENO, w_pl_ptr, message->payloadlen);
    // *************'**
 
    MQTTClient_freeMessage(&message);
    MQTTClient_free(topicName);
    return 1;
}
void connlost(void *context, char *cause)
{
    fprintf(stderr,"\nConnection lost\n");
    fprintf(stderr,"     cause: %s\n", cause);
}
int mqtt_sub()
{
 
    MQTTClient client;
    MQTTClient_connectOptions conn_opts = MQTTClient_connectOptions_initializer;
 
    int rc;
    int ch;
 
    MQTTClient_create(&client, ADDRESS, CLIENTID,
        MQTTCLIENT_PERSISTENCE_NONE, NULL);
    conn_opts.keepAliveInterval = 20;
    conn_opts.cleansession = 1;
    MQTTClient_setCallbacks(client, NULL, connlost, msgarrvd, delivered);
    if ((rc = MQTTClient_connect(client, &conn_opts)) != MQTTCLIENT_SUCCESS)
    {
        fprintf(stderr,"Failed to connect, return code %d\n", rc);
        exit(EXIT_FAILURE);
    }
    fprintf(stderr,"Subscribing to topic %s\nfor client %s using QoS%d\n\n"
           "Press Q<Enter> to quit\n\n", TOPIC, CLIENTID, QOS);
    MQTTClient_subscribe(client, TOPIC, QOS);
 
    do
    {
        ch = getchar();
    } while(ch!='Q' && ch != 'q');
    MQTTClient_disconnect(client, 10000);
    MQTTClient_destroy(&client);
    return rc;
}

Comments