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); } }