From 4cd1d80c74212dd27010b27d3afe58f8681a90ac Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Fri, 25 Oct 2024 22:35:22 +0200 Subject: [PATCH 01/18] [P176] Add plugin Communication - Victron VE.Direct --- src/_P176_VE_Direct.ino | 198 +++++++++++ src/src/CustomBuild/define_plugin_sets.h | 6 + src/src/PluginStructs/P176_data_struct.cpp | 370 +++++++++++++++++++++ src/src/PluginStructs/P176_data_struct.h | 101 ++++++ 4 files changed, 675 insertions(+) create mode 100644 src/_P176_VE_Direct.ino create mode 100644 src/src/PluginStructs/P176_data_struct.cpp create mode 100644 src/src/PluginStructs/P176_data_struct.h diff --git a/src/_P176_VE_Direct.ino b/src/_P176_VE_Direct.ino new file mode 100644 index 0000000000..22829f055d --- /dev/null +++ b/src/_P176_VE_Direct.ino @@ -0,0 +1,198 @@ +#include "_Plugin_Helper.h" +#ifdef USES_P176 + +// ####################################################################################################### +// ############################# Plugin 176: Communication - Victron VE.Direct ########################### +// ####################################################################################################### + +/** + * 2024-10-22 tonhuisman: Add checksum handling, + * Add conversion factors to get more usable values like V, A, Ah, %. Based on VE.Direct protocol manual v. 3.3 + * 2024-10-20 tonhuisman: Start plugin for Victron VE.Direct protocol reader + * Using entity fields as documented here: https://github.com/KinDR007/VictronMPPT-ESPHOME + **/ + +# define PLUGIN_176 +# define PLUGIN_ID_176 176 +# define PLUGIN_NAME_176 "Communication - Victron VE.Direct" +# define PLUGIN_VALUENAME1_176 "V" // battery_voltage +# define PLUGIN_VALUENAME2_176 "I" // battery_current +# define PLUGIN_VALUENAME3_176 "P" // instantaneous_power +# define PLUGIN_VALUENAME4_176 "ERR" // error_code + +# include "./src/PluginStructs/P176_data_struct.h" + +# include + +boolean Plugin_176(uint8_t function, struct EventStruct *event, String& string) +{ + boolean success = false; + + switch (function) + { + case PLUGIN_DEVICE_ADD: + { + Device[++deviceCount].Number = PLUGIN_ID_176; + Device[deviceCount].Type = DEVICE_TYPE_SERIAL; + Device[deviceCount].VType = Sensor_VType::SENSOR_TYPE_QUAD; + Device[deviceCount].Ports = 0; + Device[deviceCount].FormulaOption = true; + Device[deviceCount].ValueCount = 4; + Device[deviceCount].SendDataOption = true; + Device[deviceCount].TimerOption = true; + Device[deviceCount].TimerOptional = true; + Device[deviceCount].PluginStats = true; + + break; + } + + case PLUGIN_GET_DEVICENAME: + { + string = F(PLUGIN_NAME_176); + + break; + } + + case PLUGIN_GET_DEVICEVALUENAMES: + { + strcpy_P(ExtraTaskSettings.TaskDeviceValueNames[0], PSTR(PLUGIN_VALUENAME1_176)); + strcpy_P(ExtraTaskSettings.TaskDeviceValueNames[1], PSTR(PLUGIN_VALUENAME2_176)); + strcpy_P(ExtraTaskSettings.TaskDeviceValueNames[2], PSTR(PLUGIN_VALUENAME3_176)); + strcpy_P(ExtraTaskSettings.TaskDeviceValueNames[3], PSTR(PLUGIN_VALUENAME4_176)); + + break; + } + + case PLUGIN_SET_DEFAULTS: + { + CONFIG_PORT = static_cast(ESPEasySerialPort::serial1); // Serial1 port + int rxPin = 0; + int txPin = 0; + const ESPEasySerialPort port = static_cast(CONFIG_PORT); + + ESPeasySerialType::getSerialTypePins(port, rxPin, txPin); + CONFIG_PIN1 = rxPin; + CONFIG_PIN2 = txPin; + P176_SERIAL_BAUDRATE = P176_DEFAULT_BAUDRATE; + P176_RX_WAIT = P176_DEFAULT_RX_WAIT; + P176_SET_LED_PIN(-1); + } + + case PLUGIN_WEBFORM_SHOW_CONFIG: + { + string += serialHelper_getSerialTypeLabel(event); + success = true; + break; + } + + case PLUGIN_GET_DEVICEGPIONAMES: + { + serialHelper_getGpioNames(event); + break; + } + + case PLUGIN_WEBFORM_SHOW_GPIO_DESCR: + { + string = strformat(F("LED: %s"), formatGpioLabel(P176_GET_LED_PIN, false).c_str()); + + if (validGpio(P176_GET_LED_PIN) && P176_GET_LED_INVERTED) { + string += F(" (inv)"); + } + success = true; + break; + } + + case PLUGIN_WEBFORM_LOAD: + { + addFormNumericBox(F("Baud Rate"), F("pbaud"), P176_SERIAL_BAUDRATE, 0); + uint8_t serialConfChoice = serialHelper_convertOldSerialConfig(P176_SERIAL_CONFIG); + serialHelper_serialconfig_webformLoad(event, serialConfChoice); + + addFormNumericBox(F("RX Receive Timeout"), F("prxwait"), P176_RX_WAIT, 0, 200); + addUnit(F("mSec")); + # if P176_FAIL_CHECKSUM + addFormCheckBox(F("Ignore data on checksum error"), F("pchksm"), P176_GET_FAIL_CHECKSUM); + # endif // if P176_FAIL_CHECKSUM + + { // Led settings + addFormSubHeader(F("Led")); + + addFormPinSelect(PinSelectPurpose::Generic_output, F("Led pin"), F("pledpin"), P176_GET_LED_PIN); + addFormCheckBox(F("Led inverted"), F("pledinv"), P176_GET_LED_INVERTED); + } + + { + P176_data_struct *P176_data = static_cast(getPluginTaskData(event->TaskIndex)); + + if ((nullptr != P176_data) && (P176_data->plugin_size_current_data() > 0)) { + addFormSubHeader(F("Current data")); + addRowLabel(F("Recently received data")); + P176_data->plugin_show_current_data(); + } + } + success = true; + break; + } + + case PLUGIN_WEBFORM_SAVE: + { + P176_SERIAL_BAUDRATE = getFormItemInt(F("pbaud")); + P176_SERIAL_CONFIG = serialHelper_serialconfig_webformSave(); + P176_RX_WAIT = getFormItemInt(F("prxwait")); + P176_SET_LED_PIN(getFormItemInt(F("pledpin"))); + P176_SET_LED_INVERTED(isFormItemChecked(F("pledinv"))); + # if P176_FAIL_CHECKSUM + P176_SET_FAIL_CHECKSUM(isFormItemChecked(F("pchksm"))); + # endif // if P176_FAIL_CHECKSUM + + success = true; + break; + } + + case PLUGIN_INIT: + { + initPluginTaskData(event->TaskIndex, new (std::nothrow) P176_data_struct(event)); + P176_data_struct *P176_data = static_cast(getPluginTaskData(event->TaskIndex)); + + success = (nullptr != P176_data) && P176_data->init(); + int8_t _ledPin = P176_GET_LED_PIN; + + if (validGpio(_ledPin)) { + DIRECT_PINMODE_OUTPUT(_ledPin); + DIRECT_pinWrite(_ledPin, P176_GET_LED_INVERTED ? 1 : 0); // Led off + } + + break; + } + + case PLUGIN_READ: + { + P176_data_struct *P176_data = static_cast(getPluginTaskData(event->TaskIndex)); + + success = (nullptr != P176_data) && P176_data->plugin_read(event); + + break; + } + + case PLUGIN_TEN_PER_SECOND: + { + P176_data_struct *P176_data = static_cast(getPluginTaskData(event->TaskIndex)); + + success = (nullptr != P176_data) && P176_data->plugin_ten_per_second(event); + + break; + } + + case PLUGIN_GET_CONFIG_VALUE: + { + P176_data_struct *P176_data = static_cast(getPluginTaskData(event->TaskIndex)); + + success = (nullptr != P176_data) && P176_data->plugin_get_config_value(event, string); + + break; + } + } + return success; +} + +#endif // USES_P176 diff --git a/src/src/CustomBuild/define_plugin_sets.h b/src/src/CustomBuild/define_plugin_sets.h index bda798b336..9655d24186 100644 --- a/src/src/CustomBuild/define_plugin_sets.h +++ b/src/src/CustomBuild/define_plugin_sets.h @@ -1747,6 +1747,9 @@ To create/register a plugin, you have to : #if !defined(USES_P148) && defined(ESP32) #define USES_P148 // Sonoff POWR3xxD and THR3xxD display #endif + #if !defined(USES_P176) && defined(ESP32) + #define USES_P176 // Communication - Victron VE.Direct + #endif #endif // ifdef PLUGIN_ENERGY_COLLECTION @@ -2482,6 +2485,9 @@ To create/register a plugin, you have to : #ifndef USES_P173 #define USES_P173 // Environment - SHTC3 #endif + #ifndef USES_P176 + #define USES_P176 // Communication - Victron VE.Direct + #endif // Controllers #ifndef USES_C015 diff --git a/src/src/PluginStructs/P176_data_struct.cpp b/src/src/PluginStructs/P176_data_struct.cpp new file mode 100644 index 0000000000..3efd5e2ec4 --- /dev/null +++ b/src/src/PluginStructs/P176_data_struct.cpp @@ -0,0 +1,370 @@ +#include "../PluginStructs/P176_data_struct.h" + +#ifdef USES_P176 + +# include + +/************************************************************************** +* Constructor +**************************************************************************/ +P176_data_struct::P176_data_struct(struct EventStruct *event) { + _port = static_cast(CONFIG_PORT); + _baud = P176_SERIAL_BAUDRATE; + _config = P176_SERIAL_CONFIG; + _rxPin = CONFIG_PIN1; + _txPin = CONFIG_PIN2; + _ledPin = P176_GET_LED_PIN; + _ledInverted = P176_GET_LED_INVERTED; + # if P176_FAIL_CHECKSUM + _failChecksum = P176_GET_FAIL_CHECKSUM; + # endif // if P176_FAIL_CHECKSUM +} + +P176_data_struct::~P176_data_struct() { + delete _serial; + _data.clear(); +} + +bool P176_data_struct::init() { + delete _serial; + + if (ESPEasySerialPort::not_set != _port) { + _serial = new (std::nothrow) ESPeasySerial(_port, _rxPin, _txPin); + + if (nullptr != _serial) { + # if defined(ESP8266) + _serial->begin(_baud, (SerialConfig)_config); + # elif defined(ESP32) + _serial->begin(_baud, _config); + # endif // if defined(ESP8266) + # ifndef BUILD_NO_DEBUG + addLog(LOG_LEVEL_DEBUG, F("Victron: Serial port started")); + # endif // ifndef BUILD_NO_DEBUG + } + } + + return isInitialized(); +} + +/***************************************************** +* plugin_read +*****************************************************/ +bool P176_data_struct::plugin_read(struct EventStruct *event) { + bool success = false; + + if (isInitialized()) { + for (uint8_t i = 0; i < VARS_PER_TASK; ++i) { + String key = getTaskValueName(event->TaskIndex, i); + key.toLowerCase(); + String value; + + if (getReceivedValue(key, value)) { + int32_t iValue = 0; + const float fFactor = getKeyFactor(key); + + if (validIntFromString(value, iValue)) { + UserVar.setFloat(event->TaskIndex, i, iValue * fFactor); + success = true; + } + } + } + } + + return success; +} + +// In order of most values included +// mV, mAh +const char p176_factor_1000[] PROGMEM = + "v|v2|v3|vs|vm|vpv|i|i2|i3|il|ce|h1|h2|h3|h6|h7|h8|h15|h16" +; + +// 0.01 kWh, 0.01 V +const char p176_factor_0_01[] PROGMEM = + "h17|h18|h19|h20|h22|ac_out_v|dc_in_v|" +; + +// promille +const char p176_factor_10[] PROGMEM = + "dm|soc|" +; + +// 0.1 A +const char p176_factor_0_1[] PROGMEM = + "ac_out_i|dc_in_i|" +; + +float P176_data_struct::getKeyFactor(const String& key) const { + if (key.isEmpty()) { return 1.0f; } + + if (GetCommandCode(key.c_str(), p176_factor_1000) > -1) { + return 0.001f; + } + + if (GetCommandCode(key.c_str(), p176_factor_0_01) > -1) { + return 100.0f; + } + + if (GetCommandCode(key.c_str(), p176_factor_10) > -1) { + return 0.1f; + } + + if (GetCommandCode(key.c_str(), p176_factor_0_1) > -1) { + return 10.0f; + } + + return 1.0f; +} + +/***************************************************** +* plugin_ten_per_second +*****************************************************/ +bool P176_data_struct::plugin_ten_per_second(struct EventStruct *event) { + bool success = false; + + if (isInitialized()) { + handleSerial(); // Read and process data + success = true; + } + + return success; +} + +/***************************************************** +* plugin_get_config_value +*****************************************************/ +bool P176_data_struct::plugin_get_config_value(struct EventStruct *event, + String & string) { + bool success = false; + + if (isInitialized()) { + const String key = parseString(string, 1); + const String decimals = parseString(string, 2); // Optional decimals, default = 2, neg. = trim trailing zeroes + String value; + + if (getReceivedValue(key, value)) { + int32_t iValue = 0; + const float fFactor = getKeyFactor(key); + + if (!essentiallyEqual(fFactor, 1.0f) && validIntFromString(value, iValue)) { + int32_t nrDecimals = 2; + validIntFromString(decimals, nrDecimals); + string = toString(iValue * fFactor, abs(nrDecimals), nrDecimals < 0); + } else { + string = value; + } + success = true; + } + } + + return success; +} + +size_t P176_data_struct::plugin_size_current_data() { + return _data.size(); +} + +bool P176_data_struct::plugin_show_current_data() { + bool success = false; + + if (_data.size() > 0) { + html_table(EMPTY_STRING); // Sub-table + html_table_header(F("Name"), 125); + html_table_header(F("Data"), 250); + html_table_header(F("Value"), 125); + + for (auto it = _data.begin(); it != _data.end(); ++it) { + html_TR_TD(); + addHtml(it->first); + html_TD(); + addHtml(it->second); + html_TD(); + int32_t iValue = 0; + const float fFactor = getKeyFactor(it->first); + + if (!essentiallyEqual(fFactor, 1.0f) && validIntFromString(it->second, iValue)) { + addHtml(toString(iValue * fFactor, 3, true)); + } + } + html_end_table(); + } + addHtml(F("Recent checksum errors: ")); + addHtmlInt(_checksumErrors); + return success; +} + +// Support functions + +/***************************************************** +* getReceivedValue +*****************************************************/ +bool P176_data_struct::getReceivedValue(const String& key, + String & value) { + bool success = false; + + if (!key.isEmpty()) { // Find is case-sensitive + auto it = _data.find(key); + + if (it != _data.end()) { + value = it->second; + success = true; + } + + # if P176_DEBUG + + if (loglevelActiveFor(LOG_LEVEL_INFO)) { + addLog(LOG_LEVEL_INFO, strformat(F("P176 : getReceivedValue Key:%s, value:%s"), + key.c_str(), value.c_str())); + } + # endif // if P176_DEBUG + } + return success; +} + +/***************************************************** +* handleSerial +*****************************************************/ +void P176_data_struct::handleSerial() { + int timeOut = _rxWait; + int maxExtend = 5; + char ch; + String dataLine; + + dataLine.reserve(44); // Should be max. line-length sent, including CR/LF + + do { + if (_serial->available()) { + if (validGpio(_ledPin)) { + DIRECT_pinWrite(_ledPin, _ledInverted ? 0 : 1); + } + + ch = static_cast(_serial->read()); + + # if P176_HANDLE_CHECKSUM + _checksum += static_cast(ch); + _checksum &= 255; + # endif // if P176_HANDLE_CHECKSUM + + if (ch == '\n') { + dataLine += static_cast(ch); // append before processing + processBuffer(dataLine); // Store data + dataLine.clear(); + + # if P176_DEBUG + addLog(LOG_LEVEL_ERROR, strformat(F("P176 : Checksum state: %d"), + static_cast(_checksumState))); + # endif // if P176_DEBUG + # if P176_HANDLE_CHECKSUM + + if (Checksum_state_e::ValidateNext == _checksumState) { + _checksumState = Checksum_state_e::Validating; + } else + if (Checksum_state_e::Starting == _checksumState) { // Start counting after a Checksum was received + _checksumState = Checksum_state_e::Counting; + _checksum = 0; + # ifndef BUILD_NO_DEBUG + addLog(LOG_LEVEL_DEBUG, F("Victron: Start counting for checksum")); + # endif // ifndef BUILD_NO_DEBUG + } + # endif // if P176_HANDLE_CHECKSUM + } else + if (ch == '\t') { + # if P176_HANDLE_CHECKSUM + + if (equals(dataLine, F("Checksum"))) { + if (Checksum_state_e::Counting == _checksumState) { + _checksumState = Checksum_state_e::ValidateNext; + # ifndef BUILD_NO_DEBUG + addLog(LOG_LEVEL_INFO, F("Victron: Validate next checksum")); + # endif // ifndef BUILD_NO_DEBUG + } else { + _checksumState = Checksum_state_e::Starting; + } + } + # endif // if P176_HANDLE_CHECKSUM + dataLine += static_cast(ch); // append after + } else { + dataLine += static_cast(ch); + } + + # if P176_HANDLE_CHECKSUM + + if (Checksum_state_e::Validating == _checksumState) { + if (_checksum != 0) { + _checksumState = Checksum_state_e::Error; // Error if resulting checksum isn't 0 + _checksumErrors++; + addLog(LOG_LEVEL_ERROR, strformat(F("Victron: Checksum error, expected 0 but counted %d"), _checksum)); + } else { + _checksumState = Checksum_state_e::Starting; + _checksumErrors = 0; + addLog(LOG_LEVEL_INFO, strformat(F("Victron: Checksum validated Ok at %d"), _checksum)); + } + + # if P176_FAIL_CHECKSUM + + if ((Checksum_state_e::Error != _checksumState) || !_failChecksum) { + moveTempToData(); + } + # endif // if P176_FAIL_CHECKSUM + } + # endif // if P176_HANDLE_CHECKSUM + + if (validGpio(_ledPin)) { + DIRECT_pinWrite(_ledPin, _ledInverted ? 1 : 0); + } + + timeOut = _rxWait; // if serial received, reset timeout counter + } else { + if (timeOut <= 0) { + if ((_rxWait > 0) && (maxExtend > 0)) { + timeOut = _rxWait; + maxExtend--; + } else { + break; + } + } + delay(1); + --timeOut; + } + } while (true); +} + +/***************************************************** +* processBuffer +*****************************************************/ +void P176_data_struct::processBuffer(const String& message) { + if (!Settings.UseRules || message.isEmpty()) { return; } + const String key = parseString(message, 1, '\t'); + const String value = parseStringToEndKeepCase(message, 2, '\t'); + + # if P176_DEBUG + addLog(LOG_LEVEL_INFO, strformat(F("P176 : Processing data '%s\t%s', checksum: %d"), key.c_str(), value.c_str(), _checksum)); + # endif // if P176_DEBUG + + if (!key.isEmpty() && !value.isEmpty() && !equals(key, F("checksum"))) { + # if P176_FAIL_CHECKSUM + _temp[key] = value; + # else // if P176_FAIL_CHECKSUM + _data[key] = value; + # endif // if P176_FAIL_CHECKSUM + } +} + +# if P176_FAIL_CHECKSUM + +/***************************************************** +* moveTempToData +*****************************************************/ +void P176_data_struct::moveTempToData() { + for (auto it = _temp.begin(); it != _temp.end(); ++it) { + _data[it->first] = it->second; + } + _temp.clear(); + # if P176_DEBUG + addLog(LOG_LEVEL_INFO, F("P176 : Moving _temp to _data")); + # endif // if P176_DEBUG +} + +# endif // if P176_FAIL_CHECKSUM + +#endif // ifdef USES_P176 diff --git a/src/src/PluginStructs/P176_data_struct.h b/src/src/PluginStructs/P176_data_struct.h new file mode 100644 index 0000000000..1a9707613a --- /dev/null +++ b/src/src/PluginStructs/P176_data_struct.h @@ -0,0 +1,101 @@ +#ifndef PLUGINSTRUCTS_P176_DATA_STRUCT_H +#define PLUGINSTRUCTS_P176_DATA_STRUCT_H + +#include "../../_Plugin_Helper.h" +#ifdef USES_P176 + +# include + +# define P176_DEBUG 0 // Enable some extra (development) logging + +# define P176_HANDLE_CHECKSUM 1 // Implement checksum? +# define P176_FAIL_CHECKSUM 1 // Fail/ignore data on checksum errors (optional)? + +# define P176_SERIAL_CONFIG PCONFIG(0) +# define P176_SERIAL_BAUDRATE PCONFIG(1) +# define P176_RX_WAIT PCONFIG(2) + +# define P176_FLAGS PCONFIG_ULONG(0) +# define P176_FLAG_LED_PIN 0 // 8 bit +# define P176_FLAG_LED_INVERTED 8 // 1 bit +# define P176_FLAG_FAIL_CHECKSUM 9 // 1 bit +# define P176_GET_LED_PIN get8BitFromUL(P176_FLAGS, P176_FLAG_LED_PIN) +# define P176_SET_LED_PIN(N) set8BitToUL(P176_FLAGS, P176_FLAG_LED_PIN, N) +# define P176_GET_LED_INVERTED bitRead(P176_FLAGS, P176_FLAG_LED_INVERTED) +# define P176_SET_LED_INVERTED(N) bitWrite(P176_FLAGS, P176_FLAG_LED_INVERTED, N) +# if P176_FAIL_CHECKSUM +# define P176_GET_FAIL_CHECKSUM bitRead(P176_FLAGS, P176_FLAG_FAIL_CHECKSUM) +# define P176_SET_FAIL_CHECKSUM(N) bitWrite(P176_FLAGS, P176_FLAG_FAIL_CHECKSUM, N) +# endif // if P176_FAIL_CHECKSUM + +# define P176_DEFAULT_BAUDRATE 19200 +# define P176_DEFAULT_RX_WAIT 10 + +struct P176_data_struct : public PluginTaskData_base { +public: + + P176_data_struct(struct EventStruct *event); + + P176_data_struct() = delete; + virtual ~P176_data_struct(); + + bool init(); + + bool plugin_read(struct EventStruct *event); + bool plugin_ten_per_second(struct EventStruct *event); + bool plugin_get_config_value(struct EventStruct *event, + String & string); + size_t plugin_size_current_data(); + bool plugin_show_current_data(); + bool isInitialized() const { + return nullptr != _serial; + } + +private: + + float getKeyFactor(const String& key) const; + bool getReceivedValue(const String& key, + String & value); + void handleSerial(); + void processBuffer(const String& message); + # if P176_FAIL_CHECKSUM + void moveTempToData(); + # endif // if P176_FAIL_CHECKSUM + + ESPeasySerial *_serial = nullptr; + + int8_t _ledPin = -1; + bool _ledInverted = false; + ESPEasySerialPort _port = ESPEasySerialPort::not_set; + uint8_t _config = 0; + int8_t _rxPin = -1; + int8_t _txPin = -1; + int _baud = P176_DEFAULT_BAUDRATE; + int _rxWait = 0; + uint32_t _checksumErrors = 0; + + // String _buffer; + # if P176_HANDLE_CHECKSUM + enum class Checksum_state_e: uint8_t { + Undefined = 0, + Starting, + Counting, + ValidateNext, + Validating, + Error, + }; + Checksum_state_e _checksumState = Checksum_state_e::Undefined; + uint16_t _checksum = 0; + bool _failChecksum = false; + # endif // if P176_HANDLE_CHECKSUM + + // Key is stored in lower-case as PLUGIN_GET_CONFIG_VALUE passes in the variable name in lower-case + // FIXME + std::map_data{}; // = { { "i", "Data I" }, { "error", "No error detected" }, { "v", "25.75" } }; + # if P176_FAIL_CHECKSUM + std::map_temp{}; + # endif // if P176_FAIL_CHECKSUM +}; + +#endif // ifdef USES_P176 +#endif // ifndef PLUGINSTRUCTS_P176_DATA_STRUCT_H From 0aecf3b32944f386b12b601115efbb0fd3c76f67 Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Sat, 26 Oct 2024 23:01:42 +0200 Subject: [PATCH 02/18] [P176] Add some features and code improvements --- src/_P176_VE_Direct.ino | 27 ++- src/src/PluginStructs/P176_data_struct.cpp | 238 +++++++++++++-------- src/src/PluginStructs/P176_data_struct.h | 61 ++++-- 3 files changed, 210 insertions(+), 116 deletions(-) diff --git a/src/_P176_VE_Direct.ino b/src/_P176_VE_Direct.ino index 22829f055d..7149842e2d 100644 --- a/src/_P176_VE_Direct.ino +++ b/src/_P176_VE_Direct.ino @@ -6,10 +6,12 @@ // ####################################################################################################### /** + * 2024-10-26 tonhuisman: Add setting for RX buffer size and optional Debug logging. Add Quit log to suppress most logging + * Store original received data names, to show in Device configuration, add default decimals to conversion factors + * Improved serial processing reading per line instead of per data-block, moved to 50/sec * 2024-10-22 tonhuisman: Add checksum handling, * Add conversion factors to get more usable values like V, A, Ah, %. Based on VE.Direct protocol manual v. 3.3 - * 2024-10-20 tonhuisman: Start plugin for Victron VE.Direct protocol reader - * Using entity fields as documented here: https://github.com/KinDR007/VictronMPPT-ESPHOME + * 2024-10-20 tonhuisman: Start plugin for Victron VE.Direct protocol reader, based on Victron documentation **/ # define PLUGIN_176 @@ -74,8 +76,11 @@ boolean Plugin_176(uint8_t function, struct EventStruct *event, String& string) CONFIG_PIN1 = rxPin; CONFIG_PIN2 = txPin; P176_SERIAL_BAUDRATE = P176_DEFAULT_BAUDRATE; + P176_SERIAL_BUFFER = P176_DEFAULT_BUFFER; P176_RX_WAIT = P176_DEFAULT_RX_WAIT; + P176_SET_FAIL_CHECKSUM(P176_DEFAULT_FAIL_CHECKSUM); P176_SET_LED_PIN(-1); + P176_SET_QUIET_LOG(true); } case PLUGIN_WEBFORM_SHOW_CONFIG: @@ -110,6 +115,10 @@ boolean Plugin_176(uint8_t function, struct EventStruct *event, String& string) addFormNumericBox(F("RX Receive Timeout"), F("prxwait"), P176_RX_WAIT, 0, 200); addUnit(F("mSec")); + + addFormNumericBox(F("RX buffersize"), F("pbuffer"), P176_SERIAL_BUFFER, 128, 2048); + addUnit(F("128..2048")); + # if P176_FAIL_CHECKSUM addFormCheckBox(F("Ignore data on checksum error"), F("pchksm"), P176_GET_FAIL_CHECKSUM); # endif // if P176_FAIL_CHECKSUM @@ -130,6 +139,11 @@ boolean Plugin_176(uint8_t function, struct EventStruct *event, String& string) P176_data->plugin_show_current_data(); } } + # if P176_DEBUG + addFormSubHeader(F("Logging")); + addFormCheckBox(F("Enable logging (for debug)"), F("pdebug"), P176_GET_DEBUG_LOG); + # endif // if P176_DEBUG + addFormCheckBox(F("Quiet logging (minimal log)"), F("pquiet"), P176_GET_QUIET_LOG); success = true; break; } @@ -139,11 +153,16 @@ boolean Plugin_176(uint8_t function, struct EventStruct *event, String& string) P176_SERIAL_BAUDRATE = getFormItemInt(F("pbaud")); P176_SERIAL_CONFIG = serialHelper_serialconfig_webformSave(); P176_RX_WAIT = getFormItemInt(F("prxwait")); + P176_SERIAL_BUFFER = getFormItemInt(F("pbuffer")); P176_SET_LED_PIN(getFormItemInt(F("pledpin"))); P176_SET_LED_INVERTED(isFormItemChecked(F("pledinv"))); # if P176_FAIL_CHECKSUM P176_SET_FAIL_CHECKSUM(isFormItemChecked(F("pchksm"))); # endif // if P176_FAIL_CHECKSUM + # if P176_DEBUG + P176_SET_DEBUG_LOG(isFormItemChecked(F("pdebug"))); + # endif // if P176_DEBUG + P176_SET_QUIET_LOG(isFormItemChecked(F("pquiet"))); success = true; break; @@ -174,11 +193,11 @@ boolean Plugin_176(uint8_t function, struct EventStruct *event, String& string) break; } - case PLUGIN_TEN_PER_SECOND: + case PLUGIN_FIFTY_PER_SECOND: { P176_data_struct *P176_data = static_cast(getPluginTaskData(event->TaskIndex)); - success = (nullptr != P176_data) && P176_data->plugin_ten_per_second(event); + success = (nullptr != P176_data) && P176_data->plugin_fifty_per_second(event); break; } diff --git a/src/src/PluginStructs/P176_data_struct.cpp b/src/src/PluginStructs/P176_data_struct.cpp index 3efd5e2ec4..e2ea716d81 100644 --- a/src/src/PluginStructs/P176_data_struct.cpp +++ b/src/src/PluginStructs/P176_data_struct.cpp @@ -8,28 +8,32 @@ * Constructor **************************************************************************/ P176_data_struct::P176_data_struct(struct EventStruct *event) { - _port = static_cast(CONFIG_PORT); - _baud = P176_SERIAL_BAUDRATE; - _config = P176_SERIAL_CONFIG; - _rxPin = CONFIG_PIN1; - _txPin = CONFIG_PIN2; - _ledPin = P176_GET_LED_PIN; - _ledInverted = P176_GET_LED_INVERTED; + _port = static_cast(CONFIG_PORT); + _baud = P176_SERIAL_BAUDRATE; + _config = P176_SERIAL_CONFIG; + _serialBuffer = P176_SERIAL_BUFFER; + _rxPin = CONFIG_PIN1; + _txPin = CONFIG_PIN2; + _ledPin = P176_GET_LED_PIN; + _ledInverted = P176_GET_LED_INVERTED; + _rxWait = P176_RX_WAIT; # if P176_FAIL_CHECKSUM _failChecksum = P176_GET_FAIL_CHECKSUM; # endif // if P176_FAIL_CHECKSUM + # if P176_DEBUG + _debugLog = P176_GET_DEBUG_LOG; + # endif // if P176_DEBUG + _logQuiet = P176_GET_QUIET_LOG; + _dataLine.reserve(44); // Should be max. line-length sent, including CR/LF } P176_data_struct::~P176_data_struct() { delete _serial; - _data.clear(); } bool P176_data_struct::init() { - delete _serial; - if (ESPEasySerialPort::not_set != _port) { - _serial = new (std::nothrow) ESPeasySerial(_port, _rxPin, _txPin); + _serial = new (std::nothrow) ESPeasySerial(_port, _rxPin, _txPin, false, _serialBuffer); if (nullptr != _serial) { # if defined(ESP8266) @@ -49,7 +53,7 @@ bool P176_data_struct::init() { /***************************************************** * plugin_read *****************************************************/ -bool P176_data_struct::plugin_read(struct EventStruct *event) { +bool P176_data_struct::plugin_read(struct EventStruct *event) { bool success = false; if (isInitialized()) { @@ -60,7 +64,8 @@ bool P176_data_struct::plugin_read(struct EventStruct *event) { if (getReceivedValue(key, value)) { int32_t iValue = 0; - const float fFactor = getKeyFactor(key); + int32_t dummy = 0; + const float fFactor = getKeyFactor(key, dummy); if (validIntFromString(value, iValue)) { UserVar.setFloat(event->TaskIndex, i, iValue * fFactor); @@ -94,10 +99,14 @@ const char p176_factor_0_1[] PROGMEM = "ac_out_i|dc_in_i|" ; -float P176_data_struct::getKeyFactor(const String& key) const { +float P176_data_struct::getKeyFactor(const String& key, + int32_t & nrDecimals) const { + nrDecimals = 0; + if (key.isEmpty()) { return 1.0f; } if (GetCommandCode(key.c_str(), p176_factor_1000) > -1) { + nrDecimals = 3; return 0.001f; } @@ -106,6 +115,7 @@ float P176_data_struct::getKeyFactor(const String& key) const { } if (GetCommandCode(key.c_str(), p176_factor_10) > -1) { + nrDecimals = 1; return 0.1f; } @@ -117,9 +127,9 @@ float P176_data_struct::getKeyFactor(const String& key) const { } /***************************************************** -* plugin_ten_per_second +* plugin_fifty_per_second *****************************************************/ -bool P176_data_struct::plugin_ten_per_second(struct EventStruct *event) { +bool P176_data_struct::plugin_fifty_per_second(struct EventStruct *event) { bool success = false; if (isInitialized()) { @@ -134,21 +144,23 @@ bool P176_data_struct::plugin_ten_per_second(struct EventStruct *event) * plugin_get_config_value *****************************************************/ bool P176_data_struct::plugin_get_config_value(struct EventStruct *event, - String & string) { + String & string) { bool success = false; if (isInitialized()) { - const String key = parseString(string, 1); - const String decimals = parseString(string, 2); // Optional decimals, default = 2, neg. = trim trailing zeroes + const String key = parseString(string, 1, '.'); // Decimal point as separator, by convention + const String decimals = parseString(string, 2, '.'); // Optional decimals, neg. = trim trailing zeroes String value; if (getReceivedValue(key, value)) { int32_t iValue = 0; - const float fFactor = getKeyFactor(key); + int32_t nrDecimals = 0; + const float fFactor = getKeyFactor(key, nrDecimals); - if (!essentiallyEqual(fFactor, 1.0f) && validIntFromString(value, iValue)) { - int32_t nrDecimals = 2; - validIntFromString(decimals, nrDecimals); + if (validIntFromString(value, iValue)) { + if (!decimals.isEmpty()) { + validIntFromString(decimals, nrDecimals); + } string = toString(iValue * fFactor, abs(nrDecimals), nrDecimals < 0); } else { string = value; @@ -160,11 +172,11 @@ bool P176_data_struct::plugin_get_config_value(struct EventStruct *event, return success; } -size_t P176_data_struct::plugin_size_current_data() { +size_t P176_data_struct::plugin_size_current_data() const { return _data.size(); } -bool P176_data_struct::plugin_show_current_data() { +bool P176_data_struct::plugin_show_current_data() const { bool success = false; if (_data.size() > 0) { @@ -175,15 +187,22 @@ bool P176_data_struct::plugin_show_current_data() { for (auto it = _data.begin(); it != _data.end(); ++it) { html_TR_TD(); - addHtml(it->first); + const auto nm = _names.find(it->first); + + if (nm != _names.end()) { + addHtml(nm->second); + } else { + addHtml(it->first); + } html_TD(); addHtml(it->second); html_TD(); int32_t iValue = 0; - const float fFactor = getKeyFactor(it->first); + int32_t nrDecimals = 0; + const float fFactor = getKeyFactor(it->first, nrDecimals); - if (!essentiallyEqual(fFactor, 1.0f) && validIntFromString(it->second, iValue)) { - addHtml(toString(iValue * fFactor, 3, true)); + if (validIntFromString(it->second, iValue)) { + addHtml(toString(iValue * fFactor, abs(nrDecimals), nrDecimals < 0)); } } html_end_table(); @@ -199,20 +218,22 @@ bool P176_data_struct::plugin_show_current_data() { * getReceivedValue *****************************************************/ bool P176_data_struct::getReceivedValue(const String& key, - String & value) { + String & value) const { bool success = false; if (!key.isEmpty()) { // Find is case-sensitive - auto it = _data.find(key); + // const auto it = _data.find(key); - if (it != _data.end()) { - value = it->second; + // if (it != _data.end()) { + // value = it->second; + if (_data.contains(key)) { + value = _data.at(key); success = true; } # if P176_DEBUG - if (loglevelActiveFor(LOG_LEVEL_INFO)) { + if (loglevelActiveFor(LOG_LEVEL_INFO) && _debugLog) { addLog(LOG_LEVEL_INFO, strformat(F("P176 : getReceivedValue Key:%s, value:%s"), key.c_str(), value.c_str())); } @@ -225,12 +246,10 @@ bool P176_data_struct::getReceivedValue(const String& key, * handleSerial *****************************************************/ void P176_data_struct::handleSerial() { - int timeOut = _rxWait; - int maxExtend = 5; - char ch; - String dataLine; - - dataLine.reserve(44); // Should be max. line-length sent, including CR/LF + int timeOut = _rxWait; + int maxExtend = 3; + bool enough = false; + uint8_t ch; do { if (_serial->available()) { @@ -241,50 +260,64 @@ void P176_data_struct::handleSerial() { ch = static_cast(_serial->read()); # if P176_HANDLE_CHECKSUM - _checksum += static_cast(ch); - _checksum &= 255; + _checksum += ch; # endif // if P176_HANDLE_CHECKSUM - if (ch == '\n') { - dataLine += static_cast(ch); // append before processing - processBuffer(dataLine); // Store data - dataLine.clear(); - - # if P176_DEBUG - addLog(LOG_LEVEL_ERROR, strformat(F("P176 : Checksum state: %d"), - static_cast(_checksumState))); - # endif // if P176_DEBUG - # if P176_HANDLE_CHECKSUM - - if (Checksum_state_e::ValidateNext == _checksumState) { - _checksumState = Checksum_state_e::Validating; - } else - if (Checksum_state_e::Starting == _checksumState) { // Start counting after a Checksum was received - _checksumState = Checksum_state_e::Counting; - _checksum = 0; - # ifndef BUILD_NO_DEBUG - addLog(LOG_LEVEL_DEBUG, F("Victron: Start counting for checksum")); - # endif // ifndef BUILD_NO_DEBUG - } - # endif // if P176_HANDLE_CHECKSUM - } else - if (ch == '\t') { - # if P176_HANDLE_CHECKSUM - - if (equals(dataLine, F("Checksum"))) { - if (Checksum_state_e::Counting == _checksumState) { - _checksumState = Checksum_state_e::ValidateNext; - # ifndef BUILD_NO_DEBUG - addLog(LOG_LEVEL_INFO, F("Victron: Validate next checksum")); - # endif // ifndef BUILD_NO_DEBUG - } else { - _checksumState = Checksum_state_e::Starting; + switch (ch) { + case '\r': // Ignore as it'll be stripped off + break; + case '\n': + // no need to append before processing, as it's stripped off + processBuffer(_dataLine); // Store data + _dataLine.clear(); + enough = true; + + # if P176_DEBUG + + if (loglevelActiveFor(LOG_LEVEL_INFO) && _debugLog) { + addLog(LOG_LEVEL_INFO, strformat(F("P176 : Checksum state: %d"), + static_cast(_checksumState))); } - } - # endif // if P176_HANDLE_CHECKSUM - dataLine += static_cast(ch); // append after - } else { - dataLine += static_cast(ch); + # endif // if P176_DEBUG + # if P176_HANDLE_CHECKSUM + + if (Checksum_state_e::ValidateNext == _checksumState) { + _checksumState = Checksum_state_e::Validating; + } else + if (Checksum_state_e::Starting == _checksumState) { // Start counting after a Checksum was received + _checksumState = Checksum_state_e::Counting; + _checksum = 0; + # if P176_DEBUG + + if (loglevelActiveFor(LOG_LEVEL_INFO) && _debugLog) { + addLog(LOG_LEVEL_INFO, F("P176 : Start counting for checksum")); + } + # endif // if P176_DEBUG + } + # endif // if P176_HANDLE_CHECKSUM + break; + case '\t': + # if P176_HANDLE_CHECKSUM + + if (equals(_dataLine, F("Checksum"))) { + if (Checksum_state_e::Counting == _checksumState) { + _checksumState = Checksum_state_e::ValidateNext; + # if P176_DEBUG + + if (loglevelActiveFor(LOG_LEVEL_INFO) && _debugLog) { + addLog(LOG_LEVEL_INFO, F("P176 : Validate next checksum")); + } + # endif // if P176_DEBUG + } else { + _checksumState = Checksum_state_e::Starting; + } + } + # endif // if P176_HANDLE_CHECKSUM + _dataLine += static_cast(ch); // append after + break; + default: + _dataLine += static_cast(ch); + break; } # if P176_HANDLE_CHECKSUM @@ -293,11 +326,17 @@ void P176_data_struct::handleSerial() { if (_checksum != 0) { _checksumState = Checksum_state_e::Error; // Error if resulting checksum isn't 0 _checksumErrors++; - addLog(LOG_LEVEL_ERROR, strformat(F("Victron: Checksum error, expected 0 but counted %d"), _checksum)); + + if (loglevelActiveFor(LOG_LEVEL_ERROR)) { + addLog(LOG_LEVEL_ERROR, strformat(F("Victron: Checksum error, expected 0 but got %d"), _checksum)); + } } else { _checksumState = Checksum_state_e::Starting; _checksumErrors = 0; - addLog(LOG_LEVEL_INFO, strformat(F("Victron: Checksum validated Ok at %d"), _checksum)); + + if (loglevelActiveFor(LOG_LEVEL_INFO) && !_logQuiet) { + addLog(LOG_LEVEL_INFO, F("Victron: Checksum validated Ok")); + } } # if P176_FAIL_CHECKSUM @@ -320,28 +359,44 @@ void P176_data_struct::handleSerial() { timeOut = _rxWait; maxExtend--; } else { - break; + enough = true; + # if P176_DEBUG + # ifndef BUILD_NO_DEBUG + + if (loglevelActiveFor(LOG_LEVEL_DEBUG) && _debugLog) { + addLog(LOG_LEVEL_DEBUG, F("P176 : RX Receive Timeout reached")); + } + # endif // ifndef BUILD_NO_DEBUG + # endif // if P176_DEBUG } } delay(1); --timeOut; } - } while (true); + } while (!enough); } /***************************************************** * processBuffer *****************************************************/ void P176_data_struct::processBuffer(const String& message) { - if (!Settings.UseRules || message.isEmpty()) { return; } - const String key = parseString(message, 1, '\t'); + if (message.isEmpty()) { return; } + const String name = parseStringKeepCase(message, 1, '\t'); const String value = parseStringToEndKeepCase(message, 2, '\t'); + String key(name); + key.toLowerCase(); # if P176_DEBUG - addLog(LOG_LEVEL_INFO, strformat(F("P176 : Processing data '%s\t%s', checksum: %d"), key.c_str(), value.c_str(), _checksum)); + + if (loglevelActiveFor(LOG_LEVEL_INFO) && _debugLog) { + addLog(LOG_LEVEL_INFO, strformat(F("P176 : Processing data '%s\t%s', checksum: %d"), name.c_str(), value.c_str(), _checksum)); + } # endif // if P176_DEBUG if (!key.isEmpty() && !value.isEmpty() && !equals(key, F("checksum"))) { + if (!_names.contains(key)) { + _names[key] = name; // Store original name + } # if P176_FAIL_CHECKSUM _temp[key] = value; # else // if P176_FAIL_CHECKSUM @@ -359,10 +414,13 @@ void P176_data_struct::moveTempToData() { for (auto it = _temp.begin(); it != _temp.end(); ++it) { _data[it->first] = it->second; } - _temp.clear(); # if P176_DEBUG - addLog(LOG_LEVEL_INFO, F("P176 : Moving _temp to _data")); + + if (loglevelActiveFor(LOG_LEVEL_INFO) && _debugLog) { + addLog(LOG_LEVEL_INFO, strformat(F("P176 : Moving %d _temp items to _data"), _temp.size())); + } # endif // if P176_DEBUG + _temp.clear(); } # endif // if P176_FAIL_CHECKSUM diff --git a/src/src/PluginStructs/P176_data_struct.h b/src/src/PluginStructs/P176_data_struct.h index 1a9707613a..18b6d5f85b 100644 --- a/src/src/PluginStructs/P176_data_struct.h +++ b/src/src/PluginStructs/P176_data_struct.h @@ -6,19 +6,22 @@ # include -# define P176_DEBUG 0 // Enable some extra (development) logging +# define P176_DEBUG 1 // Enable some extra (development) logging # define P176_HANDLE_CHECKSUM 1 // Implement checksum? # define P176_FAIL_CHECKSUM 1 // Fail/ignore data on checksum errors (optional)? # define P176_SERIAL_CONFIG PCONFIG(0) -# define P176_SERIAL_BAUDRATE PCONFIG(1) +# define P176_SERIAL_BAUDRATE PCONFIG_LONG(1) # define P176_RX_WAIT PCONFIG(2) +# define P176_SERIAL_BUFFER PCONFIG(3) # define P176_FLAGS PCONFIG_ULONG(0) -# define P176_FLAG_LED_PIN 0 // 8 bit -# define P176_FLAG_LED_INVERTED 8 // 1 bit -# define P176_FLAG_FAIL_CHECKSUM 9 // 1 bit +# define P176_FLAG_LED_PIN 0 // 8 bit +# define P176_FLAG_LED_INVERTED 8 // 1 bit +# define P176_FLAG_FAIL_CHECKSUM 9 // 1 bit +# define P176_FLAG_DEBUG_LOG 10 // 1 bit +# define P176_FLAG_LOG_QUIET 11 // 1 bit # define P176_GET_LED_PIN get8BitFromUL(P176_FLAGS, P176_FLAG_LED_PIN) # define P176_SET_LED_PIN(N) set8BitToUL(P176_FLAGS, P176_FLAG_LED_PIN, N) # define P176_GET_LED_INVERTED bitRead(P176_FLAGS, P176_FLAG_LED_INVERTED) @@ -27,9 +30,17 @@ # define P176_GET_FAIL_CHECKSUM bitRead(P176_FLAGS, P176_FLAG_FAIL_CHECKSUM) # define P176_SET_FAIL_CHECKSUM(N) bitWrite(P176_FLAGS, P176_FLAG_FAIL_CHECKSUM, N) # endif // if P176_FAIL_CHECKSUM +# if P176_DEBUG +# define P176_GET_DEBUG_LOG bitRead(P176_FLAGS, P176_FLAG_DEBUG_LOG) +# define P176_SET_DEBUG_LOG(N) bitWrite(P176_FLAGS, P176_FLAG_DEBUG_LOG, N) +# endif // if P176_DEBUG +# define P176_GET_QUIET_LOG bitRead(P176_FLAGS, P176_FLAG_LOG_QUIET) +# define P176_SET_QUIET_LOG(N) bitWrite(P176_FLAGS, P176_FLAG_LOG_QUIET, N) # define P176_DEFAULT_BAUDRATE 19200 -# define P176_DEFAULT_RX_WAIT 10 +# define P176_DEFAULT_BUFFER 128 +# define P176_DEFAULT_RX_WAIT 5 +# define P176_DEFAULT_FAIL_CHECKSUM true struct P176_data_struct : public PluginTaskData_base { public: @@ -42,20 +53,21 @@ struct P176_data_struct : public PluginTaskData_base { bool init(); bool plugin_read(struct EventStruct *event); - bool plugin_ten_per_second(struct EventStruct *event); + bool plugin_fifty_per_second(struct EventStruct *event); bool plugin_get_config_value(struct EventStruct *event, String & string); - size_t plugin_size_current_data(); - bool plugin_show_current_data(); + size_t plugin_size_current_data() const; + bool plugin_show_current_data() const; bool isInitialized() const { return nullptr != _serial; } private: - float getKeyFactor(const String& key) const; + float getKeyFactor(const String& key, + int32_t & nrDecimals) const; bool getReceivedValue(const String& key, - String & value); + String & value) const; void handleSerial(); void processBuffer(const String& message); # if P176_FAIL_CHECKSUM @@ -64,17 +76,22 @@ struct P176_data_struct : public PluginTaskData_base { ESPeasySerial *_serial = nullptr; - int8_t _ledPin = -1; - bool _ledInverted = false; - ESPEasySerialPort _port = ESPEasySerialPort::not_set; - uint8_t _config = 0; - int8_t _rxPin = -1; - int8_t _txPin = -1; - int _baud = P176_DEFAULT_BAUDRATE; int _rxWait = 0; + int _baud = P176_DEFAULT_BAUDRATE; uint32_t _checksumErrors = 0; + unsigned int _serialBuffer = P176_DEFAULT_BUFFER; + String _dataLine; + int8_t _ledPin = -1; + bool _ledInverted = false; + ESPEasySerialPort _port = ESPEasySerialPort::not_set; + uint8_t _config = 0; + int8_t _rxPin = -1; + int8_t _txPin = -1; + # if P176_DEBUG + bool _debugLog = false; + # endif // if P176_DEBUG + bool _logQuiet = false; - // String _buffer; # if P176_HANDLE_CHECKSUM enum class Checksum_state_e: uint8_t { Undefined = 0, @@ -85,13 +102,13 @@ struct P176_data_struct : public PluginTaskData_base { Error, }; Checksum_state_e _checksumState = Checksum_state_e::Undefined; - uint16_t _checksum = 0; + uint8_t _checksum = 0; bool _failChecksum = false; # endif // if P176_HANDLE_CHECKSUM // Key is stored in lower-case as PLUGIN_GET_CONFIG_VALUE passes in the variable name in lower-case - // FIXME - std::map_data{}; // = { { "i", "Data I" }, { "error", "No error detected" }, { "v", "25.75" } }; + std::map_data{}; + std::map_names{}; # if P176_FAIL_CHECKSUM std::map_temp{}; # endif // if P176_FAIL_CHECKSUM From 9d8135ed90e941b46b61ebb2ed2580f42de46ab4 Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Sat, 26 Oct 2024 23:30:05 +0200 Subject: [PATCH 03/18] [P176] Fix ESP8266 build issue --- src/src/PluginStructs/P176_data_struct.cpp | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/src/PluginStructs/P176_data_struct.cpp b/src/src/PluginStructs/P176_data_struct.cpp index e2ea716d81..57964d5bad 100644 --- a/src/src/PluginStructs/P176_data_struct.cpp +++ b/src/src/PluginStructs/P176_data_struct.cpp @@ -222,12 +222,16 @@ bool P176_data_struct::getReceivedValue(const String& key, bool success = false; if (!key.isEmpty()) { // Find is case-sensitive - // const auto it = _data.find(key); + # ifdef ESP8266 + const auto it = _data.find(key); + + if (it != _data.end()) { + value = it->second; + # else // ifdef ESP8266 - // if (it != _data.end()) { - // value = it->second; if (_data.contains(key)) { - value = _data.at(key); + value = _data.at(key); + # endif // ifdef ESP8266 success = true; } @@ -394,7 +398,11 @@ void P176_data_struct::processBuffer(const String& message) { # endif // if P176_DEBUG if (!key.isEmpty() && !value.isEmpty() && !equals(key, F("checksum"))) { - if (!_names.contains(key)) { + # ifndef ESP8266 + + if (!_names.contains(key)) + # endif // ifndef ESP8266 + { _names[key] = name; // Store original name } # if P176_FAIL_CHECKSUM From d67d8e63c6e775fc17ac6f06955b292d72ab617f Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Sun, 27 Oct 2024 21:02:38 +0100 Subject: [PATCH 04/18] [P176] Update taskvalues at receiving data, other improvements --- src/_P176_VE_Direct.ino | 15 +++++++--- src/src/PluginStructs/P176_data_struct.cpp | 33 ++++++++++++++++------ src/src/PluginStructs/P176_data_struct.h | 16 +++++++++-- 3 files changed, 49 insertions(+), 15 deletions(-) diff --git a/src/_P176_VE_Direct.ino b/src/_P176_VE_Direct.ino index 7149842e2d..59aaebf154 100644 --- a/src/_P176_VE_Direct.ino +++ b/src/_P176_VE_Direct.ino @@ -6,6 +6,8 @@ // ####################################################################################################### /** + * 2024-10-27 tonhuisman: Update TaskValues as soon as data arrives (successfully), show successfully received packet count, + * reset checksum error count after 50 successful packets * 2024-10-26 tonhuisman: Add setting for RX buffer size and optional Debug logging. Add Quit log to suppress most logging * Store original received data names, to show in Device configuration, add default decimals to conversion factors * Improved serial processing reading per line instead of per data-block, moved to 50/sec @@ -133,17 +135,22 @@ boolean Plugin_176(uint8_t function, struct EventStruct *event, String& string) { P176_data_struct *P176_data = static_cast(getPluginTaskData(event->TaskIndex)); - if ((nullptr != P176_data) && (P176_data->plugin_size_current_data() > 0)) { + if ((nullptr != P176_data) && (P176_data->getCurrentDataSize() > 0)) { addFormSubHeader(F("Current data")); addRowLabel(F("Recently received data")); - P176_data->plugin_show_current_data(); + P176_data->showCurrentData(); + addRowLabel(F("Successfully received packets")); + addHtmlInt(P176_data->getSuccessfulPackets()); + addRowLabel(F("Recent checksum errors")); + addHtmlInt(P176_data->getChecksumErrors()); + addUnit(F("reset after 50 successful packets")); } } # if P176_DEBUG addFormSubHeader(F("Logging")); - addFormCheckBox(F("Enable logging (for debug)"), F("pdebug"), P176_GET_DEBUG_LOG); + addFormCheckBox(F("Enable logging (for debug)"), F("pdebug"), P176_GET_DEBUG_LOG); # endif // if P176_DEBUG - addFormCheckBox(F("Quiet logging (minimal log)"), F("pquiet"), P176_GET_QUIET_LOG); + addFormCheckBox(F("Quiet logging (reduces logging)"), F("pquiet"), P176_GET_QUIET_LOG); success = true; break; } diff --git a/src/src/PluginStructs/P176_data_struct.cpp b/src/src/PluginStructs/P176_data_struct.cpp index 57964d5bad..a541a13c90 100644 --- a/src/src/PluginStructs/P176_data_struct.cpp +++ b/src/src/PluginStructs/P176_data_struct.cpp @@ -133,7 +133,9 @@ bool P176_data_struct::plugin_fifty_per_second(struct EventStruct *event) { bool success = false; if (isInitialized()) { - handleSerial(); // Read and process data + if (handleSerial()) { // Read and process data + plugin_read(event); // Update task values + } success = true; } @@ -172,11 +174,17 @@ bool P176_data_struct::plugin_get_config_value(struct EventStruct *event, return success; } -size_t P176_data_struct::plugin_size_current_data() const { +/***************************************************** +* getCurrentDataSize +*****************************************************/ +size_t P176_data_struct::getCurrentDataSize() const { return _data.size(); } -bool P176_data_struct::plugin_show_current_data() const { +/***************************************************** +* showCurrentData +*****************************************************/ +bool P176_data_struct::showCurrentData() const { bool success = false; if (_data.size() > 0) { @@ -207,8 +215,6 @@ bool P176_data_struct::plugin_show_current_data() const { } html_end_table(); } - addHtml(F("Recent checksum errors: ")); - addHtmlInt(_checksumErrors); return success; } @@ -249,10 +255,11 @@ bool P176_data_struct::getReceivedValue(const String& key, /***************************************************** * handleSerial *****************************************************/ -void P176_data_struct::handleSerial() { +bool P176_data_struct::handleSerial() { int timeOut = _rxWait; int maxExtend = 3; bool enough = false; + bool result = false; // True for a successfully received packet, with a correct checksum or _failChecksum = false uint8_t ch; do { @@ -330,13 +337,21 @@ void P176_data_struct::handleSerial() { if (_checksum != 0) { _checksumState = Checksum_state_e::Error; // Error if resulting checksum isn't 0 _checksumErrors++; + _checksumDelta = 0; if (loglevelActiveFor(LOG_LEVEL_ERROR)) { addLog(LOG_LEVEL_ERROR, strformat(F("Victron: Checksum error, expected 0 but got %d"), _checksum)); } } else { - _checksumState = Checksum_state_e::Starting; - _checksumErrors = 0; + _checksumState = Checksum_state_e::Starting; + _successCounter++; + _checksumDelta++; + result = true; + + if (_checksumDelta >= 50) { + _checksumErrors = 0; + } + if (loglevelActiveFor(LOG_LEVEL_INFO) && !_logQuiet) { addLog(LOG_LEVEL_INFO, F("Victron: Checksum validated Ok")); @@ -347,6 +362,7 @@ void P176_data_struct::handleSerial() { if ((Checksum_state_e::Error != _checksumState) || !_failChecksum) { moveTempToData(); + result = true; // In case of a failed checksum } # endif // if P176_FAIL_CHECKSUM } @@ -378,6 +394,7 @@ void P176_data_struct::handleSerial() { --timeOut; } } while (!enough); + return result; } /***************************************************** diff --git a/src/src/PluginStructs/P176_data_struct.h b/src/src/PluginStructs/P176_data_struct.h index 18b6d5f85b..9c53359e14 100644 --- a/src/src/PluginStructs/P176_data_struct.h +++ b/src/src/PluginStructs/P176_data_struct.h @@ -56,19 +56,27 @@ struct P176_data_struct : public PluginTaskData_base { bool plugin_fifty_per_second(struct EventStruct *event); bool plugin_get_config_value(struct EventStruct *event, String & string); - size_t plugin_size_current_data() const; - bool plugin_show_current_data() const; + size_t getCurrentDataSize() const; + bool showCurrentData() const; bool isInitialized() const { return nullptr != _serial; } + uint32_t getSuccessfulPackets() const { + return _successCounter; + } + + uint32_t getChecksumErrors() const { + return _checksumErrors; + } + private: float getKeyFactor(const String& key, int32_t & nrDecimals) const; bool getReceivedValue(const String& key, String & value) const; - void handleSerial(); + bool handleSerial(); void processBuffer(const String& message); # if P176_FAIL_CHECKSUM void moveTempToData(); @@ -76,6 +84,8 @@ struct P176_data_struct : public PluginTaskData_base { ESPeasySerial *_serial = nullptr; + uint32_t _successCounter = 0; + uint32_t _checksumDelta = 0; int _rxWait = 0; int _baud = P176_DEFAULT_BAUDRATE; uint32_t _checksumErrors = 0; From 78d6a2cf4ba1663ea94ffdbcbc7074fcc022ce55 Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Sun, 27 Oct 2024 22:10:58 +0100 Subject: [PATCH 05/18] [P176] Fix use of plugin compiletime feature flags --- src/_P176_VE_Direct.ino | 6 +++++- src/src/PluginStructs/P176_data_struct.cpp | 20 ++++++++++++++------ src/src/PluginStructs/P176_data_struct.h | 17 +++++++++++------ 3 files changed, 30 insertions(+), 13 deletions(-) diff --git a/src/_P176_VE_Direct.ino b/src/_P176_VE_Direct.ino index 59aaebf154..2144ae7755 100644 --- a/src/_P176_VE_Direct.ino +++ b/src/_P176_VE_Direct.ino @@ -80,7 +80,9 @@ boolean Plugin_176(uint8_t function, struct EventStruct *event, String& string) P176_SERIAL_BAUDRATE = P176_DEFAULT_BAUDRATE; P176_SERIAL_BUFFER = P176_DEFAULT_BUFFER; P176_RX_WAIT = P176_DEFAULT_RX_WAIT; + # if P176_FAIL_CHECKSUM P176_SET_FAIL_CHECKSUM(P176_DEFAULT_FAIL_CHECKSUM); + # endif // if P176_FAIL_CHECKSUM P176_SET_LED_PIN(-1); P176_SET_QUIET_LOG(true); } @@ -139,11 +141,13 @@ boolean Plugin_176(uint8_t function, struct EventStruct *event, String& string) addFormSubHeader(F("Current data")); addRowLabel(F("Recently received data")); P176_data->showCurrentData(); + # if P176_HANDLE_CHECKSUM addRowLabel(F("Successfully received packets")); addHtmlInt(P176_data->getSuccessfulPackets()); addRowLabel(F("Recent checksum errors")); addHtmlInt(P176_data->getChecksumErrors()); addUnit(F("reset after 50 successful packets")); + # endif // if P176_HANDLE_CHECKSUM } } # if P176_DEBUG @@ -181,7 +185,7 @@ boolean Plugin_176(uint8_t function, struct EventStruct *event, String& string) P176_data_struct *P176_data = static_cast(getPluginTaskData(event->TaskIndex)); success = (nullptr != P176_data) && P176_data->init(); - int8_t _ledPin = P176_GET_LED_PIN; + const int8_t _ledPin = P176_GET_LED_PIN; if (validGpio(_ledPin)) { DIRECT_PINMODE_OUTPUT(_ledPin); diff --git a/src/src/PluginStructs/P176_data_struct.cpp b/src/src/PluginStructs/P176_data_struct.cpp index a541a13c90..46b1e07679 100644 --- a/src/src/PluginStructs/P176_data_struct.cpp +++ b/src/src/PluginStructs/P176_data_struct.cpp @@ -17,9 +17,9 @@ P176_data_struct::P176_data_struct(struct EventStruct *event) { _ledPin = P176_GET_LED_PIN; _ledInverted = P176_GET_LED_INVERTED; _rxWait = P176_RX_WAIT; - # if P176_FAIL_CHECKSUM + # if P176_HANDLE_CHECKSUM && P176_FAIL_CHECKSUM _failChecksum = P176_GET_FAIL_CHECKSUM; - # endif // if P176_FAIL_CHECKSUM + # endif // if P176_HANDLE_CHECKSUM && P176_FAIL_CHECKSUM # if P176_DEBUG _debugLog = P176_GET_DEBUG_LOG; # endif // if P176_DEBUG @@ -283,14 +283,14 @@ bool P176_data_struct::handleSerial() { _dataLine.clear(); enough = true; - # if P176_DEBUG + # if P176_HANDLE_CHECKSUM + # if P176_DEBUG if (loglevelActiveFor(LOG_LEVEL_INFO) && _debugLog) { addLog(LOG_LEVEL_INFO, strformat(F("P176 : Checksum state: %d"), static_cast(_checksumState))); } - # endif // if P176_DEBUG - # if P176_HANDLE_CHECKSUM + # endif // if P176_DEBUG if (Checksum_state_e::ValidateNext == _checksumState) { _checksumState = Checksum_state_e::Validating; @@ -410,7 +410,15 @@ void P176_data_struct::processBuffer(const String& message) { # if P176_DEBUG if (loglevelActiveFor(LOG_LEVEL_INFO) && _debugLog) { - addLog(LOG_LEVEL_INFO, strformat(F("P176 : Processing data '%s\t%s', checksum: %d"), name.c_str(), value.c_str(), _checksum)); + addLog(LOG_LEVEL_INFO, strformat(F("P176 : Processing data '%s\t%s'" + # if P176_HANDLE_CHECKSUM + ", checksum: %d" + # endif // if P176_HANDLE_CHECKSUM + ), name.c_str(), value.c_str() + # if P176_HANDLE_CHECKSUM + , _checksum + # endif // if P176_HANDLE_CHECKSUM + )); } # endif // if P176_DEBUG diff --git a/src/src/PluginStructs/P176_data_struct.h b/src/src/PluginStructs/P176_data_struct.h index 9c53359e14..854c523035 100644 --- a/src/src/PluginStructs/P176_data_struct.h +++ b/src/src/PluginStructs/P176_data_struct.h @@ -62,6 +62,7 @@ struct P176_data_struct : public PluginTaskData_base { return nullptr != _serial; } + # if P176_HANDLE_CHECKSUM uint32_t getSuccessfulPackets() const { return _successCounter; } @@ -70,6 +71,8 @@ struct P176_data_struct : public PluginTaskData_base { return _checksumErrors; } + # endif // if P176_HANDLE_CHECKSUM + private: float getKeyFactor(const String& key, @@ -84,12 +87,14 @@ struct P176_data_struct : public PluginTaskData_base { ESPeasySerial *_serial = nullptr; - uint32_t _successCounter = 0; - uint32_t _checksumDelta = 0; - int _rxWait = 0; - int _baud = P176_DEFAULT_BAUDRATE; - uint32_t _checksumErrors = 0; - unsigned int _serialBuffer = P176_DEFAULT_BUFFER; + # if P176_HANDLE_CHECKSUM + uint32_t _checksumErrors = 0; + uint32_t _checksumDelta = 0; + uint32_t _successCounter = 0; + # endif // if P176_HANDLE_CHECKSUM + int _rxWait = 0; + int _baud = P176_DEFAULT_BAUDRATE; + unsigned int _serialBuffer = P176_DEFAULT_BUFFER; String _dataLine; int8_t _ledPin = -1; bool _ledInverted = false; From f5068aa68575ac7da139e3d3a32726052c236381 Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Mon, 28 Oct 2024 22:41:57 +0100 Subject: [PATCH 06/18] [P176] Move Led initialization to DataStruct initialization function --- src/_P176_VE_Direct.ino | 8 -------- src/src/PluginStructs/P176_data_struct.cpp | 5 +++++ 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/_P176_VE_Direct.ino b/src/_P176_VE_Direct.ino index 2144ae7755..6fe3919610 100644 --- a/src/_P176_VE_Direct.ino +++ b/src/_P176_VE_Direct.ino @@ -26,8 +26,6 @@ # include "./src/PluginStructs/P176_data_struct.h" -# include - boolean Plugin_176(uint8_t function, struct EventStruct *event, String& string) { boolean success = false; @@ -185,12 +183,6 @@ boolean Plugin_176(uint8_t function, struct EventStruct *event, String& string) P176_data_struct *P176_data = static_cast(getPluginTaskData(event->TaskIndex)); success = (nullptr != P176_data) && P176_data->init(); - const int8_t _ledPin = P176_GET_LED_PIN; - - if (validGpio(_ledPin)) { - DIRECT_PINMODE_OUTPUT(_ledPin); - DIRECT_pinWrite(_ledPin, P176_GET_LED_INVERTED ? 1 : 0); // Led off - } break; } diff --git a/src/src/PluginStructs/P176_data_struct.cpp b/src/src/PluginStructs/P176_data_struct.cpp index 46b1e07679..8dad03cf38 100644 --- a/src/src/PluginStructs/P176_data_struct.cpp +++ b/src/src/PluginStructs/P176_data_struct.cpp @@ -44,6 +44,11 @@ bool P176_data_struct::init() { # ifndef BUILD_NO_DEBUG addLog(LOG_LEVEL_DEBUG, F("Victron: Serial port started")); # endif // ifndef BUILD_NO_DEBUG + + if (validGpio(_ledPin)) { + DIRECT_PINMODE_OUTPUT(_ledPin); + DIRECT_pinWrite(_ledPin, _ledInverted ? 1 : 0); // Led off + } } } From 3e862bcdcd0a288e5c9b31879e056fdb4881304c Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Mon, 28 Oct 2024 22:58:30 +0100 Subject: [PATCH 07/18] [P176] Add documentation --- docs/source/Plugin/P176.rst | 115 ++++++++++++++++++ .../Plugin/P176_DeviceConfiguration.png | Bin 0 -> 70056 bytes docs/source/Plugin/P176_ExampleData.png | Bin 0 -> 30643 bytes docs/source/Plugin/_Plugin.rst | 1 + docs/source/Plugin/_plugin_categories.repl | 2 +- .../Plugin/_plugin_substitutions_p17x.repl | 13 ++ 6 files changed, 130 insertions(+), 1 deletion(-) create mode 100644 docs/source/Plugin/P176.rst create mode 100644 docs/source/Plugin/P176_DeviceConfiguration.png create mode 100644 docs/source/Plugin/P176_ExampleData.png diff --git a/docs/source/Plugin/P176.rst b/docs/source/Plugin/P176.rst new file mode 100644 index 0000000000..d8f3ee1645 --- /dev/null +++ b/docs/source/Plugin/P176.rst @@ -0,0 +1,115 @@ +.. include:: ../Plugin/_plugin_substitutions_p17x.repl +.. _P176_page: + +|P176_typename| +================================================== + +|P176_shortinfo| + +Plugin details +-------------- + +Type: |P176_type| + +Name: |P176_name| + +Status: |P176_status| + +GitHub: |P176_github|_ + +Maintainer: |P176_maintainer| + +Used libraries: |P176_usedlibraries| + +Supported hardware +------------------ + +|P176_usedby| + +Configuration +------------- + +.. image:: P176_DeviceConfiguration.png + +* **Name** In the Name field a unique name should be entered. + +* **Enabled** When unchecked the plugin is not enabled. + +Sensor +^^^^^^ + +See: :ref:`SerialHelper_page` + +Device Settings +^^^^^^^^^^^^^^^ + +* **Baud Rate / Serial config**: See *Serial helper configuration*, above. + +* **RX Receive timeout**: If parts of serial data packets are somewhat delayed, but should still be handled as a single message, then the delay to wait for the next part can be configured here. 0 disables the delay. + +* **RX Buffersize**: The buffer to be used for ESPEasySerial, default and minimum is 128 bytes. Can be expanded up to 2048 bytes if processing of the received data takes too much time and data gets discarded. + +* **Ignore data on checksum error**: The protocol includes a checksum calculation, and when this fails, the data is probably unreliable, and should better be dismissed. + +Led +^^^ + +* **Led pin**: The GPIO pin a Led is connected to. To enable a *data is being processed* activity led. + +* **Led inverted**: Inverts the on/off state for the Led. + +Logging +^^^^^^^ + +* **Enable logging (for debug)**: When enabled, all received data, and the current checksum counter, are logged at INFO level, to validate if, and what, data is being received. During normal operation, this should be disabled. + +* **Quiet logging (reduces logging)**: During normal operation there is some minimal logging available, informing about successfully received packets. This logging is suppressed when Quiet logging is enabled. + +Data Acquisition +^^^^^^^^^^^^^^^^ + +This group of settings, **Single event with all values** and **Send to Controller** 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 0 sec. In this situation, no data is sent automatically, and no events are generated. The data will still be collected and can be retrieved for use on a display, or further processing from other rules. When an Interval is set the data can be optionally sent to any configured controllers and either a single ``#All`` event or an event per value will be generated. As an alternative, the ``TaskRun`` command can be used to publish the data at any moment. + +Values +^^^^^^ + +The plugin provides all values that are received from a VE.Direct device. By entering the Name of such value here, that value will be made available. Some values are text-only, and can not be used in this way, but from rules these values can still be sent to a controller or shown on a display. + +The number of decimals to use for displaying in the Devices overview and sending to Controllers, can be selected, and an optional formula can be applied to the available value, f.e. for applying some kind of correction. + +In selected builds, per Value **Stats** options are available, that when enabled, will gather the measured data and present most recent data in a graph, as described here: :ref:`Task Value Statistics: ` + +Values that are not configured in the Values section can still be retrieved from rules, or in a display configuration, by using the regular ``[#]`` notation. The ```` is the name as set in the **Name** field, above, and the ```` is the name of the data item, available from the VE.Direct device. These names are *not* case-sensitive. + +An overview of the data is shown when the task is enabled, and data is received (successfully) from a VE.Direct device. + +Example data: + +.. image:: P176_ExampleData.png + +This example shows the data as can be received from a VE.Direct device. + +The *Name* column is what should be used in the Values fields, or when as a ```` from rules or in a display configuration. The exact meaning and unit of each field can be found in the VE.Direct protocol documentation, available from Victron Energy. + +The *Data* column shows the actual data as received. + +The *Value* column shows a factored result based on the value, as mV is not always very useful, so that's converted to V, mA to A, Wh to kWh, etc. + +It shows that it has received 2 packets, but as a packet only contains a part of the available data, and a next packet another part, etc. there's no fixed relation to the amount of samples, and the number of packets received. Some devices may send all data in a single packet, other devices may need 3 or even 4 packets to send all available data. + +Also, the number of checksum errors is shown, this counter is automatically reset after receiving 50 consecutive correct packets. + +Change log +---------- + +.. versionchanged:: 2.0 + ... + + |added| 2024-10-27: Initial release. + + + + + diff --git a/docs/source/Plugin/P176_DeviceConfiguration.png b/docs/source/Plugin/P176_DeviceConfiguration.png new file mode 100644 index 0000000000000000000000000000000000000000..949f979d0ba1ad866520379969e3506d26eff782 GIT binary patch literal 70056 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 I22QX47Z7(b7XSbN literal 0 HcmV?d00001 diff --git a/docs/source/Plugin/P176_ExampleData.png b/docs/source/Plugin/P176_ExampleData.png new file mode 100644 index 0000000000000000000000000000000000000000..8c1399595372cf76c082305668b444544ffa73e7 GIT binary patch literal 30643 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 x(`D5FLom{-8rqWI#ZX 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 literal 0 HcmV?d00001 diff --git a/docs/source/Plugin/_Plugin.rst b/docs/source/Plugin/_Plugin.rst index 0199448d7a..ae2110e897 100644 --- a/docs/source/Plugin/_Plugin.rst +++ b/docs/source/Plugin/_Plugin.rst @@ -399,6 +399,7 @@ There are different released versions of ESP Easy: ":ref:`P170_page`","|P170_status|","P170" ":ref:`P172_page`","|P172_status|","P172" ":ref:`P173_page`","|P173_status|","P173" + ":ref:`P176_page`","|P176_status|","P176" .. include:: _plugin_sets_overview.repl diff --git a/docs/source/Plugin/_plugin_categories.repl b/docs/source/Plugin/_plugin_categories.repl index 0881529656..cb56c37b1a 100644 --- a/docs/source/Plugin/_plugin_categories.repl +++ b/docs/source/Plugin/_plugin_categories.repl @@ -1,7 +1,7 @@ .. |Plugin_Analog_input| replace:: :ref:`P002_page`, :ref:`P007_page`, :ref:`P025_page`, :ref:`P060_page`, :ref:`P097_page` .. |Plugin_Acceleration| replace:: :ref:`P120_page`, :ref:`P125_page` .. |Plugin_Color| replace:: :ref:`P112_page` -.. |Plugin_Communication| replace:: :ref:`P016_page`, :ref:`P020_page`, :ref:`P035_page`, :ref:`P044_page`, :ref:`P054_page`, :ref:`P071_page`, :ref:`P087_page`, :ref:`P089_page`, :ref:`P094_page`, :ref:`P101_page`, :ref:`P118_page` +.. |Plugin_Communication| replace:: :ref:`P016_page`, :ref:`P020_page`, :ref:`P035_page`, :ref:`P044_page`, :ref:`P054_page`, :ref:`P071_page`, :ref:`P087_page`, :ref:`P089_page`, :ref:`P094_page`, :ref:`P101_page`, :ref:`P118_page`, :ref:`P176_page` .. |Plugin_Display| replace:: :ref:`P012_page`, :ref:`P023_page`, :ref:`P036_page`, :ref:`P057_page`, :ref:`P073_page`, :ref:`P075_page`, :ref:`P095_page`, :ref:`P104_page`, :ref:`P116_page`, :ref:`P131_page`, :ref:`P148_page` .. |Plugin_Distance| replace:: :ref:`P013_page`, :ref:`P110_page`, :ref:`P113_page`, :ref:`P134_page` .. |Plugin_Dust| replace:: :ref:`P018_page`, :ref:`P053_page`, :ref:`P056_page`, :ref:`P144_page` diff --git a/docs/source/Plugin/_plugin_substitutions_p17x.repl b/docs/source/Plugin/_plugin_substitutions_p17x.repl index 70c68bb46f..399c59961b 100644 --- a/docs/source/Plugin/_plugin_substitutions_p17x.repl +++ b/docs/source/Plugin/_plugin_substitutions_p17x.repl @@ -36,3 +36,16 @@ .. |P173_maintainer| replace:: `tonhuisman` .. |P173_compileinfo| replace:: `.` .. |P173_usedlibraries| replace:: `.` + +.. |P176_name| replace:: :cyan:`Victron VE.Direct` +.. |P176_type| replace:: :cyan:`Communication` +.. |P176_typename| replace:: :cyan:`Communication - Victron VE.Direct` +.. |P176_porttype| replace:: `.` +.. |P176_status| replace:: :yellow:`ENERGY` +.. |P176_github| replace:: P176_VE_Direct.ino +.. _P176_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/_P176_VE_Direct.ino +.. |P176_usedby| replace:: `Victron Energy devices supporting the VE.Direct protocol` +.. |P176_shortinfo| replace:: `Victron VE.Direct protocol reader` +.. |P176_maintainer| replace:: `tonhuisman` +.. |P176_compileinfo| replace:: `.` +.. |P176_usedlibraries| replace:: `.` From 7a5f744bddc66db14a3e3f8fca2032dee78ad66f Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Tue, 29 Oct 2024 22:56:42 +0100 Subject: [PATCH 08/18] [P176] Refactorings to optimize performance (lower load), remove RX Timeout setting --- src/_P176_VE_Direct.ino | 7 +- src/src/PluginStructs/P176_data_struct.cpp | 117 +++++++-------------- src/src/PluginStructs/P176_data_struct.h | 74 +++++++++++-- 3 files changed, 106 insertions(+), 92 deletions(-) diff --git a/src/_P176_VE_Direct.ino b/src/_P176_VE_Direct.ino index 6fe3919610..ddd8f94eab 100644 --- a/src/_P176_VE_Direct.ino +++ b/src/_P176_VE_Direct.ino @@ -6,6 +6,8 @@ // ####################################################################################################### /** + * 2024-10-29 tonhuisman: Optimize receiving and processing data, resulting in much lower load (based on suggestions by TD-er) + * Removed the RX Timeout setting, as it doesn't help here, seems to slow things down. * 2024-10-27 tonhuisman: Update TaskValues as soon as data arrives (successfully), show successfully received packet count, * reset checksum error count after 50 successful packets * 2024-10-26 tonhuisman: Add setting for RX buffer size and optional Debug logging. Add Quit log to suppress most logging @@ -77,7 +79,6 @@ boolean Plugin_176(uint8_t function, struct EventStruct *event, String& string) CONFIG_PIN2 = txPin; P176_SERIAL_BAUDRATE = P176_DEFAULT_BAUDRATE; P176_SERIAL_BUFFER = P176_DEFAULT_BUFFER; - P176_RX_WAIT = P176_DEFAULT_RX_WAIT; # if P176_FAIL_CHECKSUM P176_SET_FAIL_CHECKSUM(P176_DEFAULT_FAIL_CHECKSUM); # endif // if P176_FAIL_CHECKSUM @@ -115,9 +116,6 @@ boolean Plugin_176(uint8_t function, struct EventStruct *event, String& string) uint8_t serialConfChoice = serialHelper_convertOldSerialConfig(P176_SERIAL_CONFIG); serialHelper_serialconfig_webformLoad(event, serialConfChoice); - addFormNumericBox(F("RX Receive Timeout"), F("prxwait"), P176_RX_WAIT, 0, 200); - addUnit(F("mSec")); - addFormNumericBox(F("RX buffersize"), F("pbuffer"), P176_SERIAL_BUFFER, 128, 2048); addUnit(F("128..2048")); @@ -161,7 +159,6 @@ boolean Plugin_176(uint8_t function, struct EventStruct *event, String& string) { P176_SERIAL_BAUDRATE = getFormItemInt(F("pbaud")); P176_SERIAL_CONFIG = serialHelper_serialconfig_webformSave(); - P176_RX_WAIT = getFormItemInt(F("prxwait")); P176_SERIAL_BUFFER = getFormItemInt(F("pbuffer")); P176_SET_LED_PIN(getFormItemInt(F("pledpin"))); P176_SET_LED_INVERTED(isFormItemChecked(F("pledinv"))); diff --git a/src/src/PluginStructs/P176_data_struct.cpp b/src/src/PluginStructs/P176_data_struct.cpp index 8dad03cf38..b8900a2023 100644 --- a/src/src/PluginStructs/P176_data_struct.cpp +++ b/src/src/PluginStructs/P176_data_struct.cpp @@ -16,7 +16,6 @@ P176_data_struct::P176_data_struct(struct EventStruct *event) { _txPin = CONFIG_PIN2; _ledPin = P176_GET_LED_PIN; _ledInverted = P176_GET_LED_INVERTED; - _rxWait = P176_RX_WAIT; # if P176_HANDLE_CHECKSUM && P176_FAIL_CHECKSUM _failChecksum = P176_GET_FAIL_CHECKSUM; # endif // if P176_HANDLE_CHECKSUM && P176_FAIL_CHECKSUM @@ -41,13 +40,13 @@ bool P176_data_struct::init() { # elif defined(ESP32) _serial->begin(_baud, _config); # endif // if defined(ESP8266) - # ifndef BUILD_NO_DEBUG - addLog(LOG_LEVEL_DEBUG, F("Victron: Serial port started")); - # endif // ifndef BUILD_NO_DEBUG + addLog(LOG_LEVEL_INFO, F("Victron: Serial port started")); if (validGpio(_ledPin)) { DIRECT_PINMODE_OUTPUT(_ledPin); DIRECT_pinWrite(_ledPin, _ledInverted ? 1 : 0); // Led off + } else { + _ledPin = -1; } } } @@ -65,17 +64,11 @@ bool P176_data_struct::plugin_read(struct EventStruct *event) { for (uint8_t i = 0; i < VARS_PER_TASK; ++i) { String key = getTaskValueName(event->TaskIndex, i); key.toLowerCase(); - String value; - - if (getReceivedValue(key, value)) { - int32_t iValue = 0; - int32_t dummy = 0; - const float fFactor = getKeyFactor(key, dummy); + VictronValue value; - if (validIntFromString(value, iValue)) { - UserVar.setFloat(event->TaskIndex, i, iValue * fFactor); - success = true; - } + if (getReceivedValue(key, value) && value.isNumeric()) { + UserVar.setFloat(event->TaskIndex, i, value.getNumValue()); + success = true; } } } @@ -155,23 +148,11 @@ bool P176_data_struct::plugin_get_config_value(struct EventStruct *event, bool success = false; if (isInitialized()) { - const String key = parseString(string, 1, '.'); // Decimal point as separator, by convention - const String decimals = parseString(string, 2, '.'); // Optional decimals, neg. = trim trailing zeroes - String value; + const String key = parseString(string, 1, '.'); // Decimal point as separator, by convention + VictronValue value; if (getReceivedValue(key, value)) { - int32_t iValue = 0; - int32_t nrDecimals = 0; - const float fFactor = getKeyFactor(key, nrDecimals); - - if (validIntFromString(value, iValue)) { - if (!decimals.isEmpty()) { - validIntFromString(decimals, nrDecimals); - } - string = toString(iValue * fFactor, abs(nrDecimals), nrDecimals < 0); - } else { - string = value; - } + string = value.getValue(); success = true; } } @@ -200,22 +181,13 @@ bool P176_data_struct::showCurrentData() const { for (auto it = _data.begin(); it != _data.end(); ++it) { html_TR_TD(); - const auto nm = _names.find(it->first); - - if (nm != _names.end()) { - addHtml(nm->second); - } else { - addHtml(it->first); - } + addHtml(it->second.getName()); html_TD(); - addHtml(it->second); + addHtml(it->second.getRawValue()); html_TD(); - int32_t iValue = 0; - int32_t nrDecimals = 0; - const float fFactor = getKeyFactor(it->first, nrDecimals); - if (validIntFromString(it->second, iValue)) { - addHtml(toString(iValue * fFactor, abs(nrDecimals), nrDecimals < 0)); + if (it->second.isNumeric()) { + addHtml(it->second.getValue()); } } html_end_table(); @@ -229,7 +201,7 @@ bool P176_data_struct::showCurrentData() const { * getReceivedValue *****************************************************/ bool P176_data_struct::getReceivedValue(const String& key, - String & value) const { + VictronValue& value) const { bool success = false; if (!key.isEmpty()) { // Find is case-sensitive @@ -250,7 +222,7 @@ bool P176_data_struct::getReceivedValue(const String& key, if (loglevelActiveFor(LOG_LEVEL_INFO) && _debugLog) { addLog(LOG_LEVEL_INFO, strformat(F("P176 : getReceivedValue Key:%s, value:%s"), - key.c_str(), value.c_str())); + key.c_str(), value.getRawValue().c_str())); } # endif // if P176_DEBUG } @@ -261,15 +233,13 @@ bool P176_data_struct::getReceivedValue(const String& key, * handleSerial *****************************************************/ bool P176_data_struct::handleSerial() { - int timeOut = _rxWait; - int maxExtend = 3; - bool enough = false; - bool result = false; // True for a successfully received packet, with a correct checksum or _failChecksum = false + bool enough = false; + bool result = false; // True for a successfully received packet, with a correct checksum or _failChecksum = false uint8_t ch; do { if (_serial->available()) { - if (validGpio(_ledPin)) { + if (_ledPin != -1) { DIRECT_pinWrite(_ledPin, _ledInverted ? 0 : 1); } @@ -373,30 +343,11 @@ bool P176_data_struct::handleSerial() { } # endif // if P176_HANDLE_CHECKSUM - if (validGpio(_ledPin)) { + if (_ledPin != -1) { DIRECT_pinWrite(_ledPin, _ledInverted ? 1 : 0); } - - timeOut = _rxWait; // if serial received, reset timeout counter } else { - if (timeOut <= 0) { - if ((_rxWait > 0) && (maxExtend > 0)) { - timeOut = _rxWait; - maxExtend--; - } else { - enough = true; - # if P176_DEBUG - # ifndef BUILD_NO_DEBUG - - if (loglevelActiveFor(LOG_LEVEL_DEBUG) && _debugLog) { - addLog(LOG_LEVEL_DEBUG, F("P176 : RX Receive Timeout reached")); - } - # endif // ifndef BUILD_NO_DEBUG - # endif // if P176_DEBUG - } - } - delay(1); - --timeOut; + enough = !_serial->available(); } } while (!enough); return result; @@ -428,18 +379,24 @@ void P176_data_struct::processBuffer(const String& message) { # endif // if P176_DEBUG if (!key.isEmpty() && !value.isEmpty() && !equals(key, F("checksum"))) { - # ifndef ESP8266 - - if (!_names.contains(key)) - # endif // ifndef ESP8266 - { - _names[key] = name; // Store original name - } # if P176_FAIL_CHECKSUM - _temp[key] = value; + auto it = _temp.find(key); # else // if P176_FAIL_CHECKSUM - _data[key] = value; + auto it = _data.find(key); # endif // if P176_FAIL_CHECKSUM + + if (it == _temp.end()) { + int32_t nrDecimals{}; + float factor = getKeyFactor(key, nrDecimals); + VictronValue val(name, value, factor, nrDecimals); + # if P176_FAIL_CHECKSUM + _temp[key] = std::move(val); + # else // if P176_FAIL_CHECKSUM + _data[key] = std::move(val); + # endif // if P176_FAIL_CHECKSUM + } else { + it->second.update(value); + } } } @@ -450,7 +407,7 @@ void P176_data_struct::processBuffer(const String& message) { *****************************************************/ void P176_data_struct::moveTempToData() { for (auto it = _temp.begin(); it != _temp.end(); ++it) { - _data[it->first] = it->second; + _data[it->first] = std::move(it->second); } # if P176_DEBUG diff --git a/src/src/PluginStructs/P176_data_struct.h b/src/src/PluginStructs/P176_data_struct.h index 854c523035..f55c90ea13 100644 --- a/src/src/PluginStructs/P176_data_struct.h +++ b/src/src/PluginStructs/P176_data_struct.h @@ -13,7 +13,6 @@ # define P176_SERIAL_CONFIG PCONFIG(0) # define P176_SERIAL_BAUDRATE PCONFIG_LONG(1) -# define P176_RX_WAIT PCONFIG(2) # define P176_SERIAL_BUFFER PCONFIG(3) # define P176_FLAGS PCONFIG_ULONG(0) @@ -39,7 +38,6 @@ # define P176_DEFAULT_BAUDRATE 19200 # define P176_DEFAULT_BUFFER 128 -# define P176_DEFAULT_RX_WAIT 5 # define P176_DEFAULT_FAIL_CHECKSUM true struct P176_data_struct : public PluginTaskData_base { @@ -75,10 +73,74 @@ struct P176_data_struct : public PluginTaskData_base { private: + struct VictronValue { + VictronValue() {} + + VictronValue(const String & name, + const String& value, + const float & factor, + const int32_t& nrDecimals) + :_name(name), _factor(factor), _nrDecimals(nrDecimals) + { + update(value); + } + + String getName() const { + return _name; + } + + void update(const String& value) { + _changed = !_value.equals(value); + _value = value; + + if (_changed) { + int32_t iValue = 0; + _isNumeric = true; + + if (validIntFromString(_value, iValue)) { + _numValue = iValue * _factor; + } else { + _isNumeric = false; + } + _changed = false; + } + } + + bool isNumeric() const { + return _isNumeric; + } + + String getValue() const { + if (!_isNumeric) { + return _value; + } + + return toString(_numValue, _nrDecimals); + } + + float getNumValue() const { + return _numValue; + } + + String getRawValue() const { + return _value; + } + +private: + + String _name; + String _value; + float _factor{}; + float _numValue{}; + int32_t _nrDecimals{}; + bool _changed = true; + bool _isNumeric = true; + }; + float getKeyFactor(const String& key, int32_t & nrDecimals) const; bool getReceivedValue(const String& key, - String & value) const; + VictronValue& value) const; bool handleSerial(); void processBuffer(const String& message); # if P176_FAIL_CHECKSUM @@ -92,7 +154,6 @@ struct P176_data_struct : public PluginTaskData_base { uint32_t _checksumDelta = 0; uint32_t _successCounter = 0; # endif // if P176_HANDLE_CHECKSUM - int _rxWait = 0; int _baud = P176_DEFAULT_BAUDRATE; unsigned int _serialBuffer = P176_DEFAULT_BUFFER; String _dataLine; @@ -122,10 +183,9 @@ struct P176_data_struct : public PluginTaskData_base { # endif // if P176_HANDLE_CHECKSUM // Key is stored in lower-case as PLUGIN_GET_CONFIG_VALUE passes in the variable name in lower-case - std::map_data{}; - std::map_names{}; + std::map_data{}; # if P176_FAIL_CHECKSUM - std::map_temp{}; + std::map_temp{}; # endif // if P176_FAIL_CHECKSUM }; From 9ca8f7933b8a163814f146514e7c3d9e67927c1e Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Tue, 29 Oct 2024 22:57:00 +0100 Subject: [PATCH 09/18] [P176] Update documentation --- docs/source/Plugin/P176.rst | 2 -- .../Plugin/P176_DeviceConfiguration.png | Bin 70056 -> 71697 bytes 2 files changed, 2 deletions(-) diff --git a/docs/source/Plugin/P176.rst b/docs/source/Plugin/P176.rst index d8f3ee1645..11fdda2a1e 100644 --- a/docs/source/Plugin/P176.rst +++ b/docs/source/Plugin/P176.rst @@ -45,8 +45,6 @@ Device Settings * **Baud Rate / Serial config**: See *Serial helper configuration*, above. -* **RX Receive timeout**: If parts of serial data packets are somewhat delayed, but should still be handled as a single message, then the delay to wait for the next part can be configured here. 0 disables the delay. - * **RX Buffersize**: The buffer to be used for ESPEasySerial, default and minimum is 128 bytes. Can be expanded up to 2048 bytes if processing of the received data takes too much time and data gets discarded. * **Ignore data on checksum error**: The protocol includes a checksum calculation, and when this fails, the data is probably unreliable, and should better be dismissed. diff --git a/docs/source/Plugin/P176_DeviceConfiguration.png b/docs/source/Plugin/P176_DeviceConfiguration.png index 949f979d0ba1ad866520379969e3506d26eff782..389b3478474f86551edb81b7e43343ff53e1d2dd 100644 GIT binary patch literal 71697 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 A6#xJL literal 70056 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 I22QX47Z7(b7XSbN From 88f7940de4f18e8ce049514d5d6688bad9ce1131 Mon Sep 17 00:00:00 2001 From: TD-er Date: Wed, 30 Oct 2024 00:40:26 +0100 Subject: [PATCH 10/18] [P176] Simplify handling temporary values before checksum checked --- src/src/PluginStructs/P176_data_struct.cpp | 31 ++++++++----------- src/src/PluginStructs/P176_data_struct.h | 35 ++++++++++++++++++---- 2 files changed, 43 insertions(+), 23 deletions(-) diff --git a/src/src/PluginStructs/P176_data_struct.cpp b/src/src/PluginStructs/P176_data_struct.cpp index b8900a2023..6fca34c5e2 100644 --- a/src/src/PluginStructs/P176_data_struct.cpp +++ b/src/src/PluginStructs/P176_data_struct.cpp @@ -335,8 +335,9 @@ bool P176_data_struct::handleSerial() { # if P176_FAIL_CHECKSUM - if ((Checksum_state_e::Error != _checksumState) || !_failChecksum) { - moveTempToData(); + const bool checksumSuccess = (Checksum_state_e::Error != _checksumState) || !_failChecksum; + commitTempData(checksumSuccess); + if (checksumSuccess) { result = true; // In case of a failed checksum } # endif // if P176_FAIL_CHECKSUM @@ -379,23 +380,15 @@ void P176_data_struct::processBuffer(const String& message) { # endif // if P176_DEBUG if (!key.isEmpty() && !value.isEmpty() && !equals(key, F("checksum"))) { - # if P176_FAIL_CHECKSUM - auto it = _temp.find(key); - # else // if P176_FAIL_CHECKSUM auto it = _data.find(key); - # endif // if P176_FAIL_CHECKSUM - if (it == _temp.end()) { + if (it == _data.end()) { int32_t nrDecimals{}; float factor = getKeyFactor(key, nrDecimals); VictronValue val(name, value, factor, nrDecimals); - # if P176_FAIL_CHECKSUM - _temp[key] = std::move(val); - # else // if P176_FAIL_CHECKSUM _data[key] = std::move(val); - # endif // if P176_FAIL_CHECKSUM } else { - it->second.update(value); + it->second.set(value); } } } @@ -403,19 +396,21 @@ void P176_data_struct::processBuffer(const String& message) { # if P176_FAIL_CHECKSUM /***************************************************** -* moveTempToData +* commitTempData *****************************************************/ -void P176_data_struct::moveTempToData() { - for (auto it = _temp.begin(); it != _temp.end(); ++it) { - _data[it->first] = std::move(it->second); +bool P176_data_struct::commitTempData(bool checksumSuccess) { + size_t nrChanged = 0; + for (auto it = _data.begin(); it != _data.end(); ++it) { + if (it->second.commitTempData(checksumSuccess)) + ++nrChanged; } # if P176_DEBUG if (loglevelActiveFor(LOG_LEVEL_INFO) && _debugLog) { - addLog(LOG_LEVEL_INFO, strformat(F("P176 : Moving %d _temp items to _data"), _temp.size())); + addLog(LOG_LEVEL_INFO, strformat(F("P176 : Moving %d _temp items to _data"), nrChanged)); } # endif // if P176_DEBUG - _temp.clear(); + return nrChanged != 0; } # endif // if P176_FAIL_CHECKSUM diff --git a/src/src/PluginStructs/P176_data_struct.h b/src/src/PluginStructs/P176_data_struct.h index f55c90ea13..070cda6728 100644 --- a/src/src/PluginStructs/P176_data_struct.h +++ b/src/src/PluginStructs/P176_data_struct.h @@ -82,13 +82,23 @@ struct P176_data_struct : public PluginTaskData_base { const int32_t& nrDecimals) :_name(name), _factor(factor), _nrDecimals(nrDecimals) { - update(value); + set(value); } String getName() const { return _name; } + void set(const String& value) { +# if P176_FAIL_CHECKSUM +_valueTemp = value; +#else + update(value); +#endif + } + +private: + void update(const String& value) { _changed = !_value.equals(value); _value = value; @@ -106,6 +116,8 @@ struct P176_data_struct : public PluginTaskData_base { } } +public: + bool isNumeric() const { return _isNumeric; } @@ -126,10 +138,26 @@ struct P176_data_struct : public PluginTaskData_base { return _value; } +# if P176_FAIL_CHECKSUM + bool commitTempData(bool checksumSuccess) { + if (_valueTemp.isEmpty()) { + return false; + } + if (checksumSuccess) { + update(_valueTemp); + } + _valueTemp.clear(); + return checksumSuccess; + } +#endif + private: String _name; String _value; +# if P176_FAIL_CHECKSUM + String _valueTemp; +#endif float _factor{}; float _numValue{}; int32_t _nrDecimals{}; @@ -144,7 +172,7 @@ struct P176_data_struct : public PluginTaskData_base { bool handleSerial(); void processBuffer(const String& message); # if P176_FAIL_CHECKSUM - void moveTempToData(); + bool commitTempData(bool checksumSuccess); # endif // if P176_FAIL_CHECKSUM ESPeasySerial *_serial = nullptr; @@ -184,9 +212,6 @@ struct P176_data_struct : public PluginTaskData_base { // Key is stored in lower-case as PLUGIN_GET_CONFIG_VALUE passes in the variable name in lower-case std::map_data{}; - # if P176_FAIL_CHECKSUM - std::map_temp{}; - # endif // if P176_FAIL_CHECKSUM }; #endif // ifdef USES_P176 From f2a01e68a25fb6fd368b31b368c0676fb95e6adf Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Wed, 30 Oct 2024 08:24:28 +0100 Subject: [PATCH 11/18] [P176] Avoid calling serial->available() too often, uncrustify some recent changes --- src/src/PluginStructs/P176_data_struct.cpp | 16 +++++++++++----- src/src/PluginStructs/P176_data_struct.h | 18 ++++++++++-------- 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/src/src/PluginStructs/P176_data_struct.cpp b/src/src/PluginStructs/P176_data_struct.cpp index 6fca34c5e2..d68851b1be 100644 --- a/src/src/PluginStructs/P176_data_struct.cpp +++ b/src/src/PluginStructs/P176_data_struct.cpp @@ -233,17 +233,19 @@ bool P176_data_struct::getReceivedValue(const String& key, * handleSerial *****************************************************/ bool P176_data_struct::handleSerial() { - bool enough = false; - bool result = false; // True for a successfully received packet, with a correct checksum or _failChecksum = false + bool enough = false; + bool result = false; // True for a successfully received packet, with a correct checksum or _failChecksum = false + int available = _serial->available(); uint8_t ch; do { - if (_serial->available()) { + if (available > 0) { if (_ledPin != -1) { DIRECT_pinWrite(_ledPin, _ledInverted ? 0 : 1); } ch = static_cast(_serial->read()); + available--; # if P176_HANDLE_CHECKSUM _checksum += ch; @@ -337,6 +339,7 @@ bool P176_data_struct::handleSerial() { const bool checksumSuccess = (Checksum_state_e::Error != _checksumState) || !_failChecksum; commitTempData(checksumSuccess); + if (checksumSuccess) { result = true; // In case of a failed checksum } @@ -348,7 +351,8 @@ bool P176_data_struct::handleSerial() { DIRECT_pinWrite(_ledPin, _ledInverted ? 1 : 0); } } else { - enough = !_serial->available(); + available = _serial->available(); + enough = available <= 0; } } while (!enough); return result; @@ -400,9 +404,11 @@ void P176_data_struct::processBuffer(const String& message) { *****************************************************/ bool P176_data_struct::commitTempData(bool checksumSuccess) { size_t nrChanged = 0; + for (auto it = _data.begin(); it != _data.end(); ++it) { - if (it->second.commitTempData(checksumSuccess)) + if (it->second.commitTempData(checksumSuccess)) { ++nrChanged; + } } # if P176_DEBUG diff --git a/src/src/PluginStructs/P176_data_struct.h b/src/src/PluginStructs/P176_data_struct.h index 070cda6728..c2f3d15838 100644 --- a/src/src/PluginStructs/P176_data_struct.h +++ b/src/src/PluginStructs/P176_data_struct.h @@ -91,10 +91,10 @@ struct P176_data_struct : public PluginTaskData_base { void set(const String& value) { # if P176_FAIL_CHECKSUM -_valueTemp = value; -#else + _valueTemp = value; +# else // if P176_FAIL_CHECKSUM update(value); -#endif +# endif // if P176_FAIL_CHECKSUM } private: @@ -143,21 +143,23 @@ _valueTemp = value; if (_valueTemp.isEmpty()) { return false; } + if (checksumSuccess) { update(_valueTemp); } _valueTemp.clear(); return checksumSuccess; } -#endif + +# endif // if P176_FAIL_CHECKSUM private: - String _name; - String _value; + String _name; + String _value; # if P176_FAIL_CHECKSUM - String _valueTemp; -#endif + String _valueTemp; +# endif // if P176_FAIL_CHECKSUM float _factor{}; float _numValue{}; int32_t _nrDecimals{}; From 8f475f11cfb9be1b66ea22b3d7e94554809577fc Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Wed, 30 Oct 2024 09:44:04 +0100 Subject: [PATCH 12/18] [P176] Update changelog (and GH Actions failed) --- src/_P176_VE_Direct.ino | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/_P176_VE_Direct.ino b/src/_P176_VE_Direct.ino index ddd8f94eab..bf85ace1b0 100644 --- a/src/_P176_VE_Direct.ino +++ b/src/_P176_VE_Direct.ino @@ -5,7 +5,8 @@ // ############################# Plugin 176: Communication - Victron VE.Direct ########################### // ####################################################################################################### -/** +/** Changelog: + * 2024-10-30 tonhuisman: Simplifying the code somewhat, making it more robust, partially by TD-er * 2024-10-29 tonhuisman: Optimize receiving and processing data, resulting in much lower load (based on suggestions by TD-er) * Removed the RX Timeout setting, as it doesn't help here, seems to slow things down. * 2024-10-27 tonhuisman: Update TaskValues as soon as data arrives (successfully), show successfully received packet count, From 21ff3287152c41c1cf94b8cd7818d95efe64ff4f Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Wed, 30 Oct 2024 23:30:17 +0100 Subject: [PATCH 13/18] [P176] Handle ON and OFF values as 1 and 0 --- docs/source/Plugin/P176.rst | 2 ++ src/_P176_VE_Direct.ino | 1 + src/src/PluginStructs/P176_data_struct.h | 6 ++++++ 3 files changed, 9 insertions(+) diff --git a/docs/source/Plugin/P176.rst b/docs/source/Plugin/P176.rst index 11fdda2a1e..d1a7535592 100644 --- a/docs/source/Plugin/P176.rst +++ b/docs/source/Plugin/P176.rst @@ -95,6 +95,8 @@ The *Data* column shows the actual data as received. The *Value* column shows a factored result based on the value, as mV is not always very useful, so that's converted to V, mA to A, Wh to kWh, etc. +For items that use ON and OFF (or On and Off for older firmwares) as Data, these will be available as 1 and 0 respectively, so they can be used as Values. If needed, a transformation like ``[VE.Direct#Alarm#O]`` can be used to present the value as ON/OFF for 1/0. Adding the ``C`` justification, like ``[VE.Direct#Alarm#O#C]``, will be presented as On/Off. + It shows that it has received 2 packets, but as a packet only contains a part of the available data, and a next packet another part, etc. there's no fixed relation to the amount of samples, and the number of packets received. Some devices may send all data in a single packet, other devices may need 3 or even 4 packets to send all available data. Also, the number of checksum errors is shown, this counter is automatically reset after receiving 50 consecutive correct packets. diff --git a/src/_P176_VE_Direct.ino b/src/_P176_VE_Direct.ino index bf85ace1b0..832120d85c 100644 --- a/src/_P176_VE_Direct.ino +++ b/src/_P176_VE_Direct.ino @@ -6,6 +6,7 @@ // ####################################################################################################### /** Changelog: + * 2024-10-30 tonhuisman: Accept ON/On and OFF/Off as 1 and 0 numeric values, to be able to use them as Values in the device configuration * 2024-10-30 tonhuisman: Simplifying the code somewhat, making it more robust, partially by TD-er * 2024-10-29 tonhuisman: Optimize receiving and processing data, resulting in much lower load (based on suggestions by TD-er) * Removed the RX Timeout setting, as it doesn't help here, seems to slow things down. diff --git a/src/src/PluginStructs/P176_data_struct.h b/src/src/PluginStructs/P176_data_struct.h index c2f3d15838..e4e57d49b5 100644 --- a/src/src/PluginStructs/P176_data_struct.h +++ b/src/src/PluginStructs/P176_data_struct.h @@ -109,6 +109,12 @@ struct P176_data_struct : public PluginTaskData_base { if (validIntFromString(_value, iValue)) { _numValue = iValue * _factor; + } else + if (_value.equalsIgnoreCase(F("ON"))) { // Can be ON or On + _numValue = 1.0f; + } else + if (_value.equalsIgnoreCase(F("OFF"))) { // Can be OFF or Off + _numValue = 0.0f; } else { _isNumeric = false; } From 7de795e2e8a72e31629aeb6dd42ea9bb0b080f70 Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Sat, 2 Nov 2024 15:09:51 +0100 Subject: [PATCH 14/18] [P176] Fix checksum validation, was ignoring the first line after receiving a valid checksum --- docs/source/Plugin/P176.rst | 2 +- src/src/PluginStructs/P176_data_struct.cpp | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/docs/source/Plugin/P176.rst b/docs/source/Plugin/P176.rst index d1a7535592..95ddfd6de1 100644 --- a/docs/source/Plugin/P176.rst +++ b/docs/source/Plugin/P176.rst @@ -91,7 +91,7 @@ This example shows the data as can be received from a VE.Direct device. The *Name* column is what should be used in the Values fields, or when as a ```` from rules or in a display configuration. The exact meaning and unit of each field can be found in the VE.Direct protocol documentation, available from Victron Energy. -The *Data* column shows the actual data as received. +The *Data* column shows the actual data as received. If the checksum validation is enabled, this column may be empty if the checksum could not be verified, like the first (possibly incomplete) packet, but as the frequency of packets is rather high, this column should not often (or long) be empty. The *Value* column shows a factored result based on the value, as mV is not always very useful, so that's converted to V, mA to A, Wh to kWh, etc. diff --git a/src/src/PluginStructs/P176_data_struct.cpp b/src/src/PluginStructs/P176_data_struct.cpp index d68851b1be..3adeea0cf3 100644 --- a/src/src/PluginStructs/P176_data_struct.cpp +++ b/src/src/PluginStructs/P176_data_struct.cpp @@ -272,7 +272,7 @@ bool P176_data_struct::handleSerial() { if (Checksum_state_e::ValidateNext == _checksumState) { _checksumState = Checksum_state_e::Validating; } else - if (Checksum_state_e::Starting == _checksumState) { // Start counting after a Checksum was received + if (Checksum_state_e::Starting == _checksumState) { // Start counting after a Checksum (aka 'end of packet') was received _checksumState = Checksum_state_e::Counting; _checksum = 0; # if P176_DEBUG @@ -298,6 +298,10 @@ bool P176_data_struct::handleSerial() { # endif // if P176_DEBUG } else { _checksumState = Checksum_state_e::Starting; + # if P176_FAIL_CHECKSUM + + commitTempData(!_failChecksum); // Discard any data received so far, as we don't know their checksum status + # endif // if P176_FAIL_CHECKSUM } } # endif // if P176_HANDLE_CHECKSUM @@ -317,10 +321,11 @@ bool P176_data_struct::handleSerial() { _checksumDelta = 0; if (loglevelActiveFor(LOG_LEVEL_ERROR)) { - addLog(LOG_LEVEL_ERROR, strformat(F("Victron: Checksum error, expected 0 but got %d"), _checksum)); + addLog(LOG_LEVEL_ERROR, strformat(F("Victron: Checksum error, expected 0 but got %d (success: %d errors: %d)"), + _checksum, _successCounter, _checksumErrors)); } } else { - _checksumState = Checksum_state_e::Starting; + _checksumState = Checksum_state_e::Counting; // New packet is expected, start counting immediately _successCounter++; _checksumDelta++; result = true; @@ -334,6 +339,7 @@ bool P176_data_struct::handleSerial() { addLog(LOG_LEVEL_INFO, F("Victron: Checksum validated Ok")); } } + _checksum = 0; // Clean start # if P176_FAIL_CHECKSUM From 7954406819a19142ab6707ee9cc68e4440f6d797 Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Fri, 8 Nov 2024 23:20:40 +0100 Subject: [PATCH 15/18] [P176] Add variables `successcount`, `errorcount` and `ischanged` --- src/_P176_VE_Direct.ino | 2 ++ src/src/PluginStructs/P176_data_struct.cpp | 17 +++++++++++++++++ src/src/PluginStructs/P176_data_struct.h | 7 ++++--- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/_P176_VE_Direct.ino b/src/_P176_VE_Direct.ino index 832120d85c..1565290914 100644 --- a/src/_P176_VE_Direct.ino +++ b/src/_P176_VE_Direct.ino @@ -6,6 +6,8 @@ // ####################################################################################################### /** Changelog: + * 2024-11-08 tonhuisman: Add successcount, errorcount and ischanged values for GetConfig. IsChanged will reset the state on each call, so + * should be called only once in a session. * 2024-10-30 tonhuisman: Accept ON/On and OFF/Off as 1 and 0 numeric values, to be able to use them as Values in the device configuration * 2024-10-30 tonhuisman: Simplifying the code somewhat, making it more robust, partially by TD-er * 2024-10-29 tonhuisman: Optimize receiving and processing data, resulting in much lower load (based on suggestions by TD-er) diff --git a/src/src/PluginStructs/P176_data_struct.cpp b/src/src/PluginStructs/P176_data_struct.cpp index 3adeea0cf3..1de742ba3e 100644 --- a/src/src/PluginStructs/P176_data_struct.cpp +++ b/src/src/PluginStructs/P176_data_struct.cpp @@ -151,6 +151,23 @@ bool P176_data_struct::plugin_get_config_value(struct EventStruct *event, const String key = parseString(string, 1, '.'); // Decimal point as separator, by convention VictronValue value; + # if P176_HANDLE_CHECKSUM + + if (equals(key, F("successcount"))) { + string = _successCounter; + success = true; + } else + if (equals(key, F("ischanged"))) { + string = _successCounter != _lastSuccessCounter; + _lastSuccessCounter = _successCounter; + success = true; + } else + if (equals(key, F("errorcount"))) { + string = _checksumErrors; + success = true; + } else + # endif // if P176_HANDLE_CHECKSUM + if (getReceivedValue(key, value)) { string = value.getValue(); success = true; diff --git a/src/src/PluginStructs/P176_data_struct.h b/src/src/PluginStructs/P176_data_struct.h index e4e57d49b5..d0c7419d1a 100644 --- a/src/src/PluginStructs/P176_data_struct.h +++ b/src/src/PluginStructs/P176_data_struct.h @@ -186,9 +186,10 @@ struct P176_data_struct : public PluginTaskData_base { ESPeasySerial *_serial = nullptr; # if P176_HANDLE_CHECKSUM - uint32_t _checksumErrors = 0; - uint32_t _checksumDelta = 0; - uint32_t _successCounter = 0; + uint32_t _checksumErrors = 0; + uint32_t _checksumDelta = 0; + uint32_t _successCounter = 0; + uint32_t _lastSuccessCounter = 0; # endif // if P176_HANDLE_CHECKSUM int _baud = P176_DEFAULT_BAUDRATE; unsigned int _serialBuffer = P176_DEFAULT_BUFFER; From 90c4a2fffcd9f8a5eb4c9aa99a1f5fa0a38ac429 Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Sun, 10 Nov 2024 20:52:31 +0100 Subject: [PATCH 16/18] [P176] Rename variable `ischanged` to `updated` --- docs/source/Plugin/P176.rst | 8 +++++++- src/_P176_VE_Direct.ino | 1 + src/src/PluginStructs/P176_data_struct.cpp | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/docs/source/Plugin/P176.rst b/docs/source/Plugin/P176.rst index 95ddfd6de1..27de5f5b8e 100644 --- a/docs/source/Plugin/P176.rst +++ b/docs/source/Plugin/P176.rst @@ -83,7 +83,8 @@ Values that are not configured in the Values section can still be retrieved from An overview of the data is shown when the task is enabled, and data is received (successfully) from a VE.Direct device. -Example data: +Example data +------------ .. image:: P176_ExampleData.png @@ -101,6 +102,11 @@ It shows that it has received 2 packets, but as a packet only contains a part of Also, the number of checksum errors is shown, this counter is automatically reset after receiving 50 consecutive correct packets. +Get Config values +----------------- + +All data values received can be retrieved by using the ``[#]`` syntax. To get the success count and error count, varables ``[#successcount]`` and ``[#errorcount]`` are available, and also the ``[#updated]`` value, to see if data was updated since the last call for this variable (returns 0/1). So this should only be called once for evaluation. The ``errorcount`` value is reset after 50 succesful received packets, so after receiving 50 successful packets it will return 0. + Change log ---------- diff --git a/src/_P176_VE_Direct.ino b/src/_P176_VE_Direct.ino index 1565290914..8a6a655676 100644 --- a/src/_P176_VE_Direct.ino +++ b/src/_P176_VE_Direct.ino @@ -6,6 +6,7 @@ // ####################################################################################################### /** Changelog: + * 2024-11-10 tonhuisman: Renamed GetConfig ischanged to updated. * 2024-11-08 tonhuisman: Add successcount, errorcount and ischanged values for GetConfig. IsChanged will reset the state on each call, so * should be called only once in a session. * 2024-10-30 tonhuisman: Accept ON/On and OFF/Off as 1 and 0 numeric values, to be able to use them as Values in the device configuration diff --git a/src/src/PluginStructs/P176_data_struct.cpp b/src/src/PluginStructs/P176_data_struct.cpp index 1de742ba3e..92848645dc 100644 --- a/src/src/PluginStructs/P176_data_struct.cpp +++ b/src/src/PluginStructs/P176_data_struct.cpp @@ -157,7 +157,7 @@ bool P176_data_struct::plugin_get_config_value(struct EventStruct *event, string = _successCounter; success = true; } else - if (equals(key, F("ischanged"))) { + if (equals(key, F("updated"))) { string = _successCounter != _lastSuccessCounter; _lastSuccessCounter = _successCounter; success = true; From bbda83de7ea72874d610f006c5d4b69a9e77d71d Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Sun, 24 Nov 2024 13:46:02 +0100 Subject: [PATCH 17/18] [P176] Add Events only when updated option and docs --- docs/source/Plugin/P176.rst | 2 ++ .../Plugin/P176_DeviceConfiguration.png | Bin 71697 -> 69559 bytes src/_P176_VE_Direct.ino | 10 +++++++++- src/src/PluginStructs/P176_data_struct.cpp | 12 ++++++++++++ src/src/PluginStructs/P176_data_struct.h | 7 +++++++ 5 files changed, 30 insertions(+), 1 deletion(-) diff --git a/docs/source/Plugin/P176.rst b/docs/source/Plugin/P176.rst index 27de5f5b8e..30a0620ac6 100644 --- a/docs/source/Plugin/P176.rst +++ b/docs/source/Plugin/P176.rst @@ -49,6 +49,8 @@ Device Settings * **Ignore data on checksum error**: The protocol includes a checksum calculation, and when this fails, the data is probably unreliable, and should better be dismissed. +* **Events only on updated data**: With this checkbox enabled, events and outgoing data to Controllers is only sent if at least 1 new packet is received since the last Interval or TaskRun. When disabled, data is sent out every Interval, when data is available (so at least a single packet is successfully received). This option is only available if Checksum processing is included in the build. + Led ^^^ diff --git a/docs/source/Plugin/P176_DeviceConfiguration.png b/docs/source/Plugin/P176_DeviceConfiguration.png index 389b3478474f86551edb81b7e43343ff53e1d2dd..2715123d096c278ac860da3644faa411c8c8d23f 100644 GIT binary patch literal 69559 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

