On Node-Red and MQTT

Dependencies:   mbed ESP8266Interface MbedJSONValue MQTT JSON

Committer:
sbetrabet
Date:
Thu May 02 06:05:52 2019 +0000
Revision:
22:518ae39b6d77
Parent:
21:f08f17225c7c
On Node-Red and MQTT with K64

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sbetrabet 19:9dfb938f07eb 1 #include "MQTTESP8266.h"
sbetrabet 19:9dfb938f07eb 2 #include "MQTTClient.h"
sbetrabet 19:9dfb938f07eb 3 #include "string.h"
sbetrabet 19:9dfb938f07eb 4 #include "MbedJSONValue.h"
sbetrabet 19:9dfb938f07eb 5 char buf[100];
sbetrabet 22:518ae39b6d77 6 //MQTTESP8266 ipstack(D1, D0, D10, "Sidsap10","Arduino111"); // change to match your wifi access point
sbetrabet 22:518ae39b6d77 7 MQTTESP8266 ipstack(D1, D0, D10, "BHNTG1682GFFE2","220960b5"); // change to match your wifi access point
sbetrabet 19:9dfb938f07eb 8 float version = 0.47;
sbetrabet 22:518ae39b6d77 9 char* topic = "toast";
sbetrabet 22:518ae39b6d77 10 char* topic2 = "bread";
sbetrabet 22:518ae39b6d77 11 char* hostname = "52.28.141.81";//"192.168.0.9";//";"192.168.43.87"; // Ip
sbetrabet 19:9dfb938f07eb 12 int port = 1883;
sbetrabet 19:9dfb938f07eb 13 int rc = ipstack.connect(hostname, port);
sbetrabet 22:518ae39b6d77 14 AnalogIn ain(A0);
sbetrabet 19:9dfb938f07eb 15 MQTT::Client<MQTTESP8266, Countdown> client = MQTT::Client<MQTTESP8266, Countdown>(ipstack);
sbetrabet 21:f08f17225c7c 16 //MbedJSONValue demo;
sbetrabet 19:9dfb938f07eb 17 //using namespace std;
sbetrabet 19:9dfb938f07eb 18 std::string someString;
sbetrabet 22:518ae39b6d77 19 std::string substrings ("senddata");
sbetrabet 21:f08f17225c7c 20
sbetrabet 19:9dfb938f07eb 21 // callback for subscribe topic
icraggs 1:a1d5c7a6acbc 22
mbedAustin 18:76d0899bc3ce 23 void subscribeCallback(MQTT::MessageData& md)
icraggs 2:638c854c0695 24 {
sbetrabet 22:518ae39b6d77 25 MQTT::Message &message = md.message;
sbetrabet 19:9dfb938f07eb 26 std::string someString((char*)message.payload);
sbetrabet 19:9dfb938f07eb 27 someString.resize (message.payloadlen);
sbetrabet 22:518ae39b6d77 28 if ( !(someString.find(substrings)) )
sbetrabet 22:518ae39b6d77 29 { sprintf(buf, "%6.4lf", ain.read()*100.0f);
sbetrabet 19:9dfb938f07eb 30 message.payload = (void*)buf;
sbetrabet 19:9dfb938f07eb 31 message.payloadlen = strlen(buf)+1;
sbetrabet 22:518ae39b6d77 32 rc = client.publish(topic, message);
sbetrabet 22:518ae39b6d77 33 printf("Publishing data to MQTT \r\n");
sbetrabet 21:f08f17225c7c 34 }
icraggs 2:638c854c0695 35 }
icraggs 2:638c854c0695 36 int main(int argc, char* argv[])
sbetrabet 19:9dfb938f07eb 37 {
sbetrabet 19:9dfb938f07eb 38 wait (1);
sbetrabet 22:518ae39b6d77 39 printf("Starting\r\n");
sbetrabet 20:568d04eb3d63 40 printf("Version is %f\r\n", version);
icraggs 6:e4c690c45021 41 if (rc != 0)
sbetrabet 20:568d04eb3d63 42 printf("rc from TCP connect is %d\r\n", rc);
sbetrabet 22:518ae39b6d77 43 if (rc == 0)
sbetrabet 22:518ae39b6d77 44 printf("K64 is online \r\n");
geky 17:92a64d43ee61 45 MQTTPacket_connectData data = MQTTPacket_connectData_initializer;
icraggs 16:28d062c5522b 46 if ((rc = client.connect(data)) != 0)
sbetrabet 20:568d04eb3d63 47 printf("rc from MQTT connect is %d\r\n", rc);
sbetrabet 19:9dfb938f07eb 48 if ((rc = client.subscribe(topic2, MQTT::QOS1, subscribeCallback)) != 0)
sbetrabet 20:568d04eb3d63 49 printf("Recv'd from MQTT subscribe is %d\r\n", rc);
sbetrabet 19:9dfb938f07eb 50 // QoS 0
sbetrabet 22:518ae39b6d77 51 while (true)
sbetrabet 22:518ae39b6d77 52 {
sbetrabet 22:518ae39b6d77 53 client.yield(100);
sbetrabet 21:f08f17225c7c 54 }
icraggs 0:0cae29831d01 55 }