OpenTherm Gateway binding

Despite the issues I have with access to the Renovent Brink/ventilation, I wanted to check the connection with the bridge itself but I have the following error (OH3.1)

2021-08-13 22:36:55.317 [DEBUG] [eway.handler.OpenThermGatewayHandler] - Initializing OpenThermGateway handler for uid openthermgateway:openthermgateway:c0be19d17c
2021-08-13 22:36:55.322 [DEBUG] [eway.handler.OpenThermGatewayHandler] - Starting OpenThermGateway connector
2021-08-13 22:36:55.327 [DEBUG] [eway.handler.OpenThermGatewayHandler] - OpenThermGateway connector started
2021-08-13 22:36:55.327 [DEBUG] [rnal.OpenThermGatewaySocketConnector] - Connecting OpenThermGatewaySocketConnector to 192.XXX.X.XXX:25238
2021-08-13 22:36:55.338 [DEBUG] [rnal.OpenThermGatewaySocketConnector] - OpenThermGatewaySocketConnector connected
2021-08-13 22:36:55.344 [DEBUG] [rnal.OpenThermGatewaySocketConnector] - Sending message: PR=A
2021-08-13 22:36:55.347 [DEBUG] [rnal.OpenThermGatewaySocketConnector] - Sending message: PS=0
2021-08-13 22:37:00.354 [DEBUG] [rnal.OpenThermGatewaySocketConnector] - OpenThermGatewaySocketConnector disconnected
2021-08-13 22:37:00.357 [DEBUG] [eway.handler.OpenThermGatewayHandler] - Scheduling to auto reconnect in 60 seconds
2021-08-13 22:37:00.363 [WARN ] [rnal.OpenThermGatewaySocketConnector] - Unable to connect to the OpenTherm Gateway.
java.net.SocketTimeoutException: Read timed out
	at java.net.SocketInputStream.socketRead0(Native Method) ~[?:?]
	at java.net.SocketInputStream.socketRead(SocketInputStream.java:115) ~[?:?]
	at java.net.SocketInputStream.read(SocketInputStream.java:168) ~[?:?]
	at java.net.SocketInputStream.read(SocketInputStream.java:140) ~[?:?]
	at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284) ~[?:?]
	at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326) ~[?:?]
	at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178) ~[?:?]
	at java.io.InputStreamReader.read(InputStreamReader.java:181) ~[?:?]
	at java.io.BufferedReader.fill(BufferedReader.java:161) ~[?:?]
	at java.io.BufferedReader.readLine(BufferedReader.java:326) ~[?:?]
	at java.io.BufferedReader.readLine(BufferedReader.java:392) ~[?:?]
	at org.openhab.binding.openthermgateway.internal.OpenThermGatewaySocketConnector.run(OpenThermGatewaySocketConnector.java:87) [bundleFile:?]
	at java.lang.Thread.run(Thread.java:829) [?:?]
2021-08-13 22:37:02.330 [DEBUG] [eway.handler.OpenThermGatewayHandler] - Disposing OpenThermGateway handler
2021-08-13 22:37:02.332 [DEBUG] [eway.handler.OpenThermGatewayHandler] - Cancelling auto reconnect task
2021-08-13 22:37:02.335 [DEBUG] [rnal.OpenThermGatewaySocketConnector] - Stopping OpenThermGatewaySocketConnector

I can access OTGW using its IP address. In the info I can see PIC connected : false but I think it shall not impact bridge connection?

Hi @RafalO,

Not sure whats going on there… but if the binding can’t establish a basic TCP socket connection then there is something wrong on the network or OTGW side. Check the IP address and port settings. Try connecting with the otmonitor tool. Don’t try to connect both the otmonitor and the binding at the same time (unless you use a serial to ethernet converter that supports multiple connections).

Then you mention something about the PIC controller not connected? I’m pretty sure that needs to be in place before any communication with the OTGW is possible.

In general: set things up properly, test it with the otmonitor tool and if all that works fine… then try to connect the openhab binding.

Just to inform that I have managed to have OpenthermGateway ONLINE :slight_smile:
The problem was a brake in connection of Rx signal on my PCB which was found thanks to the help of ESP8266 - PIC connection issue · Issue #65 · rvdbreemen/OTGW-firmware · GitHub
Now I can come back to the issue how to see Brink Renovent data…

Hello Tomek,
I have tried with 3-way controller connected and without it and in each case when I set GW=1/Gateway in otmonitor (or I have Opentherm Bridge ONLINE/connected) my Brink Renovent does not work and it displays the following:

Have you come across such a symbol?
Have you done something more or set up somehow a special mode?

