Catie fork
Dependencies: SDFileSystem X_NUCLEO_IKS01A1
Fork of ATT_AWS_IoT_demo by
Diff: main.cpp
- Revision:
- 29:537df716ba0b
- Parent:
- 28:a31312c9756d
--- a/main.cpp Wed Apr 05 08:32:05 2017 +0000 +++ b/main.cpp Wed Apr 05 16:05:41 2017 +0000 @@ -22,7 +22,7 @@ #include "aws_iot_mqtt_interface.h" // Sensors -#include "HTS221.h" +#include "x_nucleo_iks01a1.h" #if DEBUG_LEVEL > 0 #include "mbedtls/debug.h" @@ -43,7 +43,7 @@ // AWS defines #define PATH_MAX 1024 -#define MAX_LENGTH_OF_UPDATE_JSON_BUFFER 200 // NOTE: Be wary of this if your JSON doc grows +#define MAX_LENGTH_OF_UPDATE_JSON_BUFFER 300 // NOTE: Be wary of this if your JSON doc grows #define SHADOW_SYNC_INTERVAL 3.0 // How often we sync with AWS Shadow (in seconds) // Comment out the following line if color is not supported on the terminal @@ -96,12 +96,19 @@ uint32_t port = AWS_IOT_MQTT_PORT; char iccidName[21] = "12345678901234567890"; +/* Instantiate the expansion board */ +static X_NUCLEO_IKS01A1 *mems_expansion_board = X_NUCLEO_IKS01A1::Instance(I2C_SDA, I2C_SCL); + // Sensor data -float temperature = 0.0; -int humidity = 0; +static HumiditySensor *humidity_sensor = mems_expansion_board->ht_sensor; +static PressureSensor *pressure_sensor = mems_expansion_board->pt_sensor; +static TempSensor *temp_sensor1 = mems_expansion_board->ht_sensor; +static TempSensor *temp_sensor2 = mems_expansion_board->pt_sensor; +float iks01a1_temperature = 0.0; +float iks01a1_pressure = 0.0; +float iks01a1_humidity = 0.0; +uint8_t id; -// Temp/humidity object -HTS221 hts221; //===================================================================================================================== // @@ -119,9 +126,6 @@ // SD card access (MOSI, MISO, SCK, CS) SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); -// I2C bus (SDA, SCL) -I2C i2c(PTC11, PTC10); - //===================================================================================================================== // // Functions @@ -175,8 +179,10 @@ //********************************************************************************************************************* void printData() { - INFO("Temperature is: %0.2f F", temperature); - INFO("Humidity is: %02d", humidity); + INFO("Temperature is: %0.2f C", iks01a1_temperature); + INFO("Humidity is: %0.2f", iks01a1_humidity); + INFO("Pressure is: %0.2f mbar", iks01a1_pressure); + switch (ledColor) { case COLOR_OFF: INFO("LED: Off"); @@ -382,11 +388,12 @@ buttonOverride = false; // Get temp/humidity values - temperature = CTOF(hts221.readTemperature()); - humidity = hts221.readHumidity(); + temp_sensor1->get_temperature(&iks01a1_temperature); + humidity_sensor->get_humidity(&iks01a1_humidity); + pressure_sensor->get_pressure(&iks01a1_pressure); // Loading data into JSON format - sprintf(cPayload, "{\"color\":\"%s\",\"temperature\":%f,\"humidity\":%d}", colorStrings[ledColor], temperature, humidity); + sprintf(cPayload, "{\"color\":\"%s\",\"temperature\":%f,\"humidity\":%f,\"pressure\":%f}", colorStrings[ledColor], iks01a1_temperature, iks01a1_humidity, iks01a1_pressure); Msg.PayloadLen = strlen(cPayload) + 1; Params.MessageParams = Msg; @@ -437,18 +444,24 @@ ledController.pKey = "ledColor"; ledController.type = SHADOW_JSON_UINT8; - // JSON struct for temperature\humidity readings + // JSON struct for temperature\humidity\pressure readings jsonStruct_t temperatureHandler; temperatureHandler.cb = NULL; temperatureHandler.pKey = "temperature"; - temperatureHandler.pData = &temperature; + temperatureHandler.pData = &iks01a1_temperature; temperatureHandler.type = SHADOW_JSON_FLOAT; jsonStruct_t humidityHandler; humidityHandler.cb = NULL; humidityHandler.pKey = "humidity"; - humidityHandler.pData = &humidity; - humidityHandler.type = SHADOW_JSON_INT16; + humidityHandler.pData = &iks01a1_humidity; + humidityHandler.type = SHADOW_JSON_FLOAT; + + jsonStruct_t pressureHandler; + pressureHandler.cb = NULL; + pressureHandler.pKey = "pressure"; + pressureHandler.pData = &iks01a1_pressure; + pressureHandler.type = SHADOW_JSON_FLOAT; INFO("AWS IoT SDK Version(dev) %d.%d.%d-%s", VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH, VERSION_TAG); @@ -476,11 +489,10 @@ // Initialize sensors INFO("Init sensors..."); - //void hts221_init(void); - //i = hts221.begin(); - //if(!i) { - // WARN(RED "HTS221 NOT DETECTED!!\n\r"); - //} + humidity_sensor->read_id(&id); + printf("HTS221 humidity & temperature = 0x%X\r\n", id); + pressure_sensor->read_id(&id); + printf("LPS25H pressure & temperature = 0x%X\r\n", id); // Setup SW3 button to falling edge interrupt INFO("Init interrupts..."); @@ -570,8 +582,9 @@ } // Read sensor data - temperature = 24.5; - humidity = 60; + temp_sensor1->get_temperature(&iks01a1_temperature); + humidity_sensor->get_humidity(&iks01a1_humidity); + pressure_sensor->get_pressure(&iks01a1_pressure); INFO("\n=======================================================================================\n"); // Initialize JSON shadow document @@ -584,10 +597,11 @@ buttonOverride = false; } - // Updates the 'reported' color/temp/humidity - rc = aws_iot_shadow_add_reported(JsonDocumentBuffer, sizeOfJsonDocumentBuffer, 3, &ledController, + // Updates the 'reported' color/temp/humidity/pressure + rc = aws_iot_shadow_add_reported(JsonDocumentBuffer, sizeOfJsonDocumentBuffer, 4, &ledController, &temperatureHandler, - &humidityHandler); + &humidityHandler, + &pressureHandler); if (rc == NONE_ERROR) { rc = aws_iot_finalize_json_document(JsonDocumentBuffer, sizeOfJsonDocumentBuffer);