Configuring Modbus-Integration for Remeha Qinta Ace gas heating device

Hi there,

we have a new gas heating and I want to integrate it into Home Assistant.

It is a Remeha Qinta Ace 65 that comes along with an ModBus-Gateway (called Remeha GW-08). This Gateway is connectect through three wires with an extension to the Raspberry PI (Zihatec RS422/RS485 HAT Shield for Raspberry Pi).

I have configured the Modbus-Integration but I always get this error in the Core log every 10 seconds:

2021-09-06 20:47:27 DEBUG (SyncWorker_2) [pymodbus.client.sync] New Transaction state 'SENDING'
2021-09-06 20:47:27 ERROR (SyncWorker_2) [homeassistant.components.modbus.modbus] Pymodbus: remeha_quinta_ace_65: Modbus Error: [Input/Output] [Errno 25] Not a tty

This is my configuration:

modbus:
  - name: remeha_quinta_ace_65
    type: serial
    baudrate: 9600
    bytesize: 8
    method: rtu
    parity: N
    port: /dev/ttyAMA0
    stopbits: 1
    sensors:
      - name: "remeha_FlowTemperatureReceived"
        slave: 100
        address: 0273
        scan_interval: 10
        data_type: int
        unit_of_measurement: °C
        count: 1 
        scale: 0.1 
        precision: 1

The Gateway is configured with the Modbus-Address 100 and the sensor I want to read is documented with the Modbus-Address 273:

Has anybody an idea, what this errors means?

Have you ever figure it out, @klacol ?
I’m just starting, attempting my first modbus config. Have a Zihatec shield connected to HAS raspberry. And found same error in logs:

Pymodbus: pdu: Modbus Error: [Input/Output] [Errno 25] Not a tty

if trying to send out something from terminal then can see a led on the shield blinking once

echo "hello" > /dev/ttyAMA0

my has config like this:

- name: pdu
  type: serial
  baudrate: 9600
  bytesize: 8
  method: rtu
  parity: N
  stopbits: 1
  port: /dev/ttyAMA0
  sensors:
      - name: Sensor1
        slave: 1
        address: 0x0000

added additional logging to the configuration.yaml

logger:
  logs:
    homeassistant.components.modbus: debug
    pymodbus.client: debug

and found this piece as source of the error. Looks to me somehow my Pi 4 does not want to communicate with the Zihatec.
(Verified the Modbus device with rs485-uart board and esphome/esp32; device itself working fine)

2022-02-20 10:18:19 DEBUG (SyncWorker_5) [pymodbus.transaction] Current transaction state - IDLE
2022-02-20 10:18:19 DEBUG (SyncWorker_5) [pymodbus.transaction] Running transaction 1
2022-02-20 10:18:19 DEBUG (SyncWorker_5) [pymodbus.transaction] SEND: 0x1 0x3 0x0 0x2 0x0 0x1 0x25 0xca
2022-02-20 10:18:19 DEBUG (SyncWorker_5) [pymodbus.client.sync] New Transaction state 'SENDING'
2022-02-20 10:18:19 DEBUG (SyncWorker_5) [pymodbus.transaction] Transaction failed. ([Errno 25] Not a tty)

