diff --git a/CHANGELOG.md b/CHANGELOG.md index 616551629..71a2005f0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,10 +5,12 @@ All notable changes to this project will be documented in this file. ## [12.2.0.6] ### Added +- Serial Modbus transmit enable GPIOs to all modbus energy drivers and modbus bridge (#17247) ### Breaking Changed ### Changed +- TasmotaSerial library from v3.5.0 to v3.6.0 ### Fixed - TasmotaSerial ``read(buffer, size)`` regression from v9.3.0 diff --git a/RELEASENOTES.md b/RELEASENOTES.md index fe955d820..913348801 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -129,6 +129,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo - Support for HMC5883L 3-Axis Digital Compass sensor by Andreas Achtzehn [#17069](https://github.com/arendst/Tasmota/issues/17069) - WS2812 and Light ArtNet DMX control over UDP port 6454 [#17059](https://github.com/arendst/Tasmota/issues/17059) - Teleinfo TEMPO (BBR) contract [#17160](https://github.com/arendst/Tasmota/issues/17160) +- Serial Modbus transmit enable GPIOs to all modbus energy drivers and modbus bridge [#17247](https://github.com/arendst/Tasmota/issues/17247) - Berry ``bytes().setbytes()`` method [#16892](https://github.com/arendst/Tasmota/issues/16892) - Berry ``bytes().reverse()`` method [#16977](https://github.com/arendst/Tasmota/issues/16977) - Berry ``mdns`` module [#17202](https://github.com/arendst/Tasmota/issues/17202) @@ -140,6 +141,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo - Redesign distance sensors VL53LXX, TOF10120, HRXL and DYP to use cm instead of mm [#17021](https://github.com/arendst/Tasmota/issues/17021) ### Changed +- TasmotaSerial library from v3.5.0 to v3.6.0 - ESP32 Framework (Core) from v2.0.5 to v2.0.5.3 - ESP32 LVGL library from v8.3.2 to v8.3.3 (no functional change) - ESP32 NimBLE library from v1.4.0 to v1.4.1 [#16775](https://github.com/arendst/Tasmota/issues/16775) diff --git a/lib/default/TasmotaSerial-3.5.0/README.md b/lib/default/TasmotaSerial-3.6.0/README.md similarity index 100% rename from lib/default/TasmotaSerial-3.5.0/README.md rename to lib/default/TasmotaSerial-3.6.0/README.md diff --git a/lib/default/TasmotaSerial-3.5.0/examples/swsertest/swsertest.ino b/lib/default/TasmotaSerial-3.6.0/examples/swsertest/swsertest.ino similarity index 100% rename from lib/default/TasmotaSerial-3.5.0/examples/swsertest/swsertest.ino rename to lib/default/TasmotaSerial-3.6.0/examples/swsertest/swsertest.ino diff --git a/lib/default/TasmotaSerial-3.5.0/keywords.txt b/lib/default/TasmotaSerial-3.6.0/keywords.txt similarity index 100% rename from lib/default/TasmotaSerial-3.5.0/keywords.txt rename to lib/default/TasmotaSerial-3.6.0/keywords.txt diff --git a/lib/default/TasmotaSerial-3.5.0/library.json b/lib/default/TasmotaSerial-3.6.0/library.json similarity index 94% rename from lib/default/TasmotaSerial-3.5.0/library.json rename to lib/default/TasmotaSerial-3.6.0/library.json index 45c0c4508..aa1fda280 100644 --- a/lib/default/TasmotaSerial-3.5.0/library.json +++ b/lib/default/TasmotaSerial-3.6.0/library.json @@ -1,6 +1,6 @@ { "name": "TasmotaSerial", - "version": "3.5.0", + "version": "3.6.0", "keywords": [ "serial", "io", "TasmotaSerial" ], diff --git a/lib/default/TasmotaSerial-3.5.0/library.properties b/lib/default/TasmotaSerial-3.6.0/library.properties similarity index 94% rename from lib/default/TasmotaSerial-3.5.0/library.properties rename to lib/default/TasmotaSerial-3.6.0/library.properties index 759c7f39d..3f6d5c133 100644 --- a/lib/default/TasmotaSerial-3.5.0/library.properties +++ b/lib/default/TasmotaSerial-3.6.0/library.properties @@ -1,5 +1,5 @@ name=TasmotaSerial -version=3.5.0 +version=3.6.0 author=Theo Arends maintainer=Theo Arends sentence=Implementation of software serial with hardware serial fallback for ESP8266 and ESP32. diff --git a/lib/default/TasmotaSerial-3.5.0/src/TasmotaSerial.cpp b/lib/default/TasmotaSerial-3.6.0/src/TasmotaSerial.cpp similarity index 90% rename from lib/default/TasmotaSerial-3.5.0/src/TasmotaSerial.cpp rename to lib/default/TasmotaSerial-3.6.0/src/TasmotaSerial.cpp index ce8958169..97c30b750 100644 --- a/lib/default/TasmotaSerial-3.5.0/src/TasmotaSerial.cpp +++ b/lib/default/TasmotaSerial-3.6.0/src/TasmotaSerial.cpp @@ -46,9 +46,11 @@ static uint32_t tasmota_serial_uart_bitmap = 0; // Assigned UARTs TasmotaSerial::TasmotaSerial(int receive_pin, int transmit_pin, int hardware_fallback, int nwmode, int buffer_size) { m_valid = false; + m_tx_enable_valid = false; m_hardserial = false; m_hardswap = false; m_overflow = false; + m_data_bits = 8; m_stop_bits = 1; m_nwmode = nwmode; serial_buffer_size = buffer_size; @@ -122,7 +124,23 @@ TasmotaSerial::~TasmotaSerial(void) { } bool TasmotaSerial::isValidGPIOpin(int pin) { +#ifdef ESP8266 return (pin >= -1 && pin <= 5) || (pin >= 12 && pin <= 15); +#endif +#ifdef ESP32 + return GPIO_IS_VALID_OUTPUT_GPIO(pin); +#endif +} + +void TasmotaSerial::setTransmitEnablePin(int tx_enable_pin) { + if ((tx_enable_pin > -1) && isValidGPIOpin(tx_enable_pin)) { + m_tx_enable_valid = true; + m_tx_enable_pin = tx_enable_pin; + pinMode(m_tx_enable_pin, OUTPUT); + digitalWrite(m_tx_enable_pin, LOW); + } else { + m_tx_enable_valid = false; + } } #ifdef ESP32 @@ -239,12 +257,17 @@ bool TasmotaSerial::begin(uint32_t speed, uint32_t config) { // Serial.printf("TSR: Using UART%d\n", m_uart); #endif // ESP32 } else { + // #define UART_NB_BIT_5 0B00000000 + // #define UART_NB_BIT_6 0B00000100 + // #define UART_NB_BIT_7 0B00001000 + // #define UART_NB_BIT_8 0B00001100 + m_data_bits = 5 + ((config &0x0C) >> 2); // Software serial fakes two stop bits if either stop bits is 2 or parity is not None // #define UART_NB_STOP_BIT_0 0B00000000 // #define UART_NB_STOP_BIT_1 0B00010000 // #define UART_NB_STOP_BIT_15 0B00100000 // #define UART_NB_STOP_BIT_2 0B00110000 - m_stop_bits = ((config &0x30) >> 5) +1; + m_stop_bits = 1 + ((config &0x30) >> 5); // #define UART_PARITY_NONE 0B00000000 // #define UART_PARITY_EVEN 0B00000010 // #define UART_PARITY_ODD 0B00000011 @@ -368,9 +391,9 @@ int TasmotaSerial::available(void) { } } -#define TM_SERIAL_WAIT_SND { while (ESP.getCycleCount() < (wait + start)) if (!m_high_speed) optimistic_yield(1); wait += m_bit_time; } // Watchdog timeouts +#define TM_SERIAL_WAIT_SND { while (ESP.getCycleCount() < (wait + start)) if (!m_high_speed) optimistic_yield(1); wait += m_bit_time; } // Watchdog timeouts #define TM_SERIAL_WAIT_SND_FAST { while (ESP.getCycleCount() < (wait + start)); wait += m_bit_time; } -#define TM_SERIAL_WAIT_RCV { while (ESP.getCycleCount() < (wait + start)); wait += m_bit_time; } +#define TM_SERIAL_WAIT_RCV { while (ESP.getCycleCount() < (wait + start)); wait += m_bit_time; } #define TM_SERIAL_WAIT_RCV_LOOP { while (ESP.getCycleCount() < (wait + start)); } void IRAM_ATTR TasmotaSerial::_fast_write(uint8_t b) { @@ -379,7 +402,7 @@ void IRAM_ATTR TasmotaSerial::_fast_write(uint8_t b) { // Start bit; digitalWrite(m_tx_pin, LOW); TM_SERIAL_WAIT_SND_FAST; - for (uint32_t i = 0; i < 8; i++) { + for (uint32_t i = 0; i < m_data_bits; i++) { digitalWrite(m_tx_pin, (b & 1) ? HIGH : LOW); TM_SERIAL_WAIT_SND_FAST; b >>= 1; @@ -392,15 +415,20 @@ void IRAM_ATTR TasmotaSerial::_fast_write(uint8_t b) { } size_t TasmotaSerial::write(uint8_t b) { + if (!m_hardserial && (-1 == m_tx_pin)) { return 0; } + + if (m_tx_enable_valid) { + digitalWrite(m_tx_enable_pin, HIGH); + } + size_t size = 0; if (m_hardserial) { #ifdef ESP8266 - return Serial.write(b); + size = Serial.write(b); #endif // ESP8266 #ifdef ESP32 - return TSerial->write(b); + size = TSerial->write(b); #endif // ESP32 } else { - if (-1 == m_tx_pin) return 0; if (m_high_speed) { cli(); // Disable interrupts in order to get a clean transmit _fast_write(b); @@ -412,7 +440,7 @@ size_t TasmotaSerial::write(uint8_t b) { // Start bit; digitalWrite(m_tx_pin, LOW); TM_SERIAL_WAIT_SND; - for (uint32_t i = 0; i < 8; i++) { + for (uint32_t i = 0; i < m_data_bits; i++) { digitalWrite(m_tx_pin, (b & 1) ? HIGH : LOW); TM_SERIAL_WAIT_SND; b >>= 1; @@ -424,25 +452,29 @@ size_t TasmotaSerial::write(uint8_t b) { TM_SERIAL_WAIT_SND; } } - - return 1; + size = 1; } + if (m_tx_enable_valid) { + digitalWrite(m_tx_enable_pin, LOW); + } + return size; } void IRAM_ATTR TasmotaSerial::rxRead(void) { uint32_t m_out_pos_fixed = m_out_pos; if (!m_nwmode) { int32_t loop_read = m_very_high_speed ? serial_buffer_size : 1; + uint32_t bit_mask = 0x01 << (m_data_bits -1); // Advance the starting point for the samples but compensate for the // initial delay which occurs before the interrupt is delivered uint32_t wait = m_bit_start_time; uint32_t start = ESP.getCycleCount(); - while (loop_read-- > 0) { // try to receveive all consecutive bytes in a row + while (loop_read-- > 0) { // try to receive all consecutive bytes in a row uint32_t rec = 0; - for (uint32_t i = 0; i < 8; i++) { + for (uint32_t i = 0; i < m_data_bits; i++) { TM_SERIAL_WAIT_RCV; rec >>= 1; - if (digitalRead(m_rx_pin)) rec |= 0x80; + if (digitalRead(m_rx_pin)) rec |= bit_mask; } // Store the received value in the buffer unless we have an overflow uint32_t next = (m_in_pos + 1) % serial_buffer_size; @@ -485,6 +517,7 @@ void IRAM_ATTR TasmotaSerial::rxRead(void) { // it gets set even when interrupts are disabled GPIO_REG_WRITE(GPIO_STATUS_W1TC_ADDRESS, 1 << m_rx_pin); } else { + // Currently supports 8-bit data only uint32_t diff; uint32_t level; diff --git a/lib/default/TasmotaSerial-3.5.0/src/TasmotaSerial.h b/lib/default/TasmotaSerial-3.6.0/src/TasmotaSerial.h similarity index 96% rename from lib/default/TasmotaSerial-3.5.0/src/TasmotaSerial.h rename to lib/default/TasmotaSerial-3.6.0/src/TasmotaSerial.h index 3e4f9a315..97fc1406c 100644 --- a/lib/default/TasmotaSerial-3.5.0/src/TasmotaSerial.h +++ b/lib/default/TasmotaSerial-3.6.0/src/TasmotaSerial.h @@ -39,6 +39,7 @@ class TasmotaSerial : public Stream { public: TasmotaSerial(int receive_pin, int transmit_pin, int hardware_fallback = 0, int nwmode = 0, int buffer_size = TM_SERIAL_BUFFER_SIZE); virtual ~TasmotaSerial(); + void setTransmitEnablePin(int tx_enable_pin); size_t setRxBufferSize(size_t size); size_t getRxBufferSize() { return serial_buffer_size; } @@ -80,6 +81,8 @@ class TasmotaSerial : public Stream { // Member variables int m_rx_pin; int m_tx_pin; + int m_tx_enable_pin; + uint32_t m_data_bits; uint32_t m_stop_bits; uint32_t ss_byte; uint32_t ss_bstart; @@ -91,6 +94,7 @@ class TasmotaSerial : public Stream { uint32_t m_out_pos; uint32_t serial_buffer_size = TM_SERIAL_BUFFER_SIZE; bool m_valid; + bool m_tx_enable_valid; bool m_nwmode; bool m_hardserial; bool m_hardswap; diff --git a/lib/lib_basic/TasmotaModbus-3.6.0/src/TasmotaModbus.cpp b/lib/lib_basic/TasmotaModbus-3.6.0/src/TasmotaModbus.cpp index 95db697f5..25ea7caaf 100644 --- a/lib/lib_basic/TasmotaModbus-3.6.0/src/TasmotaModbus.cpp +++ b/lib/lib_basic/TasmotaModbus-3.6.0/src/TasmotaModbus.cpp @@ -27,8 +27,9 @@ enum LoggingLevels {LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_D //#define TASMOTAMODBUSDEBUG -TasmotaModbus::TasmotaModbus(int receive_pin, int transmit_pin) : TasmotaSerial(receive_pin, transmit_pin, 1) +TasmotaModbus::TasmotaModbus(int receive_pin, int transmit_pin, int tx_enable_pin) : TasmotaSerial(receive_pin, transmit_pin, 1) { + setTransmitEnablePin(tx_enable_pin); mb_address = 0; } @@ -91,7 +92,7 @@ uint8_t TasmotaModbus::Send(uint8_t device_address, uint8_t function_code, uint1 } else if ((function_code == 5) || (function_code == 6)) { - if (write_data == NULL) + if (write_data == NULL) { free(frame); return 13; // Register data not specified @@ -108,10 +109,10 @@ uint8_t TasmotaModbus::Send(uint8_t device_address, uint8_t function_code, uint1 { frame[framepointer++] = (uint8_t)(count >> 8); // MSB frame[framepointer++] = (uint8_t)(count); // LSB - + frame[framepointer++] = byte_count; - if (write_data == NULL) + if (write_data == NULL) { free(frame); return 13; // Register data not specified @@ -126,7 +127,7 @@ uint8_t TasmotaModbus::Send(uint8_t device_address, uint8_t function_code, uint1 frame[framepointer++] = (uint8_t)(write_data[bytepointer/2] >> (bytepointer % 2 ? 0 : 8)); // MSB, LSB, MSB .... } } - else + else { free(frame); return 1; // Wrong function code @@ -136,7 +137,7 @@ uint8_t TasmotaModbus::Send(uint8_t device_address, uint8_t function_code, uint1 frame[framepointer++] = (uint8_t)(crc); frame[framepointer++] = (uint8_t)(crc >> 8); -#ifdef TASMOTAMODBUSDEBUG +#ifdef TASMOTAMODBUSDEBUG uint8_t *buf; uint16_t bufsize=(framepointer + 1) * 3; buf = (uint8_t *)malloc(bufsize); @@ -147,7 +148,7 @@ uint8_t TasmotaModbus::Send(uint8_t device_address, uint8_t function_code, uint1 AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("MBS: Serial Send: %s"), buf); free(buf); #endif - + flush(); write(frame, framepointer); free(frame); @@ -213,7 +214,7 @@ uint8_t TasmotaModbus::ReceiveBuffer(uint8_t *buffer, uint8_t register_count, ui // 10 = Gateway Path Unavailable // 11 = Gateway Target device failed to respond } - + if (mb_len < 6) { return 7; } // 7 = Not enough data /* diff --git a/lib/lib_basic/TasmotaModbus-3.6.0/src/TasmotaModbus.h b/lib/lib_basic/TasmotaModbus-3.6.0/src/TasmotaModbus.h index 520bb166d..ced5fb969 100644 --- a/lib/lib_basic/TasmotaModbus-3.6.0/src/TasmotaModbus.h +++ b/lib/lib_basic/TasmotaModbus-3.6.0/src/TasmotaModbus.h @@ -27,7 +27,7 @@ class TasmotaModbus : public TasmotaSerial { public: - TasmotaModbus(int receive_pin, int transmit_pin); + TasmotaModbus(int receive_pin, int transmit_pin, int tx_enable_pin = -1); virtual ~TasmotaModbus() {} int Begin(long speed = TM_MODBUS_BAUDRATE, uint32_t config = SERIAL_8N1); diff --git a/tasmota/include/tasmota_template.h b/tasmota/include/tasmota_template.h index d1ea6161d..e4e622cb8 100644 --- a/tasmota/include/tasmota_template.h +++ b/tasmota/include/tasmota_template.h @@ -202,6 +202,7 @@ enum UserSelectablePins { GPIO_BP1658CJ_CLK, GPIO_BP1658CJ_DAT,// BP1658CJ GPIO_DINGTIAN_CLK, GPIO_DINGTIAN_SDI, GPIO_DINGTIAN_Q7, GPIO_DINGTIAN_PL, GPIO_DINGTIAN_RCK, // Dingtian relay board - 595's & 165's pins GPIO_LD2410_TX, GPIO_LD2410_RX, // HLK-LD2410 + GPIO_MBR_TX_ENA, GPIO_NRG_MBS_TX_ENA, // Modbus Bridge Serial Transmit Enable GPIO_SENSOR_END }; // Error as warning to rethink GPIO usage with max 2045 @@ -451,6 +452,7 @@ const char kSensorNames[] PROGMEM = D_SENSOR_BP1658CJ_CLK "|" D_SENSOR_BP1658CJ_DAT "|" D_GPIO_DINGTIAN_CLK "|" D_GPIO_DINGTIAN_SDI "|" D_GPIO_DINGTIAN_Q7 "|" D_GPIO_DINGTIAN_PL "|" D_GPIO_DINGTIAN_RCK "|" D_SENSOR_LD2410_TX "|" D_SENSOR_LD2410_RX "|" + D_SENSOR_MBR_TX_ENA "|" D_SENSOR_NRG_MBS_TX_ENA "|" ; const char kSensorNamesFixed[] PROGMEM = @@ -822,6 +824,7 @@ const uint16_t kGpioNiceList[] PROGMEM = { AGPIO(GPIO_MCP39F5_RX), // MCP39F501 Serial interface (Shelly2) AGPIO(GPIO_MCP39F5_RST), // MCP39F501 Reset (Shelly2) #endif + AGPIO(GPIO_NRG_MBS_TX_ENA), // Generic Energy Modbus Transmit Enable #if defined(USE_PZEM004T) || defined(USE_PZEM_AC) || defined(USE_PZEM_DC) AGPIO(GPIO_PZEM0XX_TX), // PZEM0XX Serial interface #endif @@ -900,6 +903,7 @@ const uint16_t kGpioNiceList[] PROGMEM = { AGPIO(GPIO_SBR_RX), // Serial Bridge Serial interface #endif #ifdef USE_MODBUS_BRIDGE + AGPIO(GPIO_MBR_TX_ENA), // Modbus Bridge Serial interface AGPIO(GPIO_MBR_TX), // Modbus Bridge Serial interface AGPIO(GPIO_MBR_RX), // Modbus Bridge Serial interface #endif diff --git a/tasmota/language/af_AF.h b/tasmota/language/af_AF.h index fc00c5a2e..b3ff8c4b7 100644 --- a/tasmota/language/af_AF.h +++ b/tasmota/language/af_AF.h @@ -691,10 +691,12 @@ #define D_SENSOR_SBR_TX "SerBr Tx" #define D_SENSOR_MBR_TX "ModBr Tx" #define D_SENSOR_MBR_RX "ModBr Rx" +#define D_SENSOR_MBR_TX_ENA "ModBr Tx Ena" #define D_SENSOR_SR04_TRIG "SR04 Tri/TX" #define D_SENSOR_SR04_ECHO "SR04 Ech/RX" -#define D_SENSOR_NRG_MBS_TX "NrgModbus Tx" -#define D_SENSOR_NRG_MBS_RX "NrgModbus Rx" +#define D_SENSOR_NRG_MBS_TX "NrgMbs Tx" +#define D_SENSOR_NRG_MBS_RX "NrgMbs Rx" +#define D_SENSOR_NRG_MBS_TX_ENA "NrgMbs Tx Ena" #define D_SENSOR_SDM72_TX "SDM72 Tx" #define D_SENSOR_SDM72_RX "SDM72 Rx" #define D_SENSOR_SDM120_TX "SDMx20 Tx" diff --git a/tasmota/language/bg_BG.h b/tasmota/language/bg_BG.h index dc00fa439..3281cdc47 100644 --- a/tasmota/language/bg_BG.h +++ b/tasmota/language/bg_BG.h @@ -691,10 +691,12 @@ #define D_SENSOR_SBR_TX "SerBr Tx" #define D_SENSOR_MBR_TX "ModBr Tx" #define D_SENSOR_MBR_RX "ModBr Rx" +#define D_SENSOR_MBR_TX_ENA "ModBr Tx Ena" #define D_SENSOR_SR04_TRIG "SR04 Tri/TX" #define D_SENSOR_SR04_ECHO "SR04 Ech/RX" -#define D_SENSOR_NRG_MBS_TX "NrgModbus Tx" -#define D_SENSOR_NRG_MBS_RX "NrgModbus Rx" +#define D_SENSOR_NRG_MBS_TX "NrgMbs Tx" +#define D_SENSOR_NRG_MBS_RX "NrgMbs Rx" +#define D_SENSOR_NRG_MBS_TX_ENA "NrgMbs Tx Ena" #define D_SENSOR_SDM72_TX "SDM72 Tx" #define D_SENSOR_SDM72_RX "SDM72 Rx" #define D_SENSOR_SDM120_TX "SDMx20 Tx" diff --git a/tasmota/language/ca_AD.h b/tasmota/language/ca_AD.h index 1c36c117a..8ac3e95c7 100644 --- a/tasmota/language/ca_AD.h +++ b/tasmota/language/ca_AD.h @@ -691,10 +691,12 @@ #define D_SENSOR_SBR_TX "SerBr Tx" #define D_SENSOR_MBR_TX "ModBr Tx" #define D_SENSOR_MBR_RX "ModBr Rx" +#define D_SENSOR_MBR_TX_ENA "ModBr Tx Ena" #define D_SENSOR_SR04_TRIG "SR04 Tri/TX" #define D_SENSOR_SR04_ECHO "SR04 Ech/RX" -#define D_SENSOR_NRG_MBS_TX "NrgModbus Tx" -#define D_SENSOR_NRG_MBS_RX "NrgModbus Rx" +#define D_SENSOR_NRG_MBS_TX "NrgMbs Tx" +#define D_SENSOR_NRG_MBS_RX "NrgMbs Rx" +#define D_SENSOR_NRG_MBS_TX_ENA "NrgMbs Tx Ena" #define D_SENSOR_SDM72_TX "SDM72 Tx" #define D_SENSOR_SDM72_RX "SDM72 Rx" #define D_SENSOR_SDM120_TX "SDMx20 Tx" diff --git a/tasmota/language/cs_CZ.h b/tasmota/language/cs_CZ.h index 80fca7baf..9707e8836 100644 --- a/tasmota/language/cs_CZ.h +++ b/tasmota/language/cs_CZ.h @@ -691,10 +691,12 @@ #define D_SENSOR_SBR_TX "SerBr Tx" #define D_SENSOR_MBR_TX "ModBr Tx" #define D_SENSOR_MBR_RX "ModBr Rx" +#define D_SENSOR_MBR_TX_ENA "ModBr Tx Ena" #define D_SENSOR_SR04_TRIG "SR04 Tri/TX" #define D_SENSOR_SR04_ECHO "SR04 Ech/RX" -#define D_SENSOR_NRG_MBS_TX "NrgModbus Tx" -#define D_SENSOR_NRG_MBS_RX "NrgModbus Rx" +#define D_SENSOR_NRG_MBS_TX "NrgMbs Tx" +#define D_SENSOR_NRG_MBS_RX "NrgMbs Rx" +#define D_SENSOR_NRG_MBS_TX_ENA "NrgMbs Tx Ena" #define D_SENSOR_SDM72_TX "SDM72 Tx" #define D_SENSOR_SDM72_RX "SDM72 Rx" #define D_SENSOR_SDM120_TX "SDMx20 Tx" diff --git a/tasmota/language/de_DE.h b/tasmota/language/de_DE.h index 2d487f112..cdd50b101 100644 --- a/tasmota/language/de_DE.h +++ b/tasmota/language/de_DE.h @@ -691,10 +691,12 @@ #define D_SENSOR_SBR_TX "SerBr Tx" #define D_SENSOR_MBR_TX "ModBr Tx" #define D_SENSOR_MBR_RX "ModBr Rx" +#define D_SENSOR_MBR_TX_ENA "ModBr Tx Ena" #define D_SENSOR_SR04_TRIG "SR04 Tri/TX" #define D_SENSOR_SR04_ECHO "SR04 Ech/RX" -#define D_SENSOR_NRG_MBS_TX "NrgModbus Tx" -#define D_SENSOR_NRG_MBS_RX "NrgModbus Rx" +#define D_SENSOR_NRG_MBS_TX "NrgMbs Tx" +#define D_SENSOR_NRG_MBS_RX "NrgMbs Rx" +#define D_SENSOR_NRG_MBS_TX_ENA "NrgMbs Tx Ena" #define D_SENSOR_SDM72_TX "SDM72 Tx" #define D_SENSOR_SDM72_RX "SDM72 Rx" #define D_SENSOR_SDM120_TX "SDMx20 Tx" diff --git a/tasmota/language/el_GR.h b/tasmota/language/el_GR.h index eb60cecf9..308dc79bb 100644 --- a/tasmota/language/el_GR.h +++ b/tasmota/language/el_GR.h @@ -691,10 +691,12 @@ #define D_SENSOR_SBR_TX "SerBr Tx" #define D_SENSOR_MBR_TX "ModBr Tx" #define D_SENSOR_MBR_RX "ModBr Rx" +#define D_SENSOR_MBR_TX_ENA "ModBr Tx Ena" #define D_SENSOR_SR04_TRIG "SR04 Tri/TX" #define D_SENSOR_SR04_ECHO "SR04 Ech/RX" -#define D_SENSOR_NRG_MBS_TX "NrgModbus Tx" -#define D_SENSOR_NRG_MBS_RX "NrgModbus Rx" +#define D_SENSOR_NRG_MBS_TX "NrgMbs Tx" +#define D_SENSOR_NRG_MBS_RX "NrgMbs Rx" +#define D_SENSOR_NRG_MBS_TX_ENA "NrgMbs Tx Ena" #define D_SENSOR_SDM72_TX "SDM72 Tx" #define D_SENSOR_SDM72_RX "SDM72 Rx" #define D_SENSOR_SDM120_TX "SDMx20 Tx" diff --git a/tasmota/language/en_GB.h b/tasmota/language/en_GB.h index 3357daf6a..a42565b7e 100644 --- a/tasmota/language/en_GB.h +++ b/tasmota/language/en_GB.h @@ -691,10 +691,12 @@ #define D_SENSOR_SBR_TX "SerBr Tx" #define D_SENSOR_MBR_TX "ModBr Tx" #define D_SENSOR_MBR_RX "ModBr Rx" +#define D_SENSOR_MBR_TX_ENA "ModBr Tx Ena" #define D_SENSOR_SR04_TRIG "SR04 Tri/TX" #define D_SENSOR_SR04_ECHO "SR04 Ech/RX" -#define D_SENSOR_NRG_MBS_TX "NrgModbus Tx" -#define D_SENSOR_NRG_MBS_RX "NrgModbus Rx" +#define D_SENSOR_NRG_MBS_TX "NrgMbs Tx" +#define D_SENSOR_NRG_MBS_RX "NrgMbs Rx" +#define D_SENSOR_NRG_MBS_TX_ENA "NrgMbs Tx Ena" #define D_SENSOR_SDM72_TX "SDM72 Tx" #define D_SENSOR_SDM72_RX "SDM72 Rx" #define D_SENSOR_SDM120_TX "SDMx20 Tx" diff --git a/tasmota/language/es_ES.h b/tasmota/language/es_ES.h index dd86ba6eb..b3608171e 100644 --- a/tasmota/language/es_ES.h +++ b/tasmota/language/es_ES.h @@ -691,10 +691,12 @@ #define D_SENSOR_SBR_TX "SerBr Tx" #define D_SENSOR_MBR_TX "ModBr Tx" #define D_SENSOR_MBR_RX "ModBr Rx" +#define D_SENSOR_MBR_TX_ENA "ModBr Tx Ena" #define D_SENSOR_SR04_TRIG "SR04 Tri/TX" #define D_SENSOR_SR04_ECHO "SR04 Ech/RX" -#define D_SENSOR_NRG_MBS_TX "NrgModbus Tx" -#define D_SENSOR_NRG_MBS_RX "NrgModbus Rx" +#define D_SENSOR_NRG_MBS_TX "NrgMbs Tx" +#define D_SENSOR_NRG_MBS_RX "NrgMbs Rx" +#define D_SENSOR_NRG_MBS_TX_ENA "NrgMbs Tx Ena" #define D_SENSOR_SDM72_TX "SDM72 Tx" #define D_SENSOR_SDM72_RX "SDM72 Rx" #define D_SENSOR_SDM120_TX "SDMx20 Tx" diff --git a/tasmota/language/fr_FR.h b/tasmota/language/fr_FR.h index 6dd0eb7ab..8f0425f16 100644 --- a/tasmota/language/fr_FR.h +++ b/tasmota/language/fr_FR.h @@ -691,10 +691,12 @@ #define D_SENSOR_SBR_TX "SerBr TX" #define D_SENSOR_MBR_TX "ModBr Tx" #define D_SENSOR_MBR_RX "ModBr Rx" +#define D_SENSOR_MBR_TX_ENA "ModBr Tx Ena" #define D_SENSOR_SR04_TRIG "SR04 Tri/TX" #define D_SENSOR_SR04_ECHO "SR04 Ech/RX" -#define D_SENSOR_NRG_MBS_TX "NrgModbus Tx" -#define D_SENSOR_NRG_MBS_RX "NrgModbus Rx" +#define D_SENSOR_NRG_MBS_TX "NrgMbs Tx" +#define D_SENSOR_NRG_MBS_RX "NrgMbs Rx" +#define D_SENSOR_NRG_MBS_TX_ENA "NrgMbs Tx Ena" #define D_SENSOR_SDM72_TX "SDM72 TX" #define D_SENSOR_SDM72_RX "SDM72 RX" #define D_SENSOR_SDM120_TX "SDMx20 TX" diff --git a/tasmota/language/fy_NL.h b/tasmota/language/fy_NL.h index 7753d6f13..10a5a9798 100644 --- a/tasmota/language/fy_NL.h +++ b/tasmota/language/fy_NL.h @@ -691,10 +691,12 @@ #define D_SENSOR_SBR_TX "SerBr Tx" #define D_SENSOR_MBR_TX "ModBr Tx" #define D_SENSOR_MBR_RX "ModBr Rx" +#define D_SENSOR_MBR_TX_ENA "ModBr Tx Ena" #define D_SENSOR_SR04_TRIG "SR04 Tri/TX" #define D_SENSOR_SR04_ECHO "SR04 Ech/RX" -#define D_SENSOR_NRG_MBS_TX "NrgModbus Tx" -#define D_SENSOR_NRG_MBS_RX "NrgModbus Rx" +#define D_SENSOR_NRG_MBS_TX "NrgMbs Tx" +#define D_SENSOR_NRG_MBS_RX "NrgMbs Rx" +#define D_SENSOR_NRG_MBS_TX_ENA "NrgMbs Tx Ena" #define D_SENSOR_SDM72_TX "SDM72 Tx" #define D_SENSOR_SDM72_RX "SDM72 Rx" #define D_SENSOR_SDM120_TX "SDMx20 Tx" diff --git a/tasmota/language/he_HE.h b/tasmota/language/he_HE.h index 783890999..653dba154 100644 --- a/tasmota/language/he_HE.h +++ b/tasmota/language/he_HE.h @@ -691,10 +691,12 @@ #define D_SENSOR_SBR_TX "SerBr Tx" #define D_SENSOR_MBR_TX "ModBr Tx" #define D_SENSOR_MBR_RX "ModBr Rx" +#define D_SENSOR_MBR_TX_ENA "ModBr Tx Ena" #define D_SENSOR_SR04_TRIG "SR04 Tri/TX" #define D_SENSOR_SR04_ECHO "SR04 Ech/RX" -#define D_SENSOR_NRG_MBS_TX "NrgModbus Tx" -#define D_SENSOR_NRG_MBS_RX "NrgModbus Rx" +#define D_SENSOR_NRG_MBS_TX "NrgMbs Tx" +#define D_SENSOR_NRG_MBS_RX "NrgMbs Rx" +#define D_SENSOR_NRG_MBS_TX_ENA "NrgMbs Tx Ena" #define D_SENSOR_SDM72_TX "SDM72 Tx" #define D_SENSOR_SDM72_RX "SDM72 Rx" #define D_SENSOR_SDM120_TX "SDMx20 Tx" diff --git a/tasmota/language/hu_HU.h b/tasmota/language/hu_HU.h index 149095171..66cce299b 100644 --- a/tasmota/language/hu_HU.h +++ b/tasmota/language/hu_HU.h @@ -691,10 +691,12 @@ #define D_SENSOR_SBR_TX "SerBr Tx" #define D_SENSOR_MBR_TX "ModBr Tx" #define D_SENSOR_MBR_RX "ModBr Rx" +#define D_SENSOR_MBR_TX_ENA "ModBr Tx Ena" #define D_SENSOR_SR04_TRIG "SR04 Tri/TX" #define D_SENSOR_SR04_ECHO "SR04 Ech/RX" -#define D_SENSOR_NRG_MBS_TX "NrgModbus Tx" -#define D_SENSOR_NRG_MBS_RX "NrgModbus Rx" +#define D_SENSOR_NRG_MBS_TX "NrgMbs Tx" +#define D_SENSOR_NRG_MBS_RX "NrgMbs Rx" +#define D_SENSOR_NRG_MBS_TX_ENA "NrgMbs Tx Ena" #define D_SENSOR_SDM72_TX "SDM72 Tx" #define D_SENSOR_SDM72_RX "SDM72 Rx" #define D_SENSOR_SDM120_TX "SDMx20 Tx" diff --git a/tasmota/language/it_IT.h b/tasmota/language/it_IT.h index 5592ac8e9..5ba644f24 100644 --- a/tasmota/language/it_IT.h +++ b/tasmota/language/it_IT.h @@ -691,10 +691,12 @@ #define D_SENSOR_SBR_TX "SerBr - TX" #define D_SENSOR_MBR_TX "ModBr - TX" #define D_SENSOR_MBR_RX "ModBr - RX" +#define D_SENSOR_MBR_TX_ENA "ModBr - TX ENA" #define D_SENSOR_SR04_TRIG "SR04 Tri - TX" #define D_SENSOR_SR04_ECHO "SR04 Ech - RX" -#define D_SENSOR_NRG_MBS_TX "NrgModbus - TX" -#define D_SENSOR_NRG_MBS_RX "NrgModbus - RX" +#define D_SENSOR_NRG_MBS_TX "NrgMbs - TX" +#define D_SENSOR_NRG_MBS_RX "NrgMbs - RX" +#define D_SENSOR_NRG_MBS_TX_ENA "NrgMbs - TX ENA" #define D_SENSOR_SDM72_TX "SDM72 - TX" #define D_SENSOR_SDM72_RX "SDM72 - RX" #define D_SENSOR_SDM120_TX "SDMx20 - TX" diff --git a/tasmota/language/ko_KO.h b/tasmota/language/ko_KO.h index 8ff8b12d4..d397732fd 100644 --- a/tasmota/language/ko_KO.h +++ b/tasmota/language/ko_KO.h @@ -691,10 +691,12 @@ #define D_SENSOR_SBR_TX "SerBr Tx" #define D_SENSOR_MBR_TX "ModBr Tx" #define D_SENSOR_MBR_RX "ModBr Rx" +#define D_SENSOR_MBR_TX_ENA "ModBr Tx Ena" #define D_SENSOR_SR04_TRIG "SR04 Tri/TX" #define D_SENSOR_SR04_ECHO "SR04 Ech/RX" -#define D_SENSOR_NRG_MBS_TX "NrgModbus Tx" -#define D_SENSOR_NRG_MBS_RX "NrgModbus Rx" +#define D_SENSOR_NRG_MBS_TX "NrgMbs Tx" +#define D_SENSOR_NRG_MBS_RX "NrgMbs Rx" +#define D_SENSOR_NRG_MBS_TX_ENA "NrgMbs Tx Ena" #define D_SENSOR_SDM72_TX "SDM72 Tx" #define D_SENSOR_SDM72_RX "SDM72 Rx" #define D_SENSOR_SDM120_TX "SDMx20 Tx" diff --git a/tasmota/language/nl_NL.h b/tasmota/language/nl_NL.h index 28e55258a..2e738f427 100644 --- a/tasmota/language/nl_NL.h +++ b/tasmota/language/nl_NL.h @@ -691,10 +691,12 @@ #define D_SENSOR_SBR_TX "SerBr Tx" #define D_SENSOR_MBR_TX "ModBr Tx" #define D_SENSOR_MBR_RX "ModBr Rx" +#define D_SENSOR_MBR_TX_ENA "ModBr Tx Ena" #define D_SENSOR_SR04_TRIG "SR04 Tri/TX" #define D_SENSOR_SR04_ECHO "SR04 Ech/RX" -#define D_SENSOR_NRG_MBS_TX "NrgModbus Tx" -#define D_SENSOR_NRG_MBS_RX "NrgModbus Rx" +#define D_SENSOR_NRG_MBS_TX "NrgMbs Tx" +#define D_SENSOR_NRG_MBS_RX "NrgMbs Rx" +#define D_SENSOR_NRG_MBS_TX_ENA "NrgMbs Tx Ena" #define D_SENSOR_SDM72_TX "SDM72 Tx" #define D_SENSOR_SDM72_RX "SDM72 Rx" #define D_SENSOR_SDM120_TX "SDMx20 Tx" diff --git a/tasmota/language/pl_PL.h b/tasmota/language/pl_PL.h index 8b0735959..c4ace8791 100644 --- a/tasmota/language/pl_PL.h +++ b/tasmota/language/pl_PL.h @@ -691,10 +691,12 @@ #define D_SENSOR_SBR_TX "SerBr Tx" #define D_SENSOR_MBR_TX "ModBr Tx" #define D_SENSOR_MBR_RX "ModBr Rx" +#define D_SENSOR_MBR_TX_ENA "ModBr Tx Ena" #define D_SENSOR_SR04_TRIG "SR04 Tri/TX" #define D_SENSOR_SR04_ECHO "SR04 Ech/RX" -#define D_SENSOR_NRG_MBS_TX "NrgModbus Tx" -#define D_SENSOR_NRG_MBS_RX "NrgModbus Rx" +#define D_SENSOR_NRG_MBS_TX "NrgMbs Tx" +#define D_SENSOR_NRG_MBS_RX "NrgMbs Rx" +#define D_SENSOR_NRG_MBS_TX_ENA "NrgMbs Tx Ena" #define D_SENSOR_SDM72_TX "SDM72 Tx" #define D_SENSOR_SDM72_RX "SDM72 Rx" #define D_SENSOR_SDM120_TX "SDMx20 Tx" diff --git a/tasmota/language/pt_BR.h b/tasmota/language/pt_BR.h index 25800a0b4..288d5c74b 100644 --- a/tasmota/language/pt_BR.h +++ b/tasmota/language/pt_BR.h @@ -691,10 +691,12 @@ #define D_SENSOR_SBR_TX "SerBr Tx" #define D_SENSOR_MBR_TX "ModBr Tx" #define D_SENSOR_MBR_RX "ModBr Rx" +#define D_SENSOR_MBR_TX_ENA "ModBr Tx Ena" #define D_SENSOR_SR04_TRIG "SR04 Tri/TX" #define D_SENSOR_SR04_ECHO "SR04 Ech/RX" -#define D_SENSOR_NRG_MBS_TX "NrgModbus Tx" -#define D_SENSOR_NRG_MBS_RX "NrgModbus Rx" +#define D_SENSOR_NRG_MBS_TX "NrgMbs Tx" +#define D_SENSOR_NRG_MBS_RX "NrgMbs Rx" +#define D_SENSOR_NRG_MBS_TX_ENA "NrgMbs Tx Ena" #define D_SENSOR_SDM72_TX "SDM72 Tx" #define D_SENSOR_SDM72_RX "SDM72 Rx" #define D_SENSOR_SDM120_TX "SDMx20 Tx" diff --git a/tasmota/language/pt_PT.h b/tasmota/language/pt_PT.h index 1d36075ea..8e30a194a 100644 --- a/tasmota/language/pt_PT.h +++ b/tasmota/language/pt_PT.h @@ -691,10 +691,12 @@ #define D_SENSOR_SBR_TX "SerBr Tx" #define D_SENSOR_MBR_TX "ModBr Tx" #define D_SENSOR_MBR_RX "ModBr Rx" +#define D_SENSOR_MBR_TX_ENA "ModBr Tx Ena" #define D_SENSOR_SR04_TRIG "SR04 Tri/TX" #define D_SENSOR_SR04_ECHO "SR04 Ech/RX" -#define D_SENSOR_NRG_MBS_TX "NrgModbus Tx" -#define D_SENSOR_NRG_MBS_RX "NrgModbus Rx" +#define D_SENSOR_NRG_MBS_TX "NrgMbs Tx" +#define D_SENSOR_NRG_MBS_RX "NrgMbs Rx" +#define D_SENSOR_NRG_MBS_TX_ENA "NrgMbs Tx Ena" #define D_SENSOR_SDM72_TX "SDM72 Tx" #define D_SENSOR_SDM72_RX "SDM72 Rx" #define D_SENSOR_SDM120_TX "SDMx20 Tx" diff --git a/tasmota/language/ro_RO.h b/tasmota/language/ro_RO.h index 2bd887f0f..30458b06f 100644 --- a/tasmota/language/ro_RO.h +++ b/tasmota/language/ro_RO.h @@ -691,10 +691,12 @@ #define D_SENSOR_SBR_TX "SerBr Tx" #define D_SENSOR_MBR_TX "ModBr Tx" #define D_SENSOR_MBR_RX "ModBr Rx" +#define D_SENSOR_MBR_TX_ENA "ModBr Tx Ena" #define D_SENSOR_SR04_TRIG "SR04 Tri/TX" #define D_SENSOR_SR04_ECHO "SR04 Ech/RX" -#define D_SENSOR_NRG_MBS_TX "NrgModbus Tx" -#define D_SENSOR_NRG_MBS_RX "NrgModbus Rx" +#define D_SENSOR_NRG_MBS_TX "NrgMbs Tx" +#define D_SENSOR_NRG_MBS_RX "NrgMbs Rx" +#define D_SENSOR_NRG_MBS_TX_ENA "NrgMbs Tx Ena" #define D_SENSOR_SDM72_TX "SDM72 Tx" #define D_SENSOR_SDM72_RX "SDM72 Rx" #define D_SENSOR_SDM120_TX "SDMx20 Tx" diff --git a/tasmota/language/ru_RU.h b/tasmota/language/ru_RU.h index 4adf8ef54..22baa6b7f 100644 --- a/tasmota/language/ru_RU.h +++ b/tasmota/language/ru_RU.h @@ -691,10 +691,12 @@ #define D_SENSOR_SBR_TX "SerBr Tx" #define D_SENSOR_MBR_TX "ModBr Tx" #define D_SENSOR_MBR_RX "ModBr Rx" +#define D_SENSOR_MBR_TX_ENA "ModBr Tx Ena" #define D_SENSOR_SR04_TRIG "SR04 Tri/TX" #define D_SENSOR_SR04_ECHO "SR04 Ech/RX" -#define D_SENSOR_NRG_MBS_TX "NrgModbus Tx" -#define D_SENSOR_NRG_MBS_RX "NrgModbus Rx" +#define D_SENSOR_NRG_MBS_TX "NrgMbs Tx" +#define D_SENSOR_NRG_MBS_RX "NrgMbs Rx" +#define D_SENSOR_NRG_MBS_TX_ENA "NrgMbs Tx Ena" #define D_SENSOR_SDM72_TX "SDM72 Tx" #define D_SENSOR_SDM72_RX "SDM72 Rx" #define D_SENSOR_SDM120_TX "SDMx20 Tx" diff --git a/tasmota/language/sk_SK.h b/tasmota/language/sk_SK.h index 29ad8e8f3..2c26bc49e 100644 --- a/tasmota/language/sk_SK.h +++ b/tasmota/language/sk_SK.h @@ -691,10 +691,12 @@ #define D_SENSOR_SBR_TX "SerBr Tx" #define D_SENSOR_MBR_TX "ModBr Tx" #define D_SENSOR_MBR_RX "ModBr Rx" +#define D_SENSOR_MBR_TX_ENA "ModBr Tx Ena" #define D_SENSOR_SR04_TRIG "SR04 Tri/TX" #define D_SENSOR_SR04_ECHO "SR04 Ech/RX" -#define D_SENSOR_NRG_MBS_TX "NrgModbus Tx" -#define D_SENSOR_NRG_MBS_RX "NrgModbus Rx" +#define D_SENSOR_NRG_MBS_TX "NrgMbs Tx" +#define D_SENSOR_NRG_MBS_RX "NrgMbs Rx" +#define D_SENSOR_NRG_MBS_TX_ENA "NrgMbs Tx Ena" #define D_SENSOR_SDM72_TX "SDM72 Tx" #define D_SENSOR_SDM72_RX "SDM72 Rx" #define D_SENSOR_SDM120_TX "SDMx20 Tx" diff --git a/tasmota/language/sv_SE.h b/tasmota/language/sv_SE.h index 6d7d4afd5..8e0b22ed6 100644 --- a/tasmota/language/sv_SE.h +++ b/tasmota/language/sv_SE.h @@ -691,10 +691,12 @@ #define D_SENSOR_SBR_TX "SerBr Tx" #define D_SENSOR_MBR_TX "ModBr Tx" #define D_SENSOR_MBR_RX "ModBr Rx" +#define D_SENSOR_MBR_TX_ENA "ModBr Tx Ena" #define D_SENSOR_SR04_TRIG "SR04 Tri/TX" #define D_SENSOR_SR04_ECHO "SR04 Ech/RX" -#define D_SENSOR_NRG_MBS_TX "NrgModbus Tx" -#define D_SENSOR_NRG_MBS_RX "NrgModbus Rx" +#define D_SENSOR_NRG_MBS_TX "NrgMbs Tx" +#define D_SENSOR_NRG_MBS_RX "NrgMbs Rx" +#define D_SENSOR_NRG_MBS_TX_ENA "NrgMbs Tx Ena" #define D_SENSOR_SDM72_TX "SDM72 Tx" #define D_SENSOR_SDM72_RX "SDM72 Rx" #define D_SENSOR_SDM120_TX "SDMx20 Tx" diff --git a/tasmota/language/tr_TR.h b/tasmota/language/tr_TR.h index 0213accba..9feaf5034 100644 --- a/tasmota/language/tr_TR.h +++ b/tasmota/language/tr_TR.h @@ -691,10 +691,12 @@ #define D_SENSOR_SBR_TX "SerBr Tx" #define D_SENSOR_MBR_TX "ModBr Tx" #define D_SENSOR_MBR_RX "ModBr Rx" +#define D_SENSOR_MBR_TX_ENA "ModBr Tx Ena" #define D_SENSOR_SR04_TRIG "SR04 Tri/TX" #define D_SENSOR_SR04_ECHO "SR04 Ech/RX" -#define D_SENSOR_NRG_MBS_TX "NrgModbus Tx" -#define D_SENSOR_NRG_MBS_RX "NrgModbus Rx" +#define D_SENSOR_NRG_MBS_TX "NrgMbs Tx" +#define D_SENSOR_NRG_MBS_RX "NrgMbs Rx" +#define D_SENSOR_NRG_MBS_TX_ENA "NrgMbs Tx Ena" #define D_SENSOR_SDM72_TX "SDM72 Tx" #define D_SENSOR_SDM72_RX "SDM72 Rx" #define D_SENSOR_SDM120_TX "SDMx20 Tx" diff --git a/tasmota/language/uk_UA.h b/tasmota/language/uk_UA.h index abe179c74..96fae7c7e 100644 --- a/tasmota/language/uk_UA.h +++ b/tasmota/language/uk_UA.h @@ -691,10 +691,12 @@ #define D_SENSOR_SBR_TX "SerBr Tx" #define D_SENSOR_MBR_TX "ModBr Tx" #define D_SENSOR_MBR_RX "ModBr Rx" +#define D_SENSOR_MBR_TX_ENA "ModBr Tx Ena" #define D_SENSOR_SR04_TRIG "SR04 Tri/TX" #define D_SENSOR_SR04_ECHO "SR04 Ech/RX" -#define D_SENSOR_NRG_MBS_TX "NrgModbus Tx" -#define D_SENSOR_NRG_MBS_RX "NrgModbus Rx" +#define D_SENSOR_NRG_MBS_TX "NrgMbs Tx" +#define D_SENSOR_NRG_MBS_RX "NrgMbs Rx" +#define D_SENSOR_NRG_MBS_TX_ENA "NrgMbs Tx Ena" #define D_SENSOR_SDM72_TX "SDM72 Tx" #define D_SENSOR_SDM72_RX "SDM72 Rx" #define D_SENSOR_SDM120_TX "SDMx20 Tx" diff --git a/tasmota/language/vi_VN.h b/tasmota/language/vi_VN.h index 6eaa39736..e0a9df039 100644 --- a/tasmota/language/vi_VN.h +++ b/tasmota/language/vi_VN.h @@ -691,10 +691,12 @@ #define D_SENSOR_SBR_TX "SerBr Tx" #define D_SENSOR_MBR_TX "ModBr Tx" #define D_SENSOR_MBR_RX "ModBr Rx" +#define D_SENSOR_MBR_TX_ENA "ModBr Tx Ena" #define D_SENSOR_SR04_TRIG "SR04 Tri/TX" #define D_SENSOR_SR04_ECHO "SR04 Ech/RX" -#define D_SENSOR_NRG_MBS_TX "NrgModbus Tx" -#define D_SENSOR_NRG_MBS_RX "NrgModbus Rx" +#define D_SENSOR_NRG_MBS_TX "NrgMbs Tx" +#define D_SENSOR_NRG_MBS_RX "NrgMbs Rx" +#define D_SENSOR_NRG_MBS_TX_ENA "NrgMbs Tx Ena" #define D_SENSOR_SDM72_TX "SDM72 Tx" #define D_SENSOR_SDM72_RX "SDM72 Rx" #define D_SENSOR_SDM120_TX "SDMx20 Tx" diff --git a/tasmota/language/zh_CN.h b/tasmota/language/zh_CN.h index f603c7f55..c96261c13 100644 --- a/tasmota/language/zh_CN.h +++ b/tasmota/language/zh_CN.h @@ -691,10 +691,12 @@ #define D_SENSOR_SBR_TX "SerBr Tx" #define D_SENSOR_MBR_TX "ModBr Tx" #define D_SENSOR_MBR_RX "ModBr Rx" +#define D_SENSOR_MBR_TX_ENA "ModBr Tx Ena" #define D_SENSOR_SR04_TRIG "SR04 Tri/TX" #define D_SENSOR_SR04_ECHO "SR04 Ech/RX" -#define D_SENSOR_NRG_MBS_TX "NrgModbus Tx" -#define D_SENSOR_NRG_MBS_RX "NrgModbus Rx" +#define D_SENSOR_NRG_MBS_TX "NrgMbs Tx" +#define D_SENSOR_NRG_MBS_RX "NrgMbs Rx" +#define D_SENSOR_NRG_MBS_TX_ENA "NrgMbs Tx Ena" #define D_SENSOR_SDM72_TX "SDM72 Tx" #define D_SENSOR_SDM72_RX "SDM72 Rx" #define D_SENSOR_SDM120_TX "SDMx20 Tx" diff --git a/tasmota/language/zh_TW.h b/tasmota/language/zh_TW.h index 53172c1aa..c0072dba0 100644 --- a/tasmota/language/zh_TW.h +++ b/tasmota/language/zh_TW.h @@ -691,10 +691,12 @@ #define D_SENSOR_SBR_TX "SerBr Tx" #define D_SENSOR_MBR_TX "ModBr Tx" #define D_SENSOR_MBR_RX "ModBr Rx" +#define D_SENSOR_MBR_TX_ENA "ModBr Tx Ena" #define D_SENSOR_SR04_TRIG "SR04 Tri/TX" #define D_SENSOR_SR04_ECHO "SR04 Ech/RX" -#define D_SENSOR_NRG_MBS_TX "NrgModbus Tx" -#define D_SENSOR_NRG_MBS_RX "NrgModbus Rx" +#define D_SENSOR_NRG_MBS_TX "NrgMbs Tx" +#define D_SENSOR_NRG_MBS_RX "NrgMbs Rx" +#define D_SENSOR_NRG_MBS_TX_ENA "NrgMbs Tx Ena" #define D_SENSOR_SDM72_TX "SDM72 Tx" #define D_SENSOR_SDM72_RX "SDM72 Rx" #define D_SENSOR_SDM120_TX "SDMx20 Tx" diff --git a/tasmota/tasmota_xdrv_driver/xdrv_63_modbus_bridge.ino b/tasmota/tasmota_xdrv_driver/xdrv_63_modbus_bridge.ino index 7dfa2a116..6c3c33d4e 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_63_modbus_bridge.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_63_modbus_bridge.ino @@ -558,7 +558,7 @@ void ModbusBridgeInit(void) { if (PinUsed(GPIO_MBR_RX) && PinUsed(GPIO_MBR_TX)) { - modbusBridgeModbus = new TasmotaModbus(Pin(GPIO_MBR_RX), Pin(GPIO_MBR_TX)); + modbusBridgeModbus = new TasmotaModbus(Pin(GPIO_MBR_RX), Pin(GPIO_MBR_TX), Pin(GPIO_MBR_TX_ENA)); ModbusBridgeBegin(); #ifdef USE_MODBUS_BRIDGE_TCP // If TCP bridge is enabled allocate a TCP receive buffer diff --git a/tasmota/tasmota_xnrg_energy/xnrg_05_pzem_ac.ino b/tasmota/tasmota_xnrg_energy/xnrg_05_pzem_ac.ino index 0648525c9..e07fcb566 100644 --- a/tasmota/tasmota_xnrg_energy/xnrg_05_pzem_ac.ino +++ b/tasmota/tasmota_xnrg_energy/xnrg_05_pzem_ac.ino @@ -114,7 +114,7 @@ void PzemAcEverySecond(void) void PzemAcSnsInit(void) { - PzemAcModbus = new TasmotaModbus(Pin(GPIO_PZEM016_RX), Pin(GPIO_PZEM0XX_TX)); + PzemAcModbus = new TasmotaModbus(Pin(GPIO_PZEM016_RX), Pin(GPIO_PZEM0XX_TX), Pin(GPIO_NRG_MBS_TX_ENA)); uint8_t result = PzemAcModbus->Begin(9600); if (result) { if (2 == result) { ClaimSerial(); } diff --git a/tasmota/tasmota_xnrg_energy/xnrg_06_pzem_dc.ino b/tasmota/tasmota_xnrg_energy/xnrg_06_pzem_dc.ino index d1336ca08..06dcf3bb8 100644 --- a/tasmota/tasmota_xnrg_energy/xnrg_06_pzem_dc.ino +++ b/tasmota/tasmota_xnrg_energy/xnrg_06_pzem_dc.ino @@ -111,7 +111,7 @@ void PzemDcEverySecond(void) void PzemDcSnsInit(void) { - PzemDcModbus = new TasmotaModbus(Pin(GPIO_PZEM017_RX), Pin(GPIO_PZEM0XX_TX)); + PzemDcModbus = new TasmotaModbus(Pin(GPIO_PZEM017_RX), Pin(GPIO_PZEM0XX_TX), Pin(GPIO_NRG_MBS_TX_ENA)); uint8_t result = PzemDcModbus->Begin(9600, SERIAL_8N2); if (result) { if (2 == result) { ClaimSerial(); } diff --git a/tasmota/tasmota_xnrg_energy/xnrg_08_sdm120.ino b/tasmota/tasmota_xnrg_energy/xnrg_08_sdm120.ino index dbd2462cb..d4591aa85 100644 --- a/tasmota/tasmota_xnrg_energy/xnrg_08_sdm120.ino +++ b/tasmota/tasmota_xnrg_energy/xnrg_08_sdm120.ino @@ -177,7 +177,7 @@ void SDM120Every250ms(void) void Sdm120SnsInit(void) { - Sdm120Modbus = new TasmotaModbus(Pin(GPIO_SDM120_RX), Pin(GPIO_SDM120_TX)); + Sdm120Modbus = new TasmotaModbus(Pin(GPIO_SDM120_RX), Pin(GPIO_SDM120_TX), Pin(GPIO_NRG_MBS_TX_ENA)); uint8_t result = Sdm120Modbus->Begin(SDM120_SPEED); if (result) { if (2 == result) { ClaimSerial(); } diff --git a/tasmota/tasmota_xnrg_energy/xnrg_09_dds2382.ino b/tasmota/tasmota_xnrg_energy/xnrg_09_dds2382.ino index 329c58f51..1c5e55a30 100644 --- a/tasmota/tasmota_xnrg_energy/xnrg_09_dds2382.ino +++ b/tasmota/tasmota_xnrg_energy/xnrg_09_dds2382.ino @@ -90,7 +90,7 @@ void Dds2382EverySecond(void) void Dds2382SnsInit(void) { - Dds2382Modbus = new TasmotaModbus(Pin(GPIO_DDS2382_RX), Pin(GPIO_DDS2382_TX)); + Dds2382Modbus = new TasmotaModbus(Pin(GPIO_DDS2382_RX), Pin(GPIO_DDS2382_TX), Pin(GPIO_NRG_MBS_TX_ENA)); uint8_t result = Dds2382Modbus->Begin(DDS2382_SPEED); if (result) { if (2 == result) { ClaimSerial(); } diff --git a/tasmota/tasmota_xnrg_energy/xnrg_10_sdm630.ino b/tasmota/tasmota_xnrg_energy/xnrg_10_sdm630.ino index dcbd2ea40..f6848707d 100644 --- a/tasmota/tasmota_xnrg_energy/xnrg_10_sdm630.ino +++ b/tasmota/tasmota_xnrg_energy/xnrg_10_sdm630.ino @@ -213,7 +213,7 @@ void SDM630Every250ms(void) void Sdm630SnsInit(void) { - Sdm630Modbus = new TasmotaModbus(Pin(GPIO_SDM630_RX), Pin(GPIO_SDM630_TX)); + Sdm630Modbus = new TasmotaModbus(Pin(GPIO_SDM630_RX), Pin(GPIO_SDM630_TX), Pin(GPIO_NRG_MBS_TX_ENA)); uint8_t result = Sdm630Modbus->Begin(SDM630_SPEED); if (result) { if (2 == result) { ClaimSerial(); } diff --git a/tasmota/tasmota_xnrg_energy/xnrg_11_ddsu666.ino b/tasmota/tasmota_xnrg_energy/xnrg_11_ddsu666.ino index 59b4cb88a..ab629c106 100644 --- a/tasmota/tasmota_xnrg_energy/xnrg_11_ddsu666.ino +++ b/tasmota/tasmota_xnrg_energy/xnrg_11_ddsu666.ino @@ -132,7 +132,7 @@ void DDSU666Every250ms(void) void Ddsu666SnsInit(void) { - Ddsu666Modbus = new TasmotaModbus(Pin(GPIO_DDSU666_RX), Pin(GPIO_DDSU666_TX)); + Ddsu666Modbus = new TasmotaModbus(Pin(GPIO_DDSU666_RX), Pin(GPIO_DDSU666_TX), Pin(GPIO_NRG_MBS_TX_ENA)); uint8_t result = Ddsu666Modbus->Begin(DDSU666_SPEED); if (result) { if (2 == result) { ClaimSerial(); } diff --git a/tasmota/tasmota_xnrg_energy/xnrg_13_fif_le01mr.ino b/tasmota/tasmota_xnrg_energy/xnrg_13_fif_le01mr.ino index 8fa11f7ef..1ec4f7698 100644 --- a/tasmota/tasmota_xnrg_energy/xnrg_13_fif_le01mr.ino +++ b/tasmota/tasmota_xnrg_energy/xnrg_13_fif_le01mr.ino @@ -214,7 +214,7 @@ void FifLEEvery250ms(void) void FifLESnsInit(void) { - FifLEModbus = new TasmotaModbus(Pin(GPIO_LE01MR_RX), Pin(GPIO_LE01MR_TX)); + FifLEModbus = new TasmotaModbus(Pin(GPIO_LE01MR_RX), Pin(GPIO_LE01MR_TX), Pin(GPIO_NRG_MBS_TX_ENA)); uint8_t result = FifLEModbus->Begin(LE01MR_SPEED); if (result) { if (2 == result) { ClaimSerial(); } diff --git a/tasmota/tasmota_xnrg_energy/xnrg_16_iem3000.ino b/tasmota/tasmota_xnrg_energy/xnrg_16_iem3000.ino index fa25d2048..7d7c46362 100644 --- a/tasmota/tasmota_xnrg_energy/xnrg_16_iem3000.ino +++ b/tasmota/tasmota_xnrg_energy/xnrg_16_iem3000.ino @@ -181,7 +181,7 @@ void IEM3000Every250ms(void) void Iem3000SnsInit(void) { - Iem3000Modbus = new TasmotaModbus(Pin(GPIO_IEM3000_RX), Pin(GPIO_IEM3000_TX)); + Iem3000Modbus = new TasmotaModbus(Pin(GPIO_IEM3000_RX), Pin(GPIO_IEM3000_TX), Pin(GPIO_NRG_MBS_TX_ENA)); uint8_t result = Iem3000Modbus->Begin(IEM3000_SPEED); if (result) { if (2 == result) { ClaimSerial(); } diff --git a/tasmota/tasmota_xnrg_energy/xnrg_17_ornowe517.ino b/tasmota/tasmota_xnrg_energy/xnrg_17_ornowe517.ino index 117dab094..2a115712d 100644 --- a/tasmota/tasmota_xnrg_energy/xnrg_17_ornowe517.ino +++ b/tasmota/tasmota_xnrg_energy/xnrg_17_ornowe517.ino @@ -185,7 +185,7 @@ void WE517Every250ms(void) void We517SnsInit(void) { - We517Modbus = new TasmotaModbus(Pin(GPIO_WE517_RX), Pin(GPIO_WE517_TX)); + We517Modbus = new TasmotaModbus(Pin(GPIO_WE517_RX), Pin(GPIO_WE517_TX), Pin(GPIO_NRG_MBS_TX_ENA)); uint8_t result = We517Modbus->Begin(WE517_SPEED); if (result) { if (2 == result) { diff --git a/tasmota/tasmota_xnrg_energy/xnrg_18_sdm72.ino b/tasmota/tasmota_xnrg_energy/xnrg_18_sdm72.ino index 61a00ee4f..bde9d90df 100644 --- a/tasmota/tasmota_xnrg_energy/xnrg_18_sdm72.ino +++ b/tasmota/tasmota_xnrg_energy/xnrg_18_sdm72.ino @@ -130,7 +130,7 @@ void Sdm72Every250ms(void) void Sdm72SnsInit(void) { - Sdm72Modbus = new TasmotaModbus(Pin(GPIO_SDM72_RX), Pin(GPIO_SDM72_TX)); + Sdm72Modbus = new TasmotaModbus(Pin(GPIO_SDM72_RX), Pin(GPIO_SDM72_TX), Pin(GPIO_NRG_MBS_TX_ENA)); uint8_t result = Sdm72Modbus->Begin(SDM72_SPEED); if (result) { if (2 == result) { diff --git a/tasmota/tasmota_xnrg_energy/xnrg_21_sdm230.ino b/tasmota/tasmota_xnrg_energy/xnrg_21_sdm230.ino index e9607ab11..90f16f566 100644 --- a/tasmota/tasmota_xnrg_energy/xnrg_21_sdm230.ino +++ b/tasmota/tasmota_xnrg_energy/xnrg_21_sdm230.ino @@ -188,7 +188,7 @@ void SDM230Every250ms(void) void Sdm230SnsInit(void) { - Sdm230Modbus = new TasmotaModbus(Pin(GPIO_SDM230_RX), Pin(GPIO_SDM230_TX)); + Sdm230Modbus = new TasmotaModbus(Pin(GPIO_SDM230_RX), Pin(GPIO_SDM230_TX), Pin(GPIO_NRG_MBS_TX_ENA)); uint8_t result = Sdm230Modbus->Begin(SDM230_SPEED); if (result) { if (2 == result) { ClaimSerial(); } diff --git a/tasmota/tasmota_xnrg_energy/xnrg_29_modbus.ino b/tasmota/tasmota_xnrg_energy/xnrg_29_modbus.ino index 06e643632..7f155d7c2 100644 --- a/tasmota/tasmota_xnrg_energy/xnrg_29_modbus.ino +++ b/tasmota/tasmota_xnrg_energy/xnrg_29_modbus.ino @@ -663,7 +663,7 @@ bool EnergyModbusRegisters(void) { void EnergyModbusSnsInit(void) { if (EnergyModbusRegisters()) { - EnergyModbus = new TasmotaModbus(Pin(GPIO_NRG_MBS_RX), Pin(GPIO_NRG_MBS_TX)); + EnergyModbus = new TasmotaModbus(Pin(GPIO_NRG_MBS_RX), Pin(GPIO_NRG_MBS_TX), Pin(GPIO_NRG_MBS_TX_ENA)); uint8_t result = EnergyModbus->Begin(NrgMbsParam.serial_bps, NrgMbsParam.serial_config); if (result) { if (2 == result) { ClaimSerial(); }