esp8266_web_settings beta
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
grmcdorman::device::ThermistorSensor Class Reference

A thermistor analog device. More...

#include <grmcdorman/device/ThermistorSensor.h>

Inheritance diagram for grmcdorman::device::ThermistorSensor:
grmcdorman::device::AbstractAnalog grmcdorman::device::Device

Public Member Functions

 ThermistorSensor (float thermalIndex, float t1Kelvin)
 Construct a new ThermistorSensor object. More...
 
DynamicJsonDocument as_json () const override
 Get the values, as a JSON document. More...
 
virtual String get_status () const
 Get a status report. More...
 
- Public Member Functions inherited from grmcdorman::device::AbstractAnalog
 AbstractAnalog (const __FlashStringHelper *device_name, const __FlashStringHelper *device_identifier, float defaultScale=1.0f, float defaultOffset=0.0f, bool invert=false)
 Construct a new Basic Analog object. More...
 
void setup () override
 Setup the device. More...
 
void loop () override
 Main loop. More...
 
bool publish (DynamicJsonDocument &json) const override
 Publish the value and attributes. More...
 
float get_last_reading () const
 Last computed reading. More...
 
float raw_value () const
 Last raw value (no scale or offset applied). More...
 
float get_current_average () const
 Get the last average reading. More...
 
- Public Member Functions inherited from grmcdorman::device::Device
 Device (const __FlashStringHelper *device_name, const __FlashStringHelper *device_identifier)
 Construct a new Device object. More...
 
virtual ~Device ()
 Destroy the Device object.
 
const __FlashStringHelper * name () const
 Get the device name; used for UI names and IDs. More...
 
virtual const __FlashStringHelper * identifier () const
 Get the device identifier. More...
 
virtual void set_defaults ()
 Set defaults, if necessary. More...
 
virtual void set_devices (const std::vector< Device * > &list)
 For devices that support it, add devices to manage. More...
 
const definition_list_tget_definitions () const
 Get the definitions list. More...
 
const ::grmcdorman::SettingInterface::settings_list_t & get_settings () const
 Get the settings list. More...
 
bool is_enabled () const
 Get whether this device is enabled. More...
 
void set_enabled (bool state)
 Set whether this device is enabled. More...
 
void set (const String &setting, const String &value)
 If possible, set a setting's value. More...
 
String get (const String &setting) const
 Get a setting value, as a string. More...
 
virtual bool get_is_published () const
 Get whether the device readings have been published. More...
 
void set_is_published ()
 Set the device as having published readings. More...
 
void clear_is_published ()
 Set the device as not having published readings.
 

Protected Member Functions

virtual float transform_raw_reading (int reading) override
 Transform the raw reading to a temperature. More...
 
- Protected Member Functions inherited from grmcdorman::device::Device
void initialize (definition_list_t &&definition_list, ::grmcdorman::SettingInterface::settings_list_t &&setting_list)
 Initialize the definition and setting lists. More...
 

Protected Attributes

float inverse_thermal_index
 The inverse of thermal index of the thermistor.
 
float inverse_t1
 The inverse of the T1 temperature of the thermistor.
 
NoteSetting title
 Device tab title.
 
InfoSettingHtml device_status
 Last update.
 
- Protected Attributes inherited from grmcdorman::device::AbstractAnalog
FloatSetting scale
 Offset.
 
FloatSetting offset
 Scaling.
 
ToggleSetting invertReading
 Whether to invert the reading.
 
UnsignedIntegerSetting readInterval
 How often to request a reading.
 
uint32_t last_read_millis = 0
 Timestamp of last read.
 
Accumulator< float, 5 > sensor_reading
 Reading.
 
- Protected Attributes inherited from grmcdorman::device::Device
ToggleSetting enabled
 Whether this device is enabled.
 

Additional Inherited Members

- Public Types inherited from grmcdorman::device::Device
typedef std::vector< const Definition * > definition_list_t
 The type containing a list of Definition objects.
 
- Static Public Member Functions inherited from grmcdorman::device::Device
static void set_system_identifiers (const __FlashStringHelper *firmware_name_value, const String &system_identifier_value=String())
 Set the system identifier values. More...
 
static const __FlashStringHelper * get_firmware_name ()
 Get the firmware prefix. More...
 
static const String & get_system_identifier ()
 Get the system identifier. More...
 
- Static Public Attributes inherited from grmcdorman::device::Device
static constexpr int D0 = 16
 D0 is GPIO16, HIGH at boot, not suitable for most usages.
 
