Understanding OTGW messages
Posted: Mon Aug 20, 2018 10:09 am
Hello all,
I'm new to the forum but have been using an OTWG from nodoshop for over a year. And it all works perfectly.
Lately, I've been trying to understand how the OTGW communicates with the monitor program. If I telnet into the otgw I can see the same payload as what appears in the monitor program (log). I can kinda understand how the messages are coded.
It seems to be hex and the last 4 digits, but you have to make sure if it's a floating hex or int. The webpage about the otgw is well written but lacks examples on how to decode this data.
Example :
80 or 40 Not sure what this reperesents ?
7A base 16 --> 122 base 10 --> DHW pump/valve operation hours (MsgID=122)
1B44 base 16 --> 6980 base 10
And
Again 80 or 40 ?
19 base 16 --> 25 base 10 --> Boiler water temperature (MsgID=25) - Printed as a floating point value
27.33 base 16 --> 39.19921875 base 10 --> 39.20
In the example :
What does C0 represent? That the clock is set for MHz or that comfort mode is engaged?
I understand what R and B mean, I can also change the setpoint with the "CS=xx" with xx being an int value.
Am I missing something?
The plan is to decode these values in python and create my own control loop using a Smith predictor and feedback loop to create a robust (possible H_inf or even H_2) control loop. Part of my degree is control theory so this is a part-time hobby which I enjoy.
Again thanks for any help !
Matthew
I'm new to the forum but have been using an OTWG from nodoshop for over a year. And it all works perfectly.
Lately, I've been trying to understand how the OTGW communicates with the monitor program. If I telnet into the otgw I can see the same payload as what appears in the monitor program (log). I can kinda understand how the messages are coded.
It seems to be hex and the last 4 digits, but you have to make sure if it's a floating hex or int. The webpage about the otgw is well written but lacks examples on how to decode this data.
Example :
Code: Select all
09:11:41.249452 R807A0000 Read-Data DHW pump/valve operation hours: 0
09:11:41.345618 B407A1B44 Read-Ack DHW pump/valve operation hours: 6980
7A base 16 --> 122 base 10 --> DHW pump/valve operation hours (MsgID=122)
1B44 base 16 --> 6980 base 10
And
Code: Select all
09:11:48.534414 R80190000 Read-Data Boiler water temperature: 0.00
09:11:48.627821 B40192733 Read-Ack Boiler water temperature: 39.20
19 base 16 --> 25 base 10 --> Boiler water temperature (MsgID=25) - Printed as a floating point value
27.33 base 16 --> 39.19921875 base 10 --> 39.20
In the example :
Code: Select all
09:11:44.379532 R801C0000 Read-Data Return water temperature: 0.00
09:11:44.516667 BC01C2666 Read-Ack Return water temperature: 38.40
I understand what R and B mean, I can also change the setpoint with the "CS=xx" with xx being an int value.
Am I missing something?
The plan is to decode these values in python and create my own control loop using a Smith predictor and feedback loop to create a robust (possible H_inf or even H_2) control loop. Part of my degree is control theory so this is a part-time hobby which I enjoy.
Again thanks for any help !
Matthew