Eurom E-convect WiFi

Good to know. Today also was the firmware is to new for the tuya convert. The eurom 800xs is reconized but i have only one on/off device.

How did you configure the module in Tasmota to be recognized correctly?
I chose Tuya MCU as module type with tuya tx on GPIO1 and tuya rx on GPIO3 and also testet it with rx on 13 and tx on 15…
But Tuya Helper still doesn’t get a response from the MCU.

I checked my configuration:

GPIO13 = RX
RGPIO15 = TX

When I go to console, I see the message coming in.

Thanks for the reply!
Double checked everything, but unfortunately it’s still not working :confused:

Do you have any suggestions for troubleshooting?

I have logged some traffic on the e-convect wifi with the stock firmware.
I’m now at the point where at least I can tell it to turn on/off. It does report it’s status back over serial, however I cannot get Tasmota to parse that correctly.

I have the module configured with SerialBridge RX on GPIO13, SerBr TX on GPIO15.

The serial protocol is different than TuyaMCU, it’s much simpler:
From the console on the Tasmota device, I’m using:
SerialSend5 7E 01 00 01 01 81 to enable the heater.
SerialSend5 7E 01 00 01 00 80 to disable the heater.

The serial port is supposed to receive 2 frames back:
1: The same frame you just sent.
2: A status frame which contains at least the room temperature as far as I figured out:
7E 00 00 07 00 00 00 16 13 00 00 AE

The last byte is a check sum by adding all the previous bytes before it.
Here, 16 is the setpoint and 13 is the measured temperature.

It’d be nice to get some feedback if someone can get this working on different models.
I’m also still tinkering with the serial receive on Tasmota, but I think it will require some more low level changes.

Hello,
I bought a heater “Eurom Alutherm 1000 Wifi”.
I flashed with Tasmota 9.3.1 and configure with “Tuya MCU Module” (GPIO 13 : tuya RX / GPIO 15 : tuya TX)

I find DPID :

DpId :Type
1 : Boolean
2 : Integer
3 : Integer
4 : Enum
12 : ?
101:Enum (01 / 02 / 03)
102:Boolean

Sending console command

TuyaMCU 71,3
TempRes 0
TuyaMCU 72,2

I get
Temperature : 23 °C
Temperature Set :16 °C

I think the dpid 102 is “automatic mode” / “manual mode”.

But i have a problem… I can’t turn on/off the heater (dpid 1 doesn’t work)
The buttons do not work anymore
I tried to put back the firmware backup but it doesn’t work. I only had a 1M backup

CONSOLE TASMOTA (WEBLOG 4) :
19:45:57.785 TYA: fnId=11 is set for dpId=1
19:45:57.788 TYA: RX Relay-1 --> MCU State: Off Current State:Off
19:45:57.791 {"TuyaReceived":{"Data":"55AA01070008020200040000001930","Cmnd":7,"CmndData":"0202000400000019","DpType2Id2":25,"2":{"DpId":2,"DpIdType":2,"DpIdData":"00000019"}}}
19:45:57.795 TYA: fnId=72 is set for dpId=2
19:45:57.798 TYA: RX value 25 from dpId 2 
19:45:57.802 {"TuyaReceived":{"Data":"55AA0107000803020004000000172F","Cmnd":7,"CmndData":"0302000400000017","DpType2Id3":23,"3":{"DpId":3,"DpIdType":2,"DpIdData":"00000017"}}}
19:45:57.806 TYA: fnId=71 is set for dpId=3
19:45:57.808 TYA: RX value 23 from dpId 3 
19:45:57.812 {"TuyaReceived":{"Data":"55AA01070005040400010116","Cmnd":7,"CmndData":"0404000101","DpType4Id4":1,"4":{"DpId":4,"DpIdType":4,"DpIdData":"01"}}}
19:45:57.815 TYA: fnId=0 is set for dpId=4
19:45:57.818 {"TuyaReceived":{"Data":"55AA01070005650400010379","Cmnd":7,"CmndData":"6504000103","DpType4Id101":3,"101":{"DpId":101,"DpIdType":4,"DpIdData":"03"}}}
19:45:57.822 TYA: fnId=0 is set for dpId=101
19:45:57.826 {"TuyaReceived":{"Data":"55AA01070005660100010074","Cmnd":7,"CmndData":"6601000100","DpType1Id102":0,"102":{"DpId":102,"DpIdType":1,"DpIdData":"00"}}}
19:45:57.829 TYA: fnId=0 is set for dpId=102
19:45:57.832 {"TuyaReceived":{"Data":"55AA010700050C050001011F","Cmnd":7,"CmndData":"0C05000101","DpType5Id12":"0x01","12":{"DpId":12,"DpIdType":5,"DpIdData":"01"}}}
19:45:57.835 TYA: fnId=0 is set for dpId=12