Yes, after long tries. Finally this configuration worked for me:

  1. Installed Remeha GW-08 in my Qinta Ace 65

  2. Modbus - Gateway Waveshare RS232485 TO ETH installed and connected via cable to the LAN

  3. Setup Modbus - Gateway Waveshare RS232485 TO ETH

  4. Connected 2-wire-Cable from GW0-8 to the Waveshare RS232485 TO ETH (It did not work, until i changed the two wires, then the modbus connection LED on the GW-08 was blinking green

Bus A -> Bus B
Bus B -> Bus A
OV -> GND
  1. Modbus-Setup in HA for some of the sensors:
modbus:
  - name: waveshare_gateway
    type: tcp
    host: 192.168.1.224
    port: 502
    timeout: 10
    delay: 2
    retries: 3
    sensors:
      - name: remeha_FlowTemperatureReceived
        slave: 100                 # GTW08 ModBUS-Adresse lt. Kodierrad Einstellung
        address: 273               # Modbus-Register-Adresse lt. Parameterliste, Decimal
        count: 1                   # Ein Register soll gelesen werden
        input_type: holding        # Holding register
        data_type: int16           # Modbus Datentpy lt. Parameterliste
        scan_interval: 5           # Der Master (also Homa Assistant) soll alle 10 Sekunden diesen Sensor abfragen
        unit_of_measurement: °C    # Erwartet wird eine absolute Temepratur in °C
        state_class: measurement   # Erwartet wird ein Wert mit MaĂź fĂĽr eine Temperatur
        scale: 0.01                # Multiplikation mit 0.01
        precision: 1               # Eine Nachkommestelle (bei Int?)   
      - name: remeha_ReturnTemperatureReceived
        slave: 100
        address: 274
        count: 1
        input_type: holding
        data_type: int16
        scan_interval: 5
        unit_of_measurement: °C
        state_class: measurement
        scale: 0.01
        precision: 1
      - name: remeha_ApWaterPressure
        slave: 100
        address: 409
        count: 1
        input_type: holding
        data_type: int16
        scan_interval: 5
        unit_of_measurement: bar
        state_class: measurement
        scale: 0.1
        precision: 1
      - name: remeha_varApTOutside
        slave: 100
        address: 384
        count: 1
        input_type: holding
        data_type: int16
        scan_interval: 5
        unit_of_measurement: °C
        state_class: measurement
        scale: 0.01
        precision: 1    
      - name: remeha_varChCtrBurnerStarts
        slave: 100
        address: 419
        count: 2
        input_type: holding
        data_type: int32
        scan_interval: 5
        state_class: measurement
        scale: 1
        precision: 1    
      - name: remeha_varChCtrBurnHours
        slave: 100
        address: 421
        count: 2
        input_type: holding
        data_type: int32
        scan_interval: 5
        unit_of_measurement: h
        state_class: measurement
        scale: 1
        precision: 1  
      - name: remeha_varApChEnergyConsumption
        slave: 100
        address: 433
        count: 2
        input_type: holding
        data_type: int32
        scan_interval: 5
        unit_of_measurement: kWh
        state_class: measurement
        scale: 1
        precision: 1
  1. Setup the sensors in the UI:

1 Like

Hello Austrisv

Did you solve the problem?
I have exactly the same issue with the Zihatec…

So far I have made the sensors below visible in homeassistant, via Modbus.
The thermostat only functions if I set it to manual (for homeassistant status “heat”), if I set it to status “auto” then the Etwist follows its program and does not respond to setpoint change.
If I set the thermostat in homeassistant to “off”, the Elga switches to antifreeze mode.
Unfortunately, possibilities with modbus in homeasistant are limited, I can’t make my own thermostat statuses. for example manual, planning, frost protection, program 1 ect.

It is necessary to provide a unique_id, otherwise you cannot assign the entities to a room or choose another unit.
I have indicated other device classes for the pressure and energy sensor, so that it is correctly viewed in homeassistant. (it wasn’t really necessary for temperature sensors)

modbus:
  - name: GTW-08 Elga Ace
    type: tcp
    host: 192.168.2.199
    port: 502
    delay: 2
    retries: 3
    sensors:
      - name: "Elga Aanvoertempearatuur Combi" #FlowTemperatureReceived
        unique_id: elga1
        slave: 100
        address: 273
        count: 1
        input_type: holding
        data_type: int16
        scan_interval: 5
        device_class: temperature
        unit_of_measurement: °C
        state_class: measurement
        scale: 0.01
        precision: 1
      - name: "Elga Retourtemperatuur" #ReturnTemperatureReceived
        unique_id: elga2
        slave: 100
        address: 274
        count: 1
        input_type: holding
        data_type: int16
        scan_interval: 5
        device_class: temperature
        unit_of_measurement: °C
        state_class: measurement
        scale: 0.01
        precision: 1
      - name: "Elga Waterdruk" #ApWaterPressure
        unique_id: elga3
        slave: 100
        address: 409
        count: 1
        input_type: holding
        data_type: int16
        scan_interval: 5
        device_class: pressure
        unit_of_measurement: bar
        state_class: measurement
        scale: 0.1
        precision: 1
      - name: "Elga Buitentemperatuur" #varApTOutside
        unique_id: elga4
        slave: 100
        address: 384
        count: 1
        input_type: holding
        data_type: int16
        scan_interval: 5
        device_class: temperature
        unit_of_measurement: °C
        state_class: measurement
        scale: 0.01
        precision: 1
      - name: "Elga Aanvoertempearatuur WP" #remeha_varHpHeatPumpTF
        unique_id: elga5
        slave: 100
        address: 403
        count: 1
        input_type: holding
        data_type: int16
        scan_interval: 5
        device_class: temperature
        unit_of_measurement: °C
        state_class: measurement
        scale: 0.01
        precision: 1
      - name: "Elga Waterdoorstroming" #varApFlowmeter
        unique_id: elg6
        slave: 100
        address: 410
        count: 1
        input_type: holding
        data_type: uint16
        scan_interval: 5
        device_class: speed
        unit_of_measurement: l/min
        state_class: measurement
        scale: 0.01
        precision: 1
      - name: "Elga Aanvoertemperatuur setpoint" #varZoneTemperatureSetpoint
        unique_id: elga7
        slave: 100
        address: 1101
        count: 1
        input_type: holding
        data_type: uint16
        scan_interval: 5
        device_class: temperature
        unit_of_measurement: °C
        state_class: measurement
        scale: 0.01
        precision: 1
      - name: "Elga Ruimtesetpoint" #remeha_varZoneTRoomSetpoint
        unique_id: elga8
        slave: 100
        address: 1102
        count: 1
        input_type: holding
        data_type: int16
        scan_interval: 5
        device_class: temperature
        unit_of_measurement: °C
        state_class: measurement
        scale: 0.1
        precision: 1
      - name: "Elga Ruimtetemperatuur" #varZoneTRoom
        unique_id: elga9
        slave: 100
        address: 1104
        count: 1
        input_type: holding
        data_type: int16
        scan_interval: 5
        device_class: temperature
        unit_of_measurement: °C
        state_class: measurement
        scale: 0.1
        precision: 1
      - name: "Elga Energieverbruik totaal" #varApChEnergyConsumption
        unique_id: elga10
        slave: 100
        address: 433
        count: 2
        input_type: holding
        data_type: int32
        scan_interval: 5
        device_class: energy
        unit_of_measurement: kWh
        state_class: total
        scale: 1
        precision: 1

    climates:
      - name: "Elga Etwist Huiskamer"
        unique_id: elga11
        slave: 100
        address: 1104
        target_temp_register: 664
        count: 1
        input_type: holding
        data_type: uint16
        scan_interval: 5
        max_temp: 35
        min_temp: 5
        precision: 1
        scale: 0.1
        temp_step: 0.5
        temperature_unit: C
        hvac_mode_register:
          address: 649
          values:
            state_auto: 0
            state_heat: 1
            state_off: 2
1 Like

can i ask you where i can find the modbus table for a remeha azorra and a remeha calenta ace? i can’t find it online

Dear Klacol

thanks for your post!
I connected the GTW-08 to the waveshare rs232/485 to eth as you described
my issue is the waveshare config, i asume to use the rs485 settings page.

this i s what i get if i use the following config:

I am lost as i can’t see any communication,
the GTW-08 shows 1 red LED

a bit of guidance would be much appreciated

cheers

@jeroenj

You Screenshot shows the RS485 page. What does the RS232 page show?

Have you tried to change the wires? This was my first error. After connecting them as follows, it worked for me:

Bus A -> Bus B
Bus B -> Bus A
OV -> GND

@ klacol

thanks!
yes i wired like you described


for rs232 i did the same


@klacol

i fixed it finally
made a stupid typo in the ip nr
thanks

1 Like

Ok, good, nice mod-bussing!

@Jeroenj,

I’m at the same stage as you were, all wired up and a red led. Will the GTW08 and the waveshare start communicating when there is no server active (I have not yet set up Home Assistant for modbus)?

What was the mistake with the ip adress?


Solved it. Had to enable TCP server mode, not the TCP client mode from the screen shots.

Hi, i expect my waveshare module today and plan to install over the weekend. Few questions to those using the GWT08 with Elga Ace:

  • any luck writing modbus registers? I want to ideally write the room temperature to the Elga ace and steer the modulation

  • did anyone find the registers to change the gas and electricity prices remotely? Can’t locate these in the pdf which Remeha shared online

  • alternatively, the registers to manage silent mode?

It was a type related to the raspberry ip address where HA is running on

Good luck

Hi all, want to ask for small help.

I am debugging why i cannot connect to GWT-08 from esphome. I connect successfully to any other RS485 device, I have applied all tips what was mentioned here as solution…but no success.

So mainly I have the main LED still RED but there are two others LEDs and one of them is on (led D8 is red when i connect one wire). Does anyone knows what is the meaning of this LED?

THX

I thougth those were the rx/tx leds. I did have the same problem as you. I use a waveshare rs485-tcp bridge. Putting the waveshare device in server mode solved it.

Those leds are the rx/tc leds, Change at one device the wire from a->b and the led’s of the rx/tx will be gone off.
If there is no data transfer those 2 led’s must be off.
When there is data transfer, those leds will blink and the led in the center will change to green.

So in the end I found out, that most my ttl to rs485 modules even with no power does that. Only one did not and this one eventually was fully working with esp. not sure why(no time for deep debugging). I think that the borrowed waveshare was in server mode but did the same…