static constexpr int D1 = 5
 D1 is GPIO5; often used as SCL.
 
static constexpr int D2 = 4
 D2 is GPIO4; often used as SDA.
 
static constexpr int D3 = 0
 D3 is GPIO0; pulled up; connected to FLASH button; not for input.
 
static constexpr int D4 = 2
 D4 is GPIO2; pulled up; HIGH at boot; on-board LED; not for input.
 
static constexpr int D5 = 14
 D5 is GPIO14; SPI (SCLK)
 
static constexpr int D6 = 12
 D6 is GPIO12; SPI (MISO)
 
static constexpr int D7 = 13
 D7 is GPIO13; SPI (MOSI)
 
static constexpr int D8 = 15
 D8 is GPIO15; pulled to GND; SPI (CS); not recommended.
 
static const ExclusiveOptionSetting::names_list_t data_line_names { FPSTR("D1"), FPSTR("D2"), FPSTR("D3"), FPSTR("D5"), FPSTR("D6"), FPSTR("D7")}
 Names for each configurable data line; see settingsMap.
 
- Static Protected Member Functions inherited from grmcdorman::device::Device
static int index_to_dataline (int index)
 Convert a data line index to a ESP data line. More...
 
static int dataline_to_index (int dataLine)
 Convert a data line to an index. More...
 
- Static Protected Attributes inherited from grmcdorman::device::AbstractAnalog
constexpr static uint32_t statusReadInterval = (30 / 5) * 1000
 Default read interval. Chosen such that there should be 5 readings per 30 seconds.
 
- Static Protected Attributes inherited from grmcdorman::device::Device
static const int settingsMap [6]
 The set of data lines usable for communication. More...
 

Detailed Description

A thermistor analog device.

This device reads A0 and transforms the reading according to the standard thermistor properties to get a reading in degrees Celcius.

Scaling can be applied to the reading after conversion to Celcius; this can be used to transform to other scales, such as Fahrenheit, or to correct inaccuracies. To convert to Fahrenheit, set the scale to 1.8 (9/5) and the offset to +32.

The calculations make the following assumptions:

In other words, if your ESP8266 reads 1023 or 1024 for +3.3V, and your thermistor has a nominal resistance of 10K ohms at about 20 Celcius, then connect a 10K resistor in series with the thermistor between +3.3V and GND, and connect A0 to the junction of the thermistor and the resistor. In rough ASCII art:

 [3.3V]------[10K resistor]------[thermistor]------[GND]
                             |
                            A0

If your ADC does not have a maximum of 3.3V, then use a voltage divider to supply the ADC maximum - probably 1V - to the resistor.

Thermistors have three parameters:

For example, I have a thermistor with B of 3950, R of 10k, and T1 of 25C, or (273.15+25)=298.15K.

Only the thermal index (beta) and T1 value are needed.

When publishing to MQTT, only the last reading is published, not the average reading over the interval.

Constructor & Destructor Documentation

◆ ThermistorSensor()

grmcdorman::device::ThermistorSensor::ThermistorSensor ( float  thermalIndex,
float  t1Kelvin 
)

Construct a new ThermistorSensor object.

Parameters
thermalIndexThe thermal index of the thermistor, e.g. 3950.
t1KelvinThe T1 temperature of the thermistor in Kelvin, e.g. 298.15 (25C).

Member Function Documentation

◆ as_json()

DynamicJsonDocument grmcdorman::device::ThermistorSensor::as_json ( ) const
overridevirtual

Get the values, as a JSON document.

The structure is identical to the document created inside publish.

Returns
DynamicJsonDocument

Reimplemented from grmcdorman::device::AbstractAnalog.

◆ get_status()

String grmcdorman::device::ThermistorSensor::get_status ( ) const
virtual

Get a status report.

This is also used for the device_status info message, with the exception of various disabled states.

Returns
String containing status report.

Reimplemented from grmcdorman::device::Device.

◆ transform_raw_reading()

float grmcdorman::device::ThermistorSensor::transform_raw_reading ( int  reading)
overrideprotectedvirtual

Transform the raw reading to a temperature.

The parameters from the constructor, and the assumptions about the wiring, are used to compute the temperature.

Parameters
readingRaw reading.
Returns
Temperature, in degrees C.

Implements grmcdorman::device::AbstractAnalog.


The documentation for this class was generated from the following files: