85 lines
2.1 KiB
C
85 lines
2.1 KiB
C
#include <stdint.h>
|
|
|
|
#include "impl/user_ccs811_impl.h"
|
|
#include "tasks/user_task_lvgl_common.h"
|
|
#include "tasks/user_task_mqtt_common.h"
|
|
#include "user_common.h"
|
|
|
|
void *user_tvoc_task(void *arguments);
|
|
pthread_t user_tvoc_task_thread;
|
|
|
|
int user_tvoc_task_init(void) {
|
|
int ret;
|
|
|
|
ret = pthread_create(&user_tvoc_task_thread, NULL, user_tvoc_task, NULL);
|
|
if(ret) return ret;
|
|
|
|
pthread_setname_np(user_tvoc_task_thread, "TVOC");
|
|
|
|
return 0;
|
|
}
|
|
|
|
int user_tvoc_task_deinit(void) {
|
|
pthread_join(user_tvoc_task_thread, NULL);
|
|
|
|
return 0;
|
|
}
|
|
|
|
void *user_tvoc_task(void *arguments) {
|
|
UNUSED(arguments);
|
|
|
|
user_ccs811_impl_t impl;
|
|
|
|
user_ccs811_impl_init(&impl);
|
|
|
|
ccs811_t ccs = {
|
|
.cb =
|
|
{
|
|
.write_register_cb = (ccs811_ret_t(*)(void *, uint8_t, uint8_t *, uint8_t))user_ccs811_impl_write_register_cb,
|
|
.read_register_cb = (ccs811_ret_t(*)(void *, uint8_t, uint8_t *, uint8_t))user_ccs811_impl_read_register_cb,
|
|
.delay_ms_cb = (ccs811_ret_t(*)(void *, uint32_t))user_ccs811_impl_delay_ms_cb,
|
|
},
|
|
.user_data = &impl,
|
|
};
|
|
|
|
ccs811_init(&ccs);
|
|
ccs811_set_env_data(&ccs, 26.000, 40.000);
|
|
|
|
while(g_running && !g_lvgl_ready) {
|
|
sleep(1);
|
|
}
|
|
|
|
ccs811_result_t result;
|
|
mqtt_influx_measure_t meas;
|
|
mqtt_influx_measure_item_t meas_item[2];
|
|
char etvoc_buf[32];
|
|
char eco2_buf[32];
|
|
|
|
meas.measurement = "tvoc";
|
|
meas.first_item = meas_item;
|
|
|
|
meas_item[0].key = "tvoc";
|
|
meas_item[0].next = &meas_item[1];
|
|
|
|
meas_item[1].key = "eco2";
|
|
meas_item[1].next = NULL;
|
|
|
|
while(g_running) {
|
|
ccs811_measure(&ccs, &result);
|
|
USER_LOG(USER_LOG_DEBUG, "CCS: eTVOC: %dppb, eCO2: %dppm", result.tvoc, result.eco2);
|
|
|
|
snprintf(etvoc_buf, 32, "%u", result.tvoc);
|
|
snprintf(eco2_buf, 32, "%u", result.eco2);
|
|
meas_item[0].value = etvoc_buf;
|
|
meas_item[1].value = eco2_buf;
|
|
|
|
mqtt_influx_publish_measurement(&g_mqtt_influx, &meas);
|
|
|
|
sleep(1);
|
|
}
|
|
|
|
user_ccs811_impl_deinit(&impl);
|
|
|
|
return NULL;
|
|
}
|