Is it possible to integrate a Toshiba Estia heat pump?

Hi all,
I apologize for my delay. I had other priorities to deal with.

Over the last period I found no other solution than to invest in a BMS-IFMB0AWR-E (ModBus) module for the communication of my Toshiba Estia heat pump with HA. I don’t have the knowledge to re-engineer the Toshiba Estia Controler.
The “TOSHIBA Home AC Control RB-N103S-G” module and similar cannot be used for ESTIA either.

My intention is to buy the BMS-IFMB0AWR-E module and the RS485 to Ethernet RJ45 converter for it. Then it should be realistic to communicate with ESTIA via ModBus.

Anyone want to collaborate on this? I am from Czech.

1 Like

Hi there,

I use Wirelles Adapter Type C, model HWS-IWF0010UP-E to monitor and control my Toshiba Estia heat pump via Toshiba Home AC control app and I also would like to integrate into my HA. I thought it might work with the Toshiba AC integration. Apparently, the wifi adapter HWS-IWF0010UP-E is not supported as I cannot see any available entities upon the integration. Has anyone else managed to successfully integrate your Toshiba Estia heat pump using the wireless adapter type C and Toshiba AC integration?

I want to collaborate. I have the modbus module in place and want to make the signal available via wifi to HA. I use an Elfin EW11 device. Now i am searching for the right modbus config settings on this device. It is not clear for me what the following setting should be:

Data bits. Parity, stop bits. Ctsrts…

hi @burlap,
Thanks for the response.
I don’t know the “Elfin EW11” device. I don’t know if it has conversion to Modbus TCP. I want to use “Wavesare RS485 to Ethernet RJ45 converter”, which has RTU <=> TCP transparent conversion settings in the configuration.

If you have the “BMS-IFMB0AWR-E” module, it has a Modbus RTU output on the RS485 slave interface… it is described in the manual in article 3.1

Is this what you think?

Thanks Petr, I have the BMS-IFMB0UEW-E. I am not sure if that should make a difference.
Thanks for the 8 bit + 2 zero bit config info. Still I am not receiving any data unfortunately. The Toshiba device is blinking only 0,1-0,2s per few seconds, what should indicate that it is functioning. I do not know how to check, so assume the RS485 to Wifi converter is wrongly configured…

This is the configuration I have right now:

Basic Settings

Baud Rate 9600

Data Bit: 8

Stop Bit: 2

Parity: none

Buffer Settings

Buffer Size: 512

Gap Time: 50

Flow Control Settings

Flow Control: disable

Cli Settings

Cli: Disable

Protocol Settings

Protocol: Modbus

I think I have a live data link now with my Estia heat pump… I thought that there should be a continous data-link, but it seems that only data is pushed when requested. So I can now request data to port 502. Big challange now is how to adress all the elements in Home Assistant…

As a first attempt, I would like to be able to read the following register and show it as a sensor in H.A.
Modbus register: 40022
Only read value
What: Water inlet temperature
IP Adress of Modbus RTU/ASCI over TCP/IP: 192.168.1.9
All registers are of the type: 16-bit signed holding register, in standard Modbus’ big endian notation.

How should I add this in a .yaml file to be able to read this value and safe it as a “sensor”?

Hi @burlap,
I don’t know the BMS-IFMB0UEW-E module at all. I did not find it among the modules that Toshiba offers for heat pumps of the Estie series. Could you send me a link to the manual/datasheet for it? And what was the price?

I am reading data from the electricity meter with RS485 and Modbus RTU now. The converter itself converts Modbus RTU <=> Modbus TCP.
In configuration.yaml I have the configuration below, which you could adequately modify for your settings s ESTIA. In HA, I already have access to the energy_l1_power sensor as well as other sensors,…

modbus:
- name: energy
    close_comm_on_error: false
    retry_on_empty: true
    retries: 10
    delay: 10
    message_wait_milliseconds: 1000
    timeout: 10
    type: tcp     #type: rtuovertcp
    host: 192.168.1.152
    port: 502     #port: 4196
    sensors:
      - name: Příkon - fáze L1
        unique_id: energy_l1_power
        count: 2
        data_type: float32
        precision: 2
        address: 12
        input_type: input
        slave: 1
        unit_of_measurement: W
        state_class: measurement
        device_class: power
      - name: Příkon - fáze L2
        unique_id: energy_l2_power
        count: 2
        data_type: float32
        precision: 2
        address: 14
        input_type: input
        slave: 1
        unit_of_measurement: W
        state_class: measurement
        device_class: power

Hi @peter.skevor,

