Lab_interaccio/2023/smartcitizen-kit-21/lib/Sensors/Sensors.h

349 lines
18 KiB
C
Raw Normal View History

2025-02-25 21:29:42 +01:00
#pragma once
#include <Arduino.h>
enum SensorLocation
{
BOARD_BASE,
BOARD_URBAN,
BOARD_AUX
};
enum SensorType
{
// Base Sensors
SENSOR_BATT_PERCENT,
SENSOR_BATT_VOLTAGE,
SENSOR_SDCARD,
// Urban Sensors
SENSOR_LIGHT,
SENSOR_TEMPERATURE,
SENSOR_HUMIDITY,
SENSOR_NOISE_DBA,
SENSOR_NOISE_DBC,
SENSOR_NOISE_DBZ,
SENSOR_NOISE_FFT,
SENSOR_ALTITUDE,
SENSOR_PRESSURE,
SENSOR_PRESSURE_TEMP,
SENSOR_CCS811_VOCS,
SENSOR_CCS811_ECO2,
SENSOR_PM_1,
SENSOR_PM_25,
SENSOR_PM_10,
SENSOR_PN_03,
SENSOR_PN_05,
SENSOR_PN_1,
SENSOR_PN_25,
SENSOR_PN_5,
SENSOR_PN_10,
// I2C Auxiliary Sensors
SENSOR_GASESBOARD_SLOT_1A,
SENSOR_GASESBOARD_SLOT_1W,
SENSOR_GASESBOARD_SLOT_2A,
SENSOR_GASESBOARD_SLOT_2W,
SENSOR_GASESBOARD_SLOT_3A,
SENSOR_GASESBOARD_SLOT_3W,
SENSOR_GASESBOARD_TEMPERATURE,
SENSOR_GASESBOARD_HUMIDITY,
SENSOR_GROOVE_I2C_ADC,
SENSOR_INA219_BUSVOLT,
SENSOR_INA219_SHUNT,
SENSOR_INA219_CURRENT,
SENSOR_INA219_LOADVOLT,
SENSOR_WATER_TEMP_DS18B20,
SENSOR_ATLAS_TEMPERATURE,
SENSOR_ATLAS_PH,
SENSOR_ATLAS_EC,
SENSOR_ATLAS_EC_TDS,
SENSOR_ATLAS_EC_SAL,
SENSOR_ATLAS_EC_SG,
SENSOR_ATLAS_DO,
SENSOR_ATLAS_DO_SAT,
SENSOR_ATLAS_ORP,
SENSOR_CHIRP_MOISTURE_RAW,
SENSOR_CHIRP_MOISTURE,
SENSOR_CHIRP_TEMPERATURE,
SENSOR_CHIRP_LIGHT,
SENSOR_EXT_A_PM_1,
SENSOR_EXT_A_PM_25,
SENSOR_EXT_A_PM_10,
SENSOR_EXT_A_PN_03,
SENSOR_EXT_A_PN_05,
SENSOR_EXT_A_PN_1,
SENSOR_EXT_A_PN_25,
SENSOR_EXT_A_PN_5,
SENSOR_EXT_A_PN_10,
SENSOR_EXT_B_PM_1,
SENSOR_EXT_B_PM_25,
SENSOR_EXT_B_PM_10,
SENSOR_EXT_B_PN_03,
SENSOR_EXT_B_PN_05,
SENSOR_EXT_B_PN_1,
SENSOR_EXT_B_PN_25,
SENSOR_EXT_B_PN_5,
SENSOR_EXT_B_PN_10,
SENSOR_PM_DALLAS_TEMP,
SENSOR_DALLAS_TEMP,
SENSOR_SHT31_TEMP,
SENSOR_SHT31_HUM,
SENSOR_SHT35_TEMP,
SENSOR_SHT35_HUM,
SENSOR_RANGE_LIGHT,
SENSOR_RANGE_DISTANCE,
SENSOR_BME680_TEMPERATURE,
SENSOR_BME680_HUMIDITY,
SENSOR_BME680_PRESSURE,
SENSOR_BME680_VOCS,
SENSOR_GPS_FIX_QUALITY,
SENSOR_GPS_LATITUDE,
SENSOR_GPS_LONGITUDE,
SENSOR_GPS_ALTITUDE,
SENSOR_GPS_SPEED,
SENSOR_GPS_HDOP,
SENSOR_GPS_SATNUM,
SENSOR_ADS1X15_48_0,
SENSOR_ADS1X15_48_1,
SENSOR_ADS1X15_48_2,
SENSOR_ADS1X15_48_3,
SENSOR_ADS1X15_49_0,
SENSOR_ADS1X15_49_1,
SENSOR_ADS1X15_49_2,
SENSOR_ADS1X15_49_3,
SENSOR_ADS1X15_4A_0,
SENSOR_ADS1X15_4A_1,
SENSOR_ADS1X15_4A_2,
SENSOR_ADS1X15_4A_3,
SENSOR_ADS1X15_4B_0,
SENSOR_ADS1X15_4B_1,
SENSOR_ADS1X15_4B_2,
SENSOR_ADS1X15_4B_3,
SENSOR_SCD30_CO2,
SENSOR_SCD30_TEMP,
SENSOR_SCD30_HUM,
// Actuators (This is temp)
SENSOR_GROVE_OLED,
SENSOR_COUNT
};
class OneSensor
{
public:
SensorLocation location;
uint8_t priority; // 0-249 lower first. 250 is reserved for sensor we don't want to read (actuators, ej. oled screen)
SensorType type;
const char *shortTitle;
const char *title;
const char *unit;
String reading;
uint32_t lastReadingTime;
bool controllable;
uint8_t id;
uint8_t everyNint; // Read this sensor every N intervals (default 1)
uint8_t defaultEveryNint;
bool enabled;
bool defaultEnabled;
int16_t state; // -1:error on reading, 0:reading OK, >0:number of seconds until the reading is OK
bool oled_display;
OneSensor(SensorLocation nLocation, uint8_t nPriority, SensorType nType, const char *nShortTitle, const char *nTitle, uint8_t nId=0, bool nEnabled=false, bool nControllable=false, uint8_t nEveryNint=1, const char *nUnit="", bool nOled_display=true) {
location = nLocation;
priority = nPriority; // 0-250, 0:Max priority -> 250:Min priority
type = nType;
shortTitle = nShortTitle;
title = nTitle;
unit = nUnit;
reading = "null";
lastReadingTime = 0;
controllable = nControllable;
id = nId;
everyNint = nEveryNint;
defaultEveryNint = nEveryNint;
enabled = nEnabled;
defaultEnabled = nEnabled;
state = -1;
oled_display = nOled_display;
}
};
class AllSensors
{
public:
OneSensor list[SENSOR_COUNT+1] {
// SensorLocation priority SensorType shortTitle title id enabled controllable everyNintervals unit
// Base Sensors
OneSensor { BOARD_BASE, 100, SENSOR_BATT_PERCENT, "BATT", "Battery", 10, true, false, 1, "%"},
OneSensor { BOARD_BASE, 100, SENSOR_BATT_VOLTAGE, "BATT_VOLT", "Battery voltage", 0, false, false, 1, "V"},
OneSensor { BOARD_BASE, 100, SENSOR_SDCARD, "SDCARD", "SDcard present", 0, false, false, 1, "Present"},
// Urban Sensors
OneSensor { BOARD_URBAN, 100, SENSOR_LIGHT, "LIGHT", "Light", 14, true, false, 1, "Lux"},
OneSensor { BOARD_URBAN, 0, SENSOR_TEMPERATURE, "TEMP", "Temperature", 55, true, false, 1, "C"},
OneSensor { BOARD_URBAN, 0, SENSOR_HUMIDITY, "HUM", "Humidity", 56, true, false, 1, "%"},
OneSensor { BOARD_URBAN, 100, SENSOR_NOISE_DBA, "NOISE_A", "Noise dBA", 53, true, true, 1, "dBA"},
OneSensor { BOARD_URBAN, 100, SENSOR_NOISE_DBC, "NOISE_B", "Noise dBC", 0, false, true, 1, "dBC"},
OneSensor { BOARD_URBAN, 100, SENSOR_NOISE_DBZ, "NOISE_Z", "Noise dBZ", 0, false, true, 1, "dB"},
OneSensor { BOARD_URBAN, 100, SENSOR_NOISE_FFT, "NOISE_FFT", "Noise FFT", 0, false, true, 1, },
OneSensor { BOARD_URBAN, 100, SENSOR_ALTITUDE, "ALT", "Altitude", 0, false, false, 1, "M"},
OneSensor { BOARD_URBAN, 100, SENSOR_PRESSURE, "PRESS", "Barometric pressure", 58, true, false, 1, "kPa"},
OneSensor { BOARD_URBAN, 100, SENSOR_PRESSURE_TEMP, "PRESS_TEMP", "Pressure internal temperature", 0, false, false, 1, "C"},
OneSensor { BOARD_URBAN, 100, SENSOR_CCS811_VOCS, "CCS811_VOCS", "VOC Gas CCS811", 113, true, true, 1, "ppb"},
OneSensor { BOARD_URBAN, 100, SENSOR_CCS811_ECO2, "CCS811_ECO2", "eCO2 Gas CCS811", 112, true, true, 1, "ppm"},
OneSensor { BOARD_URBAN, 240, SENSOR_PM_1, "PM_1", "PM 1.0", 89, true, true, 5, "ug/m3"},
OneSensor { BOARD_URBAN, 240, SENSOR_PM_25, "PM_25", "PM 2.5", 87, true, true, 5, "ug/m3"},
OneSensor { BOARD_URBAN, 240, SENSOR_PM_10, "PM_10", "PM 10.0", 88, true, true, 5, "ug/m3"},
OneSensor { BOARD_URBAN, 240, SENSOR_PN_03, "PN_03", "PN 0.3", 165, false, true, 1, "#/0.1l"},
OneSensor { BOARD_URBAN, 240, SENSOR_PN_05, "PN_05", "PN 0.5", 166, false, true, 1, "#/0.1l"},
OneSensor { BOARD_URBAN, 240, SENSOR_PN_1, "PN_1", "PN 1.0", 167, false, true, 1, "#/0.1l"},
OneSensor { BOARD_URBAN, 240, SENSOR_PN_25, "PN_25", "PN 2.5", 168, false, true, 1, "#/0.1l"},
OneSensor { BOARD_URBAN, 240, SENSOR_PN_5, "PN_5", "PN 5.0", 169, false, true, 1, "#/0.1l"},
OneSensor { BOARD_URBAN, 240, SENSOR_PN_10, "PN_10", "PN 10.0", 170, false, true, 1, "#/0.1l"},
// I2C Auxiliary Sensors
// SCK Gases Board for Alphasense (3 Gas sensor Slots, + SHT31 Temp-Humidity)
OneSensor { BOARD_AUX, 100, SENSOR_GASESBOARD_SLOT_1A, "GB_1A", "Gases Board 1A", 65, true, true, 1, "mV"},
OneSensor { BOARD_AUX, 100, SENSOR_GASESBOARD_SLOT_1W, "GB_1W", "Gases Board 1W", 64, true, true, 1, "mV"},
OneSensor { BOARD_AUX, 100, SENSOR_GASESBOARD_SLOT_2A, "GB_2A", "Gases Board 2A", 62, true, true, 1, "mV"},
OneSensor { BOARD_AUX, 100, SENSOR_GASESBOARD_SLOT_2W, "GB_2W", "Gases Board 2W", 61, true, true, 1, "mV"},
OneSensor { BOARD_AUX, 100, SENSOR_GASESBOARD_SLOT_3A, "GB_3A", "Gases Board 3A", 68, true, true, 1, "mV"},
OneSensor { BOARD_AUX, 100, SENSOR_GASESBOARD_SLOT_3W, "GB_3W", "Gases Board 3W", 67, true, true, 1, "mV"},
OneSensor { BOARD_AUX, 100, SENSOR_GASESBOARD_TEMPERATURE, "GB_TEMP", "Gases Board Temperature", 79, true, false, 1, "C"},
OneSensor { BOARD_AUX, 100, SENSOR_GASESBOARD_HUMIDITY, "GB_HUM", "Gases Board Humidity", 80, true, false, 1, "%"},
// Groove I2C ADC
OneSensor { BOARD_AUX, 100, SENSOR_GROOVE_I2C_ADC, "GR_ADC", "Groove ADC", 25, true, false, 1, "V"},
// Adafruit INA291 High Side DC Current Sensor
OneSensor { BOARD_AUX, 100, SENSOR_INA219_BUSVOLT, "INA_VBUS", "INA219 Bus voltage", 0, true, false, 1, "V"},
OneSensor { BOARD_AUX, 100, SENSOR_INA219_SHUNT, "INA_VSHUNT", "INA219 Shunt voltage", 0, true, false, 1, "mV"},
OneSensor { BOARD_AUX, 100, SENSOR_INA219_CURRENT, "INA_CURR", "INA219 Current", 0, true, false, 1, "mA"},
OneSensor { BOARD_AUX, 100, SENSOR_INA219_LOADVOLT, "INA_VLOAD", "INA219 Load voltage", 0, true, false, 1, "V"},
OneSensor { BOARD_AUX, 100, SENSOR_WATER_TEMP_DS18B20, "DS_WAT_TEMP", "DS18B20 Water temperature", 42, true, false, 1, "C"},
OneSensor { BOARD_AUX, 100, SENSOR_ATLAS_TEMPERATURE, "AS_TEMP", "Atlas Temperature", 51, true, true, 1, "C"},
OneSensor { BOARD_AUX, 100, SENSOR_ATLAS_PH, "AS_PH", "Atlas PH", 43, true, true, 1, "pH"},
OneSensor { BOARD_AUX, 100, SENSOR_ATLAS_EC, "AS_COND", "Atlas Conductivity", 45, true, true, 1, "uS/cm"},
OneSensor { BOARD_AUX, 100, SENSOR_ATLAS_EC_TDS, "AS_TDS", "Atlas Total Dissolved Solids", 122, true, true, 1, "ppm"},
OneSensor { BOARD_AUX, 100, SENSOR_ATLAS_EC_SAL, "AS_SAL", "Atlas Salinity", 123, true, true, 1, "PSU(ppt)"},
OneSensor { BOARD_AUX, 100, SENSOR_ATLAS_EC_SG, "AS_SG", "Atlas Specific gravity", 46, true, true, 1, },
OneSensor { BOARD_AUX, 100, SENSOR_ATLAS_DO, "AS_DO", "Atlas Dissolved Oxygen", 48, true, true, 1, "mg/L"},
OneSensor { BOARD_AUX, 100, SENSOR_ATLAS_DO_SAT, "AS_DO_SAT", "Atlas DO Saturation", 49, true, true, 1, "%"},
OneSensor { BOARD_AUX, 100, SENSOR_ATLAS_ORP, "AS_ORP", "Atlas Redox potential", 164, true, true, 1, "mV"},
// I2C Moisture Sensor (chirp)
// https://github.com/Miceuz/i2c-moisture-sensor
OneSensor { BOARD_AUX, 100, SENSOR_CHIRP_MOISTURE_RAW, "CHRP_MOIS_RAW", "Soil Moisture Raw", 0, true, true, 1, },
OneSensor { BOARD_AUX, 100, SENSOR_CHIRP_MOISTURE, "CHRP_MOIS", "Soil Moisture Percent", 50, true, true, 1, "%"},
OneSensor { BOARD_AUX, 100, SENSOR_CHIRP_TEMPERATURE, "CHRP_TEMP", "Soil Temperature", 0, true, true, 1, "C"},
OneSensor { BOARD_AUX, 100, SENSOR_CHIRP_LIGHT, "CHRP_LIGHT", "Soil Light", 0, true, true, 1, },
OneSensor { BOARD_AUX, 200, SENSOR_EXT_A_PM_1, "EXT_PM_A_1", "Ext PM_A 1.0", 71, true, false, 1, "ug/m3"},
OneSensor { BOARD_AUX, 200, SENSOR_EXT_A_PM_25, "EXT_PM_A_25", "Ext PM_A 2.5", 72, true, false, 1, "ug/m3"},
OneSensor { BOARD_AUX, 200, SENSOR_EXT_A_PM_10, "EXT_PM_A_10", "Ext PM_A 10.0", 73, true, false, 1, "ug/m3"},
OneSensor { BOARD_AUX, 200, SENSOR_EXT_A_PN_03, "EXT_PN_A_03", "Ext PN_A 0.3", 99, false, false, 1, "#/0.1l"},
OneSensor { BOARD_AUX, 200, SENSOR_EXT_A_PN_05, "EXT_PN_A_05", "Ext PN_A 0.5", 100, false, false, 1, "#/0.1l"},
OneSensor { BOARD_AUX, 200, SENSOR_EXT_A_PN_1, "EXT_PN_A_1", "Ext PN_A 1.0", 101, false, false, 1, "#/0.1l"},
OneSensor { BOARD_AUX, 200, SENSOR_EXT_A_PN_25, "EXT_PN_A_25", "Ext PN_A 2.5", 102, false, false, 1, "#/0.1l"},
OneSensor { BOARD_AUX, 200, SENSOR_EXT_A_PN_5, "EXT_PN_A_5", "Ext PN_A 5.0", 103, false, false, 1, "#/0.1l"},
OneSensor { BOARD_AUX, 200, SENSOR_EXT_A_PN_10, "EXT_PN_A_10", "Ext PN_A 10.0", 104, false, false, 1, "#/0.1l"},
OneSensor { BOARD_AUX, 200, SENSOR_EXT_B_PM_1, "EXT_PM_B_1", "Ext PM_B 1.0", 75, true, false, 1, "ug/m3"},
OneSensor { BOARD_AUX, 200, SENSOR_EXT_B_PM_25, "EXT_PM_B_25", "Ext PM_B 2.5", 76, true, false, 1, "ug/m3"},
OneSensor { BOARD_AUX, 200, SENSOR_EXT_B_PM_10, "EXT_PM_B_10", "Ext PM_B 10.0", 77, true, false, 1, "ug/m3"},
OneSensor { BOARD_AUX, 200, SENSOR_EXT_B_PN_03, "EXT_PN_B_03", "Ext PN_B 0.3", 105, false, false, 1, "#/0.1l"},
OneSensor { BOARD_AUX, 200, SENSOR_EXT_B_PN_05, "EXT_PN_B_05", "Ext PN_B 0.5", 106, false, false, 1, "#/0.1l"},
OneSensor { BOARD_AUX, 200, SENSOR_EXT_B_PN_1, "EXT_PN_B_1", "Ext PN_B 1.0", 107, false, false, 1, "#/0.1l"},
OneSensor { BOARD_AUX, 200, SENSOR_EXT_B_PN_25, "EXT_PN_B_25", "Ext PN_B 2.5", 108, false, false, 1, "#/0.1l"},
OneSensor { BOARD_AUX, 200, SENSOR_EXT_B_PN_5, "EXT_PN_B_5", "Ext PN_B 5.0", 109, false, false, 1, "#/0.1l"},
OneSensor { BOARD_AUX, 200, SENSOR_EXT_B_PN_10, "EXT_PN_B_10", "Ext PN_B 10.0", 110, false, false, 1, "#/0.1l"},
OneSensor { BOARD_AUX, 0, SENSOR_PM_DALLAS_TEMP, "PM_DALLAS_TEMP", "PM board Dallas Temperature", 96, true, false, 1, "C"},
OneSensor { BOARD_AUX, 0, SENSOR_DALLAS_TEMP, "DALLAS_TEMP", "Direct Dallas Temperature", 96, true, false, 1, "C"},
OneSensor { BOARD_AUX, 0, SENSOR_SHT31_TEMP, "EXT_TEMP", "Ext Temperature", 79, true, false, 1, "C"},
OneSensor { BOARD_AUX, 0, SENSOR_SHT31_HUM, "EXT_HUM", "Ext Humidity", 80, true, false, 1, "%"},
OneSensor { BOARD_AUX, 0, SENSOR_SHT35_TEMP, "EXT_TEMP_SHT35", "Ext SHT35 Temperature", 0, true, false, 1, "C"},
OneSensor { BOARD_AUX, 0, SENSOR_SHT35_HUM, "EXT_HUM_SHT35", "Ext SHT35 Humidity", 0, true, false, 1, "%"},
OneSensor { BOARD_AUX, 100, SENSOR_RANGE_LIGHT, "EXT_RANGE_LIGHT", "Ext Range Light", 0, true, false, 1, "Lux"},
OneSensor { BOARD_AUX, 100, SENSOR_RANGE_DISTANCE, "EXT_RANGE_DIST", "Ext Range Distance", 98, true, false, 1, "mm"},
OneSensor { BOARD_AUX, 0, SENSOR_BME680_TEMPERATURE, "BME680_TEMP", "Temperature BME680", 0, true, false, 1, "C"},
OneSensor { BOARD_AUX, 0, SENSOR_BME680_HUMIDITY, "BME680_HUM", "Humidity BME680", 0, true, false, 1, "%"},
OneSensor { BOARD_AUX, 100, SENSOR_BME680_PRESSURE, "BME680_PRESS", "Barometric pressure BME680", 0, true, false, 1, "kPa"},
OneSensor { BOARD_AUX, 100, SENSOR_BME680_VOCS, "BME680_VOCS", "VOC Gas BME680", 0, true, false, 1, "Ohms"},
OneSensor { BOARD_AUX, 100, SENSOR_GPS_FIX_QUALITY, "GPS_FIX", "GPS Fix Quality", 128, true, false, 1, },
OneSensor { BOARD_AUX, 100, SENSOR_GPS_LATITUDE, "GPS_LAT", "GPS Latitude", 125, true, false, 1, "Deg"},
OneSensor { BOARD_AUX, 100, SENSOR_GPS_LONGITUDE, "GPS_LONG", "GPS Longitude", 126, true, false, 1, "Deg"},
OneSensor { BOARD_AUX, 100, SENSOR_GPS_ALTITUDE, "GPS_ALT", "GPS Altitude", 127, true, false, 1, "m"},
OneSensor { BOARD_AUX, 100, SENSOR_GPS_SPEED, "GPS_SPEED", "GPS Speed", 129, true, false, 1, "m/s"},
OneSensor { BOARD_AUX, 100, SENSOR_GPS_HDOP, "GPS_HDOP", "GPS Horizontal Dilution of Position", 131, true, false, 1, },
OneSensor { BOARD_AUX, 100, SENSOR_GPS_SATNUM, "GPS_SATNUM", "GPS Tracked Satellites", 130, true, false, 1, },
OneSensor { BOARD_AUX, 100, SENSOR_ADS1X15_48_0, "ADC_48_0", "ADS1x15 ADC 0x48 Ch0", 133, true, true, 1, "V"},
OneSensor { BOARD_AUX, 100, SENSOR_ADS1X15_48_1, "ADC_48_1", "ADS1x15 ADC 0x48 Ch1", 134, true, true, 1, "V"},
OneSensor { BOARD_AUX, 100, SENSOR_ADS1X15_48_2, "ADC_48_2", "ADS1x15 ADC 0x48 Ch2", 135, true, true, 1, "V"},
OneSensor { BOARD_AUX, 100, SENSOR_ADS1X15_48_3, "ADC_48_3", "ADS1x15 ADC 0x48 Ch3", 136, true, true, 1, "V"},
OneSensor { BOARD_AUX, 100, SENSOR_ADS1X15_49_0, "ADC_49_0", "ADS1x15 ADC 0x49 Ch0", 138, true, true, 1, "V"},
OneSensor { BOARD_AUX, 100, SENSOR_ADS1X15_49_1, "ADC_49_1", "ADS1x15 ADC 0x49 Ch1", 139, true, true, 1, "V"},
OneSensor { BOARD_AUX, 100, SENSOR_ADS1X15_49_2, "ADC_49_2", "ADS1x15 ADC 0x49 Ch2", 140, true, true, 1, "V"},
OneSensor { BOARD_AUX, 100, SENSOR_ADS1X15_49_3, "ADC_49_3", "ADS1x15 ADC 0x49 Ch3", 141, true, true, 1, "V"},
OneSensor { BOARD_AUX, 100, SENSOR_ADS1X15_4A_0, "ADC_4A_0", "ADS1x15 ADC 0x4A Ch0", 143, true, true, 1, "V"},
OneSensor { BOARD_AUX, 100, SENSOR_ADS1X15_4A_1, "ADC_4A_1", "ADS1x15 ADC 0x4A Ch1", 144, true, true, 1, "V"},
OneSensor { BOARD_AUX, 100, SENSOR_ADS1X15_4A_2, "ADC_4A_2", "ADS1x15 ADC 0x4A Ch2", 145, true, true, 1, "V"},
OneSensor { BOARD_AUX, 100, SENSOR_ADS1X15_4A_3, "ADC_4A_3", "ADS1x15 ADC 0x4A Ch3", 146, true, true, 1, "V"},
OneSensor { BOARD_AUX, 100, SENSOR_ADS1X15_4B_0, "ADC_4B_0", "ADS1x15 ADC 0x4B Ch0", 148, true, true, 1, "V"},
OneSensor { BOARD_AUX, 100, SENSOR_ADS1X15_4B_1, "ADC_4B_1", "ADS1x15 ADC 0x4B Ch1", 149, true, true, 1, "V"},
OneSensor { BOARD_AUX, 100, SENSOR_ADS1X15_4B_2, "ADC_4B_2", "ADS1x15 ADC 0x4B Ch2", 150, true, true, 1, "V"},
OneSensor { BOARD_AUX, 100, SENSOR_ADS1X15_4B_3, "ADC_4B_3", "ADS1x15 ADC 0x4B Ch3", 151, true, true, 1, "V"},
OneSensor { BOARD_AUX, 100, SENSOR_SCD30_CO2, "SCD30_CO2", "SCD30 CO2", 158, true, true, 1, "ppm"},
OneSensor { BOARD_AUX, 100, SENSOR_SCD30_TEMP, "SCD30_TEMP", "SCD30 Temperature", 160, true, true, 1, "C"},
OneSensor { BOARD_AUX, 100, SENSOR_SCD30_HUM, "SCD30_HUM", "SCD30 Humidity", 161, true, true, 1, "%"},
// Later this will be moved to a Actuators.h file
// Groove I2C Oled Display 96x96
OneSensor { BOARD_AUX, 250, SENSOR_GROVE_OLED, "GR_OLED", "Groove OLED", 0, true, false, 1, },
OneSensor { BOARD_BASE, 0, SENSOR_COUNT, "NOT_FOUND", "Not found", 0, false, false, 1, }
// Add New Sensor Here!!!
};
OneSensor & operator[](SensorType type) {
return list[type];
}
OneSensor ordered(uint8_t place);
SensorType getTypeFromString(String strIn);
String removeSensorName(String strIn);
SensorType sensorsPriorized(uint8_t index);
private:
uint8_t countMatchedWords(String baseString, String input);
SensorType prioSortedList[SENSOR_COUNT+1];
bool sorted = false;
};