send temp data to thingsboard through mqtt using lpc1768
Dependencies: C12832 LM75B MQTT
main.cpp@0:df50ec82d746, 2018-07-04 (annotated)
- Committer:
- daklowprofile
- Date:
- Wed Jul 04 07:27:48 2018 +0000
- Revision:
- 0:df50ec82d746
initial working code
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
daklowprofile | 0:df50ec82d746 | 1 | #define USE_LCD 0 |
daklowprofile | 0:df50ec82d746 | 2 | |
daklowprofile | 0:df50ec82d746 | 3 | #if USE_LCD |
daklowprofile | 0:df50ec82d746 | 4 | #include "C12832.h" |
daklowprofile | 0:df50ec82d746 | 5 | |
daklowprofile | 0:df50ec82d746 | 6 | // the actual pins are defined in mbed_app.json and can be overridden per target |
daklowprofile | 0:df50ec82d746 | 7 | C12832 lcd(LCD_MOSI, LCD_SCK, LCD_MISO, LCD_A0, LCD_NCS); |
daklowprofile | 0:df50ec82d746 | 8 | |
daklowprofile | 0:df50ec82d746 | 9 | #define logMessage lcd.cls();lcd.printf |
daklowprofile | 0:df50ec82d746 | 10 | |
daklowprofile | 0:df50ec82d746 | 11 | #else |
daklowprofile | 0:df50ec82d746 | 12 | |
daklowprofile | 0:df50ec82d746 | 13 | #define logMessage printf |
daklowprofile | 0:df50ec82d746 | 14 | |
daklowprofile | 0:df50ec82d746 | 15 | #endif |
daklowprofile | 0:df50ec82d746 | 16 | |
daklowprofile | 0:df50ec82d746 | 17 | #define MQTTCLIENT_QOS2 1 |
daklowprofile | 0:df50ec82d746 | 18 | |
daklowprofile | 0:df50ec82d746 | 19 | #include "easy-connect.h" |
daklowprofile | 0:df50ec82d746 | 20 | #include "MQTTNetwork.h" |
daklowprofile | 0:df50ec82d746 | 21 | #include "MQTTmbed.h" |
daklowprofile | 0:df50ec82d746 | 22 | #include "MQTTClient.h" |
daklowprofile | 0:df50ec82d746 | 23 | #include "LM75B.h" |
daklowprofile | 0:df50ec82d746 | 24 | |
daklowprofile | 0:df50ec82d746 | 25 | LM75B tmp(p28,p27); |
daklowprofile | 0:df50ec82d746 | 26 | |
daklowprofile | 0:df50ec82d746 | 27 | |
daklowprofile | 0:df50ec82d746 | 28 | int arrivedcount = 0; |
daklowprofile | 0:df50ec82d746 | 29 | |
daklowprofile | 0:df50ec82d746 | 30 | |
daklowprofile | 0:df50ec82d746 | 31 | void messageArrived(MQTT::MessageData& md) |
daklowprofile | 0:df50ec82d746 | 32 | { |
daklowprofile | 0:df50ec82d746 | 33 | MQTT::Message &message = md.message; |
daklowprofile | 0:df50ec82d746 | 34 | logMessage("Message arrived: qos %d, retained %d, dup %d, packetid %d\r\n", message.qos, message.retained, message.dup, message.id); |
daklowprofile | 0:df50ec82d746 | 35 | logMessage("Payload %.*s\r\n", message.payloadlen, (char*)message.payload); |
daklowprofile | 0:df50ec82d746 | 36 | ++arrivedcount; |
daklowprofile | 0:df50ec82d746 | 37 | } |
daklowprofile | 0:df50ec82d746 | 38 | |
daklowprofile | 0:df50ec82d746 | 39 | |
daklowprofile | 0:df50ec82d746 | 40 | int main(int argc, char* argv[]) |
daklowprofile | 0:df50ec82d746 | 41 | { |
daklowprofile | 0:df50ec82d746 | 42 | float version = 0.6; |
daklowprofile | 0:df50ec82d746 | 43 | char* topic = "v1/devices/me/telemetry"; |
daklowprofile | 0:df50ec82d746 | 44 | |
daklowprofile | 0:df50ec82d746 | 45 | logMessage("HelloMQTT: version is %.2f\r\n", version); |
daklowprofile | 0:df50ec82d746 | 46 | |
daklowprofile | 0:df50ec82d746 | 47 | NetworkInterface* network = easy_connect(true); |
daklowprofile | 0:df50ec82d746 | 48 | if (!network) { |
daklowprofile | 0:df50ec82d746 | 49 | return -1; |
daklowprofile | 0:df50ec82d746 | 50 | } |
daklowprofile | 0:df50ec82d746 | 51 | |
daklowprofile | 0:df50ec82d746 | 52 | MQTTNetwork mqttNetwork(network); |
daklowprofile | 0:df50ec82d746 | 53 | |
daklowprofile | 0:df50ec82d746 | 54 | MQTT::Client<MQTTNetwork, Countdown> client(mqttNetwork); |
daklowprofile | 0:df50ec82d746 | 55 | |
daklowprofile | 0:df50ec82d746 | 56 | const char* hostname = "demo.thingsboard.io"; |
daklowprofile | 0:df50ec82d746 | 57 | int port = 1883; |
daklowprofile | 0:df50ec82d746 | 58 | logMessage("Connecting to %s:%d\r\n", hostname, port); |
daklowprofile | 0:df50ec82d746 | 59 | int rc = mqttNetwork.connect(hostname, port); |
daklowprofile | 0:df50ec82d746 | 60 | if (rc != 0) |
daklowprofile | 0:df50ec82d746 | 61 | logMessage("rc from TCP connect is %d\r\n", rc); |
daklowprofile | 0:df50ec82d746 | 62 | char assess_token[] = "aq8Xr1qkEzo1ANb4VQHa"; |
daklowprofile | 0:df50ec82d746 | 63 | MQTTPacket_connectData data = MQTTPacket_connectData_initializer; |
daklowprofile | 0:df50ec82d746 | 64 | |
daklowprofile | 0:df50ec82d746 | 65 | data.username.cstring = assess_token; |
daklowprofile | 0:df50ec82d746 | 66 | |
daklowprofile | 0:df50ec82d746 | 67 | if ((rc = client.connect(data)) != 0) |
daklowprofile | 0:df50ec82d746 | 68 | logMessage("rc from MQTT connect is %d\r\n", rc); |
daklowprofile | 0:df50ec82d746 | 69 | |
daklowprofile | 0:df50ec82d746 | 70 | if ((rc = client.subscribe(topic, MQTT::QOS0, messageArrived)) != 0) |
daklowprofile | 0:df50ec82d746 | 71 | logMessage("rc from MQTT subscribe is %d\r\n", rc); |
daklowprofile | 0:df50ec82d746 | 72 | |
daklowprofile | 0:df50ec82d746 | 73 | MQTT::Message message; |
daklowprofile | 0:df50ec82d746 | 74 | |
daklowprofile | 0:df50ec82d746 | 75 | |
daklowprofile | 0:df50ec82d746 | 76 | while(1){ |
daklowprofile | 0:df50ec82d746 | 77 | char buf[256]; |
daklowprofile | 0:df50ec82d746 | 78 | int n = snprintf(buf, sizeof(buf), "{\"temperature\":%f, \"active\": false}", tmp.read()); |
daklowprofile | 0:df50ec82d746 | 79 | message.payload = reinterpret_cast<void*>(buf); |
daklowprofile | 0:df50ec82d746 | 80 | message.payloadlen = n; |
daklowprofile | 0:df50ec82d746 | 81 | rc = client.publish(topic, message); |
daklowprofile | 0:df50ec82d746 | 82 | wait(5); |
daklowprofile | 0:df50ec82d746 | 83 | } |
daklowprofile | 0:df50ec82d746 | 84 | |
daklowprofile | 0:df50ec82d746 | 85 | } |