@RafalO - that means Brink is switched off.
Have you setup OTGW with AA commands? They are really essential to begin with.
Additionally please put OTGW into gateway mode and keep 3-way switch cable disconnected.
Once you have it in place. You should be able to send VS=xx command. That sets the ventilation control/set point.
VS=0 - switches off brink
VS=1 - switches on 1st level of ventilation which you have set for 3-way switch
VS=2 - switches on 2nd level
VS=3 - switches on 3rd level

In general for example VS=60, sets relative ventilation level to 60% of what the max level your Brink can achieve.

Let me know if that helps
Tomek

Yes, this was usefull! :slight_smile: After entering VC=1 I can see

22:06:02.782903	R00110000	Read-Data 	Relative modulation level (MsgID=17): 0.00
22:06:02.913742	BF0110000	Unk-DataId	Relative modulation level (MsgID=17): 0.00
22:06:03.815012	R10470001	Write-Data	Control setpoint V/H (MsgID=71): 1
22:06:03.908622	BD0470001	Write-Ack 	Control setpoint V/H (MsgID=71): 1
22:06:04.862607	R80460000	Read-Data 	Status V/H (MsgID=70): 00000000 00000000
		   - Ventilation: disabled (0)
		   - Bypass position: close (0)
		   - Bypass mode: manual (0)
		   - Free ventilation mode: not active (0)
22:06:05.016123	BC0460002	Read-Ack  	Status V/H (MsgID=70): 00000000 00000010
		   - Fault indication: no fault (0)
		   - Ventilation mode: active (1)
		   - Bypass status: closed (0)
		   - Bypass automatic status: manual (0)
		   - Free ventilation status: not active (0)
		   - Diagnostic indication: no diagnostics (0)
22:06:05.896235	R900E6400	Write-Data	Maximum relative modulation level (MsgID=14): 100.00
22:06:06.017859	BF00E6400	Unk-DataId	Maximum relative modulation level (MsgID=14): 100.00
22:06:06.922726	R10470001	Write-Data	Control setpoint V/H (MsgID=71): 1
22:06:06.978374	BD0470001	Write-Ack 	Control setpoint V/H (MsgID=71): 1

But no reading for AA=70 and AA=71 and after some time

22:07:45.112637	R900E6400	Write-Data	Maximum relative modulation level (MsgID=14): 100.00
22:07:45.271108	BF00E6400	Unk-DataId	Maximum relative modulation level (MsgID=14): 100.00
22:07:46.146517	R10470001	Write-Data	Control setpoint V/H (MsgID=71): 1
22:07:47.142620	R10470001	Write-Data	Control setpoint V/H (MsgID=71): 1
22:07:48.152312	R10470001	Write-Data	Control setpoint V/H (MsgID=71): 1
22:07:49.135741	R10470001	Write-Data	Control setpoint V/H (MsgID=71): 1
22:07:50.127492	R10470001	Write-Data	Control setpoint V/H (MsgID=71): 1
22:07:51.137988	R10470001	Write-Data	Control setpoint V/H (MsgID=71): 1
22:07:52.128361	R10470001	Write-Data	Control setpoint V/H (MsgID=71): 1
...

Seems the OTGW Gateway is “learning” something or is not very stable?

@RafalO - that’s interesting behavior - can you publish some longer log from what entries are being sent?
In general, I have cyclical messages/commands sent for 70, 71, 77, 80 and 82. In addition to that there is bunch of heating related messages which are not being suppressed.

Have you read my post and the OTGW documentation ?

No it’s not. It is exactly as documented :slight_smile: The AA=71 stores data id 71 in the list of alternatives to be used as a substitute for unknown data id’s. In the log you see that data id 14 is sent, to which the Brink responds with ‘unknown data id’. And so the OTGW substitutes data id 14 (which it now knows is unsupported) with data id 71 from the list of alternatives.

Thank you both for help and pointing documentation, I have a better understanding of the protocol :slight_smile:

My understading (and observation) is that the whole list of alternatives/AAs is sent in response to sending one unknown data id. In my case “trigering”/unknown id messages are 01, 25, 14 and they are generated by gateway itself therefore seems I do not need a special triggers like PM. (Not sure but I think PM triggers only one message? )

By the way I was trying to suppres some of them using IU command for example UI=14 but does not work or I am wrong how it shall work.

Question regarding Ventilation thing of the Opentherm Binding:
a) does the binding sets AA/command in the OTGW gateway after selecting a specific channel or
b) shall I first define alternative commands/AAs in otmanager then use only the channles for which commands were deifned in otmanager?

I think the answer seems b) and the intention is to trigger a channel by prior PM message?

Hi @RafalO,

What is your intention exactly with using the UI command? Because from the documentation, my understanding is that it will forcefully treat a data-id as being unknown, even if the unit may indicate otherwise. I assume that this will also result in the OTGW sending messages from the list of alternatives if such a data-id (which is set to being unknown by UI command) is received.

