MQTT and Sensor integration
Dependencies: X_NUCLEO_IKS01A2
main.cpp@0:0f878e3e5401, 2020-11-05 (annotated)
- Committer:
- ga58bin
- Date:
- Thu Nov 05 19:07:22 2020 +0000
- Revision:
- 0:0f878e3e5401
- Child:
- 1:ba4c33393a52
Updated for Mbed OS 5
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ga58bin | 0:0f878e3e5401 | 1 | #include "mbed.h" |
ga58bin | 0:0f878e3e5401 | 2 | |
ga58bin | 0:0f878e3e5401 | 3 | #include <MQTTClientMbedOs.h> |
ga58bin | 0:0f878e3e5401 | 4 | #include "SpwfSAInterface.h" |
ga58bin | 0:0f878e3e5401 | 5 | |
ga58bin | 0:0f878e3e5401 | 6 | |
ga58bin | 0:0f878e3e5401 | 7 | #include "XNucleoIKS01A2.h" |
ga58bin | 0:0f878e3e5401 | 8 | |
ga58bin | 0:0f878e3e5401 | 9 | #define MQTT_MAX_PACKET_SIZE 250 |
ga58bin | 0:0f878e3e5401 | 10 | #define MQTT_MAX_PAYLOAD_SIZE 300 |
ga58bin | 0:0f878e3e5401 | 11 | |
ga58bin | 0:0f878e3e5401 | 12 | SpwfSAInterface wifi(MBED_CONF_APP_WIFI_TX, MBED_CONF_APP_WIFI_RX); |
ga58bin | 0:0f878e3e5401 | 13 | |
ga58bin | 0:0f878e3e5401 | 14 | static XNucleoIKS01A2 *mems_expansion_board = XNucleoIKS01A2::instance(D14, D15, D4, D5); |
ga58bin | 0:0f878e3e5401 | 15 | static LSM6DSLSensor *acc_gyro = mems_expansion_board->acc_gyro; |
ga58bin | 0:0f878e3e5401 | 16 | |
ga58bin | 0:0f878e3e5401 | 17 | int main() |
ga58bin | 0:0f878e3e5401 | 18 | { |
ga58bin | 0:0f878e3e5401 | 19 | uint8_t id; |
ga58bin | 0:0f878e3e5401 | 20 | int16_t axes[3]; |
ga58bin | 0:0f878e3e5401 | 21 | int32_t axes_gyro[3]; |
ga58bin | 0:0f878e3e5401 | 22 | acc_gyro->enable_x(); |
ga58bin | 0:0f878e3e5401 | 23 | acc_gyro->enable_g(); |
ga58bin | 0:0f878e3e5401 | 24 | acc_gyro->read_id(&id); |
ga58bin | 0:0f878e3e5401 | 25 | acc_gyro->set_x_fs(2.0f); |
ga58bin | 0:0f878e3e5401 | 26 | |
ga58bin | 0:0f878e3e5401 | 27 | printf("MQTT Integration\n\n"); |
ga58bin | 0:0f878e3e5401 | 28 | |
ga58bin | 0:0f878e3e5401 | 29 | printf("\nConnecting to %s...\n", MBED_CONF_APP_WIFI_SSID); |
ga58bin | 0:0f878e3e5401 | 30 | int ret = wifi.connect(MBED_CONF_APP_WIFI_SSID, MBED_CONF_APP_WIFI_PASSWORD, NSAPI_SECURITY_WPA_WPA2); |
ga58bin | 0:0f878e3e5401 | 31 | if (ret != 0) { |
ga58bin | 0:0f878e3e5401 | 32 | printf("\nConnection error\n"); |
ga58bin | 0:0f878e3e5401 | 33 | return -1; |
ga58bin | 0:0f878e3e5401 | 34 | } |
ga58bin | 0:0f878e3e5401 | 35 | |
ga58bin | 0:0f878e3e5401 | 36 | printf("Success\n\n"); |
ga58bin | 0:0f878e3e5401 | 37 | |
ga58bin | 0:0f878e3e5401 | 38 | |
ga58bin | 0:0f878e3e5401 | 39 | //NetworkInterface *net = NetworkInterface::get_default_instance(); |
ga58bin | 0:0f878e3e5401 | 40 | TCPSocket socket; |
ga58bin | 0:0f878e3e5401 | 41 | MQTTClient client(&socket); |
ga58bin | 0:0f878e3e5401 | 42 | socket.open(&wifi); |
ga58bin | 0:0f878e3e5401 | 43 | int rc = socket.connect("mqtt.eclipse.org", 1883); |
ga58bin | 0:0f878e3e5401 | 44 | |
ga58bin | 0:0f878e3e5401 | 45 | if (rc == 0) |
ga58bin | 0:0f878e3e5401 | 46 | printf("Connection Successful"); |
ga58bin | 0:0f878e3e5401 | 47 | else |
ga58bin | 0:0f878e3e5401 | 48 | printf("Connection Failed"); |
ga58bin | 0:0f878e3e5401 | 49 | |
ga58bin | 0:0f878e3e5401 | 50 | MQTTPacket_connectData data = MQTTPacket_connectData_initializer; |
ga58bin | 0:0f878e3e5401 | 51 | |
ga58bin | 0:0f878e3e5401 | 52 | data.MQTTVersion = 4; |
ga58bin | 0:0f878e3e5401 | 53 | data.struct_version=0; |
ga58bin | 0:0f878e3e5401 | 54 | data.clientID.cstring = "clientId-Scf7TcRtbgasdseg"; |
ga58bin | 0:0f878e3e5401 | 55 | data.username.cstring = "bob"; |
ga58bin | 0:0f878e3e5401 | 56 | data.password.cstring = "123"; |
ga58bin | 0:0f878e3e5401 | 57 | |
ga58bin | 0:0f878e3e5401 | 58 | rc = client.connect(data); |
ga58bin | 0:0f878e3e5401 | 59 | |
ga58bin | 0:0f878e3e5401 | 60 | if (rc == 0) |
ga58bin | 0:0f878e3e5401 | 61 | printf("Client Connection Successful"); |
ga58bin | 0:0f878e3e5401 | 62 | else |
ga58bin | 0:0f878e3e5401 | 63 | printf("Client Connection Failed"); |
ga58bin | 0:0f878e3e5401 | 64 | |
ga58bin | 0:0f878e3e5401 | 65 | while(1) |
ga58bin | 0:0f878e3e5401 | 66 | { |
ga58bin | 0:0f878e3e5401 | 67 | int con = client.isConnected(); |
ga58bin | 0:0f878e3e5401 | 68 | if (con == false) |
ga58bin | 0:0f878e3e5401 | 69 | client.connect(data); |
ga58bin | 0:0f878e3e5401 | 70 | |
ga58bin | 0:0f878e3e5401 | 71 | acc_gyro->get_x_axes_raw(axes); |
ga58bin | 0:0f878e3e5401 | 72 | MQTT::Message message; |
ga58bin | 0:0f878e3e5401 | 73 | char* pubTopic = "SLG/ACC"; |
ga58bin | 0:0f878e3e5401 | 74 | char buf[MQTT_MAX_PAYLOAD_SIZE]; |
ga58bin | 0:0f878e3e5401 | 75 | sprintf(buf,"%d,%d,%d",axes[0],axes[1],axes[2]); |
ga58bin | 0:0f878e3e5401 | 76 | message.qos = MQTT::QOS0; |
ga58bin | 0:0f878e3e5401 | 77 | message.retained = false; |
ga58bin | 0:0f878e3e5401 | 78 | message.dup = false; |
ga58bin | 0:0f878e3e5401 | 79 | message.payload = (void*)buf; |
ga58bin | 0:0f878e3e5401 | 80 | message.payloadlen = strlen(buf); |
ga58bin | 0:0f878e3e5401 | 81 | client.publish(pubTopic, message); |
ga58bin | 0:0f878e3e5401 | 82 | printf("%d,%d,%d \n",axes[0],axes[1],axes[2]); |
ga58bin | 0:0f878e3e5401 | 83 | } |
ga58bin | 0:0f878e3e5401 | 84 | |
ga58bin | 0:0f878e3e5401 | 85 | |
ga58bin | 0:0f878e3e5401 | 86 | |
ga58bin | 0:0f878e3e5401 | 87 | |
ga58bin | 0:0f878e3e5401 | 88 | wifi.disconnect(); |
ga58bin | 0:0f878e3e5401 | 89 | |
ga58bin | 0:0f878e3e5401 | 90 | printf("\nDone\n"); |
ga58bin | 0:0f878e3e5401 | 91 | } |