Modbus ASCII with ESP-home

Hello everyone,

I have an OEG Solar Boiler and control unit (ksw-e).
The control-unit has a mini-usb port and can communicate via Modbus-ASCII.
I would like display the temperature values of the Solar-system in Home-Assistant. (2 sensors on the boiler, 1 outside in the solar collectors).

So far, I was already able to read the Modbus-registers using my laptop and a free software package called Modpoll.
(Address: 128, baudrate: 9600, data-bits: 7, stop-bits: 1, parity: even, (max number of registers to read: 60))
In my case, the registers with the temperature values are: 39, 40, 41.

I want to use a wt32-eth01 board to read registers of interest and send them to HA using ESP-home.
(It’s like an ESP-32 but has an ethernet-port on the board which I use to connect to my network instead of using the wifi-module.)
MQTT is also an option but I prefer to keep everything the same and use esp-home.

Unfortunately, I have not been able to get things up and running.
I’ve tried a number of different configurations but I’ve had no luck so far.
All I can get is this error:

14:43:59	[D]	[modbus_controller:032]	Modbus command to device=128 register=0x40 countdown=0 no response received - removed from send queue

Any help would be much appreciated.

If my goal is unachievable (for example because Modbus ASCII is an old protocol with too little support), please also let me know.

The relevant part of my current configuration is:

uart:
  id: mod_bus
  tx_pin: GPIO2
  rx_pin: GPIO4
  baud_rate: 9600
  stop_bits: 1
  data_bits: 7
  parity: EVEN

modbus:
  id: modbus1
  send_wait_time: 500ms
  setup_priority: -10

modbus_controller:
  - id: epever
    address: 0x80
    modbus_id: modbus1
    update_interval: 3s

sensor:
  - platform: modbus_controller
    modbus_controller_id: epever
    name: "Temperature"
    id: temperature
    register_type: holding
    address: 0x40
    unit_of_measurement: "°C"
    value_type: S_WORD

Additional info:
There are 2 python scripts out there for this exact purpose.

https://github.com/ced2git/oeg_kmsd
https://github.com/Yannicflight/oeg_kmsd

But unfortunately, they need some OS to run it on.
An RPI would suffice, but if possible, I want to stick with my microcontroller (wt32-eth01).

I’ve also heard of micropython, but as far as I can find out, these scripts would not work because some libraries are not supported.

I have not been able to find any libraries (for Modbus ASCII) to replace those used in the scripts.

Thanks in advance for your help, any insights are much appreciated.

Did you manage to figure this out? I came here because I want to do exactly the same, do you have a picture/schema on how you connected everything?

I think you have the wrong sensor address. Sensor address 40 is a decimal, which isn’t the same as 0x40.
Does this work when you change the address to 0x28?

I don’t know ascii modbus, but in rtu modbus protocol decimal addresses start from 1 and hex from 0, so 40 would be 0x27