khenderick/esphome-opentherm

Queue full error

Opened this issue · 7 comments

I would really like to thank the author of the development. This is the only development that works with idf framework without arduino. This ability have to be shown on the top of the readme.

Nevertheless I have errors listed below.

[23:47:19][W][opentherm:374]: Queue full. Discarded request: READ_DATA(119, 0x0000)
[23:47:19][W][opentherm:374]: Queue full. Discarded request: READ_DATA(123, 0x0000)
[23:47:19][W][opentherm:374]: Queue full. Discarded request: READ_DATA(5, 0x0000)
[23:47:19][W][opentherm:374]: Queue full. Discarded request: READ_DATA(3, 0x0000)
[23:47:20][W][opentherm:374]: Queue full. Discarded request: READ_DATA(6, 0x0000)
[23:47:20][W][opentherm:642]: Request timeout
[23:47:20][D][opentherm:370]: Sending request: READ_DATA(33, 0x0000)
[23:47:20][D][opentherm:370]: Enqueued request: READ_DATA(28, 0x0000)
[23:47:20][W][opentherm:374]: Queue full. Discarded request: WRITE_DATA(1, 0x0A00)
[23:47:20][W][opentherm:374]: Queue full. Discarded request: WRITE_DATA(56, 0x2600)
[23:47:20][W][opentherm:374]: Queue full. Discarded request: READ_DATA(25, 0x0000)
[23:47:20][W][opentherm:374]: Queue full. Discarded request: READ_DATA(31, 0x0000)
[23:47:20][W][opentherm:374]: Queue full. Discarded request: READ_DATA(19, 0x0000)
[23:47:21][W][opentherm:374]: Queue full. Discarded request: READ_DATA(18, 0x0000)
[23:47:21][W][opentherm:374]: Queue full. Discarded request: READ_DATA(17, 0x0000)
[23:47:21][W][opentherm:642]: Request timeout
[23:47:21][D][opentherm:370]: Sending request: READ_DATA(48, 0x0000)
[23:47:21][D][opentherm:370]: Enqueued request: READ_DATA(26, 0x0000)
[23:47:21][W][opentherm:374]: Received invalid response: DATA_INVALID(48, 0x0000)
[23:47:21][W][opentherm:374]: Queue full. Discarded request: READ_DATA(32, 0x0000)
[23:47:21][D][opentherm:370]: Sending request: WRITE_DATA(1, 0x0A00)
[23:47:22][D][opentherm:370]: Enqueued request: READ_DATA(27, 0x0000)
[23:47:22][W][opentherm:374]: Queue full. Discarded request: READ_DATA(33, 0x0000)
[23:47:22][D][opentherm:370]: Received response: WRITE_ACK(1, 0x0A00)
[23:47:22][D][opentherm:370]: Sending request: WRITE_DATA(56, 0x2600)
[23:47:22][D][opentherm:370]: Enqueued request: WRITE_DATA(1, 0x0A00)
[23:47:22][W][opentherm:374]: Queue full. Discarded request: WRITE_DATA(56, 0x2600)
[23:47:23][W][opentherm:374]: Queue full. Discarded request: READ_DATA(48, 0x0000)
[23:47:23][W][opentherm:374]: Queue full. Discarded request: READ_DATA(49, 0x0000)
[23:47:23][W][opentherm:374]: Queue full. Discarded request: READ_DATA(115, 0x0000)
[23:47:23][W][opentherm:374]: Received invalid response: DATA_INVALID(56, 0x0000)
[23:47:23][W][opentherm:374]: Queue full. Discarded request: READ_DATA(116, 0x0000)
[23:47:23][D][opentherm:370]: Sending request: READ_DATA(49, 0x0000)
[23:47:23][D][opentherm:370]: Enqueued request: READ_DATA(120, 0x0000)
[23:47:23][W][opentherm:374]: Queue full. Discarded request: READ_DATA(117, 0x0000)
[23:47:23][W][opentherm:374]: Received invalid response: DATA_INVALID(49, 0x0000)
[23:47:23][W][opentherm:374]: Queue full. Discarded request: READ_DATA(121, 0x0000)
[23:47:23][D][opentherm:370]: Sending request: READ_DATA(115, 0x0000)
[23:47:23][D][opentherm:370]: Enqueued request: READ_DATA(0, 0x0000)
[23:47:24][W][opentherm:374]: Queue full. Discarded request: READ_DATA(118, 0x0000)
[23:47:24][W][opentherm:374]: Queue full. Discarded request: READ_DATA(122, 0x0000)
[23:47:24][W][opentherm:374]: Queue full. Discarded request: READ_DATA(119, 0x0000)
[23:47:24][W][opentherm:374]: Queue full. Discarded request: READ_DATA(123, 0x0000)

My boiler is Baxi Slim 1400.
I do not modify the code. I just use the example.

What can I do with this errors?

Thanks, good to know, and I'm glad my component is working for you 🙂.

