a sensor hub for monitoring home environment

Dependencies:   HTS221 LIS3MDL LPS22HB LSM303AGR LSM6DSL VL53L0X picojson

Fork of HelloWorld_ST_Sensors by ST

Revision:
11:1e0b9a529ee0
Child:
12:058b012dbebe
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.h	Tue Dec 12 03:01:51 2017 +0000
@@ -0,0 +1,98 @@
+/* Home Environemnt Monitoring and Logging with STM32 IOT DISCOVERY Board   */
+/*                                                                          */
+/* Jaafar Benabdallah - 2017 */
+
+
+/* Libraries */
+#include "mbed.h"
+#include "HTS221Sensor.h"
+#include "LPS22HBSensor.h"
+#include "LSM6DSLSensor.h"
+#include "lis3mdl_class.h"
+#include "VL53L0X.h"
+#include "wifi.h"
+
+/* Syncing Params */
+#define SENSE_PERIOD_S  5.0
+#define UPLOAD_PERIOD_S 30.0
+#define CHECK_PROXIMITY_PERIOD_S  1.0
+
+#define INFLUX_SERVER_URL "rpi1.nrjy.com"
+#define INFLUX_SERVER_PORT 8086
+
+#define WIFI_WRITE_TIMEOUT 5000
+#define WIFI_READ_TIMEOUT  5000
+#define CONNECTION_TRIAL_MAX    5
+
+/* Nextion display macros */
+#define WIFI_ICON_ON nextion.printf("vis wifi,1\xff\xff\xff")
+#define WIFI_ICON_OFF nextion.printf("vis wifi,0\xff\xff\xff")
+#define UPLOAD_ICON_ON nextion.printf("vis upload,1\xff\xff\xff")
+#define UPLOAD_ICON_OFF nextion.printf("vis upload,0\xff\xff\xff")
+
+
+/* Interface definition */
+static DevI2C devI2c(PB_11,PB_10);
+Serial pc(USBTX, USBRX, 115200);
+Serial nextion(PA_0, PA_1, 115200); //i.e. D1, D0 : Serial 4
+DigitalOut led3(LED3);// WiFi module status
+DigitalOut ledhttp(LED2);// Http activity
+
+
+
+/* Operation flags */
+volatile bool   sense_enabled = false;
+volatile bool   take_measurements = false;
+volatile bool   send_measurements = false;
+volatile bool   check_proximity = false;
+bool WiFi_on = false;
+
+
+/* Timers   */
+Ticker  getMeasurementsTicker;
+Ticker  sendMeasurementsTicker;
+Ticker  checkProximityTicker;
+// Ticker  WiFi_led_ticker;
+
+
+/* Environmental sensors */
+static LPS22HBSensor press_temp(&devI2c);
+static HTS221Sensor hum_temp(&devI2c);
+/* Motion sensors */
+static LSM6DSLSensor acc_gyro(&devI2c,LSM6DSL_ACC_GYRO_I2C_ADDRESS_LOW,PD_11); // low address
+static LIS3MDL magnetometer(&devI2c);
+/* Range sensor  */
+static DigitalOut shutdown_pin(PC_6);
+static VL53L0X range(&devI2c, &shutdown_pin, PC_7);
+
+
+/* Environment variables */
+float tempC_val = 0;
+float tempF_val = 0;
+float RH_val = 0;
+float Patm_val = 0;
+float tempC_val2 = 0;
+int32_t distance = 0;
+
+
+/* Comm vars */
+char *InfluxServerUrl = INFLUX_SERVER_URL;
+char *influx_query = "/write?db=HENV2&precision=s&rp=HENV2_1y";
+uint16_t InfluxServerPort = INFLUX_SERVER_PORT;
+static   uint8_t http_request[1024];
+static   uint8_t http_resp[512];
+uint16_t reqLen;
+uint16_t respLen;
+uint32_t request_sent = 0;
+uint32_t request_acked = 0;
+
+
+/* Functions Prototypes */
+bool connectToServer(char *serverUrl, uint16_t serverPort, uint8_t socket_id);
+bool connectWiFi(void);
+bool checkWiFi(void);
+void time_to_sense_cb(void);
+void time_to_send_cb(void);
+void time_to_check_distance_cb(void);
+void sync_time(void);
+// void toggle_led3_cb();