mirror of
https://github.com/letscontrolit/ESPEasy.git
synced 2026-07-28 04:07:47 +00:00
Merge pull request #5380 from tonhuisman/feature/Documentation-updates-Q3-2025
[Docs] Updates and improvements Q3 2025
This commit is contained in:
+10
-3
@@ -5,7 +5,7 @@
|
||||
#############################################################################################################
|
||||
# This script parses all documentation substitution files to determine in what builds a plugin is available
|
||||
# Collection A..G, Display, Energy and Neopixel, IR and IRext get Normal plugins injected
|
||||
# Collection plugins are also injected into Collection A..G
|
||||
# Collection, Notify and Network plugins are also injected into Collection A..G
|
||||
# All plugins get injected into MAX build set
|
||||
# Some build sets have exceptions for plugins not available
|
||||
# The output generation order is determined by how they are ordered in list 'buildColors'
|
||||
@@ -13,6 +13,7 @@
|
||||
|
||||
# Changelog:
|
||||
# 2025-10-05 tonhuisman: Adjustments for Display A and Display B split
|
||||
# 2025-10-01 tonhuisman: Include Notify and Network plugins, ignore not available files, parse NWxxx also
|
||||
# 2024-05-04 tonhuisman: Working and documented
|
||||
# 2024-04-28 tonhuisman: Initial script
|
||||
|
||||
@@ -44,7 +45,7 @@ excludePlugins = {
|
||||
'CLIMATE': {'P007', 'P008', 'P009', 'P017', 'P022', 'P027', 'P030', 'P035', 'P040', 'P041', 'P042', 'P045'},
|
||||
'DISPLAY A': {'P038', 'P041', 'P042', 'P070'},
|
||||
'DISPLAY B': {'P038', 'P041', 'P042', 'P057', 'P070', 'P075', 'P104'},
|
||||
'MAX': {'P089'},
|
||||
# 'MAX': {''},
|
||||
# 'NEOPIXEL': {''},
|
||||
'NORMAL': {'P016', 'P035'},
|
||||
}
|
||||
@@ -105,6 +106,8 @@ def addToAllBuilds(plugin, pluginName, builds:dict):
|
||||
# Parse a single substitution file
|
||||
def parseSingleSubstitutionFile(fileName):
|
||||
filepath = os.path.relpath(os.path.join(basePath, fileName), '.')
|
||||
if not os.path.isfile(filepath):
|
||||
return
|
||||
# print(filepath) # For debugging
|
||||
pfile = open(filepath, "r")
|
||||
# Start empty
|
||||
@@ -117,7 +120,7 @@ def parseSingleSubstitutionFile(fileName):
|
||||
break
|
||||
# Parse into label, plugin ID, description and up to 4 separate builds (current max.),
|
||||
# append "(?:[^`]+`([^`]+)`)?" to regex for an extra build, if needed
|
||||
m = re.search(r"[^|]\|([PCN](\d{3}))([^\|]+)\|[^`]+`([^`]+)`(?:[^`]+`([^`]+)`)?(?:[^`]+`([^`]+)`)?(?:[^`]+`([^`]+)`)?", line)
|
||||
m = re.search(r"[^|]\|((?:NW|[PCN])(\d{3}))([^\|]+)\|[^`]+`([^`]+)`(?:[^`]+`([^`]+)`)?(?:[^`]+`([^`]+)`)?(?:[^`]+`([^`]+)`)?", line)
|
||||
if m:
|
||||
if m.group(3) == "_typename": # the typename substitution should be before _status...
|
||||
if plugin != "" and plugin != m.group(1): # Changed plugin ID, store current
|
||||
@@ -182,6 +185,10 @@ print('Parsing substitutions for build sets...')
|
||||
parseSubstitutionFiles('../Plugin/_plugin_substitutions.repl')
|
||||
# Parse all Controller substitutions
|
||||
parseSingleSubstitutionFile('../Controller/_controller_substitutions.repl')
|
||||
# Parse all Notify substitutions
|
||||
parseSingleSubstitutionFile('../Notify/_notify_substitutions_n00x.repl')
|
||||
# Parse all Network substitutions
|
||||
parseSingleSubstitutionFile('../Network/_network_substitutions.repl')
|
||||
|
||||
# Generate output
|
||||
generateBuildOverview('../Plugin/_plugin_sets_overview.repl')
|
||||
|
||||
@@ -1,6 +1,29 @@
|
||||
Supported ESP Chips
|
||||
*******************
|
||||
|
||||
ESP8266 is Feature Complete!
|
||||
============================
|
||||
|
||||
(Since 2025-04-30)
|
||||
|
||||
The core team has decided to declare the ESP8266 builds (that also support ESP8285) Feature Complete, for multiple reasons:
|
||||
|
||||
* **Binary size**: Making (new or enhanced) plugins and growing feature set fit in the limited available binary space of an ESP8266 (1020kB) is getting harder and harder. Many hundreds of hours have been spent already to reduce size as much as possble, and there isn't much room for improvement anymore.
|
||||
* **Limited RAM available**: The ESP8266 has only 80 kB of RAM available, and with the core of ESPEasy loaded, that leaves only between 15 and 25 kB of free memory for plugins to work with. This is a major cause for crashes when some complicated tasks are handling data of some size.
|
||||
* **Chip development progress**: New features for ESP chips are being developed, but the ESP8266 platform, while still being manufactured, does not get technical improvements anymore.
|
||||
* **Software support by Espressif**: New software development in the framework for supporting the ESP platform is only directed at the ESP32 line of MCUs. No new development for ESP8266 is being done.
|
||||
|
||||
The consequences of this decision are that:
|
||||
|
||||
* New plugins and features are **not** included in the regularly made available ESP8266 builds.
|
||||
* To enable some of the new features (many are still useable) for ESP8266, a Custom build can be configured and built by the user, as documented in :ref:`PlatformIO_page`.
|
||||
* A notable exception is support for TLS: That's *not* possible to enable on ESPEasy in ESP8266 builds as it doesn't fit in the limited available RAM memory.
|
||||
|
||||
For new projects, it is strongly advised to select one of the many available ESP32 boards, or chips when designing a custom board. Some of the ESP32 variants are available with 16 MB Flash (ESP32 Classic, ESP32-C3, ESP32-C6 and ESP32-S3), and have 1 or more MAX builds available in ESPEasy, that include all plugins and features available, and also a larger selection of fonts for displays (TFT/LCD, OLed and 7-segment).
|
||||
|
||||
Overview of supported chips
|
||||
===========================
|
||||
|
||||
ESPEasy does support a number of variants of the processors manufactured by Espressif.
|
||||
|
||||
* **ESP8266** The original ESP processor, with external flash.
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
.. _N001_page:
|
||||
|
||||
Notifications Email (SMTP)
|
||||
===========================
|
||||
|N001_typename|
|
||||
===============================
|
||||
|
||||
|N001_shortinfo|
|
||||
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
|
||||
.. _N002_page:
|
||||
|
||||
Notifications Buzzer
|
||||
=====================
|
||||
|N002_typename|
|
||||
========================
|
||||
|
||||
|N002_shortinfo|
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
.. |N001_type| replace:: :cyan:`Notifications`
|
||||
.. |N001_name| replace:: :cyan:`Notifications Email (SMTP)`
|
||||
.. |N001_name| replace:: :cyan:`Notifications - Email (SMTP)`
|
||||
.. |N001_typename| replace:: :cyan:`Notifications - Email (SMTP)`
|
||||
.. |N001_porttype| replace:: `.`
|
||||
.. |N001_status| replace:: :green:`NORMAL` :yellow:`CLIMATE` :yellow:`COLLECTION` :yellow:`SONOFF` :yellow:`SHELLY`
|
||||
@@ -11,7 +11,7 @@
|
||||
.. |N001_page| replace:: N001
|
||||
|
||||
.. |N002_type| replace:: :cyan:`Notifications`
|
||||
.. |N002_name| replace:: :cyan:`Notifications Buzzer`
|
||||
.. |N002_name| replace:: :cyan:`Notifications - Buzzer`
|
||||
.. |N002_typename| replace:: :cyan:`Notifications - Buzzer`
|
||||
.. |N002_porttype| replace:: `.`
|
||||
.. |N002_status| replace:: :green:`NORMAL` :yellow:`CLIMATE` :yellow:`COLLECTION` :yellow:`SONOFF` :yellow:`SHELLY`
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
MQTT Device class
|
||||
^^^^^^^^^^^^^^^^^
|
||||
|
||||
(Only available if both MQTT Auto Discovery and Device Class features are included in the build.)
|
||||
|
||||
* **MQTT Device class**: Select the Binary Device class that's to be used for this task device. Device classes marked with ``²`` are 'two-way' devices, meaning that the state will be updated when changed, either on the ESPEasy side, or on the MQTT (Home Assistant) side.
|
||||
|
||||
The default value used is ``power``, also when not set (empty), and can be updated in Home Assistant by resending the MQTT Discovery.
|
||||
|
||||
The available options are based on the Summer 2025 version of this `Home Assistant MQTT Binary sensor documentation page <https://www.home-assistant.io/integrations/binary_sensor/#device-class>`_
|
||||
|
||||
The On/Off icon shown in Home Assistant (HA) can be changed for an alternative in the HA configuration, after Auto Discovery has created the device there.
|
||||
@@ -1,4 +1,4 @@
|
||||
.. include:: ../Plugin/_plugin_substitutions_p00x.repl
|
||||
.. include:: ../Plugin/_plugin_substitutions_p00x.repl
|
||||
.. _P001_page:
|
||||
|
||||
|P001_typename|
|
||||
@@ -25,6 +25,9 @@ Supported hardware
|
||||
|
||||
|P001_usedby|
|
||||
|
||||
|
||||
.. include:: DeviceClass_binary.repl
|
||||
|
||||
Commands available
|
||||
------------------
|
||||
|
||||
|
||||
@@ -437,10 +437,12 @@ Change log
|
||||
.. versionchanged:: 2.0
|
||||
...
|
||||
|
||||
|improved| 2020-04-25 Added support for ESP32 ADC pins + Hall Effect Sensor.
|
||||
|improved| 2022-07-11 Added ESP32 Factory calibration, multipoint processing, binning and charts.
|
||||
|improved| 2022-07-27 Improved resolution when using ESP32 Factory Calibration.
|
||||
|
||||
|improved| 2022-07-11 Added ESP32 Factory calibration, multipoint processing, binning and charts.
|
||||
|
||||
|improved| 2020-04-25 Added support for ESP32 ADC pins + Hall Effect Sensor.
|
||||
|
||||
.. versionadded:: 1.0
|
||||
...
|
||||
|
||||
|
||||
@@ -110,6 +110,8 @@ Advanced event management
|
||||
|
||||
* **Use safe button (slower)**: This effectively adds an extra De-bounce delay and sends event value ``4`` when reached.
|
||||
|
||||
.. include:: DeviceClass_binary.repl
|
||||
|
||||
.. include:: DataAcquisition.repl
|
||||
|
||||
* **Interval** By default, Interval will be set to 60 sec. It is the frequency used to read sensor values and send these to any Controllers configured for this device.
|
||||
|
||||
@@ -112,6 +112,8 @@ Advanced event management
|
||||
|
||||
* **Use safe button (slower)**: This effectively adds an extra De-bounce delay and sends event value ``4`` when reached.
|
||||
|
||||
.. include:: DeviceClass_binary.repl
|
||||
|
||||
.. include:: DataAcquisition.repl
|
||||
|
||||
* **Interval** By default, Interval will be set to 60 sec. It is the frequency used to read sensor values and send these to any Controllers configured for this device.
|
||||
|
||||
@@ -136,6 +136,8 @@ Sensor
|
||||
|
||||
* **Auto-save interval** Here a time in minutes can be set after which any changed 'Set Level' via the ``config,task,<taskname>,SetLevel,<value>`` command will be saved. This *requires* that the above setting **Save 'Set Level' after change via config command** is **disabled**! When used, a setting of ca. 30 minutes, or even longer when the Set Level is changed often, seems apropriate, unless the unit often reboots, but then that cause should be investigated and solved. The timer, when activated, should survive a warm reboot.
|
||||
|
||||
.. warning:: Saving settings too often will cause damage to the Flash memory of the unit!
|
||||
|
||||
* **Extended functionality**:sup:`1)` Enable new functionality. Changing this will reload the form showing/hiding the new options below.
|
||||
|
||||
* **Long time span**:sup:`1)` Timer values are per default entered in [seconds], enabling this option timing settings are tuned to long intervals using [hours] or [seconds]. Changing this will reload the form showing rescaled values and new units.
|
||||
@@ -160,6 +162,8 @@ Sensor
|
||||
|
||||
:sup:`1)` Configuration may not be available due to build size limitations.
|
||||
|
||||
.. include:: DeviceClass_binary.repl
|
||||
|
||||
.. include:: DataAcquisition.repl
|
||||
|
||||
Values
|
||||
|
||||
@@ -54,7 +54,7 @@ Description
|
||||
This Plugin reads the data from Thermocouples and Resistor Temperature Detector sensors. You have to use an Adapter Board with a respective
|
||||
adapter/converter in order to read the values. Take a look at the usual sources to find such boards.
|
||||
|
||||
You can only use ESP8266 boards which expose the SPI Interface. This Plugin uses only the Hardware SPI Interface - no software SPI at the moment.
|
||||
You can use any board which expose the SPI Interface. This Plugin uses only the selected SPI Interface.
|
||||
Nevertheless you need at least 3 Pins to use SPI. So using an very simple ESP-01 is unfortunately no option.
|
||||
|
||||
**Basic Information on Thermocouples**
|
||||
@@ -68,7 +68,7 @@ Wiring
|
||||
|
||||
Basic Information on SPI Bus you can find in `Wikipedia: SPI Bus <https://en.wikipedia.org/wiki/Serial_Peripheral_Interface>`_
|
||||
|
||||
You need an ESP8266 device with accessible SPI Pins. These Pins are:
|
||||
You need an **ESP8266** device with accessible SPI Pins. These Pins are:
|
||||
|
||||
==== ============= ====== ======== =========================================================================
|
||||
Name Description PIO NodeMCU Notes
|
||||
@@ -81,6 +81,8 @@ CS Chip Select GPIO15 D8 Hardware SPI (CS is configurable through
|
||||
|
||||
.. note:: Write Access to device registers is required for MAX 31856 and MAX 31865 devices so far.
|
||||
|
||||
For **ESP32** you can use any VSPI, HSPI or User Defined configuration, as the GPIO multiplexer in ESP32 chips can handle any GPIO pin with Input and Output capability for SPI.
|
||||
|
||||
Supported Hardware
|
||||
------------------
|
||||
|
||||
|
||||
@@ -324,7 +324,7 @@ There are different released versions of ESP Easy:
|
||||
|
||||
:red:`DEVELOPMENT` is used for plugins that are still being developed and are not considered stable at all. Currently there are no DEVELOPMENT builds available.
|
||||
|
||||
:yellow:`ENERGY` :yellow:`DISPLAY` :yellow:`IR` :yellow:`IRext` :yellow:`NEOPIXEL` :yellow:`CLIMATE` are specialized builds holding all Energy-, Display-, Infra Red- (extended), NeoPixel- and Climate- related plugins.
|
||||
:yellow:`ENERGY` :yellow:`DISPLAY` (split into sets A..B) :yellow:`IR` :yellow:`IRext` :yellow:`NEOPIXEL` :yellow:`CLIMATE` are specialized builds holding all Energy-, Display-, Infra Red- (extended), NeoPixel- and Climate- related plugins.
|
||||
|
||||
:yellow:`MAX` is the build that has all plugins that are available in the ESPEasy repository. Available for ESP32 16MB and ESP32 8MB Flash units (available for ESP32 Classic, ESP32-S3 and ESP32-C6).
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
.. |P093_name| replace:: :cyan:`Mitsubishi Heat Pump`
|
||||
.. |P093_type| replace:: :cyan:`Energy (Heat)`
|
||||
.. |P093_typename| replace:: :cyan:`Energy (Heat) - Mitsubishi Heat Pump`
|
||||
.. |P093_status| replace:: :yellow:`ENERGY` :yellow:`COLLECTION D`
|
||||
.. |P093_status| replace:: :yellow:`COLLECTION D` :yellow:`ENERGY`
|
||||
.. |P093_github| replace:: P093_MitsubishiHP.ino
|
||||
.. _P093_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/_P093_MitsubishiHP.ino
|
||||
.. |P093_usedby| replace:: `.`
|
||||
|
||||
@@ -122,7 +122,7 @@
|
||||
.. |P108_type| replace:: :cyan:`Energy (AC)`
|
||||
.. |P108_typename| replace:: :cyan:`Energy (AC) - DDS238-x`
|
||||
.. |P108_porttype| replace:: `.`
|
||||
.. |P108_status| replace:: :yellow:`ENERGY` :yellow:`COLLECTION B`
|
||||
.. |P108_status| replace:: :yellow:`COLLECTION B` :yellow:`ENERGY`
|
||||
.. |P108_github| replace:: P108_DDS238.ino
|
||||
.. _P108_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/_P108_DDS238.ino
|
||||
.. |P108_usedby| replace:: `.`
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
.. |P115_type| replace:: :cyan:`Energy`
|
||||
.. |P115_typename| replace:: :cyan:`Energy - MAX1704x`
|
||||
.. |P115_porttype| replace:: `.`
|
||||
.. |P115_status| replace:: :yellow:`ENERGY` :yellow:`COLLECTION B`
|
||||
.. |P115_status| replace:: :yellow:`COLLECTION B` :yellow:`ENERGY`
|
||||
.. |P115_github| replace:: _P115_MAX1704x_v2.ino
|
||||
.. _P115_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/_P115_MAX1704x_v2.ino
|
||||
.. |P115_usedby| replace:: `.`
|
||||
|
||||
@@ -420,7 +420,7 @@ const char mqtt_binary_deviceclass_names[] PROGMEM =
|
||||
String MQTT_binary_deviceClassName(int devClassIndex) {
|
||||
char tmp[17]{}; // length: battery_charging + \0
|
||||
|
||||
String result(GetTextIndexed(tmp, sizeof(tmp), devClassIndex, mqtt_binary_deviceclass_names));
|
||||
const String result(GetTextIndexed(tmp, sizeof(tmp), devClassIndex, mqtt_binary_deviceclass_names));
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -429,7 +429,7 @@ int MQTT_binary_deviceClassIndex(const String& deviceClassName) {
|
||||
return GetCommandCode(deviceClassName.c_str(), mqtt_binary_deviceclass_names);
|
||||
}
|
||||
|
||||
// TwoWay devices are marked with ² in the selector, and disvocered as 'light' instead of 'binary_sensor'
|
||||
// TwoWay devices are marked with ² in the selector, and discovered as 'light' instead of 'binary_sensor'
|
||||
bool MQTT_binary_deviceClassTwoWay(int devClassIndex) {
|
||||
switch (devClassIndex) { // Index into mqtt_binary_deviceclass_names
|
||||
case 1: // power
|
||||
|
||||
@@ -828,7 +828,9 @@ void handle_devicess_ShowAllTasksTable(uint8_t page)
|
||||
html_TD();
|
||||
|
||||
if (validDeviceIndex(DeviceIndex)) {
|
||||
#if FEATURE_STRING_VARIABLES
|
||||
const DeviceStruct& device = Device[DeviceIndex];
|
||||
#endif // #if FEATURE_STRING_VARIABLES
|
||||
String customValuesString;
|
||||
const bool customValues = PluginCall(PLUGIN_WEBFORM_SHOW_VALUES, &TempEvent, customValuesString);
|
||||
|
||||
@@ -1083,7 +1085,7 @@ void handle_devices_TaskSettingsPage(taskIndex_t taskIndex, uint8_t page)
|
||||
addHtml(getPluginNameFromDeviceIndex(DeviceIndex));
|
||||
|
||||
const uint8_t pid = Settings.getPluginID_for_task(taskIndex).value;
|
||||
if (pid <= 101) { // Up to P101 seem to be listed in the old Wiki, so lets keep pointing there too
|
||||
if (pid <= 79) { // Up to P079 seem to be listed in the old Wiki (and a few incomplete pages), so lets keep pointing there too
|
||||
addHelpButton(concat(F("Plugin"), Settings.getPluginID_for_task(taskIndex).value));
|
||||
}
|
||||
addRTDPluginButton(Settings.getPluginID_for_task(taskIndex));
|
||||
|
||||
@@ -760,7 +760,7 @@ void handle_sysinfo_Storage() {
|
||||
|
||||
addRowLabel(LabelType::FLASH_WRITE_COUNT);
|
||||
addHtml(strformat(
|
||||
F("%d daily / %d boot"),
|
||||
F("%d daily / %d cold boot"),
|
||||
RTC.flashDayCounter,
|
||||
static_cast<int>(RTC.flashCounter)));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user