From 3aa50c7a153332f2ba90aa35c779870955e5c3c3 Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Tue, 23 Dec 2025 15:59:23 +0100 Subject: [PATCH 1/4] [P087] Add support for receiving binary data, fixed length data, and event as hex string --- src/_P087_SerialProxy.ino | 59 ++++++++++------- src/src/PluginStructs/P087_data_struct.cpp | 73 ++++++++++++++-------- src/src/PluginStructs/P087_data_struct.h | 49 +++++++++++++++ 3 files changed, 133 insertions(+), 48 deletions(-) diff --git a/src/_P087_SerialProxy.ino b/src/_P087_SerialProxy.ino index 2f93bf47a..34ce938f5 100644 --- a/src/_P087_SerialProxy.ino +++ b/src/_P087_SerialProxy.ino @@ -11,6 +11,8 @@ /** * Changelog: + * 2025-12-22 tonhuisman: Add support for receiving binary data, fixed length receive and sending events with hex data + * Moved most #define variables to P087_data_struct.h * 2025-01-12 tonhuisman: Add support for MQTT AutoDiscovery (not supported for Serial Proxy) * 2024-02-27 tonhuisman: Always process the regular expression like 'Global Match' to enable retrieving the available values * 2024-02-26 tonhuisman: Apply log-string and other code optimizations @@ -38,19 +40,6 @@ # define PLUGIN_NAME_087 "Communication - Serial Proxy" -# define P087_BAUDRATE PCONFIG_LONG(0) -# define P087_BAUDRATE_LABEL PCONFIG_LABEL(0) -# define P087_SERIAL_CONFIG PCONFIG_LONG(1) - -# define P087_QUERY_VALUE 0 // Temp placement holder until we know what selectors are needed. -# define P087_NR_OUTPUT_OPTIONS 1 - -# define P087_NR_OUTPUT_VALUES 1 -# define P087_QUERY1_CONFIG_POS 3 - -# define P087_DEFAULT_BAUDRATE 38400 - - // Plugin settings: // Validate: // - [0..9] @@ -168,6 +157,14 @@ boolean Plugin_087(uint8_t function, struct EventStruct *event, String& string) addFormSubHeader(F("Statistics")); P087_html_show_stats(event); + # ifndef LIMIT_BUILD_SIZE + addFormSubHeader(F("Data options")); + addFormCheckBox(F("Receive binary data"), P087_READ_BIN_LABEL, P087_CONFIG_GET_READ_BIN); + addFormNumericBox(F("Fixed length input data"), P087_FIXED_LENGTH_LABEL, P087_CONFIG_GET_FIXED_LENGTH, 0, 255); + addUnit(F("0 = off, max. 255")); + addFormCheckBox(F("Event with hex. data (no prefix)"), P087_EVENT_HEX_LABEL, P087_CONFIG_GET_EVENT_HEX); + # endif // ifndef LIMIT_BUILD_SIZE + success = true; break; } @@ -175,6 +172,11 @@ boolean Plugin_087(uint8_t function, struct EventStruct *event, String& string) case PLUGIN_WEBFORM_SAVE: { P087_BAUDRATE = getFormItemInt(P087_BAUDRATE_LABEL); P087_SERIAL_CONFIG = serialHelper_serialconfig_webformSave(); + # ifndef LIMIT_BUILD_SIZE + P087_CONFIG_SET_READ_BIN(isFormItemChecked(P087_READ_BIN_LABEL)); + P087_CONFIG_SET_FIXED_LENGTH(getFormItemInt(P087_FIXED_LENGTH_LABEL)); + P087_CONFIG_SET_EVENT_HEX(isFormItemChecked(P087_EVENT_HEX_LABEL)); + # endif // ifndef LIMIT_BUILD_SIZE P087_data_struct *P087_data = static_cast(getPluginTaskData(event->TaskIndex)); @@ -207,6 +209,15 @@ boolean Plugin_087(uint8_t function, struct EventStruct *event, String& string) if (P087_data->init(port, serial_rx, serial_tx, P087_BAUDRATE, static_cast(P087_SERIAL_CONFIG))) { LoadCustomTaskSettings(event->TaskIndex, P087_data->_lines, P87_Nlines, 0); P087_data->post_init(); + # ifndef LIMIT_BUILD_SIZE + P087_data->setHandleBinary(P087_CONFIG_GET_READ_BIN); + P087_data->setEventAsHex(P087_CONFIG_GET_EVENT_HEX); + + if (P087_CONFIG_GET_FIXED_LENGTH > 0) { + P087_data->setMaxLength(P087_CONFIG_GET_FIXED_LENGTH); + } + P087_data->setFixedLength(P087_CONFIG_GET_FIXED_LENGTH); + # endif // ifndef LIMIT_BUILD_SIZE success = true; serialHelper_log_GpioDescription(port, serial_rx, serial_tx); } else { @@ -216,17 +227,15 @@ boolean Plugin_087(uint8_t function, struct EventStruct *event, String& string) } case PLUGIN_FIFTY_PER_SECOND: { - if (Settings.TaskDeviceEnabled[event->TaskIndex]) { - P087_data_struct *P087_data = - static_cast(getPluginTaskData(event->TaskIndex)); + P087_data_struct *P087_data = + static_cast(getPluginTaskData(event->TaskIndex)); - if ((nullptr != P087_data) && P087_data->loop()) { - Scheduler.schedule_task_device_timer(event->TaskIndex, millis() + 10); - delay(0); // Processing a full sentence may take a while, run some - // background tasks. - } - success = true; + if ((nullptr != P087_data) && P087_data->loop()) { + Scheduler.schedule_task_device_timer(event->TaskIndex, millis() + 10); + delay(0); // Processing a full sentence may take a while, run some + // background tasks. } + success = true; break; } @@ -237,6 +246,12 @@ boolean Plugin_087(uint8_t function, struct EventStruct *event, String& string) if ((nullptr != P087_data) && P087_data->getSentence(event->String2)) { if (Plugin_087_match_all(event->TaskIndex, event->String2)) { // sendData(event); + # ifndef LIMIT_BUILD_SIZE + + if (P087_data->isEventAsHex() && !event->String2.isEmpty()) { // Convert to hex without prefix + event->String2 = formatToHex_array(reinterpret_cast(&event->String2[0]), event->String2.length()); + } + # endif // ifndef LIMIT_BUILD_SIZE # ifndef BUILD_NO_DEBUG addLog(LOG_LEVEL_DEBUG, event->String2); # endif // ifndef BUILD_NO_DEBUG diff --git a/src/src/PluginStructs/P087_data_struct.cpp b/src/src/PluginStructs/P087_data_struct.cpp index 5adc8c637..111308955 100644 --- a/src/src/PluginStructs/P087_data_struct.cpp +++ b/src/src/PluginStructs/P087_data_struct.cpp @@ -106,42 +106,53 @@ bool P087_data_struct::loop() { while (available > 0 && !fullSentenceReceived) { // Look for end marker - char c = easySerial->read(); + uint8_t c = easySerial->read(); --available; if (available == 0) { available = easySerial->available(); delay(0); } + const size_t length = sentence_part.length(); + # ifdef LIMIT_BUILD_SIZE + const bool addCharacter = (10u != c); + const bool finished = (13u == c); + # else // ifdef LIMIT_BUILD_SIZE + const bool addCharacter = (10u != c) || handle_binary; // Skip LF in ascii-mode + bool finished = (13u == c) && !handle_binary; // Done on CR in ascii-mode - switch (c) { - case 13: - { - const size_t length = sentence_part.length(); - bool valid = length > 0; + if (0 != fixed_length) { + finished = (length == fixed_length); - for (size_t i = 0; i < length && valid; ++i) { - if ((sentence_part[i] > 127) || (sentence_part[i] < 32)) { - sentence_part = EMPTY_STRING; - ++sentences_received_error; - valid = false; - } - } - - if (valid) { - fullSentenceReceived = true; - last_sentence = sentence_part; - sentence_part = EMPTY_STRING; - } - break; + if (finished) { + available = 0; // Forced exit } - case 10: + } + # endif // ifdef LIMIT_BUILD_SIZE - // Ignore LF - break; - default: - sentence_part += c; - break; + if (finished) { + bool valid = length > 0; + + for (size_t i = 0; i < length && valid + # ifndef LIMIT_BUILD_SIZE + && !handle_binary // Skip valid-ascii check + # endif // ifndef LIMIT_BUILD_SIZE + ; ++i) { + if ((sentence_part[i] > 127) || (sentence_part[i] < 32)) { + sentence_part = EMPTY_STRING; + ++sentences_received_error; + valid = false; + } + } + + if (valid) { + fullSentenceReceived = true; + last_sentence = sentence_part; + sentence_part = EMPTY_STRING; + } + } + else if (addCharacter) { + sentence_part += static_cast(c); } if (max_length_reached()) { fullSentenceReceived = true; } @@ -152,6 +163,16 @@ bool P087_data_struct::loop() { ++sentences_received; length_last_received = last_sentence.length(); } + # ifndef LIMIT_BUILD_SIZE + else if (handle_binary && last_sentence.isEmpty() && !sentence_part.isEmpty()) { // Receive binary data (no end-marker) + fullSentenceReceived = true; + last_sentence = sentence_part; + sentence_part = EMPTY_STRING; + ++sentences_received; + length_last_received = last_sentence.length(); + } + # endif // ifndef LIMIT_BUILD_SIZE + return fullSentenceReceived; } diff --git a/src/src/PluginStructs/P087_data_struct.h b/src/src/PluginStructs/P087_data_struct.h index 031e88a52..474c0d1f3 100644 --- a/src/src/PluginStructs/P087_data_struct.h +++ b/src/src/PluginStructs/P087_data_struct.h @@ -21,6 +21,31 @@ # define P87_Nchars 128 # define P87_MAX_CAPTURE_INDEX 32 +# define P087_BAUDRATE PCONFIG_LONG(0) +# define P087_BAUDRATE_LABEL PCONFIG_LABEL(0) +# define P087_SERIAL_CONFIG PCONFIG_LONG(1) + +# define P087_QUERY_VALUE 0 // Temp placement holder until we know what selectors are needed. +# define P087_NR_OUTPUT_OPTIONS 1 + +# define P087_NR_OUTPUT_VALUES 1 +# define P087_QUERY1_CONFIG_POS 3 + +# define P087_DEFAULT_BAUDRATE 38400 + +# define P087_READ_BIN_LABEL PCONFIG_LABEL(1) +# define P087_EVENT_HEX_LABEL PCONFIG_LABEL(2) +# define P087_FIXED_LENGTH_LABEL PCONFIG_LABEL(3) +# define P087_CONFIG_FLAGS PCONFIG_LONG(2) +# define P087_FLAG_READ_BIN 0 +# define P087_FLAG_EVENT_HEX 1 +# define P087_FLAG_FIXED_LENGTH 2 // 8 bit +# define P087_CONFIG_SET_READ_BIN(S) (bitWrite(P087_CONFIG_FLAGS, P087_FLAG_READ_BIN, (S))) +# define P087_CONFIG_GET_READ_BIN (bitRead(P087_CONFIG_FLAGS, P087_FLAG_READ_BIN)) +# define P087_CONFIG_SET_EVENT_HEX(S) (bitWrite(P087_CONFIG_FLAGS, P087_FLAG_EVENT_HEX, (S))) +# define P087_CONFIG_GET_EVENT_HEX (bitRead(P087_CONFIG_FLAGS, P087_FLAG_EVENT_HEX)) +# define P087_CONFIG_SET_FIXED_LENGTH(S) (set8BitToUL(P087_CONFIG_FLAGS, P087_FLAG_FIXED_LENGTH, (S))) +# define P087_CONFIG_GET_FIXED_LENGTH (get8BitFromUL(P087_CONFIG_FLAGS, P087_FLAG_FIXED_LENGTH)) enum P087_Filter_Comp { Equal = 0, @@ -115,6 +140,25 @@ public: bool plugin_get_config_value(struct EventStruct *event, String & string); + # ifndef LIMIT_BUILD_SIZE + void setHandleBinary(bool state) { + handle_binary = state; + } + + void setEventAsHex(bool state) { + event_hex = state; + } + + bool isEventAsHex() const { + return event_hex; + } + + void setFixedLength(uint8_t value) { + fixed_length = value; + } + + # endif // ifndef LIMIT_BUILD_SIZE + private: bool max_length_reached() const; @@ -133,6 +177,11 @@ private: bool capture_index_used[P87_MAX_CAPTURE_INDEX] = { 0 }; bool capture_index_must_not_match[P87_MAX_CAPTURE_INDEX] = { 0 }; bool regex_empty = false; + # ifndef LIMIT_BUILD_SIZE + bool handle_binary = false; + bool event_hex = false; + uint8_t fixed_length{}; + # endif // ifndef LIMIT_BUILD_SIZE }; From 19d1b1be74ae6ff989a191c9a656ec524cf5a7df Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Tue, 23 Dec 2025 16:01:12 +0100 Subject: [PATCH 2/4] [P087] Update documentation --- docs/source/Plugin/P087.rst | 14 ++++++++++++++ .../Plugin/P087_DeviceConfiguration.png | Bin 42894 -> 52178 bytes 2 files changed, 14 insertions(+) diff --git a/docs/source/Plugin/P087.rst b/docs/source/Plugin/P087.rst index fe50fe1d2..df4f1420d 100644 --- a/docs/source/Plugin/P087.rst +++ b/docs/source/Plugin/P087.rst @@ -90,6 +90,18 @@ Statistic data is only visible if the plugin is configured and enabled. This shows the latest data received and some statistics. +Data options +^^^^^^^^^^^^ + +(These options are only available if build is without ``LIMIT_BUILD_SIZE`` set) + +* **Receive binary data**: When enabled accepts any character for input. Does not terminate on a CR character received, but on end of data (no more bytes available), or when using the **Fixed length input data** setting. + +* **Fixed length input data**: When 0 this feature is disabled. When set > 0 (max. length 255 characters), reading is stopped after this number of characters. Best used for reading binary data. + +* **Event with hex. data (no prefix)**: When checked will generate the event with the received data converted to hexadecimal data (length is doubled), without a prefix (often hex data is prefixed with ``0x``). Data is still filtered (when enabled) and proxied *without* conversion! + + .. include:: DataAcquisition.repl * **Interval** By default, Interval will be set to 60 sec. @@ -226,6 +238,8 @@ Change log .. versionchanged:: 2.0 ... + |added| 2025-12-23 Add support for binary data, fixed length input and convert event data to hex. + |added| 2024-02-25 Add support for ``serialproxy_test`` command and retrieving the separate groups from parsed regex. |added| 2023-03-22 Add support for writing any binary data out via the serial port. diff --git a/docs/source/Plugin/P087_DeviceConfiguration.png b/docs/source/Plugin/P087_DeviceConfiguration.png index a7215ef2161c44f9f8a047119b8509752d5c1819..b00b977d4918f0cba9af2438e12a109a29573254 100644 GIT binary patch literal 52178 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 From e3f6557e18ef845de4c516ca66f9f7bb331d82c7 Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Tue, 23 Dec 2025 16:23:38 +0100 Subject: [PATCH 3/4] [P087] Add to `ENERGY` build (ESP32 only) --- docs/source/Plugin/_plugin_substitutions_p08x.repl | 2 +- src/src/CustomBuild/define_plugin_sets.h | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/source/Plugin/_plugin_substitutions_p08x.repl b/docs/source/Plugin/_plugin_substitutions_p08x.repl index 691078412..506a7cc6b 100644 --- a/docs/source/Plugin/_plugin_substitutions_p08x.repl +++ b/docs/source/Plugin/_plugin_substitutions_p08x.repl @@ -93,7 +93,7 @@ .. |P087_type| replace:: :cyan:`Communication` .. |P087_typename| replace:: :cyan:`Communication - SerialProxy` .. |P087_porttype| replace:: `Serial` -.. |P087_status| replace:: :yellow:`COLLECTION C` +.. |P087_status| replace:: :yellow:`COLLECTION C` :yellow:`ENERGY` .. |P087_github| replace:: P087_SerialProxy.ino .. _P087_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/_P087_SerialProxy.ino .. |P087_usedby| replace:: `.` diff --git a/src/src/CustomBuild/define_plugin_sets.h b/src/src/CustomBuild/define_plugin_sets.h index a16c42ee5..1b14430b7 100644 --- a/src/src/CustomBuild/define_plugin_sets.h +++ b/src/src/CustomBuild/define_plugin_sets.h @@ -1851,6 +1851,9 @@ To create/register a plugin, you have to : #ifndef USES_P085 #define USES_P085 // AcuDC24x #endif + #if !defined(USES_P087) && defined(ESP32) + #define USES_P087 // SerialProxy + #endif #ifndef USES_P089 #define USES_P089 // Ping #endif From 56cc30d1bac01926b60214114dea207c2d97c2da Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Tue, 23 Dec 2025 17:09:19 +0100 Subject: [PATCH 4/4] [P087] Use PCONFIG_ULONG to store new config flags --- src/src/PluginStructs/P087_data_struct.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/src/PluginStructs/P087_data_struct.h b/src/src/PluginStructs/P087_data_struct.h index 474c0d1f3..8f888174e 100644 --- a/src/src/PluginStructs/P087_data_struct.h +++ b/src/src/PluginStructs/P087_data_struct.h @@ -36,7 +36,7 @@ # define P087_READ_BIN_LABEL PCONFIG_LABEL(1) # define P087_EVENT_HEX_LABEL PCONFIG_LABEL(2) # define P087_FIXED_LENGTH_LABEL PCONFIG_LABEL(3) -# define P087_CONFIG_FLAGS PCONFIG_LONG(2) +# define P087_CONFIG_FLAGS PCONFIG_ULONG(2) # define P087_FLAG_READ_BIN 0 # define P087_FLAG_EVENT_HEX 1 # define P087_FLAG_FIXED_LENGTH 2 // 8 bit