I also recieved

19:45:59.100 {"TuyaReceived":{"Data":"55AA011C00001C","Cmnd":28}} 
19:45:59.103 TYA: RX unknown command

(-> Request for time sync from MCU ???)
I tested some SERIALSEND5 command but nothing

I think the firmware must be very close to

Thank you for this post. It helped me a lot.
In-between I did some more logging and now e-convect is fully operational.

If you want to set new temperature

sserialsend5 7E030007xx000100000000yy

xx = Target temp in hex
yy = 89 + xx (in hex)

For instance to set a temperature of 23
sserialsend5 7E03000717000100000000A0

A temperature of 24
sserialsend5 7E03000718000100000000A1

To change to Fahrenheit
sserialsend5 7E030007xx010100000000yy

xx = Target temp in hex
yy = 8A + xx (in hex)

Finally you can create a template in nodered to create a thermostat and translate commands. (I can help, if someone needs to)

I want to share my experience with my two new Eurom Alutherm Baseboard Heater 2000. The goal was to use these devices as auxiliary heating to reduce the costly gas consumed by my regular heating system. They would need to turn on when the heating system is also heating, and off in case it’s not. I’ve got an overcapacity of solar energy, so it makes sense to me to put it to good use.

Initially I was very disappointed with these heaters because my plan was to turn them on or off using a Fibaro Wall Plug. It turned out that these devices always start in the Off position when power is restored, requiring user intervention before they turn on. Then, after a lot of searching, it turns out these are actually rebranded Tuya devices, but getting the Tuya v2 integration to work was a pain. For one, I didn’t receive my account confirmation email, so I soon got stuck there. Finally, I went down the Tasmota / ESPHome path - and boy that made me happy again :slight_smile:

After acquiring all information I needed, I’ve flashed them both with Tasmota using tuya-convert. That process went flawlessly, using a recommended Raspberry Pi 3B which I had laying around.

After the device was rebooted, it had Tasmota 9.2.0 on it which I needed to downgrade in order for it to accept an ESPHome firmware. I found how to do that here. Once I got the Tasmota version down to 7.2.0 it accepted by ESPHome firmware which I first created and downloaded.

The configuration I used was based in information from this thread. As a new user I am not allowed to post more than two links, but scroll up and you’ll find the information.

I can now turn both of my headers on and off, read the current temperature and set the target temperature. I can also switch to ECO mode and back.

Thank you all for the information I needed :slight_smile:

1 Like

Hi @bobkersten,

Can you share your esp-home config with us ?
I have alutherm 2000 with new tuya firmware so i can’t do tuya-convert ota.

I want to flash tasmota on it and then convert to ESPHome for HA integration.

br

I’ve recently also added rudimental energy monitoring support to it. I first used those aforementioned wall plugs to monitor the energy on all four capacities and hardcoded them into the config. This works, but it might not be 100% accurate. It’s accurate enough for my needs though :slight_smile:

---
substitutions:
  devicename: eurom-heater-1
  device_description: "Eurom Heater #1"

esphome:
  name: ${devicename}
  platform: ESP8266
  board: esp01_1m
  # Two globals floats are written on a daily basis which should not have a too
  # detrimental effect on the flash memory.
  esp8266_restore_from_flash: true

# INFO
# https://community.home-assistant.io/t/eurom-e-convect-wifi/42390/46
# https://esphome.io/components/tuya.html
# https://esphome.io/components/climate/tuya.html
# https://github.com/esphome/feature-requests/issues/470

# Enable logging.
logger:
  baud_rate: 0

# Enable Home Assistant API.
api:

ota:

wifi:
  ssid: "<change this>"
  password: "<change this>"
  power_save_mode: none
  ap:
    ssid: ${devicename}
    ap_timeout: 15s

captive_portal:

#web_server:
#  port: 80

time:
  - platform: sntp
    id: my_time

globals:
  - id: total_energy
    type: float
    restore_value: yes
    initial_value: "0.0"

