ANB pH Sensors topic

The Sensor and Variable classes for all ANB pH sensors.

This library currently supports all known ANB Sensors pH sensors.

The lower level details of the communication with the sensors is managed by the EnviroDIY ANBSensorsModbus library

Sensor Datasheet

Power Requirements

This sensor is a power hog. It draws ~90mA when measuring and ~60mA when idle. This doesn't seem so bad, until you consider that the sensor could possibly take up to 4.25 minutes to take a sample after the first power on. For some ideas of how long your battery might last with this sensor, see the description of the battery housing on the product page, which includes a chart.

Some recommendations:

  • Get a beefy 12V battery and 18V solar panel - regardless of your measurement interval.
  • If you want measurements more often than every 5 minutes, leave the sensor always powered
    • Size your battery and solar panel accordingly - it will be hungry!
  • If you want measurements every 15 minutes or more, turn off power between readings and be aware that the time of the measurement will be offset from the time the logger woke or other sensors took measurements by the time it takes the pH sensor to warm up and take a reading.

Sensor Constructor

ANBpH::ANBpH(byte modbusAddress, Stream* stream, int8_t powerPin, int8_t powerPin2, int8_t enablePin = -1, uint8_t measurementsToAverage = 1)

Construct a new ANB pH object.

Parameters
modbusAddress The modbus address of the sensor.
stream An Arduino data stream for modbus communication. See notes for more information on what streams can be used.
powerPin The pin on the mcu controlling power to the ANB pH sensor. Use -1 if it is continuously powered.
powerPin2 The pin on the mcu controlling power to the RS485 adapter, if it is different from that used to power the sensor. Use -1 or omit if not applicable.
enablePin The pin on the mcu controlling the direction enable on the RS485 adapter, if necessary; use -1 or omit if not applicable.
measurementsToAverage The number of measurements to take and average before giving a "final" result from the sensor; optional with a default value of 1.


Example Code

An ANB Sensors pH sensor is used in the menu a la carte example.

1#include <sensors/ANBpH.h>
2
3// NOTE: Extra hardware and software serial ports are created in the "Settings
4// for Additional Serial Ports" section
5
6// NOTE: Use -1 for any pins that don't apply or aren't being used.
7byte anbModbusAddress =
8 0x55; // The modbus address of ANB pH Sensor (0x55 is the default)
9const int8_t anbPower = sensorPowerPin; // ANB pH Sensor power pin
10const int8_t alAdapterPower = sensorPowerPin; // RS485 adapter power pin
11const int8_t al485EnablePin = -1; // Adapter RE/DE pin
12const uint8_t anbNumberReadings = 1;
13
14// Create an ANB pH sensor object
15ANBpH anbPH(anbModbusAddress, modbusSerial, anbPower, alAdapterPower,
16 al485EnablePin, anbNumberReadings);
17
18// Create all of the variable pointers for the ANB pH sensor
19Variable* anbPHValue = new ANBpH_pH(&anbPH,
20 "12345678-abcd-1234-ef00-1234567890ab");
21Variable* anbPHTemp = new ANBpH_Temp(&anbPH,
22 "12345678-abcd-1234-ef00-1234567890ab");
23Variable* anbPHSal = new ANBpH_Salinity(&anbPH,
24 "12345678-abcd-1234-ef00-1234567890ab");
25Variable* anbPHSpCond =
26 new ANBpH_SpCond(&anbPH, "12345678-abcd-1234-ef00-1234567890ab");
27Variable* anbPHEC = new ANBpH_EC(&anbPH,
28 "12345678-abcd-1234-ef00-1234567890ab");
29Variable* anbPHHealth =
30 new ANBpH_HealthCode(&anbPH, "12345678-abcd-1234-ef00-1234567890ab");
31Variable* anbPHDiagnostic =
32 new ANBpH_DiagnosticCode(&anbPH, "12345678-abcd-1234-ef00-1234567890ab");
33Variable* anbPHStatus =
34 new ANBpH_StatusCode(&anbPH, "12345678-abcd-1234-ef00-1234567890ab");

Classes

