MQTT and Sensor integration
Dependencies: X_NUCLEO_IKS01A2
main.cpp
- Committer:
- ga58bin
- Date:
- 2021-01-07
- Revision:
- 1:ba4c33393a52
- Parent:
- 0:0f878e3e5401
File content as of revision 1:ba4c33393a52:
#include "mbed.h"
#include <math.h>
#include <MQTTClientMbedOs.h>
#include "SpwfSAInterface.h"
#include "XNucleoIKS01A2.h"
#define MQTT_MAX_PACKET_SIZE 250
#define MQTT_MAX_PAYLOAD_SIZE 300
SpwfSAInterface wifi(MBED_CONF_APP_WIFI_TX, MBED_CONF_APP_WIFI_RX);
static XNucleoIKS01A2 *mems_expansion_board = XNucleoIKS01A2::instance(D14, D15, D4, D5);
static LSM6DSLSensor *acc_gyro = mems_expansion_board->acc_gyro;
int main()
{
uint8_t id;
int16_t axes[3];
int32_t axes_gyro[3];
acc_gyro->enable_x();
acc_gyro->enable_g();
acc_gyro->read_id(&id);
acc_gyro->set_x_fs(2.0f);
printf("MQTT Integration\n\n");
printf("\nConnecting to %s...\n", MBED_CONF_APP_WIFI_SSID);
int ret = wifi.connect(MBED_CONF_APP_WIFI_SSID, MBED_CONF_APP_WIFI_PASSWORD, NSAPI_SECURITY_WPA_WPA2);
if (ret != 0) {
printf("\nConnection error\n");
return -1;
}
printf("Success\n\n");
//NetworkInterface *net = NetworkInterface::get_default_instance();
TCPSocket socket;
MQTTClient client(&socket);
socket.open(&wifi);
int rc = socket.connect("192.168.178.21", 1883);
if (rc == 0)
printf("Connection Successful");
else
printf("Connection Failed");
MQTTPacket_connectData data = MQTTPacket_connectData_initializer;
data.MQTTVersion = 4;
data.struct_version=0;
data.clientID.cstring = "clientId-ACC2";
data.username.cstring = "jlenz";
data.password.cstring = "123";
rc = client.connect(data);
if (rc == 0)
printf("Client Connection Successful");
else
printf("Client Connection Failed");
while(1)
{
int con = client.isConnected();
if (con == false)
client.connect(data);
acc_gyro->get_x_axes_raw(axes);
MQTT::Message message;
char* pubTopic = "SLG/ACC2";
char buf[MQTT_MAX_PAYLOAD_SIZE];
auto normAxe = axes[0]*axes[0] + axes[1]*axes[1] + axes[2]*axes[2];
sprintf(buf,"%d",normAxe);
message.qos = MQTT::QOS0;
message.retained = false;
message.dup = false;
message.payload = (void*)buf;
message.payloadlen = strlen(buf);
client.publish(pubTopic, message);
printf("%d \n",normAxe);
printf("%d \n",axes[0]);
}
wifi.disconnect();
printf("\nDone\n");
}