uart:
  rx_pin: GPIO13
  tx_pin: GPIO15
  baud_rate: 9600

# Register the Tuya MCU connection
tuya:
  time_id: my_time

climate:
  - platform: tuya
    name: "Eurom Alutherm Baseboard Heater"
    id: raw_climate
    switch_datapoint: 1
    target_temperature_datapoint: 2
    current_temperature_datapoint: 3
    visual:
      min_temperature: 18
      max_temperature: 30
      temperature_step: 1

sensor:
  - platform: uptime
    name: "Uptime"
    id: sensor_uptime
  - platform: wifi_signal
    name: "Wi-Fi Signal"
    update_interval: 60s
  - platform: tuya
    id: raw_m_or_p
    sensor_datapoint: 4
    on_value:
      then:
        - lambda: |-
            if (id(raw_climate).mode != CLIMATE_MODE_OFF) {
              if ((int)(x + 0.5) == 0) {
                switch((int)(id(raw_capacity).state + 0.5)) {
                  case 0:
                    id(capacity).publish_state("Low");
                    break;
                  case 1:
                    id(capacity).publish_state("Medium");
                    break;
                  case 2:
                    id(capacity).publish_state("High");
                    break;
                  case 3:
                    id(capacity).publish_state("Off");
                    break;
                }
              } else {
                id(capacity).publish_state("Auto");
              }
            }
  - platform: tuya
    id: raw_capacity
    sensor_datapoint: 101
    on_value:
      then:
        - lambda: |-
            // If in P or Off mode, the raw capacity should not update the select.
            if (
              (int)(id(raw_m_or_p).state + 0.5) == 0 // M mode
              // Let it switch to Off - you can use the select to turn it back on.
              // && id(raw_climate).mode != CLIMATE_MODE_OFF
            ) {
              switch((int)(x + 0.5)) {
                case 0:
                  id(capacity).publish_state("Low");
                  break;
                case 1:
                  id(capacity).publish_state("Medium");
                  break;
                case 2:
                  id(capacity).publish_state("High");
                  break;
                case 3:
                  id(capacity).publish_state("Off");
                  break;
              }
            }
  - platform: template
    name: "Power"
    id: power
    device_class: power
    state_class: measurement
    unit_of_measurement: W
    accuracy_decimals: 1
    filters:
      - sliding_window_moving_average:
          window_size: 4
          send_every: 1
          send_first_at: 1
      - or:
        - delta: 1.0
        - heartbeat: 10s
    update_interval: 1s
    lambda: |-
      // The combination of delta and random makes sure that the wattage is not always
      // exactly the same, which would be unrealistic. The sliding window makes it
      // appear as power is ramping up or down when capacity is changed.
      auto watt = 1.6;
      auto random = 0.35;
      if (id(raw_climate).mode != CLIMATE_MODE_OFF) {
        switch((int)(id(raw_capacity).state + 0.5)) {
          case 0:
            watt = 773.6;
            random = 4;
            break;
          case 1:
            watt = 1173.4;
            random = 6;
            break;
          case 2:
            watt = 1917.2;
            random = 8;
            break;
          case 3:
            watt = 2.8;
            random = 2.5;
            break;
        }
      }
      return watt + static_cast<float>(rand()) / (static_cast<float>(RAND_MAX / random));
  - platform: total_daily_energy
    name: "Energy"
    id: energy
    power_id: power
    device_class: energy
    state_class: total_increasing
    unit_of_measurement: kWh
    accuracy_decimals: 3
    min_save_interval: 300s
    force_update: true
    filters:
      # Multiplication factor from W to kW is 0.001.
      - multiply: 0.001
      - lambda: !lambda |-
          static auto last_state = x;
          if (x < last_state - 0.001) { // x was reset
            id(total_energy) += last_state;
          }
          last_state = x;
          return id(total_energy) + x;
      - heartbeat: 60s

