MQTT and Sensor integration

Dependencies:   X_NUCLEO_IKS01A2

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?

UserRevisionLine numberNew 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 }