@@ -17,15 +17,54 @@ void IRAM_ATTR handleInterrupt() {
17
17
}
18
18
19
19
void processRequest (unsigned long request, OpenThermResponseStatus status) {
20
- // receive request
21
20
Serial.println (" T" + String (request, HEX)); // master/thermostat request
22
21
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
25
64
26
65
// send response
66
+ delay (20 ); // 20..400ms, usually 100ms
27
67
ot.sendResponse (response);
28
- Serial.println (" B" + String (response, HEX)); // slave/boiler response
29
68
}
30
69
31
70
void setup ()
0 commit comments