The DATA_INVALID usually means that the boiler does not support that particular data point. This is normal, boilers often only support a subset of the various messages. Removing the corresponding sensors from the configuration will also get rid of those error messages.

I see that the data ID shown by the logs does not easily translate into the respective configuration points, so if you post any log lines containing DATA_INVALID, I'll look up the configuration entries to be removed. From what I can see now, you'll have to remove:

  • dhw_min_temperature
  • dhw_max_temperature
  • dhw_setpoint_temperature
  • ch_min_temperature
  • ch_max_temperature

The dhw_setpoint_temperature makes me wonder whether your boiler does not support domestic hot water. Does it only has a central heating circuit? The full queue might be caused due to the large amount of messages, so let's see how it handles when the unsupported messages are removed.

Keep me posted about your progress.

In any case, I'll leave this ticket open to enhance the logs so they show the actual configuration entry if there's a DATA_INVALID error. Can't promise on when I'll be able to take it up. Life's busy at the moment 😅.

I have try a lot of combitation and once I have received DHW temperature. But I can not repeat this case.
I left only one parameter. CH temperature works fine. DHW temperature do not work.
Please find attached my yaml and log files. They are too big to post it here.
The main reason of using not arduino framework is ability to connect bluetooth temperature and humidity sensors.
logs_openthermdevice_run.txt
openthermdevice.txt

I'm not so good in programming. But if you can send me preliminary tuned virtual machine (VirtualBox or VmWare) I can try to debug the component myself and report results here.

Hi,

Thanks for the logs. The communication with the OpenTherm device is quite timing sensitive and currently is done in software by strategically placed delays. I notice that you're also running a BLE stack and some other stuff. Most likely the BLE also places quite a load on the device, so it might be possible that various interrupts mess with the timings.

I suggest that - if possible and at least for testing - you validate what OpenTherm components work and do not work without displays, BLE and other stuff. So only the various OpenTherm sensors. That might cause things to just work. Once you verified whether or not the OpenTherm stuff on its own work, and what sensors are supported by the boiler, you can then start re-adding other (display/BLE/...) stuff again.

It the end, it might be possible that you'll have to split the OpenTherm stuff from the BLE related stuff.

I'm not sure what you mean by the virtual machine. When debugging/testing I just check out the code locally and then update my esphome config to point to a local folder, and then I use the command line ESPHome tools on my laptop to build/upload changes.

This config also do not work for me.
openthermdevice.txt
This is the log file.
logs_openthermdevice_run.txt
CH temperature works fine.

[15:07:33][W][opentherm:642]: Request timeout
[15:07:33][D][opentherm:370]: Sending request: READ_DATA(25, 0x0000)
[15:07:33][D][opentherm:370]: Enqueued request: READ_DATA(26, 0x0000)
[15:07:33][D][opentherm:370]: Received response: READ_ACK(25, 0x4180)
[15:07:33][D][sensor:094]: 'Температура воды отопления': Sending state 65.50000 °C with 1 decimals of accuracy
[15:07:34][D][opentherm:370]: Sending request: READ_DATA(26, 0x0000)
[15:07:34][W][opentherm:374]: Received invalid response: DATA_INVALID(26, 0x0000)
[15:07:35][D][opentherm:370]: Enqueued request: READ_DATA(0, 0x0000)
[15:07:35][D][opentherm:370]: Sending request: READ_DATA(0, 0x0000)
[15:07:36][D][opentherm:370]: Received response: READ_ACK(0, 0x0002)
[15:07:37][D][opentherm:370]: Enqueued request: READ_DATA(6, 0x0000)
[15:07:37][D][opentherm:370]: Sending request: READ_DATA(6, 0x0000)
[15:07:37][D][opentherm:370]: Enqueued request: READ_DATA(25, 0x0000)
[15:07:37][W][opentherm:374]: Received invalid response: DATA_INVALID(6, 0x0000)
[15:07:37][D][opentherm:370]: Sending request: READ_DATA(25, 0x0000)
[15:07:38][D][opentherm:370]: Enqueued request: READ_DATA(26, 0x0000)
[15:07:39][W][opentherm:642]: Request timeout
[15:07:39][D][opentherm:370]: Sending request: READ_DATA(26, 0x0000)
[15:07:40][W][opentherm:642]: Request timeout
[15:07:40][D][opentherm:370]: Enqueued request: READ_DATA(0, 0x0000)
[15:07:40][D][opentherm:370]: Sending request: READ_DATA(0, 0x0000)
[15:07:41][D][opentherm:370]: Received response: READ_ACK(0, 0x0002)

Can you give it a try with the arduino platform? I'm not sure what could be going on here except for cabling issues and/or some incompatibility with the IDF platform

No, the error is the same. I will try to reconnect cables, but I have done it yesterday really.

I have tried this library with arduino framework.
Opentherm
DHW temperature works fine, but BLE do not works.

Maybe the problem is in master_id? Default is 5, but Baxi boilers need 4.

And after that when I goes back to your library DHW temperature continue showing.
So, I think that the reason is in the first message, where master_id have to be established.