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