Add four new drivers!
HTU21DF SHT31 SI7021 MCP9808 .. which will be published to GitHub after launch review at Google.
This commit is contained in:
48
src/htu21df_drv.c
Normal file
48
src/htu21df_drv.c
Normal file
@ -0,0 +1,48 @@
|
||||
#include "mgos.h"
|
||||
|
||||
#ifdef MGOS_HAVE_HTU21DF_I2C
|
||||
#include "mgos_htu21df.h"
|
||||
#include "mgos_config.h"
|
||||
#include "mgos_prometheus_metrics.h"
|
||||
#include "mgos_prometheus_sensors.h"
|
||||
|
||||
static struct mgos_htu21df *s_htu21df;
|
||||
|
||||
static void htu21df_prometheus_metrics(struct mg_connection *nc, void *user_data) {
|
||||
mgos_prometheus_metrics_printf(nc, GAUGE,
|
||||
"temperature", "Temperature in Celcius",
|
||||
"{sensor=\"0\",type=\"HTU21DF\"} %f", mgos_htu21df_getTemperature(s_htu21df));
|
||||
mgos_prometheus_metrics_printf(nc, GAUGE,
|
||||
"humidity", "Relative humidity percentage",
|
||||
"{sensor=\"0\",type=\"HTU21DF\"} %f", mgos_htu21df_getHumidity(s_htu21df));
|
||||
|
||||
(void) user_data;
|
||||
}
|
||||
|
||||
static void htu21df_timer_cb(void *user_data) {
|
||||
double start;
|
||||
uint32_t usecs=0;
|
||||
float temperature, humidity;
|
||||
|
||||
start=mgos_uptime();
|
||||
temperature=mgos_htu21df_getTemperature(s_htu21df);
|
||||
humidity=mgos_htu21df_getHumidity(s_htu21df);
|
||||
usecs=1000000*(mgos_uptime()-start);
|
||||
LOG(LL_INFO, ("HTU21DF sensor=0 temperature=%.2f humidity=%.1f usecs=%u", temperature, humidity, usecs));
|
||||
|
||||
(void) user_data;
|
||||
}
|
||||
|
||||
void htu21df_drv_init() {
|
||||
s_htu21df = mgos_htu21df_create(mgos_i2c_get_global(), mgos_sys_config_get_sensors_htu21df_i2caddr());
|
||||
if (s_htu21df) {
|
||||
mgos_set_timer(mgos_sys_config_get_sensors_htu21df_period()*1000, true, htu21df_timer_cb, NULL);
|
||||
mgos_prometheus_metrics_add_handler(htu21df_prometheus_metrics, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
#else
|
||||
void htu21df_drv_init() {
|
||||
LOG(LL_ERROR, ("HTU21DF disabled, include library in mos.yml to enable"));
|
||||
}
|
||||
#endif
|
43
src/mcp9808_drv.c
Normal file
43
src/mcp9808_drv.c
Normal file
@ -0,0 +1,43 @@
|
||||
#include "mgos.h"
|
||||
|
||||
#ifdef MGOS_HAVE_MCP9808_I2C
|
||||
#include "mgos_mcp9808.h"
|
||||
#include "mgos_config.h"
|
||||
#include "mgos_prometheus_metrics.h"
|
||||
#include "mgos_prometheus_sensors.h"
|
||||
|
||||
static struct mgos_mcp9808 *s_mcp9808;
|
||||
|
||||
static void mcp9808_prometheus_metrics(struct mg_connection *nc, void *user_data) {
|
||||
mgos_prometheus_metrics_printf(nc, GAUGE,
|
||||
"temperature", "Temperature in Celcius",
|
||||
"{sensor=\"0\",type=\"MCP9808\"} %f", mgos_mcp9808_getTemperature(s_mcp9808));
|
||||
(void) user_data;
|
||||
}
|
||||
|
||||
static void mcp9808_timer_cb(void *user_data) {
|
||||
double start;
|
||||
uint32_t usecs=0;
|
||||
float temperature;
|
||||
|
||||
start=mgos_uptime();
|
||||
temperature=mgos_mcp9808_getTemperature(s_mcp9808);
|
||||
usecs=1000000*(mgos_uptime()-start);
|
||||
LOG(LL_INFO, ("MCP9808 sensor=0 temperature=%.2f usecs=%u", temperature, usecs));
|
||||
|
||||
(void) user_data;
|
||||
}
|
||||
|
||||
void mcp9808_drv_init() {
|
||||
s_mcp9808 = mgos_mcp9808_create(mgos_i2c_get_global(), mgos_sys_config_get_sensors_mcp9808_i2caddr());
|
||||
if (s_mcp9808) {
|
||||
mgos_set_timer(mgos_sys_config_get_sensors_mcp9808_period()*1000, true, mcp9808_timer_cb, NULL);
|
||||
mgos_prometheus_metrics_add_handler(mcp9808_prometheus_metrics, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
#else
|
||||
void mcp9808_drv_init() {
|
||||
LOG(LL_ERROR, ("MCP9808 disabled, include library in mos.yml to enable"));
|
||||
}
|
||||
#endif
|
48
src/sht31_drv.c
Normal file
48
src/sht31_drv.c
Normal file
@ -0,0 +1,48 @@
|
||||
#include "mgos.h"
|
||||
|
||||
#ifdef MGOS_HAVE_SHT31_I2C
|
||||
#include "mgos_sht31.h"
|
||||
#include "mgos_config.h"
|
||||
#include "mgos_prometheus_metrics.h"
|
||||
#include "mgos_prometheus_sensors.h"
|
||||
|
||||
static struct mgos_sht31 *s_sht31;
|
||||
|
||||
static void sht31_prometheus_metrics(struct mg_connection *nc, void *user_data) {
|
||||
mgos_prometheus_metrics_printf(nc, GAUGE,
|
||||
"temperature", "Temperature in Celcius",
|
||||
"{sensor=\"0\",type=\"SHT31\"} %f", mgos_sht31_getTemperature(s_sht31));
|
||||
mgos_prometheus_metrics_printf(nc, GAUGE,
|
||||
"humidity", "Relative humidity percentage",
|
||||
"{sensor=\"0\",type=\"SHT31\"} %f", mgos_sht31_getHumidity(s_sht31));
|
||||
|
||||
(void) user_data;
|
||||
}
|
||||
|
||||
static void sht31_timer_cb(void *user_data) {
|
||||
double start;
|
||||
uint32_t usecs=0;
|
||||
float temperature, humidity;
|
||||
|
||||
start=mgos_uptime();
|
||||
temperature=mgos_sht31_getTemperature(s_sht31);
|
||||
humidity=mgos_sht31_getHumidity(s_sht31);
|
||||
usecs=1000000*(mgos_uptime()-start);
|
||||
LOG(LL_INFO, ("SHT31 sensor=0 temperature=%.2f humidity=%.1f usecs=%u", temperature, humidity, usecs));
|
||||
|
||||
(void) user_data;
|
||||
}
|
||||
|
||||
void sht31_drv_init() {
|
||||
s_sht31 = mgos_sht31_create(mgos_i2c_get_global(), mgos_sys_config_get_sensors_sht31_i2caddr());
|
||||
if (s_sht31) {
|
||||
mgos_set_timer(mgos_sys_config_get_sensors_sht31_period()*1000, true, sht31_timer_cb, NULL);
|
||||
mgos_prometheus_metrics_add_handler(sht31_prometheus_metrics, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
#else
|
||||
void sht31_drv_init() {
|
||||
LOG(LL_ERROR, ("SHT31 disabled, include library in mos.yml to enable"));
|
||||
}
|
||||
#endif
|
48
src/si7021_drv.c
Normal file
48
src/si7021_drv.c
Normal file
@ -0,0 +1,48 @@
|
||||
#include "mgos.h"
|
||||
|
||||
#ifdef MGOS_HAVE_SI7021_I2C
|
||||
#include "mgos_si7021.h"
|
||||
#include "mgos_config.h"
|
||||
#include "mgos_prometheus_metrics.h"
|
||||
#include "mgos_prometheus_sensors.h"
|
||||
|
||||
static struct mgos_si7021 *s_si7021;
|
||||
|
||||
static void si7021_prometheus_metrics(struct mg_connection *nc, void *user_data) {
|
||||
mgos_prometheus_metrics_printf(nc, GAUGE,
|
||||
"temperature", "Temperature in Celcius",
|
||||
"{sensor=\"0\",type=\"SI7021\"} %f", mgos_si7021_getTemperature(s_si7021));
|
||||
mgos_prometheus_metrics_printf(nc, GAUGE,
|
||||
"humidity", "Relative humidity percentage",
|
||||
"{sensor=\"0\",type=\"SI7021\"} %f", mgos_si7021_getHumidity(s_si7021));
|
||||
|
||||
(void) user_data;
|
||||
}
|
||||
|
||||
static void si7021_timer_cb(void *user_data) {
|
||||
double start;
|
||||
uint32_t usecs=0;
|
||||
float temperature, humidity;
|
||||
|
||||
start=mgos_uptime();
|
||||
temperature=mgos_si7021_getTemperature(s_si7021);
|
||||
humidity=mgos_si7021_getHumidity(s_si7021);
|
||||
usecs=1000000*(mgos_uptime()-start);
|
||||
LOG(LL_INFO, ("SI7021 sensor=0 temperature=%.2f humidity=%.1f usecs=%u", temperature, humidity, usecs));
|
||||
|
||||
(void) user_data;
|
||||
}
|
||||
|
||||
void si7021_drv_init() {
|
||||
s_si7021 = mgos_si7021_create(mgos_i2c_get_global(), mgos_sys_config_get_sensors_si7021_i2caddr());
|
||||
if (s_si7021) {
|
||||
mgos_set_timer(mgos_sys_config_get_sensors_si7021_period()*1000, true, si7021_timer_cb, NULL);
|
||||
mgos_prometheus_metrics_add_handler(si7021_prometheus_metrics, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
#else
|
||||
void si7021_drv_init() {
|
||||
LOG(LL_ERROR, ("SI7021 disabled, include library in mos.yml to enable"));
|
||||
}
|
||||
#endif
|
Reference in New Issue
Block a user