class ANBpH
The Sensor sub-class for the ANB pH sensors.
class ANBpH_pH
The Variable sub-class used for the pH from an ANB Sensors pH sensor.
class ANBpH_Temp
The Variable sub-class used for the temperature output from a ANB Sensors pH sensor.
class ANBpH_Salinity
The Variable sub-class used for the salinity output from an ANB Sensors pH sensor.
class ANBpH_SpCond
The Variable sub-class used for the specific conductance output from a ANB Sensors pH sensor.
class ANBpH_EC
The Variable sub-class used for the raw electrical conductivity output from an ANB Sensors pH sensor.
class ANBpH_HealthCode
The Variable sub-class used for the health code output from a an ANB Sensors pH sensor.
class ANBpH_DiagnosticCode
The Variable sub-class used for the diagnostic code output from a an ANB Sensors pH sensor.
class ANBpH_StatusCode
The Variable sub-class used for the status code output from a an ANB Sensors pH sensor.

Defines

#define ANB_PH_MINIMUM_REQUEST_SPACING = 250
The minimum spacing between requesting responses from the sensor.

Sensor Variable Counts

The number of variables that can be returned by an ANB Sensors pH sensor

#define ANB_PH_NUM_VARIABLES = 8
Sensor::_numReturnedValues; an ANB Sensors pH sensor can report 8 values.
#define ANB_PH_INC_CALC_VARIABLES = 0
Sensor::_incCalcValues; we don't calculate any additional values.

Sensor Timing

The sensor timing for an ANB Sensors pH sensor

The ANB pH sensor takes >3 minutes to complete the first sample after being turned on, but ~6s to complete a subsequent measurement when in continuous power and continuous sampling mode. If the immersion sensor is enabled and a measurement is requested while the sensor is not immersed, the failure response can return in <4 seconds.

