send temp data to thingsboard through mqtt using lpc1768
Dependencies: C12832 LM75B MQTT
Diff: main.cpp
- Revision:
- 0:df50ec82d746
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Jul 04 07:27:48 2018 +0000 @@ -0,0 +1,85 @@ +#define USE_LCD 0 + +#if USE_LCD +#include "C12832.h" + +// the actual pins are defined in mbed_app.json and can be overridden per target +C12832 lcd(LCD_MOSI, LCD_SCK, LCD_MISO, LCD_A0, LCD_NCS); + +#define logMessage lcd.cls();lcd.printf + +#else + +#define logMessage printf + +#endif + +#define MQTTCLIENT_QOS2 1 + +#include "easy-connect.h" +#include "MQTTNetwork.h" +#include "MQTTmbed.h" +#include "MQTTClient.h" +#include "LM75B.h" + +LM75B tmp(p28,p27); + + +int arrivedcount = 0; + + +void messageArrived(MQTT::MessageData& md) +{ + MQTT::Message &message = md.message; + logMessage("Message arrived: qos %d, retained %d, dup %d, packetid %d\r\n", message.qos, message.retained, message.dup, message.id); + logMessage("Payload %.*s\r\n", message.payloadlen, (char*)message.payload); + ++arrivedcount; +} + + +int main(int argc, char* argv[]) +{ + float version = 0.6; + char* topic = "v1/devices/me/telemetry"; + + logMessage("HelloMQTT: version is %.2f\r\n", version); + + NetworkInterface* network = easy_connect(true); + if (!network) { + return -1; + } + + MQTTNetwork mqttNetwork(network); + + MQTT::Client<MQTTNetwork, Countdown> client(mqttNetwork); + + const char* hostname = "demo.thingsboard.io"; + int port = 1883; + logMessage("Connecting to %s:%d\r\n", hostname, port); + int rc = mqttNetwork.connect(hostname, port); + if (rc != 0) + logMessage("rc from TCP connect is %d\r\n", rc); + char assess_token[] = "aq8Xr1qkEzo1ANb4VQHa"; + MQTTPacket_connectData data = MQTTPacket_connectData_initializer; + + data.username.cstring = assess_token; + + if ((rc = client.connect(data)) != 0) + logMessage("rc from MQTT connect is %d\r\n", rc); + + if ((rc = client.subscribe(topic, MQTT::QOS0, messageArrived)) != 0) + logMessage("rc from MQTT subscribe is %d\r\n", rc); + + MQTT::Message message; + + + while(1){ + char buf[256]; + int n = snprintf(buf, sizeof(buf), "{\"temperature\":%f, \"active\": false}", tmp.read()); + message.payload = reinterpret_cast<void*>(buf); + message.payloadlen = n; + rc = client.publish(topic, message); + wait(5); + } + +}