diff --git a/mos.yml b/mos.yml index c238aef..f2fe401 100644 --- a/mos.yml +++ b/mos.yml @@ -33,6 +33,7 @@ config_schema: - ["sensors.ccs811_i2caddr", "i", 0x5a, {title: "I2C Address for CCS811 sensor"}] - ["sensors.ccs811_period", "i", 3, {title: "Sample period in seconds for CCS811 sensor"}] - ["sensors.pushgateway_period", "i", 10, {title: "Period in seconds for Prometheus Pushgateway POSTs"}] + - ["sensors.barometer_period", "i", 3, {title: "Sample period in seconds for barometer sensors"}] - ["prometheus.pushgateway", "prometheus.example.net:9091"] diff --git a/src/barometer_drv.c b/src/barometer_drv.c new file mode 100644 index 0000000..9484f9e --- /dev/null +++ b/src/barometer_drv.c @@ -0,0 +1,108 @@ +#include "mgos.h" + +#ifdef MGOS_HAVE_BAROMETER +#include "mgos_barometer.h" +#include "mgos_config.h" +#include "mgos_prometheus_metrics.h" +#include "mgos_prometheus_sensors.h" +#include + +#define NUM_BARO 5 +struct mgos_barometer *s_barometer[NUM_BARO]; + +static void barometer_prometheus_metrics(struct mg_connection *nc, void *user_data) { + struct mgos_barometer_stats stats; + float temperature=NAN, humidity=NAN, pressure=NAN; + + for (int i=0; i0) + mgos_prometheus_metrics_add_handler(barometer_prometheus_metrics, NULL); +} + +#else +void barometer_drv_init() { + LOG(LL_ERROR, ("Barometer disabled, include library in mos.yml to enable")); +} + +#endif diff --git a/src/mgos_prometheus_sensors.c b/src/mgos_prometheus_sensors.c index dbecb04..ccea441 100644 --- a/src/mgos_prometheus_sensors.c +++ b/src/mgos_prometheus_sensors.c @@ -10,6 +10,7 @@ void si7021_drv_init(); void htu21df_drv_init(); void mcp9808_drv_init(); void ccs811_drv_init(); +void barometer_drv_init(); static void pushgateway_timer(void *user_data) { mgos_prometheus_metrics_push(MGOS_APP, mgos_sys_config_get_device_id()); @@ -25,6 +26,7 @@ bool mgos_prometheus_sensors_init(void) { htu21df_drv_init(); mcp9808_drv_init(); ccs811_drv_init(); + barometer_drv_init(); if (mgos_sys_config_get_sensors_pushgateway_period() > 0) { mgos_set_timer(mgos_sys_config_get_sensors_pushgateway_period() * 1000, true, pushgateway_timer, NULL);