The BMS-IFMB0UEW-E is the updated version of the modbus device you are looking for / or already bought. I think it was around 450 EUR, not sure because my installer did not make a breakdown of all the seperate costs. The adressing is the same als with BMS-IFMB0AWR-E.

I will try to rewrite some of your code and see if I can get it running… Do you already have your modbus device? Or still planning to buy?

Hi guys,

I got good news for you as I have fully integrated Toshiba Estia into Home assistant.

I have used:
BMS-IFMB0UEW-E - Toshiba RS485 modbus interface
Waveshare RS485 to ETH

Toshiba interface is preconfigured (no need of changing settings). Waveshare RS485 is easy to use with its web client configuration (I can share if needed - you need to set up TCP modbus server).

If you successfuly connect both devices the upcomming integration with help of modbus protocol built in home assistant (Modbus - Home Assistant) is quite easy.

You have to setup your new modbus device in configuration.yaml and then sensors and switches.

I am on the phone so I can’t post the code (copy in File editor doesn’t work for me now), so if you are interested I can post my whole code later.

Have a nice day.

Michal

1 Like

Hi Michal,

That is great news indeed! If you can share your full code would be great. Or i can share my email via a PM so you can share the files direct to me. Thanks in advance!

Hi @burlap,
Thanks for the price info. I am still waiting for the delivery of the ordered Toshiba module.

Hi Michal,

Could you find a moment to share the code? If you e mail the code to me (see PM) i can upload it as well.

Hi Guys,

sorry for the delay but I didn’t have time.

How to set up waveshare>

Add this to config.yaml

# Toshiba Estia 4
modbus:
  - name: Toshiba
    close_comm_on_error: true
    delay: 5
    timeout: 2
    type: tcp
    host: 192.168.0.7 # IP address of waveshare
    port: 1
    
    sensors:
      - name: Venkovní teplota
        unit_of_measurement: °C
        state_class: measurement
        slave: 1
        address: 18
        input_type: holding
        data_type: int16
        scan_interval: 30
        count: 1
        scale: 1
    
      - name: TUV
        unit_of_measurement: °C
        state_class: measurement
        slave: 1
        address: 5
        input_type: holding
        data_type: int16
        scan_interval: 30
        count: 1
        scale: 1
       
      - name: Teplota_topeni_chlazeni
        unit_of_measurement: °C
        state_class: measurement
        slave: 1
        address: 3
        input_type: holding
        data_type: int16
        scan_interval: 30
        count: 1
        scale: 1
        
      - name: Teplota TUV (aktuální)
        unit_of_measurement: °C
        state_class: measurement
        slave: 1
        address: 16
        input_type: holding
        data_type: int16
        scan_interval: 30
        count: 1
        scale: 1
        
      - name: Teplota podlaha (aktuální)
        unit_of_measurement: °C
        state_class: measurement
        slave: 1
        address: 21
        input_type: holding
        data_type: int16
        scan_interval: 30
        count: 1
        scale: 1
        
      - name: Okruh topení/chlazení
        slave: 1
        address: 0
        input_type: holding
        data_type: int16
        scan_interval: 30
        count: 1
        
      - name: Okruh teplá voda
        slave: 1
        address: 1
        input_type: holding
        data_type: int16
        scan_interval: 30
        count: 1
        
      - name: Topení (1) / chlazení (2)
        slave: 1
        address: 2
        input_type: holding
        data_type: int16
        scan_interval: 30
        count: 1
        
      - name: Alarm status (0-ok, 1-alarm)
        slave: 1
        address: 11
        input_type: holding
        data_type: int16
        scan_interval: 30
        count: 1
        
    switches:
      - name: Teplá voda
        slave: 1
        address: 1
        command_on: 1
        command_off: 0
        write_type: holding
        verify:
            input_type: holding
            address: 1
            state_on: 1
            state_off: 0
            
      - name: Topení/chlazení
        slave: 1
        address: 0
        command_on: 1
        command_off: 0
        write_type: holding
        verify:
            input_type: holding
            address: 0
            state_on: 1
            state_off: 0
            
      - name: Přepínač chlazení/topení
        slave: 1
        address: 2
        command_on: 1 #topení
        command_off: 2 #chlazení
        write_type: holding
        verify:
            input_type: holding
            address: 2
            state_on: 1 #topení
            state_off: 2 #chlazeni
            
      - name: Automatické řizení teploty
        slave: 1
        address: 6
        command_on: 1
        command_off: 0
        write_type: holding
        verify:
            input_type: holding
            address: 6
            state_on: 1
            state_off: 0
            
      - name: TUV boost
        slave: 1
        address: 8
        command_on: 1
        command_off: 0
        write_type: holding
        verify:
            input_type: holding
            address: 8
            state_on: 1
            state_off: 0
            
      - name: TUV Anti-bacteria
        slave: 1
        address: 10
        command_on: 1
        command_off: 0
        write_type: holding
        verify:
            input_type: holding
            address: 10
            state_on: 1
            state_off: 0
            
