mqtt_lora_thingsboard

Dependencies:   HTS221 VL53L0X BSP_B-L475E-IOT01 MQTT

Committer:
steven821217
Date:
Fri Sep 11 03:46:17 2020 +0000
Revision:
2:0fbb5fc452de
Parent:
1:5a9fdc848911
mqtt_thingboard

Who changed what in which revision?

UserRevisionLine numberNew contents of line
cornetlin 1:5a9fdc848911 1 /* WiFi+MQTT Example
cornetlin 1:5a9fdc848911 2 */
JunkoNakajima 0:8d0ccf7acecd 3
JunkoNakajima 0:8d0ccf7acecd 4 #include "mbed.h"
JunkoNakajima 0:8d0ccf7acecd 5 #include "TCPSocket.h"
JunkoNakajima 0:8d0ccf7acecd 6 #include "wifi-ism43362/ISM43362Interface.h"
cornetlin 1:5a9fdc848911 7 #define logMessage printf
cornetlin 1:5a9fdc848911 8 #define MQTTCLIENT_QOS2 1
cornetlin 1:5a9fdc848911 9 #include "MQTTNetwork.h"
cornetlin 1:5a9fdc848911 10 #include "MQTTmbed.h"
cornetlin 1:5a9fdc848911 11 #include "MQTTClient.h"
steven821217 2:0fbb5fc452de 12 //#include <string>
steven821217 2:0fbb5fc452de 13 //Serial pc(USBTX, USBRX);
steven821217 2:0fbb5fc452de 14 //Serial uart(PA_0, PA_1);
steven821217 2:0fbb5fc452de 15 //string inputdata;
steven821217 2:0fbb5fc452de 16 ISM43362Interface net;
steven821217 2:0fbb5fc452de 17
steven821217 2:0fbb5fc452de 18
steven821217 2:0fbb5fc452de 19 // WiFiInterface *wifi;
steven821217 2:0fbb5fc452de 20 /*void newData()
steven821217 2:0fbb5fc452de 21 {
steven821217 2:0fbb5fc452de 22 //buffer variables
steven821217 2:0fbb5fc452de 23 char ch;
steven821217 2:0fbb5fc452de 24 //if data is ready in the buffer
steven821217 2:0fbb5fc452de 25 while (uart.readable()) {
steven821217 2:0fbb5fc452de 26 //read 1 character
steven821217 2:0fbb5fc452de 27 //pc.printf("datacomming");
steven821217 2:0fbb5fc452de 28 ch = uart.getc();
steven821217 2:0fbb5fc452de 29 //if character is ‘s’ than it is the start of a sentence
steven821217 2:0fbb5fc452de 30 if (ch == 'p') {
steven821217 2:0fbb5fc452de 31 //so the pointer should be set to the first position
steven821217 2:0fbb5fc452de 32 inputdata.clear();
steven821217 2:0fbb5fc452de 33 }
steven821217 2:0fbb5fc452de 34 //write buffer character to big buffer string
steven821217 2:0fbb5fc452de 35 inputdata += ch;
steven821217 2:0fbb5fc452de 36 //if the character is # than the end of the sentence is reached and some stuff has to be done
steven821217 2:0fbb5fc452de 37 if (ch == '#') {
steven821217 2:0fbb5fc452de 38 //remove start and stop characters
steven821217 2:0fbb5fc452de 39 inputdata.erase(0,1);
steven821217 2:0fbb5fc452de 40 inputdata.erase(inputdata.length()-1,1);
steven821217 2:0fbb5fc452de 41 printf("input data =%s\n\r",inputdata);
steven821217 2:0fbb5fc452de 42 }
steven821217 2:0fbb5fc452de 43 }
steven821217 2:0fbb5fc452de 44 }*/
steven821217 2:0fbb5fc452de 45 void messageArrived(MQTT::MessageData& md)
steven821217 2:0fbb5fc452de 46 {
steven821217 2:0fbb5fc452de 47 MQTT::Message &message = md.message;
steven821217 2:0fbb5fc452de 48 logMessage("Message arrived: qos %d, retained %d, dup %d, packetid %d\r\n", message.qos, message.retained, message.dup, message.id);
steven821217 2:0fbb5fc452de 49 logMessage("Payload %.*s\r\n", message.payloadlen, (char*)message.payload);
steven821217 2:0fbb5fc452de 50 //++arrivedcount;
steven821217 2:0fbb5fc452de 51 }
steven821217 2:0fbb5fc452de 52
steven821217 2:0fbb5fc452de 53 int main(void){
steven821217 2:0fbb5fc452de 54 //pc.baud(19200);
steven821217 2:0fbb5fc452de 55 // uart.attach(&newData);
steven821217 2:0fbb5fc452de 56 int count = 0;
steven821217 2:0fbb5fc452de 57
steven821217 2:0fbb5fc452de 58 printf("\r\nWiFi+MQTT Example Demo\n");
steven821217 2:0fbb5fc452de 59
steven821217 2:0fbb5fc452de 60 // Connect to Wifi
steven821217 2:0fbb5fc452de 61 printf("\nConnecting to %s...\n", MBED_CONF_APP_WIFI_SSID);
steven821217 2:0fbb5fc452de 62 int ret = net.connect(MBED_CONF_APP_WIFI_SSID, MBED_CONF_APP_WIFI_PASSWORD, NSAPI_SECURITY_WPA_WPA2);
steven821217 2:0fbb5fc452de 63 if (ret != 0) {
steven821217 2:0fbb5fc452de 64 printf("\nConnection error: %d\n", ret);
steven821217 2:0fbb5fc452de 65 return -1;
steven821217 2:0fbb5fc452de 66 }
steven821217 2:0fbb5fc452de 67
steven821217 2:0fbb5fc452de 68 printf("Success\n\n");
steven821217 2:0fbb5fc452de 69 printf("MAC: %s\n", net.get_mac_address());
steven821217 2:0fbb5fc452de 70 printf("IP: %s\n", net.get_ip_address());
steven821217 2:0fbb5fc452de 71 printf("Netmask: %s\n", net.get_netmask());
steven821217 2:0fbb5fc452de 72 printf("Gateway: %s\n", net.get_gateway());
steven821217 2:0fbb5fc452de 73 printf("RSSI: %d\n\n", net.get_rssi());
steven821217 2:0fbb5fc452de 74
steven821217 2:0fbb5fc452de 75 printf("\Wifi Example Done,MQTT Example Start\n");
steven821217 2:0fbb5fc452de 76
steven821217 2:0fbb5fc452de 77 // MQTT Example Start
steven821217 2:0fbb5fc452de 78 float version = 0.6;
steven821217 2:0fbb5fc452de 79 char* publishtopic = "v1/devices/me/telemetry";
steven821217 2:0fbb5fc452de 80 char* subscribetopic = "subscribtest";
steven821217 2:0fbb5fc452de 81 char* publishtopic1 = "publisher";
steven821217 2:0fbb5fc452de 82 logMessage("HelloMQTT: version is %.2f\r\n", version);
steven821217 2:0fbb5fc452de 83
steven821217 2:0fbb5fc452de 84 NetworkInterface* network = &net;
steven821217 2:0fbb5fc452de 85 if (!network) {
steven821217 2:0fbb5fc452de 86 return -1;
steven821217 2:0fbb5fc452de 87 }
steven821217 2:0fbb5fc452de 88
steven821217 2:0fbb5fc452de 89 MQTTNetwork mqttNetwork(network);
steven821217 2:0fbb5fc452de 90
steven821217 2:0fbb5fc452de 91 MQTT::Client<MQTTNetwork, Countdown> client(mqttNetwork);
steven821217 2:0fbb5fc452de 92
steven821217 2:0fbb5fc452de 93 //const char* hostname = "192.168.0.157";
steven821217 2:0fbb5fc452de 94 const char* hostname = "demo.thingsboard.io";
steven821217 2:0fbb5fc452de 95 int port = 1883;
steven821217 2:0fbb5fc452de 96 logMessage("Connecting to %s:%d\r\n", hostname, port);
steven821217 2:0fbb5fc452de 97 int rc = mqttNetwork.connect(hostname, port);
steven821217 2:0fbb5fc452de 98 if (rc != 0)
steven821217 2:0fbb5fc452de 99 logMessage("rc from TCP connect is %d\r\n", rc);
steven821217 2:0fbb5fc452de 100 char assess_token[] = "Cb5N7YKqwf6Uf76GPI2p";
steven821217 2:0fbb5fc452de 101 MQTTPacket_connectData data = MQTTPacket_connectData_initializer;
steven821217 2:0fbb5fc452de 102 data.username.cstring = assess_token;
steven821217 2:0fbb5fc452de 103 data.MQTTVersion = 3;
steven821217 2:0fbb5fc452de 104 data.clientID.cstring = "mbed-sample";
steven821217 2:0fbb5fc452de 105 //data.username.cstring = "testuser";
steven821217 2:0fbb5fc452de 106 data.password.cstring = "testpassword";
steven821217 2:0fbb5fc452de 107 if ((rc = client.connect(data)) != 0)
steven821217 2:0fbb5fc452de 108 logMessage("rc from MQTT connect is %d\r\n", rc);
steven821217 2:0fbb5fc452de 109
steven821217 2:0fbb5fc452de 110 if ((rc = client.subscribe(publishtopic, MQTT::QOS2, messageArrived)) != 0)
steven821217 2:0fbb5fc452de 111 logMessage("rc from MQTT subscribe is %d\r\n", rc);
steven821217 2:0fbb5fc452de 112 if ((rc = client.subscribe(subscribetopic, MQTT::QOS2, messageArrived)) != 0)
steven821217 2:0fbb5fc452de 113 logMessage("rc from MQTT subscribe is %d\r\n", rc);
steven821217 2:0fbb5fc452de 114
steven821217 2:0fbb5fc452de 115
steven821217 2:0fbb5fc452de 116 // Get device health data, send to Treasure Data every 10 seconds
steven821217 2:0fbb5fc452de 117 while(1){
steven821217 2:0fbb5fc452de 118
steven821217 2:0fbb5fc452de 119 printf("\test\n");
steven821217 2:0fbb5fc452de 120 // MQTT::Message message;
steven821217 2:0fbb5fc452de 121 // MQTT::Message message1;
steven821217 2:0fbb5fc452de 122 // QoS 0
steven821217 2:0fbb5fc452de 123 char buf[100];
steven821217 2:0fbb5fc452de 124 // char buf1[30]="{\'test\':\'hello\'}";
steven821217 2:0fbb5fc452de 125
steven821217 2:0fbb5fc452de 126 int n = snprintf(buf, sizeof(buf),"{\"temperature\": %f}",version);
steven821217 2:0fbb5fc452de 127 void *payload = reinterpret_cast<void*>(buf);
steven821217 2:0fbb5fc452de 128 size_t payload_len = n;
steven821217 2:0fbb5fc452de 129 //sprintf(buf, "{\"temperature\":%f}", version);
steven821217 2:0fbb5fc452de 130 /* message.qos = MQTT::QOS0;
steven821217 2:0fbb5fc452de 131 message.retained = false;
steven821217 2:0fbb5fc452de 132 message.dup = false;
steven821217 2:0fbb5fc452de 133 message.payload = (void*)buf;
steven821217 2:0fbb5fc452de 134 message.payloadlen = strlen(buf)+1;
steven821217 2:0fbb5fc452de 135 message1.qos = MQTT::QOS0;
steven821217 2:0fbb5fc452de 136 message1.retained = false;
steven821217 2:0fbb5fc452de 137 message1.dup = false;
steven821217 2:0fbb5fc452de 138 message1.payload = (void*)buf1;
steven821217 2:0fbb5fc452de 139 message1.payloadlen = strlen(buf1)+1;*/
steven821217 2:0fbb5fc452de 140
steven821217 2:0fbb5fc452de 141 //message.payload = (void*)buf1;
steven821217 2:0fbb5fc452de 142 rc = client.publish(publishtopic, payload,n);
steven821217 2:0fbb5fc452de 143 //rc = client.publish(publishtopic1, message1);
steven821217 2:0fbb5fc452de 144 //client.yield(5);
steven821217 2:0fbb5fc452de 145 //uart.printf("s12345#\r\n");
steven821217 2:0fbb5fc452de 146
steven821217 2:0fbb5fc452de 147 //int x = 0;
steven821217 2:0fbb5fc452de 148 wait(1);
steven821217 2:0fbb5fc452de 149
steven821217 2:0fbb5fc452de 150 }
steven821217 2:0fbb5fc452de 151
steven821217 2:0fbb5fc452de 152 // net.disconnect();
steven821217 2:0fbb5fc452de 153
steven821217 2:0fbb5fc452de 154 }
steven821217 2:0fbb5fc452de 155
steven821217 2:0fbb5fc452de 156
steven821217 2:0fbb5fc452de 157
steven821217 2:0fbb5fc452de 158
steven821217 2:0fbb5fc452de 159
steven821217 2:0fbb5fc452de 160
steven821217 2:0fbb5fc452de 161
steven821217 2:0fbb5fc452de 162 /* WiFi+MQTT Example
steven821217 2:0fbb5fc452de 163 */
steven821217 2:0fbb5fc452de 164
steven821217 2:0fbb5fc452de 165 /*#include "mbed.h"
steven821217 2:0fbb5fc452de 166 #include "TCPSocket.h"
steven821217 2:0fbb5fc452de 167 #include "wifi-ism43362/ISM43362Interface.h"
steven821217 2:0fbb5fc452de 168 #define logMessage printf
steven821217 2:0fbb5fc452de 169 #define MQTTCLIENT_QOS2 1
steven821217 2:0fbb5fc452de 170 #include "MQTTNetwork.h"
steven821217 2:0fbb5fc452de 171 #include "MQTTmbed.h"
steven821217 2:0fbb5fc452de 172 #include "MQTTClient.h"
JunkoNakajima 0:8d0ccf7acecd 173
JunkoNakajima 0:8d0ccf7acecd 174 ISM43362Interface net;
JunkoNakajima 0:8d0ccf7acecd 175 // WiFiInterface *wifi;
JunkoNakajima 0:8d0ccf7acecd 176
cornetlin 1:5a9fdc848911 177 void messageArrived(MQTT::MessageData& md)
cornetlin 1:5a9fdc848911 178 {
cornetlin 1:5a9fdc848911 179 MQTT::Message &message = md.message;
cornetlin 1:5a9fdc848911 180 logMessage("Message arrived: qos %d, retained %d, dup %d, packetid %d\r\n", message.qos, message.retained, message.dup, message.id);
cornetlin 1:5a9fdc848911 181 logMessage("Payload %.*s\r\n", message.payloadlen, (char*)message.payload);
cornetlin 1:5a9fdc848911 182 //++arrivedcount;
cornetlin 1:5a9fdc848911 183 }
cornetlin 1:5a9fdc848911 184
JunkoNakajima 0:8d0ccf7acecd 185 int main(void){
JunkoNakajima 0:8d0ccf7acecd 186
JunkoNakajima 0:8d0ccf7acecd 187 int count = 0;
JunkoNakajima 0:8d0ccf7acecd 188
cornetlin 1:5a9fdc848911 189 printf("\r\nWiFi+MQTT Example Demo\n");
JunkoNakajima 0:8d0ccf7acecd 190
JunkoNakajima 0:8d0ccf7acecd 191 // Connect to Wifi
JunkoNakajima 0:8d0ccf7acecd 192 printf("\nConnecting to %s...\n", MBED_CONF_APP_WIFI_SSID);
JunkoNakajima 0:8d0ccf7acecd 193 int ret = net.connect(MBED_CONF_APP_WIFI_SSID, MBED_CONF_APP_WIFI_PASSWORD, NSAPI_SECURITY_WPA_WPA2);
JunkoNakajima 0:8d0ccf7acecd 194 if (ret != 0) {
JunkoNakajima 0:8d0ccf7acecd 195 printf("\nConnection error: %d\n", ret);
JunkoNakajima 0:8d0ccf7acecd 196 return -1;
JunkoNakajima 0:8d0ccf7acecd 197 }
JunkoNakajima 0:8d0ccf7acecd 198
JunkoNakajima 0:8d0ccf7acecd 199 printf("Success\n\n");
JunkoNakajima 0:8d0ccf7acecd 200 printf("MAC: %s\n", net.get_mac_address());
JunkoNakajima 0:8d0ccf7acecd 201 printf("IP: %s\n", net.get_ip_address());
JunkoNakajima 0:8d0ccf7acecd 202 printf("Netmask: %s\n", net.get_netmask());
JunkoNakajima 0:8d0ccf7acecd 203 printf("Gateway: %s\n", net.get_gateway());
JunkoNakajima 0:8d0ccf7acecd 204 printf("RSSI: %d\n\n", net.get_rssi());
JunkoNakajima 0:8d0ccf7acecd 205
cornetlin 1:5a9fdc848911 206 printf("\Wifi Example Done,MQTT Example Start\n");
cornetlin 1:5a9fdc848911 207
cornetlin 1:5a9fdc848911 208 // MQTT Example Start
cornetlin 1:5a9fdc848911 209 float version = 0.6;
steven821217 2:0fbb5fc452de 210 char* publishtopic = "v1/devices/me/telemetry";
cornetlin 1:5a9fdc848911 211 char* subscribetopic = "subscribtest";
steven821217 2:0fbb5fc452de 212 char* publishtopic1 = "publisher";
cornetlin 1:5a9fdc848911 213 logMessage("HelloMQTT: version is %.2f\r\n", version);
JunkoNakajima 0:8d0ccf7acecd 214
cornetlin 1:5a9fdc848911 215 NetworkInterface* network = &net;
cornetlin 1:5a9fdc848911 216 if (!network) {
cornetlin 1:5a9fdc848911 217 return -1;
cornetlin 1:5a9fdc848911 218 }
JunkoNakajima 0:8d0ccf7acecd 219
cornetlin 1:5a9fdc848911 220 MQTTNetwork mqttNetwork(network);
cornetlin 1:5a9fdc848911 221
cornetlin 1:5a9fdc848911 222 MQTT::Client<MQTTNetwork, Countdown> client(mqttNetwork);
JunkoNakajima 0:8d0ccf7acecd 223
steven821217 2:0fbb5fc452de 224 //const char* hostname = "192.168.0.157";
steven821217 2:0fbb5fc452de 225 const char* hostname = "demo.thingsboard.io";
cornetlin 1:5a9fdc848911 226 int port = 1883;
cornetlin 1:5a9fdc848911 227 logMessage("Connecting to %s:%d\r\n", hostname, port);
cornetlin 1:5a9fdc848911 228 int rc = mqttNetwork.connect(hostname, port);
cornetlin 1:5a9fdc848911 229 if (rc != 0)
cornetlin 1:5a9fdc848911 230 logMessage("rc from TCP connect is %d\r\n", rc);
steven821217 2:0fbb5fc452de 231 char assess_token[] = "Cb5N7YKqwf6Uf76GPI2p";
cornetlin 1:5a9fdc848911 232 MQTTPacket_connectData data = MQTTPacket_connectData_initializer;
steven821217 2:0fbb5fc452de 233 data.username.cstring = assess_token;
cornetlin 1:5a9fdc848911 234 data.MQTTVersion = 3;
cornetlin 1:5a9fdc848911 235 data.clientID.cstring = "mbed-sample";
steven821217 2:0fbb5fc452de 236 //data.username.cstring = "testuser";
cornetlin 1:5a9fdc848911 237 data.password.cstring = "testpassword";
cornetlin 1:5a9fdc848911 238 if ((rc = client.connect(data)) != 0)
cornetlin 1:5a9fdc848911 239 logMessage("rc from MQTT connect is %d\r\n", rc);
JunkoNakajima 0:8d0ccf7acecd 240
cornetlin 1:5a9fdc848911 241 if ((rc = client.subscribe(publishtopic, MQTT::QOS2, messageArrived)) != 0)
cornetlin 1:5a9fdc848911 242 logMessage("rc from MQTT subscribe is %d\r\n", rc);
cornetlin 1:5a9fdc848911 243 if ((rc = client.subscribe(subscribetopic, MQTT::QOS2, messageArrived)) != 0)
cornetlin 1:5a9fdc848911 244 logMessage("rc from MQTT subscribe is %d\r\n", rc);
cornetlin 1:5a9fdc848911 245
JunkoNakajima 0:8d0ccf7acecd 246
JunkoNakajima 0:8d0ccf7acecd 247 // Get device health data, send to Treasure Data every 10 seconds
JunkoNakajima 0:8d0ccf7acecd 248 while(1){
cornetlin 1:5a9fdc848911 249
cornetlin 1:5a9fdc848911 250 printf("\test\n");
steven821217 2:0fbb5fc452de 251 // MQTT::Message message;
steven821217 2:0fbb5fc452de 252 // MQTT::Message message1;
cornetlin 1:5a9fdc848911 253 // QoS 0
cornetlin 1:5a9fdc848911 254 char buf[100];
steven821217 2:0fbb5fc452de 255 // char buf1[30]="{\'test\':\'hello\'}";
steven821217 2:0fbb5fc452de 256
steven821217 2:0fbb5fc452de 257 int n = snprintf(buf, sizeof(buf),"{\"temperature\": %f}",version);
steven821217 2:0fbb5fc452de 258 void *payload = reinterpret_cast<void*>(buf);
steven821217 2:0fbb5fc452de 259 size_t payload_len = n;
steven821217 2:0fbb5fc452de 260 //sprintf(buf, "{\"temperature\":%f}", version);
steven821217 2:0fbb5fc452de 261 /* message.qos = MQTT::QOS0;
cornetlin 1:5a9fdc848911 262 message.retained = false;
cornetlin 1:5a9fdc848911 263 message.dup = false;
cornetlin 1:5a9fdc848911 264 message.payload = (void*)buf;
cornetlin 1:5a9fdc848911 265 message.payloadlen = strlen(buf)+1;
steven821217 2:0fbb5fc452de 266 message1.qos = MQTT::QOS0;
steven821217 2:0fbb5fc452de 267 message1.retained = false;
steven821217 2:0fbb5fc452de 268 message1.dup = false;
steven821217 2:0fbb5fc452de 269 message1.payload = (void*)buf1;
steven821217 2:0fbb5fc452de 270 message1.payloadlen = strlen(buf1)+1;*/
steven821217 2:0fbb5fc452de 271
steven821217 2:0fbb5fc452de 272 //message.payload = (void*)buf1;
steven821217 2:0fbb5fc452de 273 /* rc = client.publish(publishtopic, payload,n);
steven821217 2:0fbb5fc452de 274 //rc = client.publish(publishtopic1, message1);
steven821217 2:0fbb5fc452de 275 //client.yield(5);
JunkoNakajima 0:8d0ccf7acecd 276
cornetlin 1:5a9fdc848911 277
cornetlin 1:5a9fdc848911 278 //int x = 0;
cornetlin 1:5a9fdc848911 279 wait(1);
JunkoNakajima 0:8d0ccf7acecd 280
JunkoNakajima 0:8d0ccf7acecd 281 }
JunkoNakajima 0:8d0ccf7acecd 282
cornetlin 1:5a9fdc848911 283 // net.disconnect();
JunkoNakajima 0:8d0ccf7acecd 284
steven821217 2:0fbb5fc452de 285 }*/