a) I am not sure what you mean by “selecting a specific channel” but in any case, the binding does not send any AA commands automatically. The only commands send automatically on establishing a connection are PR=A which is just for information purposes and PS=0 to make sure OTGW reports every message.
b) You could do that with otmonitor, but you could just as well use openHAB and the SendCommand channel of the binding to send AA commands… or any other command such as PM. Other than for testing, there should be no need to use otmonitor.

Hello

I can read data with openhab/otmanager except ID84 and ID85 which are Unk-DataId…?

[1] @Mephix
I have set up AA=71 which allows execuation of the VS command (in otmanager) . How can I change ventilation level via Opentherm binding? I have connected the channel Ventilation setpoint override R/W with an item. But when I change its value (setpoint from 0 to 100) Brink does not change its ventilation volume and ther is an error as follows:

2021-08-23 22:45:28.266 [ERROR] [nal.common.AbstractInvocationHandler] - An error occurred while calling method 'ThingHandler.handleCommand()' on 'org.openhab.binding.openthermgateway.handler.VentilationHeatRecoveryHandler@d25eeb': Unknown channel vh_ventilationsetpoint
java.lang.IllegalArgumentException: Unknown channel vh_ventilationsetpoint
	at org.openhab.binding.openthermgateway.handler.OpenThermGatewayHandler.getGatewayCodeFromChannel(OpenThermGatewayHandler.java:268) ~[?:?]
	at org.openhab.binding.openthermgateway.handler.OpenThermGatewayHandler.handleCommand(OpenThermGatewayHandler.java:87) ~[?:?]
	at org.openhab.binding.openthermgateway.handler.BaseDeviceHandler.handleCommand(BaseDeviceHandler.java:79) ~[?:?]
	at jdk.internal.reflect.GeneratedMethodAccessor487.invoke(Unknown Source) ~[?:?]
	at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
	at org.openhab.core.internal.common.AbstractInvocationHandler.invokeDirect(AbstractInvocationHandler.java:154) [bundleFile:?]
	at org.openhab.core.internal.common.InvocationHandlerSync.invoke(InvocationHandlerSync.java:59) [bundleFile:?]
	at com.sun.proxy.$Proxy1514.handleCommand(Unknown Source) [?:?]
	at org.openhab.core.thing.internal.profiles.ProfileCallbackImpl.handleCommand(ProfileCallbackImpl.java:80) [bundleFile:?]
	at org.openhab.core.thing.internal.profiles.SystemDefaultProfile.onCommandFromItem(SystemDefault

Shall I use sendcommand with VS ? (if yes what for is the channel?)

[2] @TomoKRK
Also I am wondering how to read input/output duct preasure. You have mentioned about TSP to be used for such a purpose. I have 73 TSP available (see below) but not sure how to use them?

Summary

19:51:51.375945 Command: PM=88
19:51:51.450418 PM: 88
19:51:52.338165 R80580000 Read-Data Number of TSPs V/H (MsgID=88): 0
19:51:52.429132 BC0584900 Read-Ack Number of TSPs V/H (MsgID=88): 73

20:11:25.180903 R00590000 Read-Data TSP setting V/H (MsgID=89): 0 0
20:11:25.337495 B4059006E Read-Ack TSP setting V/H (MsgID=89): 0 110

19:51:58.542403 R80590100 Read-Data TSP setting V/H (MsgID=89): 1 0
19:51:58.637710 B40590100 Read-Ack TSP setting V/H (MsgID=89): 1 0
19:51:59.578284 R80590200 Read-Data TSP setting V/H (MsgID=89): 2 0
19:51:59.715926 BC05902C8 Read-Ack TSP setting V/H (MsgID=89): 2 200
19:52:00.618431 R00590300 Read-Data TSP setting V/H (MsgID=89): 3 0
19:52:00.728810 BC0590300 Read-Ack TSP setting V/H (MsgID=89): 3 0
19:52:01.642000 R80590400 Read-Data TSP setting V/H (MsgID=89): 4 0
19:52:01.740534 B405904F5 Read-Ack TSP setting V/H (MsgID=89): 4 245
19:52:05.779742 R00590500 Read-Data TSP setting V/H (MsgID=89): 5 0
19:52:05.923954 BC0590500 Read-Ack TSP setting V/H (MsgID=89): 5 0
19:52:07.850612 R00590600 Read-Data TSP setting V/H (MsgID=89): 6 0
19:52:07.901669 B4059061A Read-Ack TSP setting V/H (MsgID=89): 6 26
19:52:08.889050 R80590700 Read-Data TSP setting V/H (MsgID=89): 7 0
19:52:09.026974 BC0590726 Read-Ack TSP setting V/H (MsgID=89): 7 38
19:52:10.944523 R80590800 Read-Data TSP setting V/H (MsgID=89): 8 0
19:52:11.046295 B40590800 Read-Ack TSP setting V/H (MsgID=89): 8 0
19:52:15.086080 R00590900 Read-Data TSP setting V/H (MsgID=89): 9 0
19:52:15.227391 B40590901 Read-Ack TSP setting V/H (MsgID=89): 9 1
19:52:16.127380 R00590A00 Read-Data TSP setting V/H (MsgID=89): 10 0
19:52:16.221564 BC0590A00 Read-Ack TSP setting V/H (MsgID=89): 10 0
19:52:17.145984 R80590B00 Read-Data TSP setting V/H (MsgID=89): 11 0
19:52:17.255023 BC0590B64 Read-Ack TSP setting V/H (MsgID=89): 11 100
19:52:18.197594 R00590C00 Read-Data TSP setting V/H (MsgID=89): 12 0
19:52:18.329228 B40590C01 Read-Ack TSP setting V/H (MsgID=89): 12 1
19:52:22.316928 R80590D00 Read-Data TSP setting V/H (MsgID=89): 13 0
19:52:22.428785 BC0590D02 Read-Ack TSP setting V/H (MsgID=89): 13 2
19:52:24.386245 R80590E00 Read-Data TSP setting V/H (MsgID=89): 14 0
19:52:24.526581 BC0590E01 Read-Ack TSP setting V/H (MsgID=89): 14 1
19:52:25.420819 R00590F00 Read-Data TSP setting V/H (MsgID=89): 15 0
19:52:25.527832 B40590F02 Read-Ack TSP setting V/H (MsgID=89): 15 2
19:52:27.498937 R80591000 Read-Data TSP setting V/H (MsgID=89): 16 0
19:52:27.645421 B40591003 Read-Ack TSP setting V/H (MsgID=89): 16 3
19:52:31.645813 R00591100 Read-Data TSP setting V/H (MsgID=89): 17 0
19:52:31.743245 B40591101 Read-Ack TSP setting V/H (MsgID=89): 17 1
19:52:32.669506 R00591200 Read-Data TSP setting V/H (MsgID=89): 18 0
19:52:32.740349 B40591201 Read-Ack TSP setting V/H (MsgID=89): 18 1
19:52:33.714075 R80591300 Read-Data TSP setting V/H (MsgID=89): 19 0
19:52:33.849947 BC0591302 Read-Ack TSP setting V/H (MsgID=89): 19 2
19:52:34.725282 R00591400 Read-Data TSP setting V/H (MsgID=89): 20 0
19:52:34.834689 BC0591400 Read-Ack TSP setting V/H (MsgID=89): 20 0
19:52:38.860365 R80591500 Read-Data TSP setting V/H (MsgID=89): 21 0
19:52:38.951390 B40591500 Read-Ack TSP setting V/H (MsgID=89): 21 0
19:52:40.929119 R80591600 Read-Data TSP setting V/H (MsgID=89): 22 0
19:52:41.066753 BC059163D Read-Ack TSP setting V/H (MsgID=89): 22 61
19:52:41.991816 R00591700 Read-Data TSP setting V/H (MsgID=89): 23 0
19:52:42.052108 B40591701 Read-Ack TSP setting V/H (MsgID=89): 23 1
19:52:44.033283 R00591800 Read-Data TSP setting V/H (MsgID=89): 24 0
19:52:44.136333 BC0591800 Read-Ack TSP setting V/H (MsgID=89): 24 0
19:52:48.164794 R80591900 Read-Data TSP setting V/H (MsgID=89): 25 0
19:52:48.262731 B40591900 Read-Ack TSP setting V/H (MsgID=89): 25 0
19:52:49.206862 R80591A00 Read-Data TSP setting V/H (MsgID=89): 26 0
19:52:49.351874 BC0591A01 Read-Ack TSP setting V/H (MsgID=89): 26 1
19:52:50.234543 R00591B00 Read-Data TSP setting V/H (MsgID=89): 27 0
19:52:50.357854 BC0591B03 Read-Ack TSP setting V/H (MsgID=89): 27 3
19:52:51.261368 R80591C00 Read-Data TSP setting V/H (MsgID=89): 28 0
19:52:51.356523 B40591C3C Read-Ack TSP setting V/H (MsgID=89): 28 60
19:52:55.405649 R00591D00 Read-Data TSP setting V/H (MsgID=89): 29 0
19:52:55.548361 BC0591D00 Read-Ack TSP setting V/H (MsgID=89): 29 0
19:52:57.485865 R00591E00 Read-Data TSP setting V/H (MsgID=89): 30 0
19:52:57.545441 BC0591E00 Read-Ack TSP setting V/H (MsgID=89): 30 0
19:52:58.506205 R80591F00 Read-Data TSP setting V/H (MsgID=89): 31 0
19:52:58.641903 B40591F00 Read-Ack TSP setting V/H (MsgID=89): 31 0
19:53:00.568321 R80592000 Read-Data TSP setting V/H (MsgID=89): 32 0
19:53:00.628215 B40592000 Read-Ack TSP setting V/H (MsgID=89): 32 0
19:53:04.711963 R00592100 Read-Data TSP setting V/H (MsgID=89): 33 0
19:53:04.854335 BC0592150 Read-Ack TSP setting V/H (MsgID=89): 33 80
19:53:05.740972 R00592200 Read-Data TSP setting V/H (MsgID=89): 34 0
19:53:05.849959 BC0592250 Read-Ack TSP setting V/H (MsgID=89): 34 80
19:53:06.781828 R80592300 Read-Data TSP setting V/H (MsgID=89): 35 0
19:53:06.830702 B40592300 Read-Ack TSP setting V/H (MsgID=89): 35 0
19:53:07.818234 R00592400 Read-Data TSP setting V/H (MsgID=89): 36 0
19:53:07.955240 BC0592400 Read-Ack TSP setting V/H (MsgID=89): 36 0
19:53:11.943405 R80592500 Read-Data TSP setting V/H (MsgID=89): 37 0
19:53:12.118162 BC0592501 Read-Ack TSP setting V/H (MsgID=89): 37 1
19:53:14.011431 R80592600 Read-Data TSP setting V/H (MsgID=89): 38 0
19:53:14.151765 B40592600 Read-Ack TSP setting V/H (MsgID=89): 38 0
19:53:15.045780 R00592700 Read-Data TSP setting V/H (MsgID=89): 39 0
19:53:15.154976 BC0592700 Read-Ack TSP setting V/H (MsgID=89): 39 0
19:53:17.108546 R00592800 Read-Data TSP setting V/H (MsgID=89): 40 0
19:53:17.278058 B40592801 Read-Ack TSP setting V/H (MsgID=89): 40 1
19:53:21.284918 R80592900 Read-Data TSP setting V/H (MsgID=89): 41 0
19:53:21.348904 BC0592908 Read-Ack TSP setting V/H (MsgID=89): 41 8
19:53:22.272989 R80592A00 Read-Data TSP setting V/H (MsgID=89): 42 0
19:53:22.333129 B40592A0A Read-Ack TSP setting V/H (MsgID=89): 42 10
19:53:23.313752 R00592B00 Read-Data TSP setting V/H (MsgID=89): 43 0
19:53:23.450379 BC0592B00 Read-Ack TSP setting V/H (MsgID=89): 43 0
19:53:24.348508 R80592C00 Read-Data TSP setting V/H (MsgID=89): 44 0
19:53:24.459801 BC0592C04 Read-Ack TSP setting V/H (MsgID=89): 44 4
19:53:28.488597 R00592D00 Read-Data TSP setting V/H (MsgID=89): 45 0
19:53:28.546290 BC0592D0A Read-Ack TSP setting V/H (MsgID=89): 45 10
19:53:30.554443 R00592E00 Read-Data TSP setting V/H (MsgID=89): 46 0
19:53:30.661729 BC0592E00 Read-Ack TSP setting V/H (MsgID=89): 46 0
19:53:31.601174 R80592F00 Read-Data TSP setting V/H (MsgID=89): 47 0
19:53:31.647825 B40592F00 Read-Ack TSP setting V/H (MsgID=89): 47 0
19:53:33.650927 R00593000 Read-Data TSP setting V/H (MsgID=89): 48 0
19:53:33.763626 B405930F8 Read-Ack TSP setting V/H (MsgID=89): 48 248
19:53:37.776189 R80593100 Read-Data TSP setting V/H (MsgID=89): 49 0
19:53:37.886752 B40593100 Read-Ack TSP setting V/H (MsgID=89): 49 0
19:53:38.824114 R80593200 Read-Data TSP setting V/H (MsgID=89): 50 0
19:53:38.964001 BC0593232 Read-Ack TSP setting V/H (MsgID=89): 50 50
19:53:39.862865 R00593300 Read-Data TSP setting V/H (MsgID=89): 51 0
19:53:39.971425 BC0593300 Read-Ack TSP setting V/H (MsgID=89): 51 0
19:53:40.888770 R80593400 Read-Data TSP setting V/H (MsgID=89): 52 0
19:53:40.988492 BC05934C8 Read-Ack TSP setting V/H (MsgID=89): 52 200
19:53:45.016413 R00593500 Read-Data TSP setting V/H (MsgID=89): 53 0
19:53:45.170144 BC0593500 Read-Ack TSP setting V/H (MsgID=89): 53 0
19:53:47.114553 R00593600 Read-Data TSP setting V/H (MsgID=89): 54 0
19:53:47.163383 B40593601 Read-Ack TSP setting V/H (MsgID=89): 54 1
19:53:48.127412 R80593700 Read-Data TSP setting V/H (MsgID=89): 55 0
19:53:48.270456 B40593774 Read-Ack TSP setting V/H (MsgID=89): 55 116
19:53:50.191822 R80593800 Read-Data TSP setting V/H (MsgID=89): 56 0
19:53:50.299480 BC059387C Read-Ack TSP setting V/H (MsgID=89): 56 124
19:53:54.327540 R00593900 Read-Data TSP setting V/H (MsgID=89): 57 0
19:53:54.474459 B40593901 Read-Ack TSP setting V/H (MsgID=89): 57 1
19:53:55.361668 R00593A00 Read-Data TSP setting V/H (MsgID=89): 58 0
19:53:55.471883 BC0593A00 Read-Ack TSP setting V/H (MsgID=89): 58 0
19:53:56.399450 R80593B00 Read-Data TSP setting V/H (MsgID=89): 59 0
19:53:56.491083 B40593B00 Read-Ack TSP setting V/H (MsgID=89): 59 0
19:53:57.425406 R00593C00 Read-Data TSP setting V/H (MsgID=89): 60 0
19:53:57.566687 B40593CC8 Read-Ack TSP setting V/H (MsgID=89): 60 200
19:54:01.559688 R80593D00 Read-Data TSP setting V/H (MsgID=89): 61 0
19:54:01.668885 B40593D00 Read-Ack TSP setting V/H (MsgID=89): 61 0
19:54:03.620367 R80593E00 Read-Data TSP setting V/H (MsgID=89): 62 0
19:54:03.778398 BC0593EC8 Read-Ack TSP setting V/H (MsgID=89): 62 200
19:54:04.686840 R00593F00 Read-Data TSP setting V/H (MsgID=89): 63 0
19:54:04.748264 BC0593F00 Read-Ack TSP setting V/H (MsgID=89): 63 0
19:54:06.731536 R80594000 Read-Data TSP setting V/H (MsgID=89): 64 0
19:54:06.870677 B4059407B Read-Ack TSP setting V/H (MsgID=89): 64 123
19:54:10.862744 R00594100 Read-Data TSP setting V/H (MsgID=89): 65 0
19:54:10.982068 BC0594100 Read-Ack TSP setting V/H (MsgID=89): 65 0
19:54:11.903578 R00594200 Read-Data TSP setting V/H (MsgID=89): 66 0
19:54:11.953435 BC05942C6 Read-Ack TSP setting V/H (MsgID=89): 66 198
19:54:12.936315 R80594300 Read-Data TSP setting V/H (MsgID=89): 67 0
19:54:13.076562 B40594300 Read-Ack TSP setting V/H (MsgID=89): 67 0
19:54:13.959879 R00594400 Read-Data TSP setting V/H (MsgID=89): 68 0
19:54:14.075881 BC0594400 Read-Ack TSP setting V/H (MsgID=89): 68 0
19:54:18.100759 R80594500 Read-Data TSP setting V/H (MsgID=89): 69 0
19:54:18.158464 B405945B4 Read-Ack TSP setting V/H (MsgID=89): 69 180
19:54:20.169858 R80594600 Read-Data TSP setting V/H (MsgID=89): 70 0
19:54:20.289455 B405946B4 Read-Ack TSP setting V/H (MsgID=89): 70 180
19:54:21.211400 R00594700 Read-Data TSP setting V/H (MsgID=89): 71 0
19:54:21.269387 BC05947B4 Read-Ack TSP setting V/H (MsgID=89): 71 180
19:54:23.273259 R00594800 Read-Data TSP setting V/H (MsgID=89): 72 0
19:54:23.379054 BC0594803 Read-Ack TSP setting V/H (MsgID=89): 72 3

I don’t know much about the Brink units, but if the unit responds with Unk-DataId then I suppose those messages (exhaust and inlet fan speeds) are not supported. You may want to check the documentation for your unit.

Thanks for the feedback, it seems I forgot to map the vh_ventilationsetpoint to a gateway command (in this case VS). I corrected that and uploaded binding version 2.1.3. Feel free to give it a try and let me know if it works.

You can always use the basic SendCommand channel to send any command you want to the OTGW. Just think of R/W channels like the vh_ventilationsetpoint as convenience channels that make it easier to set values and map them to items. For example, setting vh_ventilationsetpoint to a value of 25 is the same thing as sending VS=25 to the SendCommand channel. And setting temperaturetemporary channel to 21 is the same as sending TT=21 to SendCommand.

I have submitted feature request #11202 and pull request #11203 to have support for the Ventilation/Heat Recovery merged into the main codebase.

Adding support for Solar Boilers is still on the todo list, but for this I need the OTGW to be updated first to get a complete set of channels and ideally someone that owns such a unit for testing.

I have been away from home for a long time but I am back.
Yes it works! thank you :slight_smile:
I have issues with stability of connection/protocol between Brink Renovent and OTGW Gateway but it is outside of this forum.

hi Arjen/other plugin users,

I have made my own ‘hacked’ version of the OTGW, combining Schelte’s PCB with an ESP running Jiri Praus’ software - and this works :slight_smile: I can see the communication between the boiler & thermostat. Hardware side is thus ‘done’, and now I’d like to be able to log/see/use it.

Using your plugin seems great, but I can’t seem to find any documentation on what the expected serial output looks like/what ‘api’ your plugin expects (i.e. looking through this forum & on the OTGW site, it looks like the plugin expects some functions of Schelte’s firmware, like giving commands like PS=1, but unsure if that is optional or not).

Could you give me some pointers as to

  1. what the requirements are on the ‘messages printed to the serial connection’ that your plugin expects (i.e. what do I need my hacked device to output such that your plugin will succesfully parse the lines)
  2. if my device ‘must’ give valid response codes to certain commands sent by your plugin?

Of course I do not expect ‘support’ for my hacked device, but a few pointers that prevent me from needing to reverse-engineer the gateway-plugin protocol would be greatly appreciated!

Thanks,
Jelle

PS based on the logs posted here, and my knowledge of the protocol from reading the documents, I understand that likely in the below the last two characters are the data bytes (1A = 26 & 66=102, 102 /256 = 0.3984). 1C before that = 28 which is the message type. But what is the BC0? B = ‘message received from boiler’? C0 = 192 =??

And should I just be printing these formatted strings to the serial output, or should there be something ‘around’ it too (extra characters that your library drops, but does expect as part of the original firmware messages)?

[eway.handler.OpenThermGatewayHandler] - Received message: BC01C1A66
2018-10-11 06:30:31.352 [DEBUG] [eway.handler.OpenThermGatewayHandler] - Received update for channel 'returntemp': 26.3984375

Hi @Jelle,

Documentation on the OpenTherm Gateway can be found on the OTGW website, including the meaning of the TBRAE codes and the available serial commands. Your device should acknowledge serials commands, just like the OTGW would (see documentation), otherwise the binding will continue resending the commands automatically.

OpenTherm protocol specifications 2.2 can easily be found on the internet. Those will explain how messages are build up, what each byte or bit means and how the various data types are represented.

Other than that, there is no extra data required like a message envelope or something. You simply write the TBRAE + hex value to the socket stream and terminate it with a newline.

Thanks @Mephix! I had used the OTGW site to build my ‘hacked’ version, but I missed the specific section which explains the formatting. Thanks for confirming it’s ‘just a single line per message’ & that it should acknowledge commands, that helps a lot with debugging.

Hi! I am using NodoShop.nl Opentherm Gateway with NodeMCU, and Openhab and binding version 3.2.0.M5 (i.e. latest milestone version), and I have the same problem as previously mentioned in this thread:
The binding connects to the gateway initially, requests some data and almost immediately loses connection, never trying to reconnect afterwards, despite of "Connection Retry Interval
" is set to 60 in Thing config. It reconnects once only when I disable and re-enable the Thing from UI, then loses connection again.

Here is a piece of log:

2021-12-16 16:58:41.228 [DEBUG] [eway.handler.OpenThermGatewayHandler] - Initializing OpenTherm Gateway handler for uid 'openthermgateway:otgw:faf2b5e278'
2021-12-16 16:58:41.228 [DEBUG] [eway.handler.OpenThermGatewayHandler] - Starting OpenTherm Gateway connector
2021-12-16 16:58:41.230 [DEBUG] [eway.handler.OpenThermGatewayHandler] - OpenTherm Gateway connector started
2021-12-16 16:58:41.232 [DEBUG] [rnal.OpenThermGatewaySocketConnector] - Connecting OpenThermGatewaySocketConnector to 172.16.0.80:8080
2021-12-16 16:58:41.250 [DEBUG] [rnal.OpenThermGatewaySocketConnector] - OpenThermGatewaySocketConnector connected
2021-12-16 16:58:41.251 [DEBUG] [rnal.OpenThermGatewaySocketConnector] - Sending message: PR=A
2021-12-16 16:58:41.251 [DEBUG] [rnal.OpenThermGatewaySocketConnector] - Sending message: PS=0
2021-12-16 16:58:41.925 [DEBUG] [rnal.OpenThermGatewaySocketConnector] - Received command confirmation: PR:  A=OpenTherm Gateway 5.1
2021-12-16 16:58:41.930 [DEBUG] [rnal.OpenThermGatewaySocketConnector] - Received command confirmation: PS:  0
2021-12-16 16:58:42.025 [DEBUG] [eway.handler.OpenThermGatewayHandler] - Received update for channel 'controlsetpoint': 85 °C
2021-12-16 16:58:43.075 [DEBUG] [eway.handler.OpenThermGatewayHandler] - Received update for channel 'servicerequest': OFF
2021-12-16 16:58:43.076 [DEBUG] [eway.handler.OpenThermGatewayHandler] - Received update for channel 'lockout-reset': OFF
2021-12-16 16:58:43.076 [DEBUG] [eway.handler.OpenThermGatewayHandler] - Received update for channel 'lowwaterpress': OFF
2021-12-16 16:58:43.077 [DEBUG] [eway.handler.OpenThermGatewayHandler] - Received update for channel 'gasflamefault': OFF
2021-12-16 16:58:43.077 [DEBUG] [eway.handler.OpenThermGatewayHandler] - Received update for channel 'airpressfault': OFF
2021-12-16 16:58:43.077 [DEBUG] [eway.handler.OpenThermGatewayHandler] - Received update for channel 'waterovtemp': OFF
2021-12-16 16:58:43.078 [DEBUG] [eway.handler.OpenThermGatewayHandler] - Received update for channel 'oemfaultcode': 0
2021-12-16 16:58:44.050 [DEBUG] [eway.handler.OpenThermGatewayHandler] - Received update for channel 'modulevel': 48 %
2021-12-16 16:58:45.788 [DEBUG] [eway.handler.OpenThermGatewayHandler] - Received update for channel 'ch_enablerequested': ON
2021-12-16 16:58:45.789 [DEBUG] [eway.handler.OpenThermGatewayHandler] - Received update for channel 'ch2_enablerequested': ON
2021-12-16 16:58:46.021 [DEBUG] [eway.handler.OpenThermGatewayHandler] - Received update for channel 'ch_enable': ON
2021-12-16 16:58:46.021 [DEBUG] [eway.handler.OpenThermGatewayHandler] - Received update for channel 'dhw_enable': ON
2021-12-16 16:58:46.021 [DEBUG] [eway.handler.OpenThermGatewayHandler] - Received update for channel 'ch2_enable': ON
2021-12-16 16:58:46.022 [DEBUG] [eway.handler.OpenThermGatewayHandler] - Received update for channel 'fault': OFF
2021-12-16 16:58:46.022 [DEBUG] [eway.handler.OpenThermGatewayHandler] - Received update for channel 'ch_mode': OFF
2021-12-16 16:58:46.023 [DEBUG] [eway.handler.OpenThermGatewayHandler] - Received update for channel 'dhw_mode': ON
2021-12-16 16:58:46.023 [DEBUG] [eway.handler.OpenThermGatewayHandler] - Received update for channel 'flame': ON
2021-12-16 16:58:46.023 [DEBUG] [eway.handler.OpenThermGatewayHandler] - Received update for channel 'diag': OFF
2021-12-16 16:58:46.783 [DEBUG] [eway.handler.OpenThermGatewayHandler] - Received update for channel 'controlsetpointrequested': 85 °C
2021-12-16 16:58:51.784 [DEBUG] [rnal.OpenThermGatewaySocketConnector] - OpenThermGatewaySocketConnector disconnected
2021-12-16 16:58:51.784 [WARN ] [rnal.OpenThermGatewaySocketConnector] - Unable to connect to the OpenTherm Gateway.
java.net.SocketTimeoutException: Read timed out
        at java.net.SocketInputStream.socketRead0(Native Method) ~[?:?]
        at java.net.SocketInputStream.socketRead(SocketInputStream.java:115) ~[?:?]
        at java.net.SocketInputStream.read(SocketInputStream.java:168) ~[?:?]
        at java.net.SocketInputStream.read(SocketInputStream.java:140) ~[?:?]
        at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284) ~[?:?]
        at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326) ~[?:?]
        at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178) ~[?:?]
        at java.io.InputStreamReader.read(InputStreamReader.java:181) ~[?:?]
        at java.io.BufferedReader.fill(BufferedReader.java:161) ~[?:?]
        at java.io.BufferedReader.readLine(BufferedReader.java:326) ~[?:?]
        at java.io.BufferedReader.readLine(BufferedReader.java:392) ~[?:?]
        at org.openhab.binding.openthermgateway.internal.OpenThermGatewaySocketConnector.run(OpenThermGatewaySocketConnector.java:94) [bundleFile:?]
        at java.lang.Thread.run(Thread.java:829) [?:?]

Connection from Opentherm Monitor is stable, and I am disconnecting from there before initiating connection from Openhab.

Could you please help with this?

Hi Victor

The latest version of the Opentherm Gateway binding is 2.1.3, in which (among other things) this problem is addressed. Can you try this version and see if it solves the issue for you?

Hi Arjen, but my binding version is even higher than 2.1.3:


BTW, your link is also leading to the 3.2.0 jar, so I am a little bit confused.