input_number:
  setpoint_room:
    name: Teplá voda
    min: 40
    max: 55
    step: 1
    unit_of_measurement: °C
    
  setpoint_room2:
    name: Otopná/chladící voda
    min: 18
    max: 35
    step: 1
    unit_of_measurement: °C

Add this to automations.yaml

- id: slider_set_temp_TUV
  alias: Slider Set Temp TUV
  trigger:
    platform: state
    entity_id: input_number.setpoint_room
  action:
  - service: modbus.write_register
    data_template:
      hub: Toshiba
      unit: 1
      address: 5
      value: '{{ states.input_number.setpoint_room.state | int }}'

- id: slider_get_temp_TUV
  alias: Slider Get Temp TUV
  trigger:
    platform: state
    entity_id: sensor.TUV
  action:
  - service: input_number.set_value
    target:
      entity_id: input_number.setpoint_room
    data:
      value: '{{ states(''sensor.TUV'') | int }}'

- id: slider_set_temp_otopna
  alias: Slider Set Temp otopná voda
  trigger:
    platform: state
    entity_id: input_number.setpoint_room2
  action:
  - service: modbus.write_register
    data_template:
      hub: Toshiba
      unit: 1
      address: 3
      value: '{{ states.input_number.setpoint_room2.state | int }}'

- id: slider_get_temp_otopna
  alias: Slider Get Temp otopná voda
  trigger:
    platform: state
    entity_id: sensor.Teplota_topeni_chlazeni
  action:
  - service: input_number.set_value
    target:
      entity_id: input_number.setpoint_room2
    data:
      value: '{{ states(''sensor.Teplota_topeni_chlazeni'') | int }}'

- id: '1678601010685'
  alias: Oznámení - chyba Toshiba Estia
  description: ''
  trigger:
  - platform: state
    entity_id:
    - sensor.alarm_status_0_ok_1_alarm
    from: '0'
    to: '1'
    for:
      hours: 0
      minutes: 0
      seconds: 0
condition: []
  action:
  - service: notify.mobile_app_poco_f2_pro
    data:
      title: Porucha tepelného čerpadla!
      message: Došlo k poruše tepelného čerpadla, okamžitě volejte servis Toshiba.

And this is how it looks:

It is in czech language but I am sure you can translate it easily by translator.

Have a nice day.

Michal

Thanks Michal!
I will try this next week. Looks great!

Hi Michal,
question. I Saw that you are having an Estia 4, I have an Estia 5 heat pump. Is the addressing the same or is it different?

E.g. outside temperature register address is 40019 for me. It is the 19th register entry and you are using address 18 in your code… Would be great if you can show which “register” entry you are referring to for the Estia 4.

I just see that register entry 40018 does not excist for Estia 4, so entry 40019 is the 18th entry for an Estia 4 and the 19th for Estia 5 i assume…

Hi,

It shoud be the same, look at the documentation.

Google this for manual:

BMS-IFMB0AWR-E_OM_EEU-002_Estia_Modbus_Interface_EN.pdf 

For holding registers start address = (value of modbus address for registers) - 40001.

So if you want to read register number 40001 described in the manual, you work with address 0, if you to read 40005, you work with address 4.

Read the manual for Estia interface, everything you need to know is there.

I hope it helps.

M.

Ok. Clear…
Issue i have now is that i incorporated your code in config.yaml including one sensor to try but this sensor does not appear / i cannot select it in a UI… How can I check where the integration goes wrong?

I can see that data is polled via modbus, so i assume that the data arrives in home assistant…

If you setup the sensor in HA it should show in lovelace regardless of data fetching. Show me your code from config.yaml.

Look also in the log under system and if there is an error, copy and paste it here.

Everything bad should show there.

M.

after a full restart of HA it indeed shows in lovelace… Strange, I expected that a re-run of config.yaml would do the job… Thanks!

Now I added the code to automation.yaml… and I can add the automations but I do not get a slider, only a on/off slider… Would be great if you could give me a tip here how to improve :wink:

You have to add this to config.yaml. This code is for setting two helpers - sliders. Automations are there just for syncing data between sliders and Toshiba.

input_number:
  setpoint_room:
    name: Teplá voda
    min: 40
    max: 55
    step: 1
    unit_of_measurement: °C
    
  setpoint_room2:
    name: Otopná/chladící voda
    min: 18
    max: 35
    step: 1
    unit_of_measurement: °C