2020_09_25_mqtt

Dependencies:   HTS221 VL53L0X BSP_B-L475E-IOT01 MQTT

Committer:
PINGTING
Date:
Tue Feb 23 11:14:09 2021 +0000
Revision:
3:1da698331ec8
Parent:
2:a21eb3abb874
2021_02_23

Who changed what in which revision?

UserRevisionLine numberNew contents of line
PINGTING 3:1da698331ec8 1 /* WiFi+MQTT Example*/
JunkoNakajima 0:8d0ccf7acecd 2
JunkoNakajima 0:8d0ccf7acecd 3 #include "mbed.h"
JunkoNakajima 0:8d0ccf7acecd 4 #include "TCPSocket.h"
JunkoNakajima 0:8d0ccf7acecd 5 #include "wifi-ism43362/ISM43362Interface.h"
cornetlin 1:5a9fdc848911 6 #define logMessage printf
cornetlin 1:5a9fdc848911 7 #define MQTTCLIENT_QOS2 1
cornetlin 1:5a9fdc848911 8 #include "MQTTNetwork.h"
cornetlin 1:5a9fdc848911 9 #include "MQTTmbed.h"
cornetlin 1:5a9fdc848911 10 #include "MQTTClient.h"
cornetlin 2:a21eb3abb874 11 #include "HTS221Sensor.h"
PINGTING 3:1da698331ec8 12 //#define MQTT_HOST "demo.thingsboard.io"
PINGTING 3:1da698331ec8 13 #define MQTT_HOST "172.20.10.6"
cornetlin 2:a21eb3abb874 14 #define MQTT_PORT 1883
PINGTING 3:1da698331ec8 15 #define MQTT_TOPIC "Voltage"
cornetlin 2:a21eb3abb874 16 #include <string>
PINGTING 3:1da698331ec8 17 //#include "VL53L0X.h"
JunkoNakajima 0:8d0ccf7acecd 18 ISM43362Interface net;
JunkoNakajima 0:8d0ccf7acecd 19 // WiFiInterface *wifi;
cornetlin 2:a21eb3abb874 20 Serial pc(USBTX,USBRX);
cornetlin 1:5a9fdc848911 21 void messageArrived(MQTT::MessageData& md)
cornetlin 1:5a9fdc848911 22 {
cornetlin 1:5a9fdc848911 23 MQTT::Message &message = md.message;
cornetlin 1:5a9fdc848911 24 logMessage("Message arrived: qos %d, retained %d, dup %d, packetid %d\r\n", message.qos, message.retained, message.dup, message.id);
cornetlin 1:5a9fdc848911 25 logMessage("Payload %.*s\r\n", message.payloadlen, (char*)message.payload);
cornetlin 1:5a9fdc848911 26 //++arrivedcount;
cornetlin 1:5a9fdc848911 27 }
cornetlin 2:a21eb3abb874 28 static DevI2C devI2c(PB_11,PB_10);
cornetlin 2:a21eb3abb874 29 static DigitalOut shutdown_pin(PC_6);
PINGTING 3:1da698331ec8 30 //static VL53L0X range(&devI2c, &shutdown_pin, PC_7);
PINGTING 3:1da698331ec8 31 Serial uart(PA_0, PA_1);//TX,RX
cornetlin 1:5a9fdc848911 32
cornetlin 2:a21eb3abb874 33 int idx=0;
cornetlin 2:a21eb3abb874 34 std::string inputdata;
cornetlin 2:a21eb3abb874 35 char ch1;
JunkoNakajima 0:8d0ccf7acecd 36 int main(void){
cornetlin 2:a21eb3abb874 37 uart.baud(115200);
PINGTING 3:1da698331ec8 38 //range.init_sensor(VL53L0X_DEFAULT_ADDRESS);
JunkoNakajima 0:8d0ccf7acecd 39 int count = 0;
JunkoNakajima 0:8d0ccf7acecd 40
cornetlin 1:5a9fdc848911 41 printf("\r\nWiFi+MQTT Example Demo\n");
JunkoNakajima 0:8d0ccf7acecd 42
JunkoNakajima 0:8d0ccf7acecd 43 // Connect to Wifi
JunkoNakajima 0:8d0ccf7acecd 44 printf("\nConnecting to %s...\n", MBED_CONF_APP_WIFI_SSID);
JunkoNakajima 0:8d0ccf7acecd 45 int ret = net.connect(MBED_CONF_APP_WIFI_SSID, MBED_CONF_APP_WIFI_PASSWORD, NSAPI_SECURITY_WPA_WPA2);
JunkoNakajima 0:8d0ccf7acecd 46 if (ret != 0) {
JunkoNakajima 0:8d0ccf7acecd 47 printf("\nConnection error: %d\n", ret);
JunkoNakajima 0:8d0ccf7acecd 48 return -1;
JunkoNakajima 0:8d0ccf7acecd 49 }
JunkoNakajima 0:8d0ccf7acecd 50
JunkoNakajima 0:8d0ccf7acecd 51 printf("Success\n\n");
JunkoNakajima 0:8d0ccf7acecd 52 printf("MAC: %s\n", net.get_mac_address());
JunkoNakajima 0:8d0ccf7acecd 53 printf("IP: %s\n", net.get_ip_address());
JunkoNakajima 0:8d0ccf7acecd 54 printf("Netmask: %s\n", net.get_netmask());
JunkoNakajima 0:8d0ccf7acecd 55 printf("Gateway: %s\n", net.get_gateway());
JunkoNakajima 0:8d0ccf7acecd 56 printf("RSSI: %d\n\n", net.get_rssi());
JunkoNakajima 0:8d0ccf7acecd 57
cornetlin 1:5a9fdc848911 58 printf("\Wifi Example Done,MQTT Example Start\n");
cornetlin 1:5a9fdc848911 59
cornetlin 1:5a9fdc848911 60 // MQTT Example Start
PINGTING 3:1da698331ec8 61 //float version = 0.6;
cornetlin 1:5a9fdc848911 62 char* publishtopic = "publishtest";
cornetlin 1:5a9fdc848911 63 char* subscribetopic = "subscribtest";
cornetlin 1:5a9fdc848911 64
PINGTING 3:1da698331ec8 65 //logMessage("HelloMQTT: version is %.2f\r\n", version);
PINGTING 3:1da698331ec8 66 //char assess_token[] = "uNYseQgqntIrL7q5F2tL";
cornetlin 1:5a9fdc848911 67 NetworkInterface* network = &net;
cornetlin 1:5a9fdc848911 68 if (!network) {
cornetlin 1:5a9fdc848911 69 return -1;
cornetlin 1:5a9fdc848911 70 }
JunkoNakajima 0:8d0ccf7acecd 71
cornetlin 1:5a9fdc848911 72 MQTTNetwork mqttNetwork(network);
cornetlin 1:5a9fdc848911 73
cornetlin 1:5a9fdc848911 74 MQTT::Client<MQTTNetwork, Countdown> client(mqttNetwork);
JunkoNakajima 0:8d0ccf7acecd 75
cornetlin 2:a21eb3abb874 76 const char* hostname = MQTT_HOST;
cornetlin 2:a21eb3abb874 77 int port = MQTT_PORT;
cornetlin 1:5a9fdc848911 78 logMessage("Connecting to %s:%d\r\n", hostname, port);
cornetlin 1:5a9fdc848911 79 int rc = mqttNetwork.connect(hostname, port);
cornetlin 1:5a9fdc848911 80 if (rc != 0)
cornetlin 1:5a9fdc848911 81 logMessage("rc from TCP connect is %d\r\n", rc);
JunkoNakajima 0:8d0ccf7acecd 82
cornetlin 1:5a9fdc848911 83 MQTTPacket_connectData data = MQTTPacket_connectData_initializer;
cornetlin 2:a21eb3abb874 84 //data.MQTTVersion = 3;
cornetlin 1:5a9fdc848911 85 data.clientID.cstring = "mbed-sample";
PINGTING 3:1da698331ec8 86 //data.username.cstring = assess_token;
cornetlin 2:a21eb3abb874 87 //data.password.cstring = "";
cornetlin 1:5a9fdc848911 88 if ((rc = client.connect(data)) != 0)
cornetlin 1:5a9fdc848911 89 logMessage("rc from MQTT connect is %d\r\n", rc);
JunkoNakajima 0:8d0ccf7acecd 90
cornetlin 1:5a9fdc848911 91 if ((rc = client.subscribe(publishtopic, MQTT::QOS2, messageArrived)) != 0)
cornetlin 1:5a9fdc848911 92 logMessage("rc from MQTT subscribe is %d\r\n", rc);
cornetlin 1:5a9fdc848911 93 if ((rc = client.subscribe(subscribetopic, MQTT::QOS2, messageArrived)) != 0)
cornetlin 1:5a9fdc848911 94 logMessage("rc from MQTT subscribe is %d\r\n", rc);
cornetlin 1:5a9fdc848911 95
JunkoNakajima 0:8d0ccf7acecd 96
cornetlin 2:a21eb3abb874 97
cornetlin 2:a21eb3abb874 98 printf("successfully connect!\n\n");
cornetlin 2:a21eb3abb874 99
PINGTING 3:1da698331ec8 100 // Initialize sensors --------------------------------------------------
PINGTING 3:1da698331ec8 101
PINGTING 3:1da698331ec8 102 std::string inputdata;
cornetlin 2:a21eb3abb874 103 while (1) {
PINGTING 3:1da698331ec8 104 char ch;
PINGTING 3:1da698331ec8 105 while (uart.readable()) {
PINGTING 3:1da698331ec8 106 ch = uart.getc();
PINGTING 3:1da698331ec8 107 if (ch == 's') {
PINGTING 3:1da698331ec8 108 inputdata.clear();
PINGTING 3:1da698331ec8 109 }
PINGTING 3:1da698331ec8 110 inputdata += ch;
PINGTING 3:1da698331ec8 111 if (ch == '#') {
PINGTING 3:1da698331ec8 112 inputdata.erase(0,1);
PINGTING 3:1da698331ec8 113 inputdata.erase(inputdata.length()-1,1);
PINGTING 3:1da698331ec8 114 pc.printf("%s\r\n",inputdata);
PINGTING 3:1da698331ec8 115 char msg[inputdata.size()+1];
cornetlin 2:a21eb3abb874 116 inputdata.copy(msg,inputdata.size()+1);
cornetlin 2:a21eb3abb874 117 msg[inputdata.size()]='\0';
cornetlin 2:a21eb3abb874 118 int n=strlen(msg);
PINGTING 3:1da698331ec8 119 void *payload = reinterpret_cast<void*>(msg);
PINGTING 3:1da698331ec8 120 size_t payload_len = n;
PINGTING 3:1da698331ec8 121 //printf("publish to: %s %d %s\r\n", MQTT_HOST, MQTT_PORT,MQTT_TOPIC);
cornetlin 1:5a9fdc848911 122
PINGTING 3:1da698331ec8 123 if(client.publish(MQTT_TOPIC, payload, n) < 0) {
PINGTING 3:1da698331ec8 124 printf("failed to publish MQTT message");
PINGTING 3:1da698331ec8 125 }
cornetlin 2:a21eb3abb874 126 }
PINGTING 3:1da698331ec8 127 }
cornetlin 2:a21eb3abb874 128 }
cornetlin 2:a21eb3abb874 129
cornetlin 2:a21eb3abb874 130
JunkoNakajima 0:8d0ccf7acecd 131
cornetlin 1:5a9fdc848911 132 // net.disconnect();
JunkoNakajima 0:8d0ccf7acecd 133
cornetlin 2:a21eb3abb874 134 }