On Node-Red and MQTT

Dependencies:   mbed ESP8266Interface MbedJSONValue MQTT JSON

main.cpp

Committer:
sbetrabet
Date:
2019-05-02
Revision:
22:518ae39b6d77
Parent:
21:f08f17225c7c

File content as of revision 22:518ae39b6d77:

#include "MQTTESP8266.h"
#include "MQTTClient.h"
#include "string.h"
#include "MbedJSONValue.h"
char buf[100];
//MQTTESP8266 ipstack(D1, D0, D10, "Sidsap10","Arduino111"); // change to match your wifi access point
MQTTESP8266 ipstack(D1, D0, D10, "BHNTG1682GFFE2","220960b5"); // change to match your wifi access point
float version = 0.47;
char* topic = "toast";
char* topic2 = "bread";   
char* hostname = "52.28.141.81";//"192.168.0.9";//";"192.168.43.87"; // Ip 
int port = 1883;
int rc = ipstack.connect(hostname, port);
AnalogIn   ain(A0);
MQTT::Client<MQTTESP8266, Countdown> client = MQTT::Client<MQTTESP8266, Countdown>(ipstack);
//MbedJSONValue demo;
//using namespace std;
std::string someString;
std::string substrings ("senddata");

// callback for subscribe topic

void subscribeCallback(MQTT::MessageData& md)
{
    MQTT::Message &message = md.message;  
     std::string someString((char*)message.payload);
     someString.resize (message.payloadlen);  
    if ( !(someString.find(substrings)) )
    {         sprintf(buf, "%6.4lf", ain.read()*100.0f);
       message.payload = (void*)buf;
       message.payloadlen = strlen(buf)+1;
       rc = client.publish(topic, message);
       printf("Publishing data to MQTT \r\n"); 
    }
}
int main(int argc, char* argv[])
{  
    wait (1);
    printf("Starting\r\n");  
    printf("Version is %f\r\n", version);
    if (rc != 0)
        printf("rc from TCP connect is %d\r\n", rc);
    if (rc == 0)
        printf("K64 is online \r\n");
    MQTTPacket_connectData data = MQTTPacket_connectData_initializer;
    if ((rc = client.connect(data)) != 0)
        printf("rc from MQTT connect is %d\r\n", rc);
    if ((rc = client.subscribe(topic2, MQTT::QOS1, subscribeCallback)) != 0)
        printf("Recv'd from MQTT subscribe is %d\r\n", rc);
    // QoS 0
    while (true)
       {
         client.yield(100);      
        }
}