diff --git a/examples/OpenThermMaster_Demo/OpenThermMaster_Demo.ino b/examples/OpenThermMaster_Demo/OpenThermMaster_Demo.ino index 16a9513..dbe75b8 100644 --- a/examples/OpenThermMaster_Demo/OpenThermMaster_Demo.ino +++ b/examples/OpenThermMaster_Demo/OpenThermMaster_Demo.ino @@ -66,8 +66,15 @@ void loop() ot.setBoilerTemperature(64); //Get Boiler Temperature - float temperature = ot.getBoilerTemperature(); - Serial.println("Boiler temperature is " + String(temperature) + " degrees C"); + float ch_temperature = ot.getBoilerTemperature(); + Serial.println("CH temperature is " + String(ch_temperature) + " degrees C"); + + //Set DHW setpoint to 40 degrees C + ot.setDHWSetpoint(40); + + //Get DHW Temperature + float dhw_temperature = ot.getDHWTemperature(); + Serial.println("DHW temperature is " + String(dhw_temperature) + " degrees C"); Serial.println(); delay(1000); diff --git a/keywords.txt b/keywords.txt index 881d1da..fdedf0f 100644 --- a/keywords.txt +++ b/keywords.txt @@ -30,6 +30,8 @@ doSomething KEYWORD2 setBoilerStatus KEYWORD2 setBoilerTemperature KEYWORD2 getBoilerTemperature KEYWORD2 +setDHWSetpoint KEYWORD2 +getDHWTemperature KEYWORD2 ####################################### # Instances (KEYWORD2) diff --git a/library.properties b/library.properties index 26001b8..55add5a 100644 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=OpenTherm Library -version=1.1.2 +version=1.1.3 author=Ihor Melnyk maintainer=Ihor Melnyk sentence=OpenTherm Library for HVAC system control communication using Arduino and ESP8266 hardware. diff --git a/src/OpenTherm.cpp b/src/OpenTherm.cpp index 0630607..137046a 100644 --- a/src/OpenTherm.cpp +++ b/src/OpenTherm.cpp @@ -377,6 +377,17 @@ float OpenTherm::getReturnTemperature() { return isValidResponse(response) ? getFloat(response) : 0; } +bool OpenTherm::setDHWSetpoint(float temperature) { + unsigned int data = temperatureToData(temperature); + unsigned long response = sendRequest(buildRequest(OpenThermMessageType::WRITE_DATA, OpenThermMessageID::TdhwSet, data)); + return isValidResponse(response); +} + +float OpenTherm::getDHWTemperature() { + unsigned long response = sendRequest(buildRequest(OpenThermMessageType::READ_DATA, OpenThermMessageID::Tdhw, 0)); + return isValidResponse(response) ? getFloat(response) : 0; +} + float OpenTherm::getModulation() { unsigned long response = sendRequest(buildRequest(OpenThermRequestType::READ, OpenThermMessageID::RelModLevel, 0)); return isValidResponse(response) ? getFloat(response) : 0; diff --git a/src/OpenTherm.h b/src/OpenTherm.h index 7bcba61..1a94cee 100644 --- a/src/OpenTherm.h +++ b/src/OpenTherm.h @@ -157,6 +157,8 @@ class OpenTherm bool setBoilerTemperature(float temperature); float getBoilerTemperature(); float getReturnTemperature(); + bool setDHWSetpoint(float temperature); + float getDHWTemperature(); float getModulation(); float getPressure(); unsigned char getFault();