esp8266_web_settings beta
Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes | List of all members
grmcdorman::device::AbstractAnalog Class Referenceabstract

Abstract analog device. More...

#include <grmcdorman/device/AbstractAnalog.h>

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

Public Member Functions

 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...
 
DynamicJsonDocument as_json () const override
 Get the values, as a JSON document. 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 String get_status () const
 Get a status report. 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)=0
 Transform the raw reading into the reported value. 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

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.
 

Static Protected Attributes

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...
 

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...
 

Detailed Description

Abstract analog device.

This device reads A0; the value can be transformed by a scale and an offset before reporting. The value can also be inverted (i.e. 1/value).

This device doesn't provide full services; it's intended to be derived in other classes that can transform the raw value into meaningful output.

Constructor & Destructor Documentation

◆ AbstractAnalog()

grmcdorman::device::AbstractAnalog::AbstractAnalog ( const __FlashStringHelper *  device_name,
const __FlashStringHelper *  device_identifier,
float  defaultScale = 1.0f,
float  defaultOffset = 0.0f,
bool  invert = false 
)
explicit

Construct a new Basic Analog object.

Parameters
device_nameDevice name.
device_identifierDevice identifier.
defaultScaleDefault scaling value.
defaultOffsetDefault offset value.
invertIf true, invert the reading before applying scale and offset.

Member Function Documentation

◆ as_json()

DynamicJsonDocument grmcdorman::device::AbstractAnalog::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::Device.

Reimplemented in grmcdorman::device::ThermistorSensor.

◆ get_current_average()

float grmcdorman::device::AbstractAnalog::get_current_average ( ) const
inline

Get the last average reading.

Only valid after a call to reset_accumulation that returns true.

Returns
float

◆ get_last_reading()

float grmcdorman::device::AbstractAnalog::get_last_reading ( ) const
inline

Last computed reading.

Returns
float

◆ loop()

void grmcdorman::device::AbstractAnalog::loop ( )
overridevirtual

Main loop.

This is called in the main application loop. This should avoid blocking as doing so will prevent the other devices from running.

An exception is a "device" which requires user interaction, e.g. WiFi association, before the rest of the system can run.

Implements grmcdorman::device::Device.

◆ publish()

bool grmcdorman::device::AbstractAnalog::publish ( DynamicJsonDocument &  json) const
overridevirtual

Publish the value and attributes.

The values and attributes for all sensors, i.e. all items listed in the Description instances, should added to the supplied JSON object. If the value is not available, or this device does not publish, return false.

The value, or values, and attributes, if any, are to be added as a single node to the json parameter. This includes the case for multiple sensors.

Parameters
[in,out]jsonJSON to receive the device values and attributes.
Returns
true if a value to be published was added; false otherwise.

Reimplemented from grmcdorman::device::Device.

◆ raw_value()

float grmcdorman::device::AbstractAnalog::raw_value ( ) const
inline

Last raw value (no scale or offset applied).

Returns
float

◆ setup()

void grmcdorman::device::AbstractAnalog::setup ( )
overridevirtual

Setup the device.

Call once when the system boots. This should perform device-specific setup, if the device is enabled, as well as preparing UI settings (notably info settings) for communication.

This must be called after initial values are loaded.

Implements grmcdorman::device::Device.

◆ transform_raw_reading()

virtual float grmcdorman::device::AbstractAnalog::transform_raw_reading ( int  reading)
protectedpure virtual

Transform the raw reading into the reported value.

This can, for example, transform the raw A0 value into volts, or transform a thermistor value in to degrees Celcius.

Do not apply the scaling, offset, and invert values in this method; they will be automatically applied on the returned value.

Parameters
readingThe raw reading.
Returns
float The transformed reading.

Implemented in grmcdorman::device::BasicAnalog, and grmcdorman::device::ThermistorSensor.


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