esp8266_web_settings beta
|
Abstract analog device. More...
#include <grmcdorman/device/AbstractAnalog.h>
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... | |
![]() | |
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_t & | get_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... | |
![]() | |
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. | |
![]() | |
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 const int | settingsMap [6] |
The set of data lines usable for communication. More... | |
Additional Inherited Members | |
![]() | |
typedef std::vector< const Definition * > | definition_list_t |
The type containing a list of Definition objects. | |
![]() | |
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 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 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... | |
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.
|
explicit |
|
overridevirtual |
Get the values, as a JSON document.
The structure is identical to the document created inside publish
.
Reimplemented from grmcdorman::device::Device.
Reimplemented in grmcdorman::device::ThermistorSensor.
|
inline |
Get the last average reading.
Only valid after a call to reset_accumulation
that returns true
.
|
inline |
Last computed reading.
|
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.
|
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.
[in,out] | json | JSON to receive the device values and attributes. |
true
if a value to be published was added; false
otherwise. Reimplemented from grmcdorman::device::Device.
|
inline |
Last raw value (no scale or offset applied).
|
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.
|
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.
reading | The raw reading. |
Implemented in grmcdorman::device::BasicAnalog, and grmcdorman::device::ThermistorSensor.