select:
  - platform: template
    name: "Capacity"
    id: capacity
    optimistic: true
    initial_option: "Off"
    restore_value: true
    icon: mdi:thermometer
    options:
      - "Off"
      - "Low"
      - "Medium"
      - "High"
      - "Auto"
    set_action:
      then:
        - lambda: |-
            // Switching capacity turns the device on and switches to manual.
            // Switching to P does not turn the device on.
            if (strcmp(x.c_str(), "Off") == 0) {
              tuya_tuya->set_enum_datapoint_value(101, 0x3);
            } else if (strcmp(x.c_str(), "Low") == 0) {
              tuya_tuya->set_enum_datapoint_value(101, 0x0);
            } else if (strcmp(x.c_str(), "Medium") == 0) {
              tuya_tuya->set_enum_datapoint_value(101, 0x1);
            } else if (strcmp(x.c_str(), "High") == 0) {
              tuya_tuya->set_enum_datapoint_value(101, 0x2);
            } else {
              tuya_tuya->set_boolean_datapoint_value(1, true);
              tuya_tuya->set_enum_datapoint_value(4, 0x1);
            }

text_sensor:
  - platform: wifi_info
    ip_address:
      name: "IP Address"
      disabled_by_default: true
    ssid:
      name: "Wi-Fi SSID"
      disabled_by_default: true
  - platform: version
    name: "ESPHome Version"
    disabled_by_default: true
    hide_timestamp: true
1 Like

@bobkersten for sharing your config.

Because my Alutherm 2000 is updated with the latest tuya firmware, i can’t do a tuya-convert.
So i am going to first serial flashing tasmota on it. This should always be possible when having hardware connections to tx/rx right? Have you got some tips for the alutherm board?

After tasmota is on the board, i flash to esphome with your config.

I can’t help you with that - I’ve only ever flashed ESPHome onto a device using OTA.

Hi everyone. I used tasmotizer to flash esphome to an eurom 2000 alutherm with good results ! Thanks @bobkersten for your config file !
However, I tried to flash back the backup binary made by tasmotizer and it doesn’t seem to work : WiFi icon on the eurom display is never shown anymore (no matter how long I press power/mod buttons).

Any idea or guidance into flashing back to original ? (Otherwise I’ll stick with ESPHome which is not a huge problem :))

Thanks !

Even with esptool, I had no luck reverting back to stock firmware. Original backup from tasmotizer was 8Mb, so I stripped in to 2Mb (the hex content of the binary backup was 4 repeats of the 2Mb content).
Anyway, heater is not showing the “wifi” symbol anymore.

Could anyone send me a backup firmware of a TYWE1S from an Eurom alutherm heater ? (I have a 2500W but I believe the firmware isn’t specific ?)

Are you sure it’s an TYWE1S? My Eurom Alutherm 1500 WiFi contains a TYJW2, with 1MB flash which I dumped using esptool: https://gist.github.com/maleadt/d5164ad517b8e83bbe27eaf2d1f64347/raw/be915373b24c5e0dde93185f8d3507127a7beef2/flash_1M.bin

Hello,
I also bought ‘Eurom Sani-Wall-Heat 2000 Wifi’ after having successfully converted my ‘Eurom Alutherm 1000 Wifi’.

The “Eurom Alutherm 1000 Wifi” works very well with new version of tasmota.

But I have a problem with ‘Eurom Sani-Wall-Heat 2000 Wifi’ which does not use the tuya protocol but just a serial communication.
(GPIO 13 : RX / GPIO 15 : TX)

I made a backup with tasmotizer before flashing my heater but I can’t put back to the stock firmware.

@drbytes: How did you manage to get back to stock firmaware? I tried to flash my 2M backup with tasmotizer but it doesn’t work. There is no wifi network created so I can’t configure anything.
I am stuck with Tasmota which does not work.

I soldered pins to the module and flashed the backup I made earlier (auto backup).
Can’t remember exactly how but I did have to play with the flashsize and start flash offset.
I haven’t touched it ever since I got it working again on the tuya crap firmware, I now just define scenes in tuya and call these in hass to make it do my bidding. :wink:

Good luck

Thank you, impossible to restore the original firmware backup with tasmotizer on my ‘Eurom Sani-Wall-Heat 2000 Wifi’.
I managed to restore the original firmware with esptool.py

The heater does not use the classic tuya protocol. Does anyone know how to find the serial commands?

Hello,

I just finished a beta version of the ESPHOME based firmware for ‘Eurom Sani-Wall-Heat 2000 Wifi’.
I managed to get most of the commands to work:

  • Mode (OFF / 50% / 100%)
  • Swing (ON/OFF)
  • Current Temperature
  • Wifi information (IP…)

The integration in Home assistant works perfectly. I will test it for a few days.

I will post the codes in the next few days.
This is my first ESPHOME project… I still have to do some cleaning in the code

1 Like