More information on the timing can be found in the [sensor output section of the ANB Sensors User Guide](https://www.anbsensors.com/newdocs/docs/sensor-output)

#define ANB_PH_WARM_UP_TIME_MS = 5400L
Sensor::_warmUpTime_ms; time before sensor responds after power - roughly 5.3 - 5.6 seconds.
#define ANB_PH_WARM_UP_TIME_MAX = 10000L
The maximum time to wait for a modbus response.
#define ANB_PH_STABILIZATION_TIME_MS = 50
Sensor::_stabilizationTime_ms; the ANB pH sensor does not need to stabilize, but we use this time as the check for ready time.
#define ANB_PH_STABILIZATION_TIME_MAX = 5000L
The maximum time to wait for ready to measure.
#define ANB_PH_2ND_IMMERSION_ERROR = 4000L
The minimum time before a failure response is returned on the 2nd or subsequent value when the immersion sensor is not immersed. This is a guess based on testing.
#define ANB_PH_2ND_IMMERSION_ERROR_MAX = 12000L
The minimum time before a failure response is returned on the 2nd or subsequent value when the immersion sensor is not immersed. This is a guess based on testing.
#define ANB_PH_2ND_VALUE_HIGH_SALT = 5000L
The minimum time for the 2nd or subsequent values in high salinity (documented new output time of 10.5s)
#define ANB_PH_2ND_VALUE_HIGH_SALT_MAX = 15000L
The maximum time for the 2nd or subsequent values in high salinity.
#define ANB_PH_2ND_VALUE_LOW_SALT = 6000L
The minimum time for the 2nd or subsequent values in low salinity (documented new output time of 14s).
#define ANB_PH_2ND_VALUE_LOW_SALT_MAX = 18000L
The maximum time for the 2nd or subsequent values in low salinity (documented new output time of 14s).
#define ANB_PH_1ST_IMMERSION_ERROR = 6000L
The minimum time before a failure response is returned on the first measurement when the immersion sensor is not immersed. This is a guess based on testing.
#define ANB_PH_1ST_IMMERSION_ERROR_MAX = 12000L
The maximum time before a failure response is returned on the first measurement when the immersion sensor is not immersed. This is a guess based on testing.
#define ANB_PH_1ST_VALUE_HIGH_SALT = 120000L
The minimum time for the first value in high salinity (documented min time of 129s - 9s).
#define ANB_PH_1ST_VALUE_HIGH_SALT_MAX = 248000L
The maximum time for the first value in high salinity (documented max time of 238s for a long interval delay + 10s).
#define ANB_PH_1ST_VALUE_LOW_SALT = 155000L
The minimum time for the first value in low salinity (documented min time is 184s, but I got responses at 160s).
#define ANB_PH_1ST_VALUE_LOW_SALT_MAX = 265000L
The maximum time for the first value in low salinity (documented max time of 255s for a long interval delay + 10s).

pH

The pH variable from an ANB Sensors pH sensor

  • Range is 0 to 14 pH
  • Accuracy is ± 0.1 pH in low salinity water, ± 0.2 pH in high salinity water

ANBpH_pH::ANBpH_pH(ANBpH* parentSense, const char* uuid = "", const char* varCode = "ANBpHpH") explicit

Construct a new ANBpH_pH object.

Parameters
parentSense The parent ANBpH object 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 "ANBpHpH".

#define ANB_PH_PH_RESOLUTION = 2
Decimals places in string representation; soil moisture should have 1.
#define ANB_PH_PH_VAR_NUM = 0
Sensor variable number; pH is stored in sensorValues[0].
#define ANB_PH_PH_VAR_NAME = "pH"
Variable name in ODM2 controlled vocabulary;.
#define ANB_PH_PH_UNIT_NAME = "pH"
Variable unit name in ODM2 controlled vocabulary;.
#define ANB_PH_PH_DEFAULT_CODE = "ANBpHpH"
Default variable short code; "ANBpHpH".

Temperature

The temperature variable from an ANB Sensors pH sensor

  • Range is -5°C to +40°C

ANBpH_Temp::ANBpH_Temp(ANBpH* parentSense, const char* uuid = "", const char* varCode = "ANBpHTemp") explicit

Construct a new ANBpH_Temp object.

Parameters
parentSense The parent ANBpH object 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 "ANBpHTemp".

#define ANB_PH_TEMP_RESOLUTION = 2
Decimals places in string representation; temperature should have 1 - resolution is 0.01°C.
#define ANB_PH_TEMP_VAR_NUM = 1
Sensor variable number; temperature is stored in sensorValues[1].
#define ANB_PH_TEMP_VAR_NAME = "temperature"
Variable name in ODM2 controlled vocabulary; "temperature".
#define ANB_PH_TEMP_UNIT_NAME = "degreeCelsius"
Variable unit name in ODM2 controlled vocabulary; "degreeCelsius" (°C)
#define ANB_PH_TEMP_DEFAULT_CODE = "ANBpHTemp"
Default variable short code; "ANBpHTemp".

Salinity

The salinity variable from an ANB pH sensor

ANBpH_Salinity::ANBpH_Salinity(ANBpH* parentSense, const char* uuid = "", const char* varCode = "ANBpHSalinity") explicit

Construct a new ANBpH_Salinity object.

Parameters
parentSense The parent ANBpH object 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 "ANBpHSalinity".

#define ANB_PH_SALINITY_RESOLUTION = 2
Decimals places in string representation; salinity should have 2.
#define ANB_PH_SALINITY_VAR_NUM = 2
Sensor variable number; salinity is stored in sensorValues[2].
#define ANB_PH_SALINITY_VAR_NAME = "salinity"
Variable name in ODM2 controlled vocabulary; "salinity".
#define ANB_PH_SALINITY_UNIT_NAME = "partPerThousand"
Variable unit name in ODM2 controlled vocabulary; "partPerThousand" (ppt or ppth)
#define ANB_PH_SALINITY_DEFAULT_CODE = "ANBpHSalinity"
Default variable short code; "ANBpHSalinity".

Specific Conductivity

The specific conductance variable from an ANB pH sensor

ANBpH_SpCond::ANBpH_SpCond(ANBpH* parentSense, const char* uuid = "", const char* varCode = "ANBpHSpCond") explicit

Construct a new ANBpH_SpCond object.

Parameters
parentSense The parent ANBpH object 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 "ANBpHSpCond".

#define ANB_PH_SPCOND_RESOLUTION = 2
Decimals places in string representation; specific conductance should have 2.
#define ANB_PH_SPCOND_VAR_NUM = 3
Sensor variable number; specific conductance is stored in sensorValues[3].
#define ANB_PH_SPCOND_VAR_NAME = "specificConductance"
Variable name in ODM2 controlled vocabulary; "specificConductance".
#define ANB_PH_SPCOND_UNIT_NAME = "millisiemenPerCentimeter"
Variable unit name in ODM2 controlled vocabulary; "millisiemenPerCentimeter" (mS/cm)
#define ANB_PH_SPCOND_DEFAULT_CODE = "ANBpHSpCond"
Default variable short code; "ANBpHSpCond".

Electrical Conductivity

The raw electrical conductivity variable from an ANB pH sensor

ANBpH_EC::ANBpH_EC(ANBpH* parentSense, const char* uuid = "", const char* varCode = "ANBpHEC") explicit

Construct a new ANBpH_EC object.

Parameters
parentSense The parent ANBpH object 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 "ANBpHEC".

#define ANB_PH_EC_RESOLUTION = 3
Decimals places in string representation; raw electrical conductivity should have 2.
#define ANB_PH_EC_VAR_NUM = 4
Sensor variable number; conductivity is stored in sensorValues[4].
#define ANB_PH_EC_VAR_NAME = "electricalConductivity"
Variable name in ODM2 controlled vocabulary; "electricalConductivity".
#define ANB_PH_EC_UNIT_NAME = "millisiemenPerCentimeter"
Variable unit name in ODM2 controlled vocabulary; "millisiemenPerCentimeter" (mS/cm)
#define ANB_PH_EC_DEFAULT_CODE = "ANBpHEC"
Default variable short code; "ANBpHEC".

Transducer Health Code

The health code variable from a ANB Sensors pH sensor

These codes indicate the health status of the sensor's transducer.

ANBHealthCodeValueExplanationAction
OK0Healthy TransducerNo action required
ABRADE_SOON1Transducer will need abrading soon- Ensure salinity setting is correct
- Abrade the transducer based on scanning profile and access frequency;
if accessed daily, wait until the health number reaches 2 before abrading,
otherwise, abrade now for sensors not accessed for weeks/months
ABRADE_NOW2Transducer needs abrading now- Ensure salinity setting is correct
- Abrade the transducer
REPLACE3Transducer needs replacing- Ensure salinity setting is correct
- Replace the transducer (or transducer not immersed for sensors with serial numbers less than 300200)
NOT_IMMERSED4Transducer is not immersedImmerse the sensor
NO_REFERENCE5No valid reference tracker measurementPlease wait for the next measurement
NO_PH6No valid pH measurementPlease wait for the next measurement
UNKNOWN255Unknown statusReconnect with the sensor

Transducer health details can be found here.

Detailed maintenance guidelines including how to abrade the sensor can be found here.

ANBpH_HealthCode::ANBpH_HealthCode(ANBpH* parentSense, const char* uuid = "", const char* varCode = "ANBpHHealth") explicit

Construct a new ANBpH_HealthCode object.

Parameters
parentSense The parent ANBpH object 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 "ANBpHHealth".

#define ANB_PH_HEALTH_CODE_RESOLUTION = 0
Decimals places in string representation; the health code has 0.
#define ANB_PH_HEALTH_CODE_VAR_NUM = 5
Sensor variable number; health code is stored in sensorValues[4].
#define ANB_PH_HEALTH_CODE_VAR_NAME = "instrumentStatusCode"
Variable name in ODM2 controlled vocabulary; "instrumentStatusCode".
#define ANB_PH_HEALTH_CODE_UNIT_NAME = "dimensionless"
Variable unit name in ODM2 controlled vocabulary; "dimensionless".
#define ANB_PH_HEALTH_CODE_DEFAULT_CODE = "ANBpHHealth"
Default variable short code; "ANBpHHealth".

Diagnostics Code

The diagnostics code variable from a ANB Sensors pH sensor

ANBDiagnosticCodeValueExplanationAction
OK0Healthy SensorNone
BATTERY_ERROR1Clock Battery ErrorIf there is no external power to the sensor the real time clock will not hold the programmed time
- If the sensor is powered, the time set and data streamed, this failure is not an issue
- If the sensor is in autonomous mode the clock will fail if disconnected from the power when it was programmed and placed on an external battery
-Users can record when the sensor was first switched on (where the sensor's time will be set to 0) and calculate the times externally, or, if this is not viable, contact support@anbsensors.com
SD_ERROR2SD Card ErrorEither SD Card has been disabled or
A failing in the internal data save has occurred and no new data can be saved to the internal memory
- If the sensor is connected to an external communications system the sensor will continue to stream data, however no data will be saved in autonomous mode
- Please contact support@anbsensors.com
SYSTEM_ERROR3System ErrorContact support@anbsensors.com
UNKNOWN255Unknown statusReconnect with the sensor

Sensor diagnostic output details can be found here.

ANBpH_DiagnosticCode::ANBpH_DiagnosticCode(ANBpH* parentSense, const char* uuid = "", const char* varCode = "ANBpHDiagnostic") explicit

Construct a new ANBpH_DiagnosticCode object.

Parameters
parentSense The parent ANBpH object 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 "ANBpHDiagnostic".

#define ANB_PH_DIAGNOSTIC_CODE_RESOLUTION = 0
Decimals places in string representation; the diagnostic code has 0.
#define ANB_PH_DIAGNOSTIC_CODE_VAR_NUM = 6
Sensor variable number; diagnostic code is stored in sensorValues[4].
#define ANB_PH_DIAGNOSTIC_CODE_VAR_NAME = "instrumentStatusCode"
Variable name in ODM2 controlled vocabulary; "instrumentStatusCode".
#define ANB_PH_DIAGNOSTIC_CODE_UNIT_NAME = "dimensionless"
Variable unit name in ODM2 controlled vocabulary; "dimensionless".
#define ANB_PH_DIAGNOSTIC_CODE_DEFAULT_CODE = "ANBpHDiagnostic"
Default variable short code; "ANBpHDiagnostic".

Status Code

The status code variable from a ANB Sensors pH sensor

These codes indicate the current operational status of the sensor.

ANBStatusCodeValueExplanation
SLEEPING0Sensor is idle and/or following its pre-set interval routine
INTERVAL_SCANNING1pH will be updated when measurement completes
CONTINUOUS_SCANNING2pH will be automatically updated as per our continuous sequence
UNKNOWN255Unknown status; no response from the sensor

Sensor status code documentation is available here.

ANBpH_StatusCode::ANBpH_StatusCode(ANBpH* parentSense, const char* uuid = "", const char* varCode = "ANBpHStatus") explicit

Construct a new ANBpH_StatusCode object.

Parameters
parentSense The parent ANBpH object 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 "ANBpHStatus".

#define ANB_PH_STATUS_CODE_RESOLUTION = 0
Decimals places in string representation; the error code has 0.
#define ANB_PH_STATUS_CODE_VAR_NUM = 7
Sensor variable number; error code is stored in sensorValues[4].
#define ANB_PH_STATUS_CODE_VAR_NAME = "instrumentStatusCode"
Variable name in ODM2 controlled vocabulary; "instrumentStatusCode".
#define ANB_PH_STATUS_CODE_UNIT_NAME = "dimensionless"
Variable unit name in ODM2 controlled vocabulary; "dimensionless".
#define ANB_PH_STATUS_CODE_DEFAULT_CODE = "ANBpHStatus"
Default variable short code; "ANBpHStatus".

Define documentation

#define ANB_PH_MINIMUM_REQUEST_SPACING = 250

The minimum spacing between requesting responses from the sensor.

This is used to prevent flooding the sensor with requests.


#define ANB_PH_NUM_VARIABLES = 8

Sensor::_numReturnedValues; an ANB Sensors pH sensor can report 8 values.


#define ANB_PH_INC_CALC_VARIABLES = 0

Sensor::_incCalcValues; we don't calculate any additional values.


#define ANB_PH_WARM_UP_TIME_MS = 5400L

Sensor::_warmUpTime_ms; time before sensor responds after power - roughly 5.3 - 5.6 seconds.

This is the time for communication to begin.


#define ANB_PH_WARM_UP_TIME_MAX = 10000L

The maximum time to wait for a modbus response.


#define ANB_PH_STABILIZATION_TIME_MS = 50

Sensor::_stabilizationTime_ms; the ANB pH sensor does not need to stabilize, but we use this time as the check for ready time.


#define ANB_PH_STABILIZATION_TIME_MAX = 5000L

The maximum time to wait for ready to measure.


#define ANB_PH_2ND_IMMERSION_ERROR = 4000L

The minimum time before a failure response is returned on the 2nd or subsequent value when the immersion sensor is not immersed. This is a guess based on testing.


#define ANB_PH_2ND_IMMERSION_ERROR_MAX = 12000L

The minimum time before a failure response is returned on the 2nd or subsequent value when the immersion sensor is not immersed. This is a guess based on testing.


#define ANB_PH_2ND_VALUE_HIGH_SALT = 5000L

The minimum time for the 2nd or subsequent values in high salinity (documented new output time of 10.5s)


#define ANB_PH_2ND_VALUE_HIGH_SALT_MAX = 15000L

The maximum time for the 2nd or subsequent values in high salinity.


#define ANB_PH_2ND_VALUE_LOW_SALT = 6000L

The minimum time for the 2nd or subsequent values in low salinity (documented new output time of 14s).


#define ANB_PH_2ND_VALUE_LOW_SALT_MAX = 18000L

The maximum time for the 2nd or subsequent values in low salinity (documented new output time of 14s).


#define ANB_PH_1ST_IMMERSION_ERROR = 6000L

The minimum time before a failure response is returned on the first measurement when the immersion sensor is not immersed. This is a guess based on testing.


#define ANB_PH_1ST_IMMERSION_ERROR_MAX = 12000L

The maximum time before a failure response is returned on the first measurement when the immersion sensor is not immersed. This is a guess based on testing.


#define ANB_PH_1ST_VALUE_HIGH_SALT = 120000L

The minimum time for the first value in high salinity (documented min time of 129s - 9s).


#define ANB_PH_1ST_VALUE_HIGH_SALT_MAX = 248000L

The maximum time for the first value in high salinity (documented max time of 238s for a long interval delay + 10s).


#define ANB_PH_1ST_VALUE_LOW_SALT = 155000L

The minimum time for the first value in low salinity (documented min time is 184s, but I got responses at 160s).


#define ANB_PH_1ST_VALUE_LOW_SALT_MAX = 265000L

The maximum time for the first value in low salinity (documented max time of 255s for a long interval delay + 10s).


#define ANB_PH_PH_RESOLUTION = 2

Decimals places in string representation; soil moisture should have 1.

  • resolution is 0.01.

#define ANB_PH_PH_VAR_NUM = 0

Sensor variable number; pH is stored in sensorValues[0].


#define ANB_PH_PH_DEFAULT_CODE = "ANBpHpH"

Default variable short code; "ANBpHpH".


#define ANB_PH_TEMP_RESOLUTION = 2

Decimals places in string representation; temperature should have 1 - resolution is 0.01°C.


#define ANB_PH_TEMP_VAR_NUM = 1

Sensor variable number; temperature is stored in sensorValues[1].


#define ANB_PH_TEMP_VAR_NAME = "temperature"

Variable name in ODM2 controlled vocabulary; "temperature".


#define ANB_PH_TEMP_UNIT_NAME = "degreeCelsius"

Variable unit name in ODM2 controlled vocabulary; "degreeCelsius" (°C)


#define ANB_PH_TEMP_DEFAULT_CODE = "ANBpHTemp"

Default variable short code; "ANBpHTemp".


#define ANB_PH_SALINITY_RESOLUTION = 2

Decimals places in string representation; salinity should have 2.


#define ANB_PH_SALINITY_VAR_NUM = 2

Sensor variable number; salinity is stored in sensorValues[2].


#define ANB_PH_SALINITY_VAR_NAME = "salinity"

Variable name in ODM2 controlled vocabulary; "salinity".


#define ANB_PH_SALINITY_UNIT_NAME = "partPerThousand"

Variable unit name in ODM2 controlled vocabulary; "partPerThousand" (ppt or ppth)


#define ANB_PH_SALINITY_DEFAULT_CODE = "ANBpHSalinity"

Default variable short code; "ANBpHSalinity".


#define ANB_PH_SPCOND_RESOLUTION = 2

Decimals places in string representation; specific conductance should have 2.


#define ANB_PH_SPCOND_VAR_NUM = 3

Sensor variable number; specific conductance is stored in sensorValues[3].


#define ANB_PH_SPCOND_VAR_NAME = "specificConductance"

Variable name in ODM2 controlled vocabulary; "specificConductance".


#define ANB_PH_SPCOND_UNIT_NAME = "millisiemenPerCentimeter"

Variable unit name in ODM2 controlled vocabulary; "millisiemenPerCentimeter" (mS/cm)


#define ANB_PH_SPCOND_DEFAULT_CODE = "ANBpHSpCond"

Default variable short code; "ANBpHSpCond".


#define ANB_PH_EC_RESOLUTION = 3

Decimals places in string representation; raw electrical conductivity should have 2.


#define ANB_PH_EC_VAR_NUM = 4

Sensor variable number; conductivity is stored in sensorValues[4].


#define ANB_PH_EC_VAR_NAME = "electricalConductivity"

Variable name in ODM2 controlled vocabulary; "electricalConductivity".


#define ANB_PH_EC_UNIT_NAME = "millisiemenPerCentimeter"

Variable unit name in ODM2 controlled vocabulary; "millisiemenPerCentimeter" (mS/cm)


#define ANB_PH_EC_DEFAULT_CODE = "ANBpHEC"

Default variable short code; "ANBpHEC".


#define ANB_PH_HEALTH_CODE_RESOLUTION = 0

Decimals places in string representation; the health code has 0.


#define ANB_PH_HEALTH_CODE_VAR_NUM = 5

Sensor variable number; health code is stored in sensorValues[4].


#define ANB_PH_HEALTH_CODE_VAR_NAME = "instrumentStatusCode"

Variable name in ODM2 controlled vocabulary; "instrumentStatusCode".


#define ANB_PH_HEALTH_CODE_UNIT_NAME = "dimensionless"

Variable unit name in ODM2 controlled vocabulary; "dimensionless".


#define ANB_PH_HEALTH_CODE_DEFAULT_CODE = "ANBpHHealth"

Default variable short code; "ANBpHHealth".


#define ANB_PH_DIAGNOSTIC_CODE_RESOLUTION = 0

Decimals places in string representation; the diagnostic code has 0.


#define ANB_PH_DIAGNOSTIC_CODE_VAR_NUM = 6

Sensor variable number; diagnostic code is stored in sensorValues[4].


#define ANB_PH_DIAGNOSTIC_CODE_VAR_NAME = "instrumentStatusCode"

Variable name in ODM2 controlled vocabulary; "instrumentStatusCode".


#define ANB_PH_DIAGNOSTIC_CODE_UNIT_NAME = "dimensionless"

Variable unit name in ODM2 controlled vocabulary; "dimensionless".


#define ANB_PH_DIAGNOSTIC_CODE_DEFAULT_CODE = "ANBpHDiagnostic"

Default variable short code; "ANBpHDiagnostic".


#define ANB_PH_STATUS_CODE_RESOLUTION = 0

Decimals places in string representation; the error code has 0.


#define ANB_PH_STATUS_CODE_VAR_NUM = 7

Sensor variable number; error code is stored in sensorValues[4].


#define ANB_PH_STATUS_CODE_VAR_NAME = "instrumentStatusCode"

Variable name in ODM2 controlled vocabulary; "instrumentStatusCode".


#define ANB_PH_STATUS_CODE_UNIT_NAME = "dimensionless"

Variable unit name in ODM2 controlled vocabulary; "dimensionless".


#define ANB_PH_STATUS_CODE_DEFAULT_CODE = "ANBpHStatus"

Default variable short code; "ANBpHStatus".