From b0c1b6b7e889ac5afd12933408eda5f99b1e6207 Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Sun, 28 Apr 2024 16:38:28 +0200 Subject: [PATCH 01/13] [P105] Update plugin name and documentation --- docs/source/Plugin/P105.rst | 24 +++++++------- .../Plugin/P105_DeviceConfiguration.png | Bin 44114 -> 47388 bytes docs/source/Plugin/P105_DeviceWarning.png | Bin 5083 -> 4870 bytes .../source/Plugin/P105_SensorModelOptions.png | Bin 4774 -> 8477 bytes .../Plugin/_plugin_substitutions_p10x.repl | 4 +-- src/_P105_AHT.ino | 30 ++++++++++++------ 6 files changed, 35 insertions(+), 23 deletions(-) diff --git a/docs/source/Plugin/P105.rst b/docs/source/Plugin/P105.rst index 72f5add00d..5a2abe2ec0 100644 --- a/docs/source/Plugin/P105.rst +++ b/docs/source/Plugin/P105.rst @@ -26,57 +26,59 @@ Datasheet: |P105_datasheet| |P105_datasheet2| |P105_datasheet3| Description ----------- -The AHT10/AHT20/AHT21 sensors provide Temperature and Humidity measurements (factory calibrated), via an I2C bus connection. +The AHT10/AHT15/AHT20/AHT21/DHT20/AM2301B sensors provide Temperature and Humidity measurements (factory calibrated), via an I2C bus connection. .. warning:: - * The **AHT10** device does sometimes not 'play nice' when there are also other I2C devices on the same bus (many complaints can be found on the internet). NB: This may be hardware-, vendor-, or chip-revision-specific. + * The **AHT10** and **AHT15** devices do sometimes not 'play nice' when there are also other I2C devices on the same bus (many complaints can be found on the internet). NB: This may be hardware-, vendor-, or chip-revision-specific. Because of this peculiarity, other sensors may be more appropriate, like the AHT20/AHT21 also supported by this plugin, or :ref:`P028_page`, :ref:`P106_page`, :ref:`P014_page`, :ref:`P034_page`, :ref:`P051_page`, :ref:`P068_page` or :ref:`P072_page`. This plugin tries to avoid such situations (I2C bus lock) by (soft) resetting the sensor if it doesn't respond for some time. +This plugin also supports the **DHT20** and **AM2301B** sensors, as these are just **AHT20** sensors with a specific housing. + Settings -------- .. image:: P105_DeviceConfiguration.png -**Name**: The name for this task, should be unique. +* **Name**: The name for this task, should be unique. -**Enabled**: Allows to enable/disable the device. +* **Enabled**: Allows to enable/disable the device. I2C Options ^^^^^^^^^^^^ The available settings here depend on the build used. At least the **Force Slow I2C speed** option is available, but selections for the I2C Multiplexer can also be shown. For details see the :ref:`Hardware_page` -**I2C Address**: The address the device is using. The AHT10 sensor allows to select a secondary address by pulling the AO (sometimes marked as A0) pin to high (3.3V) to select the secondary address. That address should then be selected here too. The AHT20/AHT21 sensors only support a single I2C address, so it will be forced to the default address. +* **I2C Address**: The address the device is using. The AHT10 sensor allows to select a secondary address by pulling the AO (sometimes marked as A0) pin to high (3.3V) to select the secondary address. That address should then be selected here too. The AHT20/AHT21 based sensors only support a single I2C address, so it will be forced to the default address. Device Settings ^^^^^^^^^^^^^^^^ -If the plugin is configured for **Sensor model** AHT10 and other devices configured in a task use the I2C bus, a warning is displayed (see example below) that combining them with this device may cause issues on the I2C bus, resulting in all I2C devices no longer working as intended. This may occur immediately, or only after some time, like 10 minutes or an hour. +If the plugin is configured for **Sensor model** AHT1x and other devices configured in a task use the I2C bus, a warning is displayed (see example below) that combining them with this device may cause issues on the I2C bus, resulting in all I2C devices no longer working as intended. This may occur immediately, or only after some time, like 10 minutes or an hour. .. image:: P105_DeviceWarning.png -**Sensor model** Selection of the connected type of hardware. (AHT2x sensors have a slightly different intialization.) +* **Sensor model** Selection of the connected type of hardware. (AHT2x based sensors have a slightly different intialization.) Available options: .. image:: P105_SensorModelOptions.png -**AHT10** This sensor model should better be avoided, as it doesn't always work with other devices on the same I2C bus. Also, the AHT15 can be used, but that has similar issues. +**AHT1x** AHT10/AHT15. These sensor models should better be avoided, as it doesn't always work with other devices on the same I2C bus. -**AHT20** An more modern version of the sensor. +**AHT20** An more modern version of the sensor. Use this option also when connecting a DHT20 or AM2301B sensor. -**AHT20** An more modern version of the sensor, very similar to the AHT20, in a more compact chip package. +**AHT21** An more modern version of the sensor, very similar to the AHT20, in a more compact chip package. Data Acquisition ^^^^^^^^^^^^^^^^ This group of settings, **Single event with all values**, **Send to Controller** and **Interval** settings are standard available configuration items. Send to Controller is only visible when one or more Controllers are configured. -**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. +* **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. Values ^^^^^^ diff --git a/docs/source/Plugin/P105_DeviceConfiguration.png b/docs/source/Plugin/P105_DeviceConfiguration.png index 736f5a8ecb9bb6e94232cd74f143ed0617d4127c..6ba85a08c42c3f2237a587e9e047c5b4eb8d90e2 100644 GIT binary patch literal 47388 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 E0Mq($b^rhX literal 44114 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 diff --git a/docs/source/Plugin/P105_DeviceWarning.png b/docs/source/Plugin/P105_DeviceWarning.png index 1552690e5f0fac4444655131996cc4fb695fab17..f8a5693223b078e378de217d90cf3dc69f3a755e 100644 GIT binary patch literal 4870 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 literal 5083 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 HL-_vzq8~AZ literal 4774 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 method, -// Added check for other I2C devoces configured on ESPEasy tasks to give a warning -// about I2C incmopatibility, for AHT10 device only -// 2021-03 sakinit: Initial plugin, added on ESPEasyPluginPlayground +/** History: + * 2024-04-28 tonhuisman: Update plugin name and documentation as DHT20 and AM2301B actually contain an AHT20! + * DHT20: https://www.adafruit.com/product/5183 (Description) + * AM2301B: https://www.adafruit.com/product/5181 (Description) + * 2021-08-01 tonhuisman: Plugin migrated from ESPEsyPluginPlayground repository + * Minor adjustments, changed castings to use static_cast(var) method, + * Added check for other I2C devices configured on ESPEasy tasks to give a warning + * about I2C incompatibility, for AHT10/AHT15 device only + * 2021-03 sakinit: Initial plugin, added on ESPEasyPluginPlayground + */ # include "src/PluginStructs/P105_data_struct.h" # define PLUGIN_105 # define PLUGIN_ID_105 105 -# define PLUGIN_NAME_105 "Environment - AHT10/AHT2x" +# define PLUGIN_NAME_105 "Environment - AHT1x/AHT2x/DHT20/AM2301B" # define PLUGIN_VALUENAME1_105 "Temperature" # define PLUGIN_VALUENAME2_105 "Humidity" @@ -85,7 +89,7 @@ boolean Plugin_105(uint8_t function, struct EventStruct *event, String& string) if (function == PLUGIN_WEBFORM_SHOW_I2C_PARAMS) { addFormSelectorI2C(F("i2c_addr"), 2, i2cAddressValues, PCONFIG(0)); - addFormNote(F("SDO Low=0x38, High=0x39. NB: Only available on AHT10 sensors.")); + addFormNote(F("SDO Low=0x38, High=0x39. NB: Only available on AHT1x sensors.")); } else { success = intArrayContains(2, i2cAddressValues, event->Par1); } @@ -102,6 +106,12 @@ boolean Plugin_105(uint8_t function, struct EventStruct *event, String& string) } # endif // if FEATURE_I2C_GET_ADDRESS + case PLUGIN_SET_DEFAULTS: + { + PCONFIG(1) = static_cast(AHTx_device_type::AHT20_DEVICE); + break; + } + case PLUGIN_WEBFORM_LOAD: { if (static_cast(PCONFIG(1)) == AHTx_device_type::AHT10_DEVICE) { @@ -126,11 +136,11 @@ boolean Plugin_105(uint8_t function, struct EventStruct *event, String& string) if (hasOtherI2CDevices) { addRowLabel(EMPTY_STRING, EMPTY_STRING); addHtmlDiv(F("note warning"), - F("Attention: Sensor model AHT10 may cause I2C issues when combined with other I2C devices on the same bus!")); + F("Attention: Sensor model AHT1x may cause I2C issues when combined with other I2C devices on the same bus!")); } } { - const __FlashStringHelper *options[] = { F("AHT10"), F("AHT20"), F("AHT21") }; + const __FlashStringHelper *options[] = { F("AHT1x"), F("AHT20"), F("AHT21") }; const int indices[] = { static_cast(AHTx_device_type::AHT10_DEVICE), static_cast(AHTx_device_type::AHT20_DEVICE), static_cast(AHTx_device_type::AHT21_DEVICE) }; From d773f63ae9833d8322ec97fc1e4e327276ffb731 Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Sun, 28 Apr 2024 16:42:49 +0200 Subject: [PATCH 02/13] [Commands] Correctly handle `on`/`true`/`off`/`false` as enable/disable values for commands --- src/src/Commands/Common.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/src/Commands/Common.cpp b/src/src/Commands/Common.cpp index 64fa7bb64b..33c4820840 100644 --- a/src/src/Commands/Common.cpp +++ b/src/src/Commands/Common.cpp @@ -146,11 +146,10 @@ String Command_GetORSetBool(struct EventStruct *event, if (validIntFromString(TmpStr1, tmp_int)) { *value = tmp_int > 0; } - else if (TmpStr1.isEmpty()) {} // Empty string not always handled nicely by strcmp_P - else if (strcmp_P(PSTR("on"), TmpStr1.c_str()) == 0) { *value = true; } - else if (strcmp_P(PSTR("true"), TmpStr1.c_str()) == 0) { *value = true; } - else if (strcmp_P(PSTR("off"), TmpStr1.c_str()) == 0) { *value = false; } - else if (strcmp_P(PSTR("false"), TmpStr1.c_str()) == 0) { *value = false; } + else if (equals(TmpStr1, F("on"))) { *value = true; } + else if (equals(TmpStr1, F("true"))) { *value = true; } + else if (equals(TmpStr1, F("off"))) { *value = false; } + else if (equals(TmpStr1, F("false"))) { *value = false; } } } From 9112b5dffde84413550cd8248b84a8d7d9824f5f Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Sun, 28 Apr 2024 17:17:59 +0200 Subject: [PATCH 03/13] [P105] Update documentation --- .../Plugin/P105_DeviceConfiguration.png | Bin 47388 -> 47074 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/source/Plugin/P105_DeviceConfiguration.png b/docs/source/Plugin/P105_DeviceConfiguration.png index 6ba85a08c42c3f2237a587e9e047c5b4eb8d90e2..0064657c48bb12900ad4b20115ca71d997a61b43 100644 GIT binary patch delta 23501 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 Date: Sun, 28 Apr 2024 17:27:43 +0200 Subject: [PATCH 04/13] [P034] Add documentation, remove unreachable documentation file --- docs/source/Plugin/P034.rst | 62 ++++++++++++++- docs/source/Plugin/P034_DHT12.rst | 71 ------------------ .../Plugin/P034_DeviceConfiguration.png | Bin 0 -> 35046 bytes 3 files changed, 58 insertions(+), 75 deletions(-) delete mode 100644 docs/source/Plugin/P034_DHT12.rst create mode 100644 docs/source/Plugin/P034_DeviceConfiguration.png diff --git a/docs/source/Plugin/P034.rst b/docs/source/Plugin/P034.rst index 8a889b8492..fec0aaee7e 100644 --- a/docs/source/Plugin/P034.rst +++ b/docs/source/Plugin/P034.rst @@ -1,4 +1,4 @@ -.. include:: ../Plugin/_plugin_substitutions_p03x.repl +.. include:: ../Plugin/_plugin_substitutions_p03x.repl .. _P034_page: |P034_typename| @@ -21,10 +21,64 @@ Maintainer: |P034_maintainer| Used libraries: |P034_usedlibraries| -Supported hardware ------------------- +.. Supported hardware +.. ------------------ + +.. .. |P034_usedby| + +Introduction +------------ + + +Specifications: + * Temperature (-20 to +60C) + * Humidity (20-95 % rel. humidity) + +Settings +-------- + +.. image:: P034_DeviceConfiguration.png + +* **Name**: Required by ESPEasy, must be unique among the list of available devices/tasks. + +* **Enabled**: The device can be disabled or enabled. When not enabled the device should not use any resources. + +I2C options +^^^^^^^^^^^ + +The available settings here depend on the build used. At least the **Force Slow I2C speed** option is available, but selections for the I2C Multiplexer can also be shown. For details see the :ref:`Hardware_page` + +Device Settings +^^^^^^^^^^^^^^^ + +This device has no further configuration settings. + +Data Acquisition +^^^^^^^^^^^^^^^^ + +This group of settings, **Single event with all values**, **Send to Controller** and **Interval** settings are standard available configuration items. Send to Controller is only visible when one or more Controllers are configured. + +* **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. + +Values +^^^^^^ + +The names for the values are initially set to a default name, but can be changed if desired. Also, a formula can be entered to re-calculate the value before display/sending to a controller, and the number of decimals can be changed, for Temperature, usually 1 decimal is enough to be displayed (value will be rounded). + + + + +Where to buy +------------ + +.. csv-table:: + :header: "Store", "Link" + :widths: 5, 40 + + "AliExpress","`Link 1 ($) `_" + +|affiliate| -|P034_usedby| .. Commands available .. ^^^^^^^^^^^^^^^^^^ diff --git a/docs/source/Plugin/P034_DHT12.rst b/docs/source/Plugin/P034_DHT12.rst deleted file mode 100644 index 1cf2e3044e..0000000000 --- a/docs/source/Plugin/P034_DHT12.rst +++ /dev/null @@ -1,71 +0,0 @@ -.. include:: ../Plugin/_plugin_substitutions_p03x.repl -.. _P034_DHT12_page: - -DHT12 -===== - -|P034_typename| -|P034_status| - - -Introduction ------------- - - -Specifications: - * Temperature (-20 to +60C) - * Humidity (20-95 % rel. humidity) - - -Wiring ------- - - -.. code-block:: none - - ESP S8 - GPIO (X) <--> TX - GPIO (X) <--> RX - - - Power - 5.0V <--> VCC - GND <--> GND - - -Setup ------ - - - -Rules examples --------------- - -.. code-block:: none - - //Code below... - - -Indicators (recommended settings) ---------------------------------- - -.. csv-table:: - :header: "Indicator", "Value Name", "Interval", "Decimals", "Extra information" - :widths: 8, 5, 5, 5, 40 - - "XXXXXX", "N/A", "", "", "" - -Where to buy ------------- - -.. csv-table:: - :header: "Store", "Link" - :widths: 5, 40 - - "AliExpress","`Link 1 ($) `_" - -|affiliate| - - -More pictures -------------- diff --git a/docs/source/Plugin/P034_DeviceConfiguration.png b/docs/source/Plugin/P034_DeviceConfiguration.png new file mode 100644 index 0000000000000000000000000000000000000000..b136233409e00393ca1a1617eb9e118e993c992b GIT binary patch literal 35046 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 literal 0 HcmV?d00001 From ea3196faec5178441cbcdafa8a3787ec8eafdde4 Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Sun, 28 Apr 2024 21:06:34 +0200 Subject: [PATCH 05/13] [P012] Clear splash after 5 seconds if not yet overwritten (man. picked from #4884) --- src/_P012_LCD.ino | 15 +++++++++++++++ src/src/PluginStructs/P012_data_struct.cpp | 3 +-- src/src/PluginStructs/P012_data_struct.h | 19 +++++++++++++------ 3 files changed, 29 insertions(+), 8 deletions(-) diff --git a/src/_P012_LCD.ino b/src/_P012_LCD.ino index 5ad557ddc8..f8bee03cde 100644 --- a/src/_P012_LCD.ino +++ b/src/_P012_LCD.ino @@ -10,6 +10,7 @@ // ####################################################################################################### /** Changelog: + * 2023-12-26 tonhuisman: Clear the splash from the display after 5 seconds if not already overwritten * 2023-03-07 tonhuisman: Parse text to display without trimming off leading and trailing spaces * 2023-03: First changelog added, older changes not logged */ @@ -216,6 +217,19 @@ boolean Plugin_012(uint8_t function, struct EventStruct *event, String& string) char deviceTemplate[P12_Nlines][P12_Nchars]; LoadCustomTaskSettings(event->TaskIndex, reinterpret_cast(&deviceTemplate), sizeof(deviceTemplate)); + switch (P012_data->splashState) { + case P012_splashState_e::SplashCleared: + // Most common route + break; + case P012_splashState_e::SplashInitial: + P012_data->splashState = P012_splashState_e::SplashTimerRunning; + Scheduler.schedule_task_device_timer(event->TaskIndex, millis() + 5000); + break; + case P012_splashState_e::SplashTimerRunning: + P012_data->lcdWrite(F(" "), 0, 0); // Wipe 'ESP Easy' splash text, will reset splashState + break; + } + for (uint8_t x = 0; x < P012_data->Plugin_012_rows; x++) { String tmpString = deviceTemplate[x]; @@ -252,6 +266,7 @@ boolean Plugin_012(uint8_t function, struct EventStruct *event, String& string) } else if (arg1.equalsIgnoreCase(F("Clear"))) { P012_data->lcd.clear(); + P012_data->splashState = P012_splashState_e::SplashCleared; } } else if (cmd.equalsIgnoreCase(F("LCD"))) diff --git a/src/src/PluginStructs/P012_data_struct.cpp b/src/src/PluginStructs/P012_data_struct.cpp index 0d72e4f670..790cd93ad5 100644 --- a/src/src/PluginStructs/P012_data_struct.cpp +++ b/src/src/PluginStructs/P012_data_struct.cpp @@ -67,11 +67,10 @@ void P012_data_struct::lcdWrite(const String& text, uint8_t col, uint8_t row) { } } + if (row == 0) { splashState = P012_splashState_e::SplashCleared; } // Reset splashState lcd.setCursor(col, row); if ((Plugin_012_mode == 1) || (Plugin_012_mode == 2)) { - lcd.setCursor(col, row); - for (uint8_t i = 0; i < Plugin_012_cols - col; i++) { if (text[i]) { lcd.print(text[i]); diff --git a/src/src/PluginStructs/P012_data_struct.h b/src/src/PluginStructs/P012_data_struct.h index ef4a77b1a9..b168c80109 100644 --- a/src/src/PluginStructs/P012_data_struct.h +++ b/src/src/PluginStructs/P012_data_struct.h @@ -7,12 +7,18 @@ # include +enum class P012_splashState_e : uint8_t { + SplashCleared = 0u, + SplashTimerRunning = 1u, + SplashInitial = 2u +}; + struct P012_data_struct : public PluginTaskData_base { P012_data_struct(uint8_t addr, uint8_t lcd_size, uint8_t mode, uint8_t timer); - P012_data_struct() = delete; + P012_data_struct() = delete; virtual ~P012_data_struct() = default; void init(); @@ -31,11 +37,12 @@ struct P012_data_struct : public PluginTaskData_base { void createCustomChars(); - LiquidCrystal_I2C lcd; - int Plugin_012_cols = 16; - int Plugin_012_rows = 2; - int Plugin_012_mode = 1; - uint8_t displayTimer = 0; + LiquidCrystal_I2C lcd; + int Plugin_012_cols = 16; + int Plugin_012_rows = 2; + int Plugin_012_mode = 1; + uint8_t displayTimer = 0; + P012_splashState_e splashState = P012_splashState_e::SplashInitial; }; #endif // ifdef USES_P012 From db38cabd21439a357652e664dff068a38c2705e4 Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Mon, 29 Apr 2024 21:14:22 +0200 Subject: [PATCH 06/13] [C018] Re-enable LoRa TTN controller for ESP32 Collection builds --- src/src/CustomBuild/define_plugin_sets.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/src/CustomBuild/define_plugin_sets.h b/src/src/CustomBuild/define_plugin_sets.h index f64aee160f..455e39538a 100644 --- a/src/src/CustomBuild/define_plugin_sets.h +++ b/src/src/CustomBuild/define_plugin_sets.h @@ -2004,7 +2004,9 @@ To create/register a plugin, you have to : #define USES_C014 // homie 3 & 4dev MQTT //#define USES_C015 // Blynk #define USES_C017 // Zabbix - // #define USES_C018 // TTN RN2483 + #ifdef ESP32 + #define USES_C018 // TTN RN2483 + #endif // #define USES_C019 // ESPEasy-NOW #endif From ccf2612c907e03ffad622c36e98c6bd898329dac Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Tue, 30 Apr 2024 21:14:19 +0200 Subject: [PATCH 07/13] [P105] Add extra devices to I2C scanner --- src/src/WebServer/I2C_Scanner.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/src/WebServer/I2C_Scanner.cpp b/src/src/WebServer/I2C_Scanner.cpp index e9428ad504..4621f1f693 100644 --- a/src/src/WebServer/I2C_Scanner.cpp +++ b/src/src/WebServer/I2C_Scanner.cpp @@ -230,7 +230,7 @@ String getKnownI2Cdevice(uint8_t address) { result += F("Adafruit Rotary enc"); break; case 0x38: - result += F("LCD,PCF8574A,AHT10/20/21,VEML6070,Adafruit Rotary enc"); + result += F("LCD,PCF8574A,AHT10/20/21,VEML6070,Adafruit Rotary enc,DHT20,AM2301B"); break; case 0x39: result += F("LCD,PCF8574A,TSL2561,APDS9960,AHT10,Adafruit Rotary enc"); From 83280b93b4023662d3928b2ce796a7a248fa9ad4 Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Sat, 18 May 2024 21:05:14 +0200 Subject: [PATCH 08/13] [AdaGFX Helper] Parse Get Config Values with period instead of comma, with fall-back --- src/src/Helpers/AdafruitGFX_helper.cpp | 13 +++++++++---- src/src/Helpers/AdafruitGFX_helper.h | 1 + 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/src/Helpers/AdafruitGFX_helper.cpp b/src/src/Helpers/AdafruitGFX_helper.cpp index 276a6f9d65..25029591d2 100644 --- a/src/src/Helpers/AdafruitGFX_helper.cpp +++ b/src/src/Helpers/AdafruitGFX_helper.cpp @@ -1975,7 +1975,7 @@ bool AdafruitGFX_helper::processCommand(const String& string) { # if ADAGFX_ARGUMENT_VALIDATION const int16_t curWin = getWindow(); - if (curWin != 0) { selectWindow(0); } // Validate against raw window coordinates + if (curWin != 0) { selectWindow(0); } // Validate against raw window coordinates if (argCount == 6) { setRotation(nParams[5]); } // Use requested rotation @@ -2052,8 +2052,13 @@ enum class adagfx_getcommands_e : int8_t { }; bool AdafruitGFX_helper::pluginGetConfigValue(String& string) { - bool success = false; - String command = parseString(string, 1); + bool success = false; + char sep = '.'; + + if ((-1 == string.indexOf(sep)) && (string.indexOf(',') >= 0)) { + sep = ','; + } + String command = parseString(string, 1, sep); const int command_i = GetCommandCode(command.c_str(), adagfx_getcommands); const adagfx_getcommands_e cmd = static_cast(command_i); @@ -2070,7 +2075,7 @@ bool AdafruitGFX_helper::pluginGetConfigValue(String& string) { case adagfx_getcommands_e::iswin: { // iswin: check if windows exists # if ADAGFX_ENABLE_FRAMED_WINDOW // if feature enabled - command = parseString(string, 2); + command = parseString(string, 2, sep); int32_t win = 0; if (validIntFromString(command, win)) { diff --git a/src/src/Helpers/AdafruitGFX_helper.h b/src/src/Helpers/AdafruitGFX_helper.h index 48ae8c9f44..d2c62f77c7 100644 --- a/src/src/Helpers/AdafruitGFX_helper.h +++ b/src/src/Helpers/AdafruitGFX_helper.h @@ -12,6 +12,7 @@ ***************************************************************************/ /************ * Changelog: + * 2024-05-18 tonhuisman: Change default argument separator for Get Config Value from comma (,) to period (.), with fall-back. * 2024-04-17 tonhuisman: Add AdaGFXFormDefaultFont() selector and some support functions * Add default font selection at initialization * 2024-04-16 tonhuisman: Add font TomThumb, 3x5 pixel font to be used on a NeoMatrix 5x29 display. Disabled by LIMIT_BUILD_SIZE. From 09f8e99e5e60f7a394de688808cdc336a98cca96 Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Sat, 18 May 2024 21:20:30 +0200 Subject: [PATCH 09/13] [AdaGFX Helper] Update documentation --- docs/source/Plugin/AdaGFX_values.repl | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/source/Plugin/AdaGFX_values.repl b/docs/source/Plugin/AdaGFX_values.repl index d27bb00d36..861cb398a5 100644 --- a/docs/source/Plugin/AdaGFX_values.repl +++ b/docs/source/Plugin/AdaGFX_values.repl @@ -18,7 +18,7 @@ Get the currently active Window Id, expected range: 0..255. " " - ``[#iswin,]`` + ``[#iswin.]`` "," Is the request Window Id valid, expected result: 1 = true, 0 = false. " @@ -33,12 +33,12 @@ Get the height of the currently active Window and rotation, expected range 0... " " - ``[#length,^"^"]`` + ``[#length.^"^"]`` "," Get the length of the text in pixels for the current font and text scaling. Needs quotes if text contains space(s), comma(s) or quote(s). " " - ``[#textheight,^"^"]`` + ``[#textheight.^"^"]`` "," Get the height of the text in pixels for the current font and text scaling. Needs quotes if the text contains space(s), comma(s) or quote(s). " @@ -68,15 +68,15 @@ .. code:: none on centertime do // NB: Comments & extra spaces should be removed to reduce rules size! - if [st7796#iswin,%eventvalue1|2%]=1 // default window: 2 + if [st7796#iswin.%eventvalue1|2%]=1 // default window: 2 let,120,[st7796#win] // store current window st77xx,win,%eventvalue1|2% // switch to window let,121,[st7796#txs] // store textscaling st77xx,txs,3 // set text scaling let,122,[st7796#rot] // store rotation st77xx,rot,%eventvalue2|0% // set rotation, default: 0 - let,123,([st7796#width]-[st7796#length,%systm_hm%])/2 // (width - textlength)/2 - let,124,([st7796#height]-[st7796#textheight,%systm_hm%])/2 // (height - textheight)/2 + let,123,([st7796#width]-[st7796#length.%systm_hm%])/2 // (width - textlength)/2 + let,124,([st7796#height]-[st7796#textheight.%systm_hm%])/2 // (height - textheight)/2 st77xx,txtfull,[int#123],[int#124],3,red,black,%systm_hm% // Display time red on black st77xx,rot,%v122% // restore rotation st77xx,txs,%v121% // restore text scaling From 6996632925571f68bd9038296200faa6628e838b Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Sat, 18 May 2024 21:24:05 +0200 Subject: [PATCH 10/13] [P011] Parse Get Config Values with period instead of comma, with fall-back --- docs/source/Plugin/P011_config_values.repl | 4 ++-- src/_P011_PME.ino | 13 +++++++++---- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/docs/source/Plugin/P011_config_values.repl b/docs/source/Plugin/P011_config_values.repl index a61558944a..368889df5b 100644 --- a/docs/source/Plugin/P011_config_values.repl +++ b/docs/source/Plugin/P011_config_values.repl @@ -3,14 +3,14 @@ :widths: 20, 30 " - ``[#D,]`` + ``[#D.]`` ```` : Range 0..13, corresponding with D0..D13 on the PME. "," Returns the current status (0/1) from the requested Digital port (pin) of the Pro Mini Extender. " " - ``[#A,]`` + ``[#A.]`` ```` : Range 0..3 and 6..7, corresponding with A0..A7 on the PME. "," diff --git a/src/_P011_PME.ino b/src/_P011_PME.ino index e254c4664f..351d45d1b2 100644 --- a/src/_P011_PME.ino +++ b/src/_P011_PME.ino @@ -281,18 +281,23 @@ boolean Plugin_011(uint8_t function, struct EventStruct *event, String& string) case PLUGIN_GET_CONFIG_VALUE: { - const String typ = parseString(string, 1); - const String port = parseString(string, 2); + char sep = '.'; + + if ((-1 == string.indexOf(sep)) && (string.indexOf(',') >= 0)) { + sep = ','; + } + const String typ = parseString(string, 1, sep); + const String port = parseString(string, 2, sep); int32_t portnr = -1; validIntFromString(port, portnr); - // [#D,] : Read Digital value from + // [#D.] : Read Digital value from if (equals(typ, F("d")) && !port.isEmpty() && (portnr >= 0) && (portnr < PLUGIN_011_PORTS)) { string = Plugin_011_Read(0, portnr); success = true; } else - // [#A,] : Read Analog value from + // [#A.] : Read Analog value from if (equals(typ, F("a")) && !port.isEmpty() && (portnr >= 0) && (portnr < PLUGIN_011_A_PORTS)) { string = Plugin_011_Read(1, portnr); success = true; From a4304b5f10e8dbc98c51604aae8bd921f56d3983 Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Sat, 18 May 2024 21:46:06 +0200 Subject: [PATCH 11/13] [P087] Parse Get Config Values with period instead of comma, with fall-back --- docs/source/Plugin/P087_config_values.repl | 6 +++--- src/src/PluginStructs/P087_data_struct.cpp | 11 ++++++++--- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/docs/source/Plugin/P087_config_values.repl b/docs/source/Plugin/P087_config_values.repl index b386e5d20a..c87ccc5d5b 100644 --- a/docs/source/Plugin/P087_config_values.repl +++ b/docs/source/Plugin/P087_config_values.repl @@ -3,14 +3,14 @@ :widths: 20, 30 " - ``[#group,]`` + ``[#group.]`` "," Get the contents from groupnr after processing received data. NB: The regular expression parsen uses 0-based group numbers (where most other regex parsers use 1-based group numbers!) " " - ``[#next,]`` + ``[#next.]`` "," Get the value of the next group that holds ````. @@ -66,5 +66,5 @@ - -30 - - Requesting ``[SerialProxy#next,weight]`` will return the value ``40``. + Requesting ``[SerialProxy#next.weight]`` will return the value ``40``. " diff --git a/src/src/PluginStructs/P087_data_struct.cpp b/src/src/PluginStructs/P087_data_struct.cpp index 76228036ce..8472d7af31 100644 --- a/src/src/PluginStructs/P087_data_struct.cpp +++ b/src/src/PluginStructs/P087_data_struct.cpp @@ -383,7 +383,12 @@ bool P087_data_struct::plugin_get_config_value(struct EventStruct *event, String & string) { bool success = false; const uint8_t vectorlength = capture_vector.size(); - const String cmd = parseString(string, 1); + char sep = '.'; + + if ((-1 == string.indexOf(sep)) && (string.indexOf(',') >= 0)) { + sep = ','; + } + const String cmd = parseString(string, 1, sep); # ifndef BUILD_NO_DEBUG addLog(LOG_LEVEL_DEBUG, concat(F("P087: Before GetConfig: "), string)); @@ -392,7 +397,7 @@ bool P087_data_struct::plugin_get_config_value(struct EventStruct *event, if (equals(cmd, F("group"))) { int32_t par2; - if (validIntFromString(parseString(string, 2), par2) && + if (validIntFromString(parseString(string, 2, sep), par2) && (par2 >= 0)) { for (uint8_t i = 0; i < vectorlength && !success; ++i) { // Stop when we find the requested group # ifndef BUILD_NO_DEBUG @@ -409,7 +414,7 @@ bool P087_data_struct::plugin_get_config_value(struct EventStruct *event, } } else if (equals(cmd, F("next"))) { // Get next group value after matching name - const String name_ = parseString(string, 2); + const String name_ = parseString(string, 2, sep); for (uint8_t i = 0; i < (vectorlength - 1) && !success; ++i) { // Stop when we find the requested name // Loops until 1 BEFORE the end of the vector! From b8eb163b9bc014de83078952654f683cf5567b98 Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Sat, 18 May 2024 22:15:10 +0200 Subject: [PATCH 12/13] [Build] Fix build error because of removed python package since 3.12 --- .github/workflows/build.yml | 2 +- .github/workflows/release.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8cce7032de..fde15301b5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -85,7 +85,7 @@ jobs: - name: Dependencies run: | sudo apt-get update - sudo apt install binutils build-essential libffi-dev libgit2-dev + sudo apt install binutils build-essential libffi-dev libgit2-dev setuptools pip3 install --upgrade pip pip install wheel pip install -r requirements.txt diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f4c15f37ee..7a3a4180b3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -56,7 +56,7 @@ jobs: key: ${{ runner.os }}-esp8266-${{ hashFiles('platformio*.ini') }} - name: Dependencies run: | - sudo apt install binutils build-essential libffi-dev libgit2-dev + sudo apt install binutils build-essential libffi-dev libgit2-dev setuptools pip install -r requirements.txt platformio update - name: Build and archive From d2dc7ec7b0dfe59f1da0f3f31df4af2dc754b5b0 Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Sat, 18 May 2024 22:20:19 +0200 Subject: [PATCH 13/13] [Build] Fix build error because of removed python package since 3.12 --- .github/workflows/build.yml | 2 +- .github/workflows/release.yml | 2 +- requirements.txt | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fde15301b5..8cce7032de 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -85,7 +85,7 @@ jobs: - name: Dependencies run: | sudo apt-get update - sudo apt install binutils build-essential libffi-dev libgit2-dev setuptools + sudo apt install binutils build-essential libffi-dev libgit2-dev pip3 install --upgrade pip pip install wheel pip install -r requirements.txt diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7a3a4180b3..f4c15f37ee 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -56,7 +56,7 @@ jobs: key: ${{ runner.os }}-esp8266-${{ hashFiles('platformio*.ini') }} - name: Dependencies run: | - sudo apt install binutils build-essential libffi-dev libgit2-dev setuptools + sudo apt install binutils build-essential libffi-dev libgit2-dev pip install -r requirements.txt platformio update - name: Build and archive diff --git a/requirements.txt b/requirements.txt index 3cd41b3baf..04991c827d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,3 @@ platformio>=6.1.9 -pygit2>=1.10.1 \ No newline at end of file +pygit2>=1.10.1 +setuptools \ No newline at end of file