Skip to content

Commit 13d0b9d

Browse files
author
Ihor Melnyk
committed
slave demo update
1 parent ca748fe commit 13d0b9d

File tree

1 file changed

+43
-4
lines changed

1 file changed

+43
-4
lines changed

examples/OpenThermSlave_Demo/OpenThermSlave_Demo.ino

Lines changed: 43 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,54 @@ void IRAM_ATTR handleInterrupt() {
1717
}
1818

1919
void processRequest(unsigned long request, OpenThermResponseStatus status) {
20-
//receive request
2120
Serial.println("T" + String(request, HEX)); //master/thermostat request
2221

23-
//build UNKNOWN-DATAID response
24-
unsigned long response = ot.buildResponse(OpenThermMessageType::UNKNOWN_DATA_ID, ot.getDataID(request), 0);
22+
unsigned long response = 0;
23+
OpenThermMessageID id = ot.getDataID(request);
24+
uint16_t data = ot.getUInt(request);
25+
float f = ot.getFloat(request);
26+
switch(id)
27+
{
28+
case OpenThermMessageID::Status:
29+
{
30+
uint8_t statusRequest = data >> 8;
31+
uint8_t chEnable = statusRequest && 0x1;
32+
uint8_t dhwEnable = statusRequest && 0x2;
33+
data &= 0xFF00;
34+
//data |= 0x01; //fault indication
35+
if (chEnable) data |= 0x02; //CH active
36+
if (dhwEnable) data |= 0x04; //DHW active
37+
if (chEnable || dhwEnable) data |= 0x08; //flame on
38+
//data |= 0x10; //cooling active
39+
//data |= 0x20; //CH2 active
40+
//data |= 0x40; //diagnostic/service event
41+
//data |= 0x80; //electricity production on
42+
43+
response = ot.buildResponse(OpenThermMessageType::READ_ACK, id, data);
44+
break;
45+
}
46+
case OpenThermMessageID::TSet:
47+
{
48+
response = ot.buildResponse(OpenThermMessageType::WRITE_ACK, id, data);
49+
break;
50+
}
51+
case OpenThermMessageID::Tboiler:
52+
{
53+
data = ot.temperatureToData(45);
54+
response = ot.buildResponse(OpenThermMessageType::READ_ACK, id, data);
55+
break;
56+
}
57+
default:
58+
{
59+
//build UNKNOWN-DATAID response
60+
response = ot.buildResponse(OpenThermMessageType::UNKNOWN_DATA_ID, ot.getDataID(request), 0);
61+
}
62+
}
63+
Serial.println("B" + String(response, HEX)); //slave/boiler response
2564

2665
//send response
66+
delay(20); //20..400ms, usually 100ms
2767
ot.sendResponse(response);
28-
Serial.println("B" + String(response, HEX)); //slave/boiler response
2968
}
3069

3170
void setup()

0 commit comments

Comments
 (0)