send temp data to thingsboard through mqtt using lpc1768
Dependencies: C12832 LM75B MQTT
Revision 0:df50ec82d746, committed 2018-07-04
- Comitter:
- daklowprofile
- Date:
- Wed Jul 04 07:27:48 2018 +0000
- Commit message:
- initial working code
Changed in this revision
diff -r 000000000000 -r df50ec82d746 C12832.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/C12832.lib Wed Jul 04 07:27:48 2018 +0000 @@ -0,0 +1,1 @@ +https://mbed.org/teams/components/code/C12832/#03069e3deaa4
diff -r 000000000000 -r df50ec82d746 LM75B.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/LM75B.lib Wed Jul 04 07:27:48 2018 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/chris/code/LM75B/#6a70c9303bbe
diff -r 000000000000 -r df50ec82d746 MQTT.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MQTT.lib Wed Jul 04 07:27:48 2018 +0000 @@ -0,0 +1,1 @@ +https://mbed.org/teams/mqtt/code/MQTT/#9cff7b6bbd01
diff -r 000000000000 -r df50ec82d746 MQTTNetwork.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MQTTNetwork.h Wed Jul 04 07:27:48 2018 +0000 @@ -0,0 +1,38 @@ +#ifndef _MQTTNETWORK_H_ +#define _MQTTNETWORK_H_ + +#include "NetworkInterface.h" + +class MQTTNetwork { +public: + MQTTNetwork(NetworkInterface* aNetwork) : network(aNetwork) { + socket = new TCPSocket(); + } + + ~MQTTNetwork() { + delete socket; + } + + int read(unsigned char* buffer, int len, int timeout) { + return socket->recv(buffer, len); + } + + int write(unsigned char* buffer, int len, int timeout) { + return socket->send(buffer, len); + } + + int connect(const char* hostname, int port) { + socket->open(network); + return socket->connect(hostname, port); + } + + int disconnect() { + return socket->close(); + } + +private: + NetworkInterface* network; + TCPSocket* socket; +}; + +#endif // _MQTTNETWORK_H_
diff -r 000000000000 -r df50ec82d746 easy-connect.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/easy-connect.lib Wed Jul 04 07:27:48 2018 +0000 @@ -0,0 +1,1 @@ +https://github.com/ARMmbed/easy-connect/#cb933fb19cda0a733a64d6b71d271fb6bdaf9e6d
diff -r 000000000000 -r df50ec82d746 main.cpp --- /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); + } + +}
diff -r 000000000000 -r df50ec82d746 mbed-os.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed-os.lib Wed Jul 04 07:27:48 2018 +0000 @@ -0,0 +1,1 @@ +https://github.com/ARMmbed/mbed-os/#62f8b922b420626514fd4690107aff4188469833
diff -r 000000000000 -r df50ec82d746 mbed_app.json --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed_app.json Wed Jul 04 07:27:48 2018 +0000 @@ -0,0 +1,69 @@ +{ + "config": { + "network-interface":{ + "help": "options are ETHERNET, WIFI_ESP8266, WIFI_ODIN, WIFI_RTW, MESH_LOWPAN_ND, MESH_THREAD, CELLULAR_ONBOARD", + "value": "ETHERNET" + }, + "mesh_radio_type": { + "help": "options are ATMEL, MCR20", + "value": "ATMEL" + }, + "esp8266-tx": { + "help": "Pin used as TX (connects to ESP8266 RX)", + "value": "D1" + }, + "esp8266-rx": { + "help": "Pin used as RX (connects to ESP8266 TX)", + "value": "D0" + }, + "esp8266-ssid": { + "value": "\"SSID\"" + }, + "esp8266-password": { + "value": "\"Password\"" + }, + "esp8266-debug": { + "value": true + }, + "lcd-mosi": { + "value": "D11", + "macro_name": "LCD_MOSI" + }, + "lcd-sck": { + "value": "D13", + "macro_name": "LCD_SCK" + }, + "lcd-miso": { + "value": "D12", + "macro_name": "LCD_MISO" + }, + "lcd-a0": { + "value": "D7", + "macro_name": "LCD_A0" + }, + "lcd-ncs": { + "value": "D10", + "macro_name": "LCD_NCS" + } + }, + "target_overrides": { + "*": { + "target.features_add": ["NANOSTACK", "LOWPAN_ROUTER", "COMMON_PAL"], + "mbed-mesh-api.6lowpan-nd-channel-page": 0, + "mbed-mesh-api.6lowpan-nd-channel": 12, + "mbed-trace.enable": 0 + }, + "HEXIWEAR": { + "esp8266-tx": "PTD3", + "esp8266-rx": "PTD2" + }, + "NUCLEO_F401RE": { + "esp8266-tx": "D8", + "esp8266-rx": "D2" + }, + "NUCLEO_F411RE": { + "esp8266-tx": "D8", + "esp8266-rx": "D2" + } + } +}