ogX4Hq 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 A6#xJL diff --git a/src/_P176_VE_Direct.ino b/src/_P176_VE_Direct.ino index 8a6a655676..5151030ccc 100644 --- a/src/_P176_VE_Direct.ino +++ b/src/_P176_VE_Direct.ino @@ -6,6 +6,8 @@ // ####################################################################################################### /** Changelog: + * 2024-11-24 tonhuisman: Add setting "Events only on updated data" to not generate events/Controller output if no new packets have been received + * This check is independent from the Updated GetConfig value. * 2024-11-10 tonhuisman: Renamed GetConfig ischanged to updated. * 2024-11-08 tonhuisman: Add successcount, errorcount and ischanged values for GetConfig. IsChanged will reset the state on each call, so * should be called only once in a session. @@ -118,7 +120,7 @@ boolean Plugin_176(uint8_t function, struct EventStruct *event, String& string) case PLUGIN_WEBFORM_LOAD: { addFormNumericBox(F("Baud Rate"), F("pbaud"), P176_SERIAL_BAUDRATE, 0); - uint8_t serialConfChoice = serialHelper_convertOldSerialConfig(P176_SERIAL_CONFIG); + const uint8_t serialConfChoice = serialHelper_convertOldSerialConfig(P176_SERIAL_CONFIG); serialHelper_serialconfig_webformLoad(event, serialConfChoice); addFormNumericBox(F("RX buffersize"), F("pbuffer"), P176_SERIAL_BUFFER, 128, 2048); @@ -127,6 +129,9 @@ boolean Plugin_176(uint8_t function, struct EventStruct *event, String& string) # if P176_FAIL_CHECKSUM addFormCheckBox(F("Ignore data on checksum error"), F("pchksm"), P176_GET_FAIL_CHECKSUM); # endif // if P176_FAIL_CHECKSUM + # if P176_HANDLE_CHECKSUM + addFormCheckBox(F("Events only on updated data"), F("pupd"), P176_GET_READ_UPDATED); + # endif // if P176_HANDLE_CHECKSUM { // Led settings addFormSubHeader(F("Led")); @@ -170,6 +175,9 @@ boolean Plugin_176(uint8_t function, struct EventStruct *event, String& string) # if P176_FAIL_CHECKSUM P176_SET_FAIL_CHECKSUM(isFormItemChecked(F("pchksm"))); # endif // if P176_FAIL_CHECKSUM + # if P176_HANDLE_CHECKSUM + P176_SET_READ_UPDATED(isFormItemChecked(F("pupd"))); + # endif // if P176_HANDLE_CHECKSUM # if P176_DEBUG P176_SET_DEBUG_LOG(isFormItemChecked(F("pdebug"))); # endif // if P176_DEBUG diff --git a/src/src/PluginStructs/P176_data_struct.cpp b/src/src/PluginStructs/P176_data_struct.cpp index 92848645dc..cc74e2e06a 100644 --- a/src/src/PluginStructs/P176_data_struct.cpp +++ b/src/src/PluginStructs/P176_data_struct.cpp @@ -19,6 +19,9 @@ P176_data_struct::P176_data_struct(struct EventStruct *event) { # if P176_HANDLE_CHECKSUM && P176_FAIL_CHECKSUM _failChecksum = P176_GET_FAIL_CHECKSUM; # endif // if P176_HANDLE_CHECKSUM && P176_FAIL_CHECKSUM + # if P176_HANDLE_CHECKSUM + _readUpdated = P176_GET_READ_UPDATED; + # endif // if P176_HANDLE_CHECKSUM # if P176_DEBUG _debugLog = P176_GET_DEBUG_LOG; # endif // if P176_DEBUG @@ -71,6 +74,15 @@ bool P176_data_struct::plugin_read(struct EventStruct *event) { success = true; } } + # if P176_HANDLE_CHECKSUM + + if (success && (!_readUpdated || (_readUpdated && + (_successCounter > 0) && (_successCounter != _lastReadCounter)))) { + _lastReadCounter = _successCounter; + } else { + success = false; + } + # endif // if P176_HANDLE_CHECKSUM } return success; diff --git a/src/src/PluginStructs/P176_data_struct.h b/src/src/PluginStructs/P176_data_struct.h index d0c7419d1a..29b9cd6980 100644 --- a/src/src/PluginStructs/P176_data_struct.h +++ b/src/src/PluginStructs/P176_data_struct.h @@ -21,6 +21,7 @@ # define P176_FLAG_FAIL_CHECKSUM 9 // 1 bit # define P176_FLAG_DEBUG_LOG 10 // 1 bit # define P176_FLAG_LOG_QUIET 11 // 1 bit +# define P176_FLAG_READ_UPDATED 12 // 1 bit # define P176_GET_LED_PIN get8BitFromUL(P176_FLAGS, P176_FLAG_LED_PIN) # define P176_SET_LED_PIN(N) set8BitToUL(P176_FLAGS, P176_FLAG_LED_PIN, N) # define P176_GET_LED_INVERTED bitRead(P176_FLAGS, P176_FLAG_LED_INVERTED) @@ -29,6 +30,10 @@ # define P176_GET_FAIL_CHECKSUM bitRead(P176_FLAGS, P176_FLAG_FAIL_CHECKSUM) # define P176_SET_FAIL_CHECKSUM(N) bitWrite(P176_FLAGS, P176_FLAG_FAIL_CHECKSUM, N) # endif // if P176_FAIL_CHECKSUM +# if P176_HANDLE_CHECKSUM +# define P176_GET_READ_UPDATED bitRead(P176_FLAGS, P176_FLAG_READ_UPDATED) +# define P176_SET_READ_UPDATED(N) bitWrite(P176_FLAGS, P176_FLAG_READ_UPDATED, N) +# endif // if P176_HANDLE_CHECKSUM # if P176_DEBUG # define P176_GET_DEBUG_LOG bitRead(P176_FLAGS, P176_FLAG_DEBUG_LOG) # define P176_SET_DEBUG_LOG(N) bitWrite(P176_FLAGS, P176_FLAG_DEBUG_LOG, N) @@ -190,6 +195,8 @@ struct P176_data_struct : public PluginTaskData_base { uint32_t _checksumDelta = 0; uint32_t _successCounter = 0; uint32_t _lastSuccessCounter = 0; + uint32_t _lastReadCounter = 0; + bool _readUpdated = false; # endif // if P176_HANDLE_CHECKSUM int _baud = P176_DEFAULT_BAUDRATE; unsigned int _serialBuffer = P176_DEFAULT_BUFFER; From d39c3f95096a9036688c0c3571cde54c48a813cd Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Sun, 24 Nov 2024 21:40:53 +0100 Subject: [PATCH 18/18] [P176] Fix bug in screenshot :-) --- .../Plugin/P176_DeviceConfiguration.png | Bin 69559 -> 69466 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/source/Plugin/P176_DeviceConfiguration.png b/docs/source/Plugin/P176_DeviceConfiguration.png index 2715123d096c278ac860da3644faa411c8c8d23f..86eabfd5d91b6362cde72a948c47b682c8f02706 100644 GIT binary patch literal 69466 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�BcsfbZpf7KM? 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

ogX4Hq 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