ModularSensors > Files > src / sensors / MeterTeros11.h

MeterTeros11.h file

Contains the MeterTeros11 sensor subclass and the variable subclasses MeterTeros11_Ea, MeterTeros11_Temp, and MeterTeros11_VWC.

These are for the Meter Teros 11 Advanced Soil Moisture probe.

This depends on the EnviroDIY SDI-12 library and the SDI12Sensors super class.

Classes

class MeterTeros11
The Sensor sub-class for the Meter Teros 11 sensor.
class MeterTeros11_Count
The Variable sub-class used for the raw calibrated VWC counts from a Meter Teros soil moisture/water content sensor.
class MeterTeros11_Temp
The Variable sub-class used for the temperature output output from a Teros soil moisture/water content sensor.
class MeterTeros11_Ea
The Variable sub-class used for the apparent dielectric permittivity (εa, matric potential) from a Meter Teros soil moisture/water content sensor.
class MeterTeros11_VWC
The Variable sub-class used for the volumetric water content output from a Teros soil moisture/water content sensor.

Defines

#define TEROS11_NUM_VARIABLES = 4
Sensor::_numReturnedValues; the Teros 11 can report 2 raw values - counts and temperature.
#define TEROS11_INC_CALC_VARIABLES = 2
Sensor::_incCalcValues; We calculate permittivity and water content from the raw counts and temperature reported by the Teros 11.

Sensor Timing

The sensor timing for a Meter Teros 11

#define TEROS11_WARM_UP_TIME_MS = 250
Sensor::_warmUpTime_ms; the Teros 11 warm-up time in SDI-12 mode: 245ms typical.
#define TEROS11_STABILIZATION_TIME_MS = 50
Sensor::_stabilizationTime_ms; the Teros 11 is stable after 50ms.
#define TEROS11_MEASUREMENT_TIME_MS = 50
Sensor::_measurementTime_ms; the Teros 11 takes25 ms to 50 ms to complete a measurement.
#define TEROS11_EXTRA_WAKE_TIME_MS = 0
Extra wake time required for an SDI-12 sensor between the "break" and the time the command is sent. The Terros-11 requires no extra time.

Raw Counts

The raw VWC counts variable from a Meter Teros 11

  • Range and accuracy of the raw count values are not specified

MeterTeros11_Count(MeterTeros11* parentSense, const char* uuid = "", const char* varCode = TEROS11_COUNT_DEFAULT_CODE) explicit

Construct a new MeterTeros11_Count object.

Parameters
parentSense The parent MeterTeros11 providing the result values.
uuid A universally unique identifier (UUID or GUID) for the variable; optional with the default value of an empty string.
varCode A short code to help identify the variable in files; optional with a default value of "RawVWCCounts".

#define TEROS11_COUNT_RESOLUTION = 1
Decimals places in string representation; EA should have 1.
#define TEROS11_COUNT_VAR_NUM = 0
Sensor variable number; EA is stored in sensorValues[0].
#define TEROS11_COUNT_VAR_NAME = "counter"
Variable name in ODM2 controlled vocabulary; "counter".
#define TEROS11_COUNT_UNIT_NAME = "count"
Variable unit name in ODM2 controlled vocabulary; "count".
#define TEROS11_COUNT_DEFAULT_CODE = "RawVWCCounts"
Default variable short code; "RawVWCCounts".

Temperature

The temperature variable from a Meter Teros 11

  • Range is -40°C to 60°C
  • Accuracy is:
    • ± 1°C, from -40°C to 0°C
    • ± 0.5°C, from 0°C to + 60°C

MeterTeros11_Temp(MeterTeros11* parentSense, const char* uuid = "", const char* varCode = TEROS11_TEMP_DEFAULT_CODE) explicit

Construct a new MeterTeros11_Temp object.

Parameters
parentSense The parent MeterTeros11 providing the result values.
uuid A universally unique identifier (UUID or GUID) for the variable; optional with the default value of an empty string.
varCode A short code to help identify the variable in files; optional with a default value of "SoilTemp".

#define TEROS11_TEMP_RESOLUTION = 2
Decimals places in string representation; temperature should have 2.
#define TEROS11_TEMP_VAR_NUM = 1
Sensor variable number; temperature is stored in sensorValues[1].
#define TEROS11_TEMP_VAR_NAME = "temperature"
Variable name in ODM2 controlled vocabulary; "temperature".
#define TEROS11_TEMP_UNIT_NAME = "degreeCelsius"
Variable unit name in ODM2 controlled vocabulary; "degreeCelsius" (°C)
#define TEROS11_TEMP_DEFAULT_CODE = "SoilTemp"
Default variable short code; "SoilTemp".

EA

The EA variable from a Meter Teros 11

  • Range is 1 (air) to 80 (water)
  • Accuracy is:
    • 1–40 (soil range), ±1 εa (unitless)
    • 40–80, 15% of measurement

MeterTeros11_Ea(MeterTeros11* parentSense, const char* uuid = "", const char* varCode = TEROS11_EA_DEFAULT_CODE) explicit

Construct a new MeterTeros11_Ea object.

Parameters
parentSense The parent MeterTeros11 providing the result values.
uuid A universally unique identifier (UUID or GUID) for the variable; optional with the default value of an empty string.
varCode A short code to help identify the variable in files; optional with a default value of "SoilEa".

#define TEROS11_EA_RESOLUTION = 5
Decimals places in string representation; EA should have 5.
#define TEROS11_EA_VAR_NUM = 2
Sensor variable number; EA is stored in sensorValues[0].
#define TEROS11_EA_VAR_NAME = "permittivity"
Variable name in ODM2 controlled vocabulary; "permittivity".
#define TEROS11_EA_UNIT_NAME = "faradPerMeter"
Variable unit name in ODM2 controlled vocabulary; "faradPerMeter" (F/m)
#define TEROS11_EA_DEFAULT_CODE = "SoilEa"
Default variable short code; "SoilEa".

Volumetric Water Content

The VWC variable from a Meter Teros 11

  • Range is:
    • Mineral soil calibration: 0.00–0.70 m3/m3 (0 – 70% VWC)
    • Soilless media calibration: 0.0–1.0 m3/m3 (0 – 100% VWC)
  • Accuracy is:
    • Generic calibration: ±0.03 m3/m3 (± 3% VWC) typical in mineral soils that have solution electrical conductivity <8 dS/m
    • Medium specific calibration: ±0.01–0.02 m3/m3 (± 1-2% VWC)in any porous medium

MeterTeros11_VWC(MeterTeros11* parentSense, const char* uuid = "", const char* varCode = TEROS11_VWC_DEFAULT_CODE) explicit

Construct a new MeterTeros11_VWC object.

Parameters
parentSense The parent MeterTeros11 providing the result values.
uuid A universally unique identifier (UUID or GUID) for the variable; optional with the default value of an empty string.
varCode A short code to help identify the variable in files; optional with a default value of "SoilVWC".

#define TEROS11_VWC_RESOLUTION = 3
Decimals places in string representation; VWC should have 3.
#define TEROS11_VWC_VAR_NUM = 3
Sensor variable number; VWC is stored in sensorValues[2].
#define TEROS11_VWC_VAR_NAME = "volumetricWaterContent"
Variable name in ODM2 controlled vocabulary; "volumetricWaterContent".
#define TEROS11_VWC_UNIT_NAME = "percent"
Variable unit name in ODM2 controlled vocabulary; "percent" - volumetric percent water content (%, m3/100m3)
#define TEROS11_VWC_DEFAULT_CODE = "SoilVWC"
Default variable short code; "SoilVWC".