esp8266_web_settings beta
Public Member Functions | List of all members
grmcdorman::device::WifiSetup Class Reference

This "device" supports WiFi configuration. More...

#include <grmcdorman/device/WifiSetup.h>

Inheritance diagram for grmcdorman::device::WifiSetup:
grmcdorman::device::Device

Public Member Functions

void set_defaults () override
 Set defaults. 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...
 
DynamicJsonDocument as_json () const override
 Get the values, as a JSON document. More...
 
const String & get_configured_local_hostname () const
 Get the local host name. More...
 
bool get_is_published () const override
 Get whether the device readings have been published. 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_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...
 
void set_is_published ()
 Set the device as having published readings. More...
 
void clear_is_published ()
 Set the device as not having published readings.
 

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.
 
- 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...
 
- 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...
 
- Protected Attributes inherited from grmcdorman::device::Device
ToggleSetting enabled
 Whether this device is enabled.
 
- Static Protected Attributes inherited from grmcdorman::device::Device
static const int settingsMap [6]
 The set of data lines usable for communication. More...
 

Detailed Description

This "device" supports WiFi configuration.

In particular, on a fresh install or reset, it will create a soft AP, with the local host set as a captive portal. Once connected, it will initialize the WiFi connection in station (STA) mode with the configured parameters.

Failure to connect to the configured station will result in falling back to the soft AP.

Note that this is similar to WifiManager; however, the web service is not present in this device. It should be possible to use entirely different mechanisms to configure the WiFi connection without ever creating a web server.

At present, the soft AP is not password protected.

Member Function Documentation

◆ as_json()

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

◆ get_configured_local_hostname()

const String & grmcdorman::device::WifiSetup::get_configured_local_hostname ( ) const
inline

Get the local host name.

This is the configured host name; it is not necessarily the host name as actually present in the WiFi class.

Returns
const String&

◆ get_is_published()

bool grmcdorman::device::WifiSetup::get_is_published ( ) const
inlineoverridevirtual

Get whether the device readings have been published.

The WiFiSetup device always returns the current RSSI value. It is not averaged and as such should always be considered as "not published".

Returns
false Always publish RSSI.

Reimplemented from grmcdorman::device::Device.

◆ loop()

void grmcdorman::device::WifiSetup::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::WifiSetup::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.

◆ set_defaults()

void grmcdorman::device::WifiSetup::set_defaults ( )
overridevirtual

Set defaults.

This sets the host name and SoftAP SSID from the system identifier.

Reimplemented from grmcdorman::device::Device.

◆ setup()

void grmcdorman::device::WifiSetup::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.


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