mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-24 03:06:33 +00:00
Add optional support for Orno WE517
Add optional support for Orno WE517-Modbus energy meter by Maxime Vincent (#9353)
This commit is contained in:
parent
6585fc07e8
commit
330109d67c
@ -73,6 +73,7 @@
|
||||
| USE_BL0940 | - | x | x | x | x | - | - |
|
||||
| USE_TELEINFO | - | - | - | - | - | - | - |
|
||||
| USE_IEM3000 | - | - | - | - | - | - | - |
|
||||
| USE_WE517 | - | - | - | - | - | - | - |
|
||||
| | | | | | | | |
|
||||
| USE_ADC_VCC | x | x | - | - | - | x | - |
|
||||
| USE_COUNTER | - | - | x | x | x | - | x |
|
||||
|
@ -66,3 +66,4 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota
|
||||
- Change new IR Raw compact format (#9444)
|
||||
- Change MAX31865 driver to support up to 6 thermocouples selected by ``MX31865 CS`` instead of ``SSPI CS`` (#9103)
|
||||
- Add optional support for Mitsubishi Electric HVAC by David Gwynne (#9237)
|
||||
- Add optional support for Orno WE517-Modbus energy meter by Maxime Vincent (#9353)
|
||||
|
@ -9,6 +9,7 @@
|
||||
- Change new IR Raw compact format (#9444)
|
||||
- Change MAX31865 driver to support up to 6 thermocouples selected by ``MX31865 CS`` instead of ``SSPI CS`` (#9103)
|
||||
- Add optional support for Mitsubishi Electric HVAC by David Gwynne (#9237)
|
||||
- Add optional support for Orno WE517-Modbus energy meter by Maxime Vincent (#9353)
|
||||
|
||||
### 8.5.1 20201002
|
||||
|
||||
|
@ -600,6 +600,8 @@
|
||||
#define D_SENSOR_SDM120_RX "SDMx20 Rx"
|
||||
#define D_SENSOR_SDM630_TX "SDM630 Tx"
|
||||
#define D_SENSOR_SDM630_RX "SDM630 Rx"
|
||||
#define D_SENSOR_WE517_TX "WE517 Tx"
|
||||
#define D_SENSOR_WE517_RX "WE517 Rx"
|
||||
#define D_SENSOR_TM1638_CLK "TM16 CLK"
|
||||
#define D_SENSOR_TM1638_DIO "TM16 DIO"
|
||||
#define D_SENSOR_TM1638_STB "TM16 STB"
|
||||
|
@ -600,6 +600,8 @@
|
||||
#define D_SENSOR_SDM120_RX "SDMx20 Rx"
|
||||
#define D_SENSOR_SDM630_TX "SDM630 Tx"
|
||||
#define D_SENSOR_SDM630_RX "SDM630 Rx"
|
||||
#define D_SENSOR_WE517_TX "WE517 Tx"
|
||||
#define D_SENSOR_WE517_RX "WE517 Rx"
|
||||
#define D_SENSOR_TM1638_CLK "TM16 CLK"
|
||||
#define D_SENSOR_TM1638_DIO "TM16 DIO"
|
||||
#define D_SENSOR_TM1638_STB "TM16 STB"
|
||||
|
@ -600,6 +600,8 @@
|
||||
#define D_SENSOR_SDM120_RX "SDMx20 Rx"
|
||||
#define D_SENSOR_SDM630_TX "SDM630 Tx"
|
||||
#define D_SENSOR_SDM630_RX "SDM630 Rx"
|
||||
#define D_SENSOR_WE517_TX "WE517 Tx"
|
||||
#define D_SENSOR_WE517_RX "WE517 Rx"
|
||||
#define D_SENSOR_TM1638_CLK "TM16 CLK"
|
||||
#define D_SENSOR_TM1638_DIO "TM16 DIO"
|
||||
#define D_SENSOR_TM1638_STB "TM16 STB"
|
||||
|
@ -600,6 +600,8 @@
|
||||
#define D_SENSOR_SDM120_RX "SDMx20 Rx"
|
||||
#define D_SENSOR_SDM630_TX "SDM630 Tx"
|
||||
#define D_SENSOR_SDM630_RX "SDM630 Rx"
|
||||
#define D_SENSOR_WE517_TX "WE517 Tx"
|
||||
#define D_SENSOR_WE517_RX "WE517 Rx"
|
||||
#define D_SENSOR_TM1638_CLK "TM16 CLK"
|
||||
#define D_SENSOR_TM1638_DIO "TM16 DIO"
|
||||
#define D_SENSOR_TM1638_STB "TM16 STB"
|
||||
|
@ -600,6 +600,8 @@
|
||||
#define D_SENSOR_SDM120_RX "SDMx20 Rx"
|
||||
#define D_SENSOR_SDM630_TX "SDM630 Tx"
|
||||
#define D_SENSOR_SDM630_RX "SDM630 Rx"
|
||||
#define D_SENSOR_WE517_TX "WE517 Tx"
|
||||
#define D_SENSOR_WE517_RX "WE517 Rx"
|
||||
#define D_SENSOR_TM1638_CLK "TM16 CLK"
|
||||
#define D_SENSOR_TM1638_DIO "TM16 DIO"
|
||||
#define D_SENSOR_TM1638_STB "TM16 STB"
|
||||
|
@ -600,6 +600,8 @@
|
||||
#define D_SENSOR_SDM120_RX "SDMx20 Rx"
|
||||
#define D_SENSOR_SDM630_TX "SDM630 Tx"
|
||||
#define D_SENSOR_SDM630_RX "SDM630 Rx"
|
||||
#define D_SENSOR_WE517_TX "WE517 Tx"
|
||||
#define D_SENSOR_WE517_RX "WE517 Rx"
|
||||
#define D_SENSOR_TM1638_CLK "TM16 CLK"
|
||||
#define D_SENSOR_TM1638_DIO "TM16 DIO"
|
||||
#define D_SENSOR_TM1638_STB "TM16 STB"
|
||||
|
@ -596,6 +596,8 @@
|
||||
#define D_SENSOR_SDM120_RX "SDMx20 RX"
|
||||
#define D_SENSOR_SDM630_TX "SDM630 TX"
|
||||
#define D_SENSOR_SDM630_RX "SDM630 RX"
|
||||
#define D_SENSOR_WE517_TX "WE517 Tx"
|
||||
#define D_SENSOR_WE517_RX "WE517 Rx"
|
||||
#define D_SENSOR_TM1638_CLK "TM16 CLK"
|
||||
#define D_SENSOR_TM1638_DIO "TM16 DIO"
|
||||
#define D_SENSOR_TM1638_STB "TM16 STB"
|
||||
|
@ -600,6 +600,8 @@
|
||||
#define D_SENSOR_SDM120_RX "SDMx20 Rx"
|
||||
#define D_SENSOR_SDM630_TX "SDM630 Tx"
|
||||
#define D_SENSOR_SDM630_RX "SDM630 Rx"
|
||||
#define D_SENSOR_WE517_TX "WE517 Tx"
|
||||
#define D_SENSOR_WE517_RX "WE517 Rx"
|
||||
#define D_SENSOR_TM1638_CLK "TM16 CLK"
|
||||
#define D_SENSOR_TM1638_DIO "TM16 DIO"
|
||||
#define D_SENSOR_TM1638_STB "TM16 STB"
|
||||
|
@ -600,6 +600,8 @@
|
||||
#define D_SENSOR_SDM120_RX "SDMx20 Rx"
|
||||
#define D_SENSOR_SDM630_TX "SDM630 Tx"
|
||||
#define D_SENSOR_SDM630_RX "SDM630 Rx"
|
||||
#define D_SENSOR_WE517_TX "WE517 Tx"
|
||||
#define D_SENSOR_WE517_RX "WE517 Rx"
|
||||
#define D_SENSOR_TM1638_CLK "TM16 CLK"
|
||||
#define D_SENSOR_TM1638_DIO "TM16 DIO"
|
||||
#define D_SENSOR_TM1638_STB "TM16 STB"
|
||||
|
@ -600,6 +600,8 @@
|
||||
#define D_SENSOR_SDM120_RX "SDMx20 - RX"
|
||||
#define D_SENSOR_SDM630_TX "SDM630 - TX"
|
||||
#define D_SENSOR_SDM630_RX "SDM630 - RX"
|
||||
#define D_SENSOR_WE517_TX "WE517 Tx"
|
||||
#define D_SENSOR_WE517_RX "WE517 Rx"
|
||||
#define D_SENSOR_TM1638_CLK "TM16 - CLK"
|
||||
#define D_SENSOR_TM1638_DIO "TM16 - DIO"
|
||||
#define D_SENSOR_TM1638_STB "TM16 - STB"
|
||||
|
@ -600,6 +600,8 @@
|
||||
#define D_SENSOR_SDM120_RX "SDMx20 Rx"
|
||||
#define D_SENSOR_SDM630_TX "SDM630 Tx"
|
||||
#define D_SENSOR_SDM630_RX "SDM630 Rx"
|
||||
#define D_SENSOR_WE517_TX "WE517 Tx"
|
||||
#define D_SENSOR_WE517_RX "WE517 Rx"
|
||||
#define D_SENSOR_TM1638_CLK "TM16 CLK"
|
||||
#define D_SENSOR_TM1638_DIO "TM16 DIO"
|
||||
#define D_SENSOR_TM1638_STB "TM16 STB"
|
||||
|
@ -600,6 +600,8 @@
|
||||
#define D_SENSOR_SDM120_RX "SDMx20 Rx"
|
||||
#define D_SENSOR_SDM630_TX "SDM630 Tx"
|
||||
#define D_SENSOR_SDM630_RX "SDM630 Rx"
|
||||
#define D_SENSOR_WE517_TX "WE517 Tx"
|
||||
#define D_SENSOR_WE517_RX "WE517 Rx"
|
||||
#define D_SENSOR_TM1638_CLK "TM16 CLK"
|
||||
#define D_SENSOR_TM1638_DIO "TM16 DIO"
|
||||
#define D_SENSOR_TM1638_STB "TM16 STB"
|
||||
|
@ -600,6 +600,8 @@
|
||||
#define D_SENSOR_SDM120_RX "SDMx20 Rx"
|
||||
#define D_SENSOR_SDM630_TX "SDM630 Tx"
|
||||
#define D_SENSOR_SDM630_RX "SDM630 Rx"
|
||||
#define D_SENSOR_WE517_TX "WE517 Tx"
|
||||
#define D_SENSOR_WE517_RX "WE517 Rx"
|
||||
#define D_SENSOR_TM1638_CLK "TM16 CLK"
|
||||
#define D_SENSOR_TM1638_DIO "TM16 DIO"
|
||||
#define D_SENSOR_TM1638_STB "TM16 STB"
|
||||
|
@ -600,6 +600,8 @@
|
||||
#define D_SENSOR_SDM120_RX "SDMx20 Rx"
|
||||
#define D_SENSOR_SDM630_TX "SDM630 Tx"
|
||||
#define D_SENSOR_SDM630_RX "SDM630 Rx"
|
||||
#define D_SENSOR_WE517_TX "WE517 Tx"
|
||||
#define D_SENSOR_WE517_RX "WE517 Rx"
|
||||
#define D_SENSOR_TM1638_CLK "TM16 CLK"
|
||||
#define D_SENSOR_TM1638_DIO "TM16 DIO"
|
||||
#define D_SENSOR_TM1638_STB "TM16 STB"
|
||||
|
@ -600,6 +600,8 @@
|
||||
#define D_SENSOR_SDM120_RX "SDMx20 Rx"
|
||||
#define D_SENSOR_SDM630_TX "SDM630 Tx"
|
||||
#define D_SENSOR_SDM630_RX "SDM630 Rx"
|
||||
#define D_SENSOR_WE517_TX "WE517 Tx"
|
||||
#define D_SENSOR_WE517_RX "WE517 Rx"
|
||||
#define D_SENSOR_TM1638_CLK "TM16 CLK"
|
||||
#define D_SENSOR_TM1638_DIO "TM16 DIO"
|
||||
#define D_SENSOR_TM1638_STB "TM16 STB"
|
||||
|
@ -600,6 +600,8 @@
|
||||
#define D_SENSOR_SDM120_RX "SDMx20 Rx"
|
||||
#define D_SENSOR_SDM630_TX "SDM630 Tx"
|
||||
#define D_SENSOR_SDM630_RX "SDM630 Rx"
|
||||
#define D_SENSOR_WE517_TX "WE517 Tx"
|
||||
#define D_SENSOR_WE517_RX "WE517 Rx"
|
||||
#define D_SENSOR_TM1638_CLK "TM16 CLK"
|
||||
#define D_SENSOR_TM1638_DIO "TM16 DIO"
|
||||
#define D_SENSOR_TM1638_STB "TM16 STB"
|
||||
|
@ -600,6 +600,8 @@
|
||||
#define D_SENSOR_SDM120_RX "SDMx20 Rx"
|
||||
#define D_SENSOR_SDM630_TX "SDM630 Tx"
|
||||
#define D_SENSOR_SDM630_RX "SDM630 Rx"
|
||||
#define D_SENSOR_WE517_TX "WE517 Tx"
|
||||
#define D_SENSOR_WE517_RX "WE517 Rx"
|
||||
#define D_SENSOR_TM1638_CLK "TM16 CLK"
|
||||
#define D_SENSOR_TM1638_DIO "TM16 DIO"
|
||||
#define D_SENSOR_TM1638_STB "TM16 STB"
|
||||
|
@ -600,6 +600,8 @@
|
||||
#define D_SENSOR_SDM120_RX "SDMx20 Rx"
|
||||
#define D_SENSOR_SDM630_TX "SDM630 Tx"
|
||||
#define D_SENSOR_SDM630_RX "SDM630 Rx"
|
||||
#define D_SENSOR_WE517_TX "WE517 Tx"
|
||||
#define D_SENSOR_WE517_RX "WE517 Rx"
|
||||
#define D_SENSOR_TM1638_CLK "TM16 CLK"
|
||||
#define D_SENSOR_TM1638_DIO "TM16 DIO"
|
||||
#define D_SENSOR_TM1638_STB "TM16 STB"
|
||||
|
@ -600,6 +600,8 @@
|
||||
#define D_SENSOR_SDM120_RX "SDMx20 Rx"
|
||||
#define D_SENSOR_SDM630_TX "SDM630 Tx"
|
||||
#define D_SENSOR_SDM630_RX "SDM630 Rx"
|
||||
#define D_SENSOR_WE517_TX "WE517 Tx"
|
||||
#define D_SENSOR_WE517_RX "WE517 Rx"
|
||||
#define D_SENSOR_TM1638_CLK "TM16 CLK"
|
||||
#define D_SENSOR_TM1638_DIO "TM16 DIO"
|
||||
#define D_SENSOR_TM1638_STB "TM16 STB"
|
||||
|
@ -600,6 +600,8 @@
|
||||
#define D_SENSOR_SDM120_RX "SDMx20 Rx"
|
||||
#define D_SENSOR_SDM630_TX "SDM630 Tx"
|
||||
#define D_SENSOR_SDM630_RX "SDM630 Rx"
|
||||
#define D_SENSOR_WE517_TX "WE517 Tx"
|
||||
#define D_SENSOR_WE517_RX "WE517 Rx"
|
||||
#define D_SENSOR_TM1638_CLK "TM16 CLK"
|
||||
#define D_SENSOR_TM1638_DIO "TM16 DIO"
|
||||
#define D_SENSOR_TM1638_STB "TM16 STB"
|
||||
|
@ -600,6 +600,8 @@
|
||||
#define D_SENSOR_SDM120_RX "SDMx20 Rx"
|
||||
#define D_SENSOR_SDM630_TX "SDM630 Tx"
|
||||
#define D_SENSOR_SDM630_RX "SDM630 Rx"
|
||||
#define D_SENSOR_WE517_TX "WE517 Tx"
|
||||
#define D_SENSOR_WE517_RX "WE517 Rx"
|
||||
#define D_SENSOR_TM1638_CLK "TM16 CLK"
|
||||
#define D_SENSOR_TM1638_DIO "TM16 DIO"
|
||||
#define D_SENSOR_TM1638_STB "TM16 STB"
|
||||
|
@ -600,6 +600,8 @@
|
||||
#define D_SENSOR_SDM120_RX "SDMx20 Rx"
|
||||
#define D_SENSOR_SDM630_TX "SDM630 Tx"
|
||||
#define D_SENSOR_SDM630_RX "SDM630 Rx"
|
||||
#define D_SENSOR_WE517_TX "WE517 Tx"
|
||||
#define D_SENSOR_WE517_RX "WE517 Rx"
|
||||
#define D_SENSOR_TM1638_CLK "TM16 CLK"
|
||||
#define D_SENSOR_TM1638_DIO "TM16 DIO"
|
||||
#define D_SENSOR_TM1638_STB "TM16 STB"
|
||||
|
@ -600,6 +600,8 @@
|
||||
#define D_SENSOR_SDM120_RX "SDMx20 Rx"
|
||||
#define D_SENSOR_SDM630_TX "SDM630 Tx"
|
||||
#define D_SENSOR_SDM630_RX "SDM630 Rx"
|
||||
#define D_SENSOR_WE517_TX "WE517 Tx"
|
||||
#define D_SENSOR_WE517_RX "WE517 Rx"
|
||||
#define D_SENSOR_TM1638_CLK "TM16 CLK"
|
||||
#define D_SENSOR_TM1638_DIO "TM16 DIO"
|
||||
#define D_SENSOR_TM1638_STB "TM16 STB"
|
||||
|
@ -668,6 +668,7 @@
|
||||
//#define USE_IEM3000 // Add support for Schneider Electric iEM3000-Modbus series energy monitor (+0k8 code)
|
||||
#define IEM3000_SPEED 19200 // iEM3000-Modbus RS485 serial speed (default: 19200 baud)
|
||||
#define IEM3000_ADDR 1 // iEM3000-Modbus modbus address (default: 0x01)
|
||||
//#define USE_WE517 // Add support for Orno WE517-Modbus energy monitor (+1k code)
|
||||
|
||||
// -- Low level interface devices -----------------
|
||||
#define USE_DHT // Add support for DHT11, AM2301 (DHT21, DHT22, AM2302, AM2321) and SI7021 Temperature and Humidity sensor (1k6 code)
|
||||
|
@ -610,8 +610,12 @@ void GetFeatures(void)
|
||||
#ifdef USE_MIEL_HVAC
|
||||
feature6 |= 0x04000000; // xdrv_44_miel_hvac.ino
|
||||
#endif
|
||||
// feature6 |= 0x08000000;
|
||||
#if defined(USE_ENERGY_SENSOR) && defined(USE_WE517)
|
||||
feature6 |= 0x08000000; // xnrg_17_ornowe517.ino
|
||||
#endif
|
||||
|
||||
// feature6 |= 0x10000000;
|
||||
|
||||
#if defined(ESP32) && defined(USE_TTGO_WATCH)
|
||||
feature6 |= 0x20000000; // xdrv_83_esp32watch.ino
|
||||
#endif
|
||||
|
@ -174,6 +174,7 @@
|
||||
//#define USE_SOLAX_X1 // Add support for Solax X1 series Modbus log info (+3k1 code)
|
||||
//#define USE_LE01MR // Add support for F&F LE-01MR modbus energy meter (+2k code)
|
||||
//#define USE_TELEINFO // Add support for French Energy Provider metering telemetry (+5k2 code, +168 RAM + SmartMeter LinkedList Values RAM)
|
||||
//#define USE_WE517 // Add support for Orno WE517-Modbus energy monitor (+1k code)
|
||||
|
||||
#define USE_DHT // Add support for DHT11, AM2301 (DHT21, DHT22, AM2302, AM2321) and SI7021 Temperature and Humidity sensor
|
||||
#define USE_MAX31855 // Add support for MAX31855 K-Type thermocouple sensor using softSPI
|
||||
@ -271,6 +272,8 @@
|
||||
#undef USE_SOLAX_X1 // Disable support for Solax X1 series Modbus log info (+3k1 code)
|
||||
#undef USE_LE01MR // Disable support for F&F LE-01MR Modbus energy meter (+2k code)
|
||||
#undef USE_TELEINFO // Disable support for French Energy Provider metering telemetry
|
||||
#undef USE_IEM3000 // Disable support for Schneider Electric iEM3000-Modbus series energy monitor (+0k8 code)
|
||||
#undef USE_WE517 // Disable support for Orno WE517-Modbus energy monitor (+1k code)
|
||||
|
||||
|
||||
#define USE_I2C // I2C using library wire (+10k code, 0k2 mem, 124 iram)
|
||||
@ -365,6 +368,8 @@
|
||||
#undef USE_SOLAX_X1 // Disable support for Solax X1 series Modbus log info (+3k1 code)
|
||||
#undef USE_LE01MR // Disable support for F&F LE-01MR Modbus energy meter (+2k code)
|
||||
#undef USE_TELEINFO // Disable support for French Energy Provider metering telemetry
|
||||
#undef USE_IEM3000 // Disable support for Schneider Electric iEM3000-Modbus series energy monitor (+0k8 code)
|
||||
#undef USE_WE517 // Disable support for Orno WE517-Modbus energy monitor (+1k code)
|
||||
|
||||
//#undef USE_DS18x20 // Disable support for DS18x20 sensors with id sort, single scan and read retry (+1k3 code)
|
||||
|
||||
@ -521,7 +526,8 @@
|
||||
#undef USE_SOLAX_X1 // Disable support for Solax X1 series Modbus log info (+3k1 code)
|
||||
#undef USE_LE01MR // Disable support for F&F LE-01MR Modbus energy meter (+2k code)
|
||||
#undef USE_TELEINFO // Disable support for French Energy Provider metering telemetry
|
||||
|
||||
#undef USE_IEM3000 // Disable support for Schneider Electric iEM3000-Modbus series energy monitor (+0k8 code)
|
||||
#undef USE_WE517 // Disable support for Orno WE517-Modbus energy monitor (+1k code)
|
||||
|
||||
#undef USE_DHT // Disable support for DHT11, AM2301 (DHT21, DHT22, AM2302, AM2321) and SI7021 Temperature and Humidity sensor
|
||||
#undef USE_MAX31855 // Disable MAX31855 K-Type thermocouple sensor using softSPI
|
||||
@ -655,7 +661,8 @@
|
||||
#undef USE_SOLAX_X1 // Disable support for Solax X1 series Modbus log info (+3k1 code)
|
||||
#undef USE_LE01MR // Disable support for F&F LE-01MR Modbus energy meter (+2k code)
|
||||
#undef USE_TELEINFO // Disable support for French Energy Provider metering telemetry
|
||||
|
||||
#undef USE_IEM3000 // Disable support for Schneider Electric iEM3000-Modbus series energy monitor (+0k8 code)
|
||||
#undef USE_WE517 // Disable support for Orno WE517-Modbus energy monitor (+1k code)
|
||||
|
||||
#undef USE_DHT // Disable support for DHT11, AM2301 (DHT21, DHT22, AM2302, AM2321) and SI7021 Temperature and Humidity sensor
|
||||
#undef USE_MAX31855 // Disable MAX31855 K-Type thermocouple sensor using softSPI
|
||||
@ -791,6 +798,7 @@
|
||||
#undef USE_BL0940 // Disable support for BL0940 Energy monitor as used in Blitzwolf SHP-10 (+1k6 code)
|
||||
#undef USE_TELEINFO // Disable support for French Energy Provider metering telemetry
|
||||
#undef USE_IEM3000 // Disable support for Schneider Electric iEM3000-Modbus series energy monitor (+0k8 code)
|
||||
#undef USE_WE517 // Disable support for Orno WE517-Modbus energy monitor (+1k code)
|
||||
|
||||
#undef USE_DHT // Disable support for DHT11, AM2301 (DHT21, DHT22, AM2302, AM2321) and SI7021 Temperature and Humidity sensor
|
||||
#undef USE_MAX31855 // Disable MAX31855 K-Type thermocouple sensor using softSPI
|
||||
|
@ -148,6 +148,8 @@ enum UserSelectablePins {
|
||||
GPIO_DYP_RX,
|
||||
GPIO_MIEL_HVAC_TX, // Mitsubishi Electric HVAC TX pin
|
||||
GPIO_MIEL_HVAC_RX, // Mitsubishi Electric HVAC RX pin
|
||||
GPIO_WE517_TX, // ORNO WE517 Serial interface
|
||||
GPIO_WE517_RX, // ORNO WE517 Serial interface
|
||||
GPIO_SENSOR_END };
|
||||
|
||||
enum ProgramSelectablePins {
|
||||
@ -251,7 +253,8 @@ const char kSensorNames[] PROGMEM =
|
||||
D_SENSOR_IEM3000_TX "|" D_SENSOR_IEM3000_RX "|"
|
||||
D_SENSOR_ZIGBEE_RST "|"
|
||||
D_SENSOR_DYP_RX "|"
|
||||
D_SENSOR_MIEL_HVAC_TX "|" D_SENSOR_MIEL_HVAC_RX
|
||||
D_SENSOR_MIEL_HVAC_TX "|" D_SENSOR_MIEL_HVAC_RX "|"
|
||||
D_SENSOR_WE517_TX "|" D_SENSOR_WE517_RX
|
||||
;
|
||||
|
||||
const char kSensorNamesFixed[] PROGMEM =
|
||||
@ -457,6 +460,10 @@ const uint16_t kGpioNiceList[] PROGMEM = {
|
||||
AGPIO(GPIO_IEM3000_TX), // IEM3000 Serial interface
|
||||
AGPIO(GPIO_IEM3000_RX), // IEM3000 Serial interface
|
||||
#endif
|
||||
#ifdef USE_WE517
|
||||
AGPIO(GPIO_WE517_TX), // WE517 Serial interface
|
||||
AGPIO(GPIO_WE517_RX), // WE517 Serial interface
|
||||
#endif
|
||||
#endif // USE_ENERGY_SENSOR
|
||||
|
||||
// Serial
|
||||
|
232
tasmota/xnrg_17_ornowe517.ino
Normal file
232
tasmota/xnrg_17_ornowe517.ino
Normal file
@ -0,0 +1,232 @@
|
||||
/*
|
||||
xnrg_17_ornowe512.ino - Orno WE517-Modbus energy meter support for Tasmota
|
||||
|
||||
Copyright (C) 2020 Maxime Vincent - based on the work of Gennaro Tortone and Theo Arends
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifdef USE_ENERGY_SENSOR
|
||||
#ifdef USE_WE517
|
||||
/*********************************************************************************************\
|
||||
* Orno WE517-Modbus energy meter
|
||||
*
|
||||
* [SetOption72: Set reference used for total energy]
|
||||
* This driver supports SetOption72 = 1, which enables the use of Hardware Energy Totals,
|
||||
* (as apposed to software energy totals kept in Tasmota flash memory)
|
||||
\*********************************************************************************************/
|
||||
|
||||
#define XNRG_17 17
|
||||
|
||||
// can be user defined in my_user_config.h
|
||||
#ifndef WE517_SPEED
|
||||
#define WE517_SPEED 9600 // default WE517 Modbus address
|
||||
#endif
|
||||
// can be user defined in my_user_config.h
|
||||
#ifndef WE517_ADDR
|
||||
#define WE517_ADDR 1 // default WE517 Modbus address
|
||||
#endif
|
||||
|
||||
#define FUNCTION_CODE_READ_HOLDING_REGISTERS (0x03)
|
||||
|
||||
#include <TasmotaModbus.h>
|
||||
TasmotaModbus *We517Modbus;
|
||||
|
||||
const uint16_t we517_start_addresses[] {
|
||||
/* */ // 3P4 3P3 1P2 Unit Description
|
||||
/* 0 */ 0x000E, // + - + V Phase 1 line to neutral volts
|
||||
/* 1 */ 0x0010, // + - - V Phase 2 line to neutral volts
|
||||
/* 2 */ 0x0012, // + - - V Phase 3 line to neutral volts
|
||||
/* 3 */ 0x0016, // + + + A Phase 1 current
|
||||
/* 4 */ 0x0018, // + + - A Phase 2 current
|
||||
/* 5 */ 0x001A, // + + - A Phase 3 current
|
||||
/* 6 */ 0x001E, // + - + kW Phase 1 power
|
||||
/* 7 */ 0x0020, // + - + kW Phase 2 power
|
||||
/* 8 */ 0x0022, // + - - kW Phase 3 power
|
||||
/* 9 */ 0x0026, // + - + VAr Phase 1 volt amps reactive
|
||||
/* 10 */ 0x0026, // + - - VAr Phase 2 volt amps reactive
|
||||
/* 11 */ 0x002A, // + - - VAr Phase 3 volt amps reactive
|
||||
/* 12 */ 0x0036, // + - + Phase 1 power factor
|
||||
/* 13 */ 0x0038, // + - - Phase 2 power factor
|
||||
/* 14 */ 0x003A, // + - - Phase 3 power factor
|
||||
/* 15 */ 0x0014, // + + + Hz Frequency of supply voltages
|
||||
/* 16 */ 0x0100 // + + + kWh Total active energy
|
||||
};
|
||||
|
||||
struct WE517 {
|
||||
uint8_t read_state = 0;
|
||||
uint8_t send_retry = 0;
|
||||
} We517;
|
||||
|
||||
/*********************************************************************************************/
|
||||
|
||||
void WE517Every250ms(void)
|
||||
{
|
||||
bool data_ready = We517Modbus->ReceiveReady();
|
||||
|
||||
if (data_ready) {
|
||||
uint8_t buffer[14]; // At least 5 + (2 * 2) = 9
|
||||
|
||||
uint32_t error = We517Modbus->ReceiveBuffer(buffer, 2);
|
||||
AddLogBuffer(LOG_LEVEL_DEBUG_MORE, buffer, We517Modbus->ReceiveCount());
|
||||
|
||||
if (error) {
|
||||
AddLog_P2(LOG_LEVEL_DEBUG, PSTR("ORNO: WE517 error %d"), error);
|
||||
} else {
|
||||
Energy.data_valid[0] = 0;
|
||||
Energy.data_valid[1] = 0;
|
||||
Energy.data_valid[2] = 0;
|
||||
|
||||
// 0 1 2 3 4 5 6 7 8
|
||||
// SA FC BC Fh Fl Sh Sl Cl Ch
|
||||
// 01 04 04 43 66 33 34 1B 38 = 230.2 Volt
|
||||
float value;
|
||||
((uint8_t*)&value)[3] = buffer[3]; // Get float values
|
||||
((uint8_t*)&value)[2] = buffer[4];
|
||||
((uint8_t*)&value)[1] = buffer[5];
|
||||
((uint8_t*)&value)[0] = buffer[6];
|
||||
|
||||
switch(We517.read_state) {
|
||||
case 0:
|
||||
Energy.voltage[0] = value;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
Energy.voltage[1] = value;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
Energy.voltage[2] = value;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
Energy.current[0] = value;
|
||||
break;
|
||||
|
||||
case 4:
|
||||
Energy.current[1] = value;
|
||||
break;
|
||||
|
||||
case 5:
|
||||
Energy.current[2] = value;
|
||||
break;
|
||||
|
||||
case 6:
|
||||
Energy.active_power[0] = value * 1000;
|
||||
break;
|
||||
|
||||
case 7:
|
||||
Energy.active_power[1] = value * 1000;
|
||||
break;
|
||||
|
||||
case 8:
|
||||
Energy.active_power[2] = value * 1000;
|
||||
break;
|
||||
|
||||
case 9:
|
||||
Energy.reactive_power[0] = value;
|
||||
break;
|
||||
|
||||
case 10:
|
||||
Energy.reactive_power[1] = value;
|
||||
break;
|
||||
|
||||
case 11:
|
||||
Energy.reactive_power[2] = value;
|
||||
break;
|
||||
|
||||
case 12:
|
||||
Energy.power_factor[0] = value;
|
||||
break;
|
||||
|
||||
case 13:
|
||||
Energy.power_factor[1] = value;
|
||||
break;
|
||||
|
||||
case 14:
|
||||
Energy.power_factor[2] = value;
|
||||
break;
|
||||
|
||||
case 15:
|
||||
Energy.frequency[0] = value;
|
||||
break;
|
||||
|
||||
case 16:
|
||||
EnergyUpdateTotal(value, true);
|
||||
break;
|
||||
}
|
||||
|
||||
We517.read_state++;
|
||||
if (sizeof(we517_start_addresses)/2 == We517.read_state) {
|
||||
We517.read_state = 0;
|
||||
}
|
||||
}
|
||||
} // end data ready
|
||||
|
||||
if (0 == We517.send_retry || data_ready) {
|
||||
We517.send_retry = 5;
|
||||
We517Modbus->Send(WE517_ADDR, FUNCTION_CODE_READ_HOLDING_REGISTERS, we517_start_addresses[We517.read_state], 2);
|
||||
} else {
|
||||
We517.send_retry--;
|
||||
}
|
||||
}
|
||||
|
||||
void We517SnsInit(void)
|
||||
{
|
||||
We517Modbus = new TasmotaModbus(Pin(GPIO_WE517_RX), Pin(GPIO_WE517_TX));
|
||||
uint8_t result = We517Modbus->Begin(WE517_SPEED);
|
||||
if (result) {
|
||||
if (2 == result) {
|
||||
AddLog_P2(LOG_LEVEL_DEBUG, PSTR("ORNO: WE517 HW serial init 8E1 at %d baud"), WE517_SPEED);
|
||||
Serial.begin(WE517_SPEED, SERIAL_8E1);
|
||||
ClaimSerial();
|
||||
}
|
||||
Energy.phase_count = 3;
|
||||
Energy.frequency_common = true; // Use common frequency
|
||||
} else {
|
||||
energy_flg = ENERGY_NONE;
|
||||
}
|
||||
}
|
||||
|
||||
void We517DrvInit(void)
|
||||
{
|
||||
if (PinUsed(GPIO_WE517_RX) && PinUsed(GPIO_WE517_TX)) {
|
||||
energy_flg = XNRG_17;
|
||||
}
|
||||
}
|
||||
|
||||
/*********************************************************************************************\
|
||||
* Interface
|
||||
\*********************************************************************************************/
|
||||
|
||||
bool Xnrg17(uint8_t function)
|
||||
{
|
||||
bool result = false;
|
||||
|
||||
switch (function) {
|
||||
case FUNC_EVERY_250_MSECOND:
|
||||
if (uptime > 4) { WE517Every250ms(); }
|
||||
break;
|
||||
case FUNC_INIT:
|
||||
We517SnsInit();
|
||||
break;
|
||||
case FUNC_PRE_INIT:
|
||||
We517DrvInit();
|
||||
break;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
#endif // USE_WE517
|
||||
#endif // USE_ENERGY_SENSOR
|
@ -229,7 +229,7 @@ a_features = [[
|
||||
"USE_VEML7700","USE_MCP9808","USE_BL0940","USE_TELEGRAM",
|
||||
"USE_HP303B","USE_TCP_BRIDGE","USE_TELEINFO","USE_LMT01",
|
||||
"USE_PROMETHEUS","USE_IEM3000","USE_DYP","USE_I2S_AUDIO",
|
||||
"USE_MLX90640","USE_VL53L1X","USE_MIEL_HVAC","",
|
||||
"USE_MLX90640","USE_VL53L1X","USE_MIEL_HVAC","USE_WE517",
|
||||
"","USE_TTGO_WATCH","USE_ETHERNET","USE_WEBCAM"
|
||||
],[
|
||||
"","","","",
|
||||
|
Loading…
x
Reference in New Issue
Block a user